動機
どうも~、IoT探検家のシンジです。
皆さん、リモートワークが長期化することで、人との関わりが減り、人間らしさを失っていませんか?
僕の場合、2020年3月からリモートワークになって早1年弱経ちますが、オフィスに出勤していた時と比べ、人との関わりが随分減ってしまいました。

特に今の仕事はプログラミング作業が中心なので、始業時にオンラインで打ち合わせを15分ほどで終えた後は、終業まで一人で黙々とパソコン作業して1日が終わることもよくあります。(作業で出た質問などはSlackなどのやりとりで完結します。)

これは今月のある週のスケジュールなのですが、人とお喋りする打ち合わせが合計4Hしか入っていません。更に、ぼっちおじさんの僕の場合、仕事以外で人と話すのもスーパーやカフェでのレジぐらいです😓。こうなると、喜怒哀楽を表現する機会も減ってしまい、人間らしさが失われていっている実感があります。
これを聞くと、今もオフィスで働かれている方は、「人との関わりなく、ストレスが無くていいじゃん!」と思われるかもしれませんが、孤独は死亡リスクを高めるという研究結果(「早期死亡リスクは2倍? 「孤独」をあなどってはいけない」)もあり、そうも言っていられません🧐。

ここで彼女を作れれば問題は一発で解決するのですが、それもすぐには難しいので🤣、まずは喜怒哀楽を表現する機会を増やしたいと思いました。
そこで僕は、「喜怒哀楽分類機」をラズパイを使って自作し、孤独なリモートワークの日常でも喜怒哀楽を表現する時間を作り、人間らしさを取り戻すことにしました😊。
用意したもの
・ラズパイ本体(Raspberry Pi 4)
・4インチのLCDモニター
・USBカメラ
・ミニスピーカー
・キーボードとマウス
・パソコン
・microSDカード
・HDMIケーブル(microHDMI→HDMI)
・USB-C接続の電源アダプター




自作の流れ
1)ラズパイの初期設定
2)ラズパイのタブレット化
3)ラズパイ(タブレット)にOpenCVをインストール
4)GitHubから学習済みの感情認識モデルをダウンロード
5) 「喜怒哀楽分類機」完成
1)ラズパイの初期設定
まずは、Raspberry Pi(ラズベリー パイ)、略してラズパイという小型コンピュータを用意して、初期設定をします。
詳細は「[Python / 電子工作]ラズパイの初期設定をしてみた」を御覧ください。

2)ラズパイのタブレット化
次にLCDモニターを別途用意して、組み立ててラズパイのタブレット化します。
詳細は「[Python / 電子工作]ラズパイで手のひらサイズのタブレットを自作してみた」を御覧ください。

3)ラズパイ(タブレット)にOpenCVをインストール
そして、OpenCVというオープンソースのAIの画像認識ライブラリーをインストールします。
「[Python / プログラミング]ラズパイにOpenCVをインストールしてみた」を御覧ください。

4)GitHubから感情認識モデルをダウンロード
続いて、感情認識モデルを準備します。
利用するのはインド人のエンジニアの方が、ディープラーニングを使って学習させた感情認識モデル「Emotion-Detection」で、Githubからダウンロードでき、利用できます。

この感情認識モデルは、Kaggleのコンペで使われたデータとディープラーニングの画像認識モデルであるMobileNetsを使って学習されたもので、人の表情を7つの感情(怒っている,苛立っている,恐れている, 楽しんでいる,悲しんでいる,驚いている,普通)に分類できます。



最初に、上の写真のように、GitHubからDownload ZIPでEmotion-Detectionをダウンロードして、ラズパイにフォルダを配置。
workon cv
pip install --upgrade tensorflow
pip install keras
また、感情認識モデル「Emotion-Detection」はKeras(ケラス)をTensorFlow(テンソルフロー)のバックエンドとして使っているので、TensorFlowとKerasを上のコマンドでラズパイのPythonの仮想環境にインストールします。(参照:スタンドアロンKerasとtf.kerasの違いとは?)
Pythonで書かれた,TensorFlowまたはCNTK,Theano上で実行可能な高水準のニューラルネットワークライブラリ
5) 「喜怒哀楽分類機」完成
ここまで出来たら、カメラとスピーカーをラズパイに取り付けて組み立てをおこないます。


workon cv
cd /home/pi/Desktop/Emotion-Detection
python test.py
そして、ラズパイのLXTerminalに移動し、workon cvコマンドを入れてPythonの仮想環境を立ち上げて、Emotion-Detectionフォルダに移動してから、test.pyファイルを実行。(上のコマンドはデスクトップにEmotion-Detectionフォルダがおいてある例です。)
このように、AIの感情認識モデルがカメラで捉えた人の表情を分類してくれます。





加えて、より強く感情を表現するために、顔ヨガで有名なムンクポーズ😱もやってみました。(参照:表情も効果も衝撃的!? 間々田佳子式「顔ヨガ V字上げ」でたるみ顔がスッキリ小顔化)
顔ヨガとは
顔の表情筋を鍛えること。普段あまり使わない顔全体の筋肉も意識して動かすことで、血行が良くなって、たるみがなくなりハリが出て、くすみやシワの改善につながる。

こめかみを手のひらで押さえて目を吊り上げたら、頬の筋肉を使って顔を伸ばし、口を「O」の形にします。このまま5秒キープします。手を離しても筋肉が覚えていられるようにキープ。AIは「Surprise」と判定してくれています。

色々な表情で喜怒哀楽を表現することで、失われて人間らしさが少し取り戻せた気がします。
皆さんも、喜怒哀楽を意識して表現して、人間らしさを取り戻しては如何でしょうか?
ぼっちおじさんの人間を取り戻す旅は続きます😊。
※エラー解消
python test.pyを実行したら以下のようなエラーが出るかもしれません。
'Keras requires TensorFlow 2.2 or higher.'
ImportError: Keras requires TensorFlow 2.2 or higher. Install TensorFlow via `pip install tensorflow`

このエラーはPythonの仮想環境にインストールされているKerasのバージョンとTensorFlowのバージョンが互いに推奨しているのものとは違うのが原因なので、片方のバージョンを変更する必要があります。
pip uninstall keras
pip install keras==2.3.1
今回はこれを解消するために上のコマンドで、Kerasを一旦アンインストールしてから、バージョン指定してインストールし直しました。
コメント