BBC R&Dのビデオ顔認識の簡単なガイド

多くの場合、背後で最も複雑な処理の一部を必要とするのは、人間が考えることなく行うタスクです。食べ物の試飲、友人とのチャット、音楽の聴取、そして実際、人々の認識。イーストエンダーのエピソードを見ると、さまざまな角度から、さまざまな照明でさまざまな設定でさまざまな俳優が見えますが、すぐに脳はこれらのバリエーションを処理して、シーン内のドットコットンとフィルミッチェルを認識します。関係する処理については考えていないので、これらのタスクが機械学習に適用しようとしたときに最初に考えていたよりもはるかに複雑であることに驚いています。

ハリー王子とミーガンマークルの次の画像を路上で撮影してください。ここでは、ハリーとミーガンを正面、側面、背面からさまざまな角度から見ることができますが、肌の色、髪の色などの特徴からそれらを簡単に認識できます。また、特定のソーシャルキューを考慮しています。群衆はそれらを見ています。彼らはきちんと服を着ており、すべてのショットの中心にあり、同じシーンからのショットの明らかな連続性があります。ここでは、物理的指標だけでなく文化的指標も検出するため、人間の直観には多くの層があります。

ハリーとミーガンを自然に認識しますが、これらのショットの角度は異なります

では、これらすべてを行う方法をコンピューターにどのように教えるのでしょうか?人間のように考えるアルゴリズムを取得することはできませんが、機械学習が最も優れていること、つまりラベル付けされた大きなデータセットのパターンを検出することはできます。これには、画像の収集、アルゴリズムのトレーニング、ビデオの処理、およびその中の人々の認識が含まれます。最終的な出力は、ビデオで認識された人のリストと、表示されるフレーム内の時間と場所です。

BBCで既にこのテクノロジーの構築に取り組んでいます。 FaceRecと呼ばれる私たちのシステムは、BBC Research and Development内のInternet Research and Future Servicesデータチームによって開発されています(キーストロークを保存し、以降はデータチームと呼びます)。社内コードと外部のオープンソースソフトウェア、特にC ++顔認識エンジンSeetafaceの組み合わせを使用して構築されています。

FaceRecは、一連のアルゴリズム手順でビデオを処理し、それぞれが全体的な問題の特定の部分を解決することで機能します。すべての仕組みの概要を説明します。

1.ショットを検出する

ビデオで検出される各顔について、最初にビデオを構成ショットに分割する必要があります(ショットは、連続して実行される一連のフレームとして定義されます)。これを行うために、FaceRecはメディア処理ライブラリFFmpegを使用します。FFmpegは、特定の動画内のすべてのショットの開始時間と終了時間を返す関数を使用します。

2.顔を検出する

次の手順では、各フレームをチェックして、人間の顔が含まれているかどうかを確認します。これは難しい問題です。フットボールの試合ですべての顔を検出する必要がありますか? Tシャツの顔は重要ですか?新聞の表紙に写真はありますか?

FaceRecは各ショットを反復処理して、ショットからフレームを取得し、これらをSeetaFaceにフィードします。SeetaFaceは、顔と思われる場所の境界ボックスを返します。 SeetaFaceの顔検出エンジンは、顔が出力に含まれるのに十分「カウント」されているかどうかを識別します。 SeetaFaceは、検出された人が誰であると考えるかを言っているのではなく、フレーム内の特定の位置で顔を検出したと単に信じていることに注意してください。

3.フェイストラックを作成する

顔を含むすべてのフレームを収集したので、次のタスクは、検出されたこれらの顔をつなぎ合わせて、フェイストラックを作成することです。フェイストラックは、ショットフレーム内を移動する際に、顔の周りの境界ボックスの連続的な流れです。

FaceRecは各顔境界ボックスを取得し、次のフレームの次の論理境界ボックスにマップしようとします。顔が一時的に見えなくなったり、ある人が別の人の後ろに移動すると境界ボックスが互いに交差したりする可能性があるため、これは必ずしも完全に明らかではありません。

境界ボックスはショットを通して顔を追跡します

内部では、この問題はDlibとLucas-Kanadeメソッドを使用して解決されます。これにより、タイムポイント、フレームのリスト、および顔の境界ボックスによって定義されるフェイストラックが作成されます。

4.トラックの顔ベクトルを作成する

機械学習アルゴリズムは、多くの場合、入力素材を数学的なベクトルに変換することで機能します。次に、この「ベクトル空間」のどの部分が特定のカテゴリまたは入力タイプに属するかを学習します。顔に関しては、ハリー王子の顔を表すベクトルは特定の領域にある傾向がありますが、ミーガンベクトルは別のセクションにある傾向があることがわかります。また、ウィリアム王子の顔のベクトルは、この空間ではミーガンよりもハリーに近いと予想されます。これらは関連しており、同様の特性を共有しているためです。

FaceRecは、検出された顔のベクトルを作成するために、SeetaFaceの顔識別ライブラリを使用します。 FaceRecは、フェイストラックの中点から境界ボックス内で検出された顔のトリミングされた写真をフィードします。その顔の特徴を表す2024次元のベクトルを受け取ります。

5.顔追跡ベクトルで人々の顔を認識する

これで、検出された各顔軌跡の顔ベクトルができました。次のステップでは、これらのベクトルを認識された顔の実際の名前に変換し、認識されていない(したがって、ラベル付けできない)顔にフラグを立てます。

ここでの最初の質問は次のとおりです。私たちは誰を認識するのでしょうか?過去に住んでいたすべての人を認識するモデルを構築することはできません。では、この顔認識システムにとって誰が十分に重要であると考えていますか?

現実的には、これはBBCニュースのジャーナリストと彼らが最もよく報告する人々によって推進される必要があります。また、未知の人々が毎日ニュースを作成していることを認識しておく必要があります。これらの制限を念頭に置いて、データチームは、FaceRecをトレーニングする際、主に有名人、国際的な指導者、議会の英国の政治家、および貴族院に焦点を合わせました。

これらの人々を認識するために、彼らは各人のトレーニングデータを収集する必要がありました。つまり、その人だけが含まれているその人のラベル付き写真がたくさんあります。データチームは数千枚の写真を収集し、独自のフロントエンドシステムを構築して、個々の写真を簡単に表示およびラベル付けしました。機械学習のセクシーな真実は、品質の高いラベル付きデータを収集することが、多くの場合、最も高価で面倒でありながら、適切に機能するAIシステムを構築する上で重要な部分であるということです。

データを収集したデータチームは、写真をサポートベクターマシンと呼ばれる機械学習分類器に送り、訓練されたモデルを作成しました。 SeetaFaceから顔ベクトルを入力すると、これらのモデルは元の顔画像で人物の名前を予測するか、顔をまったく認識していないかどうかを判断します。

IRFSは2つのモデルを作成しました。

  1. アーカイブモデル:BBCアーカイブの人々が選択した20世紀以降の有名な人々。このモデルにはおよそ1,000人が含まれていました。
  2. ニュースモデル:まだ開発中ですが、これは2,000人以上の英国議会および地域議会、下院、グローバルリーダーのメンバーにまで拡大されます。トレーニング画像は、BBC News、Factual、およびDramaから入手しました。

これらの訓練されたモデルを使用して、ビデオのフェイストラックに参加している人を予測します。

6.フェイストラックのクラスター化

すべてのフェイストラックにラベルが付けられたので、最後のステップは、同じ人物のすべてのトラックを収集することです。

これを行うために、ビデオから抽出されたすべての顔ベクトルを1つのベクトル空間に入れます。これを、楽しみのために顔空間と呼びます。顔空間を視覚化するために、機械学習ライブラリTensorflowの一部であるTensorboardと呼ばれるツールを使用できます。

この顔空間を見ると、同じ人のベクトルが他の人から十分に近く、十分に離れていて、自動的にグループ化できることを願っています。これは、機械学習でクラスタリングの問題として知られています。

以下のハリーとミーガンのビデオ用に、この顔空間に投影された顔追跡ベクトルを見ることができます。また、ほとんどのMeganトラックはまとめられており、クラスター化が容易になっています。これは、作成された顔ベクトルがうまく機能していることを知る1つの方法です。

TensorBoardで顔を視覚化する

クラスタリングに精通している人は、顔クラスタリング問題の難しさを理解するでしょう。すべてのビデオには、さまざまなサイズのさまざまな数のクラスターが存在します。一度に表示され、クラスターにまったく属さないベクトルがたくさんあります。

この問題を完全に解決しようとしてダークホールに陥る代わりに、データチームはいくつかのヒューリスティックで実行することにしました。 FaceRecは、問題を2つの別々のカテゴリに分割します。認識している人の顔と認識していない人の顔です。認識された顔の場合、同じ予測ラベル(名前)を持つすべての顔トラックを単にクラスター化します。認識されていない顔の場合、顔ベクトルの階層的クラスタリングと呼ばれる手法を使用してグループ化しますが、ラベルは付けません。

7.情報を出力する

FaceRecの最後の手順は、さまざまな手順で収集されたすべての情報を提供することです。これは、以下を含むJSONファイルの形式で提供されます。

ビデオ内のトラックのリスト。各トラックには以下が含まれます。

  • そのトラックの予測される人
  • 予測の信頼性
  • UUIDを追跡
  • そのトラックの顔ベクトル
  • そのトラックのフレームのリスト

フレームのリストには、各フレームの情報が含まれます:

  • 検出された場合、そのフレームの顔ベクトル
  • 顔の境界ボックス座標
  • フレームが発生するビデオの時間

このデータで何ができますか?次のブログ投稿でアイデアを確認できます。

要約

それは本当にそれについてです。ビデオの顔認識システムに含まれる多くの部分を理解するのに役立つことを願っています。そしておそらく、あなたの友人や愛する人を認識するときに、あなた自身の脳が1日に何百回も処理するすべての重荷と曖昧さをより意識的にしたでしょう。

FaceRecシステムの内部の仕組みを理解した後、News Labsのタスクは、このテクノロジーがBBC内でビジネス価値を追加できる場所を確認することでした。 FaceRecの機能を直感的なデモでどのように見せますか? FaceRecが適合する生産システムはどれですか?誰がワークフローの問題を解決できますか?そして重要なこととして、人々は顔認識の使用についてどのように感じていますか?大規模な組織で新しいテクノロジーを導入する際の課題と、「顔認識-ニュースルームで何を使用するか?」で顔認識プロトタイプを開発する際に直面した問題について説明します。