概要
ZOZOTOWNの商品画像には、商品のみの画像とコーデの画像があります。
これらの画像から全身が写ったコーデ画像のみを抽出したくなったため、MLを利用して試してみました。
商品のみの画像 | コーデ画像 |
---|---|
必要要件
コーデ画像として使える全身画像 = 首と足が含まれている画像
と考えました。
検討した手法
1.オブジェクト検出
オブジェクト検出は、画像の中に何があるのかを検出する手法です。(例:人間、車、犬、洋服など)
この手法を最初に検討しました。しかし人間や犬などのレベルでの検出はできるのですが、首や足などのレベルでの検出はできませんでした。そのため、別の手法を検討しました。(転移学習という方法を使って、このモデルを首や足などを検出できるように学習し直すことでも可能かと思われますが、それよりも効率的に使える手法を検討しました。)
ちなみにこの手法は、AWS Rekognitionで簡単に利用することができます。
AWS Rekognition
APIでMLを使った様々な画像処理を行えるサービスです。
1000枚/1$なので、まず試してみるという時に便利です。
2.姿勢推定
各関節を検出することで、画像や動画に写った人の姿勢を推定することができる機能です。
簡単に人の動きをモデル化できるので、ダンス動画の解析などに使われます。
首と足の関節が写っている場合に、コーデ画像であると判定するようにすれば使えそうです。
OpenPose
ボトムダウン型で姿勢推定ができるライブラリです。(トップダウンとボトムダウンの説明はこちら)
(追記)記事にいただいたご意見から調べたこと
オブジェクト検出の転移学習によって体の部位を検出できないか?
調べてみましたが、基本的には人間の体の部位は動画や深度情報を活用していました。
Fast Detection and Modeling of Human-Body Parts from Monocular Video
Real-time Identification and Localization of Body Parts from Depth Images
実際に物体検出から、顔を認識する転移学習を行なっているものはありました。
Keras-SSDで転移学習-顔検出-
ただその他の体の部位の情報は多くないので、あまり有効な方法ではないかもしれません。(AWS Rekognitionで今度試してみたいと思います。)(そもそも姿勢検出でできるので、頑張る必要はないですが。)
姿勢推定の弱い部分
やはり向きや画像の範囲によっては、姿勢を検出できない場所があるようです
https://qiita.com/baba5246/items/7ed50689c67c0ad3882d
展望
実際にサーバーを動かす際の要求仕様を考えてみました
1. 複数の画像のURL(もしくは画像?)をサービスに送る
2. その中からコーデ画像のみを返す