先日のThoughtWorksのブログ記事で、Angelica Perez氏は、インタラクティブなフィルム体験のための新たなオープンソースプロジェクトに関する情報を公開した。EmoPyと呼ばれるこのプロジェクトは表情認識(FER)に焦点を当てており、サービスに渡されたイメージに基づいて、感情を正確に予測するツールキットを提供する。
Perez氏はFERを、“広範なコンピュータビジョン(Computer vision)分野における画像分類(image classification)の問題”と定義する。コンピュータビジョンは現在ホットな話題になっており、これら機械学習モデルへのアクセスを公開APIを通じて広く解放するため、多くの大規模クラウドプロバイダから投資を集めている。しかし、これらのサービスの背後にあるモデルやアルゴリズムは公開されておらず、高品質のデータセットにアクセスすることも困難だ。Pereze氏はEmoPyの違いを次のように説明する。
私たちの目標は、ビジネス上の理由から、閉ざされたドアの向こうで行われることの多い、この重要で新しいテクノロジを広く一般に公開することです。オープンソース開発コミュニティから寄せられる問題やコントリビューションを歓迎すると同時に、EmoPyがプロジェクトで役に立つことを願っています。
FERのトレーニングモデルにアクセスできることは非常に重要で、次のような感情分類の標準セットが多く使用されている。
- 怒り(Anger)
- 嫌悪(Disgust)
- 恐れ(Fear)
- 幸福(Happiness)
- 悲しみ(Sadness)
- 驚き(Surprise)
- 通常(Neutral)
イメージ引用: https://www.thoughtworks.com/insights/blog/recognizing-human-facial-expressions-machine-learning
EmoPYツールキットは、社会プロジェクトや技術プロジェクトに従事するアーティストのインキュベートを目的とする、ThoughtWorks Artsプログラムの一環として作成されたものだ。ThoughtWorksのチームは、RIOTというインタラクティブな映画体験を製作中の、アーティスト・イン・レジデンス(訳注:芸術村などの芸術家支援活動)のKaren Palmer氏を支援している。
RIOTは、刺激的なビデオを写すスクリーンを視聴者の前に置く。使用されるビデオクリップは、略奪者や機動隊など、暴動的な状況に関するものである。視聴者の表情はWebカメラを使って記録、分析され、Emopyにロードされる。
イメージ引用: https://www.thoughtworks.com/insights/blog/emopy-machine-learning-toolkit-emotional-expression
EmoPyはHongying Meng博士の研究をヒントに、スクラッチから開発されたものだ。その中核となる要件は次のとおりである。
- ニューラルネットワークアーキテクチャは、出力をシーケンシャルに提供するレイヤで構成されている。このアーキテクチャでの性能は、ニューラルネットワークアーキテクチャを構成するレイヤの選択とシーケンスに大きく依存する。
- データセットの選択は、画像ライブラリが大きくなればなるほどモデルの精度と汎用性が高くなることから、非常に重要だが、現時点で利用可能なパブリックデータセットの数は多くない。EmoPyでは、MicrosoftのFER2013とExtended Cohn-Kanadeデータセットを利用することができた。FER2013データセットには、怒り、嫌悪感、恐怖、幸せ、悲しみ、驚き、落ち着きという、7つの感情カテゴリに属する35,000以上の表情が含まれている。Cohn-Kanadeデータセットには静止画像ではなく、これらの表情の間の遷移を表す、327の表情シーケンスが格納されている。
イメージ引用: https://www.thoughtworks.com/insights/blog/emopy-machine-learning-toolkit-emotional-expression
- トレーニングプロセスは、ThoughtWorksチームが取り組んでいる次の検討事項である。このプロセスには、ニューラルネットワークと選択したデータセットのトレーニングが含まれている。データセットはトレーニングセットと検証セットの2部分に分割された。このプロセスでは次の作業が行なわれている。
- トレーニングセットからのイメージをニューラルネットワークのトレーニングに使用して、重み付けとパラメータに基づいた感情予測を導出する。
- 次にニューラルネットワークは、予測した感情と真の感情を比較して、損失値を計算する。
- 損失値を使用して、ニューラルネットワークの重み付けを調整する。このプロセスを反復することにより、予想モデルをよりインテリジェントで正確なものにすることができる。
- 次に評価セットを使用して、トレーニング後のニューラルネットワークをテストする。ThoughtWorksチームにとって、2つの異なるデータセットのあることは、非常に重要だった。トレーニングセットから異なるイメージのセットを使用することで、モデルのより客観的な評価が可能になったのだ。さらに、このアプローチを使用することで、“ニューラルネットワークがトレーニング用サンプルからパターンを学習することで、新たなサンプルが与えられた時の一般化に使用できない”という、“オーバーフィッティング”を防止することもできた。オーバーフィッティングが発生すると、トレーニングセットの精度が検証セットよりもはるかに高くなる。
- パフォーマンス測定がEmoPyの最終要件だった。ThoughtWorksが答を出そうとしていたのは、トレーニングセットと検証セットに基づいて感情を予測する場合、どのアーキテクチャがどの程度正確か、という問題だった。結果の範囲では、ConvolutionINNモデルのパフォーマンスが最も高かった。嫌悪、幸福、驚きといった感情セットでは、ニューラルネットワークは見たことのないイメージを10回中9回、正確に予測することができた。嫌悪や幸福や驚きの正確性が高い一方で、他の感情は必ずしもそうではなく、誤った分類が、特に恐怖について見られている。このような誤分類に対処する最善の方法は、可能な限り大規模なデータセットを使用することだ。
EmoPyプロジェクトは、積極的にコントリビュータを求めている。プロジェクトチームは無制限のライセンスを採用して、プロジェクトへのコントリビュートを希望するのか、あるいは単に使用したいのかに関わらず、可能な限り多くのユーザが利用できるようにしている。
この記事を評価
- 編集者評
- 編集長アクション