JCV社の顔属性SDKでカメラに写った人の年齢や性別などの属性情報を取得する:currentTrackingBody編
SDK紹介
JCV属性分析SDKはオフライン店舗における、顧客の行動分析の提供をコンセプトに開発されたSDKです。
SDKの紹介や導入方法については「JCV社の顔属性SDKでカメラに写った人の年齢や性別などの属性情報を取得する:currentTrackingFace編」に記載されているので、そちらをご参照ください。
属性情報を取得
属性情報を取得するためには、①解析する画像をSDKにわたす、②解析結果をSDKから受け取る、の2つのステップが必要です。ここではcurrentTrackingBody APIを利用して顔に関する属性情報を取得してみます。
①解析する画像をSDKにわたす方法については、前述の「JCV社の顔属性SDKでカメラに写った人の年齢や性別などの属性情報を取得する:currentTrackingFace編」に記載されています。そちらをご参照ください。
②解析結果をSDKから受け取る
currentTrackingBody APIから身体に関する属性値を取得するには以下のように実装します。
scope.launch {
while (!isRelease) {
try {
// 現在の身体情報を取得
val trackingBodies = InsightSDK.service().currentTrackingBody()
// 検出した顔に四角、属性を描画
drawBodies(trackingBodies)
SystemClock.sleep(interval)
} catch (e: Exception) {
e.printStackTrace()
}
}
}
取得したオブジェクトを画面に表示する
currentTrackingBodyからはTrackingBodyのリストが取得できます。
public class TrackingBody implements Serializable, Cloneable {
private int trackId;
private float bodyQuality;
private String age;
private String gender;
private StRect bodyRect;
private int associatedFaceTrackID;
private BodyAttribute attribute;
private StImage bodyImage;
// 中略
}
属性の詳細は以下のとおりです。
No. | 物理名 | 説明 | 例 |
---|---|---|---|
1 | trackId | 身体トラック Id | |
2 | bodyQuality | 身体クオリティ | 0〜1 |
3 | associatedFaceTrackID | 関連付けられた face id (-1:マッチする顔がない) | 整数値 |
4 | age | 年齢 | 整数値 |
5 | gender | 性別 | M:男性;F:女性 |
6 | attribute.UpperClothing | 上着の種類(半袖、長袖) | |
7 | attribute.LowerClothing | パンツの種類(長ズボン、短パン、スカート) | |
8 | attribute.UpperMode | 上着の模様(単色、ストライプ、Design、Joint、Lattic) | |
9 | attribute.LowerMode | パンツの模様(単色、ストライプ、Design、 Joint、Lattic) | |
10 | attribute.UpperType | 上着のスタイル(ロングコート、ジャケット、T シャ ツ、スポーツウェア、ダウン、シャツ、ドレス、スーツ) | |
11 | attribute.UpperColor | 上着の色(黒色、白色、灰色、赤色、黄色、青 色、緑色、紫色) | |
12 | attribute.LowerColor | パンツの色(黒色、白色、灰色、赤色、黄色、 青色、緑色、紫色) | |
13 | attribute.Age | 年齢層(成人、高齢者、児童) | |
14 | attribute.gender | 性別(男性、女性) |
currentTrackingBodyの例は以下のとおりです。
lowerClothingがSkirtになっていたり、upperColor、lowerColorがWhiteになっていたりします。服の属性の精度は現時点ではいまいちのようです。
currentTrackingBodyではすくなくとも上半身は写っていないと認識できません。
下の例をみると全身で認識しているというよりは上半身をまず認識しているようにも見えます。
currentTrackingBodyでは横向きの人物でも認識できます。
こちらは顔がほぼ写っていませんが人物として認識され、属性も取得できています。
currentTrackingBodyは、服の色や形状などが取得できる面白いAPIですが、本記事執筆時点ではまだ精度があまり高くないようです。年齢も、子供やお年寄りを移してもAdultになってしまうなど実用を考えると今後に期待ということろでしょうか。さらに、服の色はWhite、Black等の固定ではなく16進数などで取得できるとさらに面白いのではと思います。
まとめ
以上、JCV社の顔属性SDKを利用して顔や体の属性情報を取得してみました。
currentTrackingBodyは服の形状や色など面白い属性情報が取得できるのですが、精度は今ひとつですので利用にあたっては注意が必要です。ただ、服装に着目して属性情報を取得できるのはアパレル関係のアプリなどを作成するのに活用できそうです。