深層距離学習のよいところ
目次
簡潔に
- 既存の分類モデルにくっつけるだけ
- 何より簡単に利用できる
どんな時に役立つか、もう少し詳しく
通常の画像分類では
- EfficientNetの分類タスクを考える
- B3のモデルでは入力画像が1,536次元の特徴量(featureマップ)に圧縮される
- 入力画像を300 x 300 = 90,000pxとすると、100分の1ぐらいになる
- 画像ごとに様々な「featureマップ」になっている
- それを1,000種類ぐらいに分類するのは何となくできそうな気がする
分類する数が多い場合(例えば85万件だったら)
- 深層距離学習が有効だった例
-
深層距離学習(EfficientNet+ArcFace+Ann)
- 申請された画像と、既に商標登録されている85万件の画像に近いものある?
- 似たものが申請されたら申請却下したい
- 85万件の画像をすべてfeatureマップに変えて、申請画像のfeatureマップと近いものを探すタスク
-
深層距離学習(EfficientNet+ArcFace+Ann)
- 1,536次元(EfficientNet-b3)ぐらいじゃ、似たような「featureマップ」がいっぱいできそう
- 本当に似たものが見つけられないような気がする
- 1,536次元から増やせばいいのでは?
AcrFaceを使うに至るモチベーション
分類数が多い場合の対処方法の検討段階
- 次元数を増やしたら
- 計算量が多くなる
- 学習に時間かかる
- 何時間も待ってられない
- 精度のモデルを作るには、試行錯誤で何度も学習を繰り返す
- 1回の学習時間は短い方がいい
- どうしよう…
AcrFaceで解決しよう
- 次元数はそのままで違いをくっきりさせる方法
- 似ているものは近く、似ていないものは遠くの「featureマップ」になるように学習ができる
- 1,536次元になった特徴マップがArcFaceを挟むことでよりくっきりとした違いになる
- つまり、ほとんど同じと言える画像とちょっとだけ違う画像の特徴マップの差が(AIには)大きい差に見えるということ
- 次元増やさなくていいところが、とてもありがたい!
- ちなみに、距離が近いもの見つける探索にはANNを利用
