JCV社の顔属性SDKでカメラに写った人の年齢や性別などの属性情報を取得する_currentTrackingBody

Pocket

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の例は以下のとおりです。

Screenshot_20200616-092503

lowerClothingがSkirtになっていたり、upperColor、lowerColorがWhiteになっていたりします。服の属性の精度は現時点ではいまいちのようです。

currentTrackingBodyではすくなくとも上半身は写っていないと認識できません。

下の例をみると全身で認識しているというよりは上半身をまず認識しているようにも見えます。

Screenshot_20200616-092503

currentTrackingBodyでは横向きの人物でも認識できます。

Screenshot_20200616-092503

こちらは顔がほぼ写っていませんが人物として認識され、属性も取得できています。

Screenshot_20200616-092503

currentTrackingBodyは、服の色や形状などが取得できる面白いAPIですが、本記事執筆時点ではまだ精度があまり高くないようです。年齢も、子供やお年寄りを移してもAdultになってしまうなど実用を考えると今後に期待ということろでしょうか。さらに、服の色はWhite、Black等の固定ではなく16進数などで取得できるとさらに面白いのではと思います。

まとめ

以上、JCV社の顔属性SDKを利用して顔や体の属性情報を取得してみました。

currentTrackingBodyは服の形状や色など面白い属性情報が取得できるのですが、精度は今ひとつですので利用にあたっては注意が必要です。ただ、服装に着目して属性情報を取得できるのはアパレル関係のアプリなどを作成するのに活用できそうです。

Pocket

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です