画像に含まれる人物の顔を抽出、識別することができる Cognitive Services Face API を活用する中で、まずは画像データからの人物抽出を行うシナリオが多いかと思います。
処理のプロセスとしては、画像から顔を検出 → 検出された顔のグループ化、ラベル付け が必要になります。また、画像が追加されたときに、これまでに検出された人物 (顔) なのか、新しい人物 (顔) なのかを識別し、新しい人物の場合は登録する作業が必要です。このプロセスを Face API のオペレーションに当てはめると以下のようになります。
(1)初期画像データ投入
- 人物 (顔) を登録するためのグループを登録 : PersonGroup – Create
- 画像から顔を検出 : Face – Detect
- 検出された顔のグループ化 : Face – Group
- グループ化された顔に人物ラベル付けを行う : PersonGroup Person – Create
- 人物&顔を Face API に学習させる: PersonGroup – Train
(2)追加画像データ投入
- 画像から顔を検出 : Face – Detect
- 人物ラベル付け済み顔リストに照合 : Face – Identify
- 初期データから検出した人物と合致する場合
- 顔を追加する : PersonGroup Person – Add Face
- 初期データから検出した人物に合致しない場合
- グループ化を行い、人物ラベル付けを行う : Face – Group , PersonGroup Person – Create
- 初期データから検出した人物と合致する場合
- 人物&顔を Face API に(再)学習させる: PersonGroup – Train
(1)初期投入 も (2) 追加投入 のいずれも、人物ラベルや顔の追加を行った後、Face API にデータを学習させるオペレーション (PersonGroup – Train) が必要です。 Train のオペレーションは非同期のため、PersonGroup – Get Training Status で学習が終了したか確認を行います。