ブログ名

第2回 物体検知を利用したレジでの商品の検出

今回の記事からは, AIの画像認識を利用したレジでの商品の検出についての内容になります.

どのように物体検知を行うか(方針)

 FaceNetという手法を参考にします. その名の通り顔の検出に使うことを目的に作られたニューラルネットワークで, 22層のCNN(畳み込みニューラルネットワーク)で構成されています. 顔の画像の特徴量をベクトルで表し, そのユークリッド距離(ベクトル間の距離)で同一人物かどうかの判定を行うものです.  CNNは前回の記事で説明した線形モデルと同じく学習モデルの種類の1つです. ユークリッド距離の求め方は数学で2点間の距離を求めるときに使う方法と同じだと考えて下さい.

CNNの構成(論文より引用)

f:id:iTD_GRP:20191107222756p:plain

論文:https://arxiv.org/abs/1503.03832

サンプル:https://github.com/davidsandberg/facenet

本文中の図は特に説明がない限り論文からの引用です.

FaceNetについて

 距離は0.0から4.0の間で示され, 算出した距離の値が小さい程同一人物に近いとされます. 同一人物であると判断する閾値は論文中では1.1が使用されています.

f:id:iTD_GRP:20191107222831p:plain

 上の図の数字は隣接する画像同士のユークリッド距離を表しています. 閾値を1.1とした場合には顔の角度や背景, 光源に関係なく同一人物を判定できていることが分かります.  画像は顔の部分のみ切り抜いたものを使用し, 論文ではそのサイズは96*96から224*224の間の大きさが使われています.

 FaceNetではTriplet Lossと呼ばれる手法での学習が行われています. Tripletは3枚組の画像を意味し, 内訳は判定対象の画像とそれと同一人物である(同じクラスの)画像, そして同一人物でない画像の3枚です.

f:id:iTD_GRP:20191107223201p:plain

Anchor:学習対象

Positive:対象と同一クラス

Negative:対象と異なるクラス

 Triplet LossではAnchor - Negative間の距離を最大化, Anchor – Positive間の距離を最小化するように学習が行われます. これを繰り返すことで精度を高めていきます.

最後に

 この方法は最初に述べたように人間の顔を識別することを想定されたものです. レジに並ぶ商品は顔と異なり概形が一致するとは限りません. 特徴量ベクトルの次元数など課題も多くあります. 今後はそれらの進捗を記事にしていこうと思うのでよろしくお願いします.


前の記事へ 目次へ戻る