![見出し画像](https://assets.st-note.com/production/uploads/images/139798208/rectangle_large_type_2_c0e1e1b98e8c095de98becbc239524d4.png?width=1200)
パンツシルエットをAIは判別できるのか?(1)
こんにちは。株式会社ヒューマノーム研究所でインターンをしている井上と申します。
最近、ようやく冬が訪れた感じがしますね。皆さん、気候の変化に合わせて服を選べていますか? 私は高校生までは制服があったのでパジャマしか持っておらず、シーズンごとにファッション記事を読み漁ってなんとか服を揃えています😅
そんな中で、「あのパンツのシルエットって、ワイドパンツ? テーパードパンツ?」となることがありました。日常ではあまり気にしていなかったのですが、検索をかける時に困るんですよねぇ…。
今回は当社が開発しているノーコード物体検知AI構築ツール「Humanome Eyes (以下Eyes)」を用いて、パンツシルエットを識別するAIを作成してみようと思います。めざせ、ファッション用語マスター!
Eyesは、無料で大部分の機能が利用できます。まだ使ったことないよ?という方はぜひお試しください!
まえおき
AIが物体を検知できるようになるには、AI自身が物体の特徴を学習する必要があります。物体検知については、以下の記事を参照ください。
今回は、筆者が特に識別難易度が高いと感じたパンツのシルエット(6種)を学習させていこうと思います。
スキニー ・・・ 「痩せこけた」という意味があり、脚のラインにそってピッタ リフィットするもの。
ストレート・・・ 膝から裾までのラインを直線的に落としたもの。
テーパード・・・ 腰回りから裾側へ向かって細くなっているもの。
ワイド ・・・ 全体的に幅の広いもの。
フレア ・・・ 膝から裾にかけて幅が広くなっていくもの。
ショート ・・・ 膝上丈のもの。
学習するシルエット数が多いので、今回はチャレンジ企画とさせていただきます。
1. 画像の準備
学習に用いた画像は、以下の4点を条件とし、Google検索で出てきたものを上から順に保存しました。
人が着用していない画像
4種類の色(黒、青、茶、グレー)
シルエット全体が写っているもの
正面画像
著作権の関係で収集した画像を再配布することはできませんが、1シルエットにつき5枚、計30枚の画像を用意しました。
2. アノテーション
Eyesへログイン後、タスク一覧画面からタスクの作成をクリックします。画面が切り替わったら、以下のような操作をします(図1)。
![](https://assets.st-note.com/img/1705561306680-fNVaEurCAS.png?width=1200)
6種類のラベルを一度に入力することはできないので、一種類ずつ入力してください。一つ入力したら下画像のように「次のラベル」を押し、次のラベル名を入力していくという動作を繰り返します(図2)。
ラベル名を全て入力し終わったら「保存して完了」を押し、必要なラベルが全て入力されていることを確認してください(図3)。
![](https://assets.st-note.com/img/1705561504012-PCJ3I3JQJr.png?width=1200)
![](https://assets.st-note.com/img/1705561563947-9gI5ndr5HA.png?width=1200)
アップロード完了の通知を確認したらアノテーションする準備は完了です!
タスク一覧から「シルエット判定」を選択し、タスク詳細画面に移りましょう。
では、アノテーションを行っていきます。アノテーションは物体検知AIにパンツのシルエットを認識させるための作業です。画像の中の物体を四角く囲み、ラベリングしていきます。
アノテーションを選択すると以下のような画面に切り替わります(図4)。
![](https://assets.st-note.com/img/1705561759829-dcHuLVLjCH.png?width=1200)
アイコンメニューから四角いアイコンをタップしてから、「Shape」をタップすることでアノテーションができるようになります(図5)。また、パソコンをお使いの場合は、nキーを押すことでも画像範囲を選択することが可能です。
一枚目の画像のラベリングが終わったら、画面上の矢印を押して次の画像のラベリングを行なっていきます。(図6)。
![](https://assets.st-note.com/img/1705561992518-t5esHARNrO.png?width=1200)
![](https://assets.st-note.com/img/1705562088983-aD5Ah1ykZ8.png?width=1200)
今回は6種類のラベルがあるので、図7のようにシルエットが変わるタイミングでアイコンメニューからラベルを変更してください。
![](https://assets.st-note.com/img/1705562291263-olVWyboiir.png)
全てが終わったら、図8の手順でアノテーションを保存していきます。
![](https://assets.st-note.com/img/1705562342535-rx6dHwwRnJ.png?width=1200)
3. 学習と結果
アノテーションが終わったらいよいよ学習させていきます。
今回の学習データではデフォルトの設定を少し変更して、1回目は学習回数を300に変更して学習させます(図9)。今回は、6種類のパンツシルエットを検出できるAIを作ることを目指しているため、デフォルトの設定(学習回数100)のままでは学習不足が懸念されるため、学習する回数を増やしてみます。
![](https://assets.st-note.com/img/1705562623026-iHAEtk1UIZ.png?width=1200)
変更が終わり次第、開始を押してください。長時間かかるとの表示が出ますが、構わず続行してください。
下の「学習モデル一覧」欄で学習が完了したことを確認して、作成したモデルのリンクをタップすると「モデル詳細」画面に移動します。
モデル詳細画面では、モデルの精度に関する3つの指標(上からTotal Loss、Precision、Recall)が下図のようにグラフに示されています(図10)。
![](https://assets.st-note.com/img/1705562828086-R8ZEROVgXG.png?width=1200)
Total Loss、Precision、Recallが何をさしているかは、下記の記事でも詳しく紹介されていますが、本記事でも軽く説明します。
まずTotal Lossは、予測されたものと正解のズレを指します。つまり0に近づくほど良い値となります!
次に、PrecisionとRecallです。どちらも、AIの正答率を表します。つまり1に近いほど精度が良く、0に近いほど精度が悪いと言えます。
学習回数300回では 0.20、0.45と低めで、あまり精度が良いとはいえません。
この状態でシルエットを学習させてみると、テスト画像の半分は「検出なし」となり名称が特定されず、テーパードではないシルエットの残りがテーパードとして判定されています…(図11)。
![](https://assets.st-note.com/img/1705562926067-kG1LLT5udH.png?width=1200)
これじゃシルエット判定なんてできない!
![](https://assets.st-note.com/img/1705563547102-AM7kgVpMig.png)
ということで、精度を改善するため、学習回数を900回に増やして、AIをもう一度つくっていきたいと思います。AIの精度を改善するときの方針については、下記の記事で詳しく説明しています。
果たして、3項目の数値はよくなるのでしょうか!?
結果は以下のとおりです。先ほどの300回の時に比べると、PrecisionとRecallの精度がやや上がりました(図12)。
![](https://assets.st-note.com/img/1705564296877-PlgaVjXwOu.png?width=1200)
この状態で予測させてみると、まずオブジェクトがある程度検出されるようになりました。
![](https://assets.st-note.com/img/1705564549584-AlTLjjioip.png?width=1200)
ストレートとワイドとショートはちゃんと検出されるようになりましたが、テーパード、スキニー、フレアは別物として検出されているか、オブジェクトが検出されていないかの状態です。
うーん、先ほどより精度は良いもののまだまだ実用には程遠い…。
先ほど、学習回数を300から900回に増やしたときは、PrecisionとRecallの精度が改善しました。そこで、さらなる精度向上を目指し、今度は学習回数を最大の1000回に増やし、学習率にも手を加えてみます!
![](https://assets.st-note.com/img/1705564804770-Rf3hgLT6gi.png?width=1200)
その結果は...
さっきとあまり変わらない…というかむしろちょっと悪くなったような気が…(図15)
![](https://assets.st-note.com/img/1705565202007-Iu3GMNqTvx.png?width=1200)
では、予測できるかいざテスト!
![](https://assets.st-note.com/img/1705565308856-Q6l6fpWaZi.png?width=1200)
結果、半分はオブジェクトが検出されず、ショートとワイドしか正しく検出されていないー😭
学習率を変更しても精度にあまり変化がないことが分かりました。
以上の結果から、
学習率を変更せず学習回数を増やすと、オブジェクト検出率は高くなる
明確に長さが異なるショートパンツは検出される
ワイドは検出されやすい
ということが分かりました。
シルエットが直線的なストレート、スキニー、テーパードの違いは認識されておらず、また、フレアはシルエット自体の特徴があるにも関わらず、一度もシルエット判定の候補として、検出されませんでした。
4.考察
ストレート、スキニー、テーパードはシルエットが似ていることからその差異が検出されなかったのではないかと考えています。
それに比べて、フレアはワイド同様、人の目から見ても明確なシルエットの特徴があるにも関わらず、検出されなかった上に一度も判定結果の候補としても上がってきていないことから、曲線的なシルエットの判定は難しいのではないかと考えました。
洋服なので、着た時にこそ本来のシルエットが出るはずです。マネキンに着せた画像の方が区別は簡単になるのかもしれません。
あとがき
今回はシルエット判定に実践的に使えるAIを作ることはできませんでした…
ファッションムズカシイヨ。
ストレート、スキニー、テーパードなどは学習画像を探す際にも「何が違うの!?」と筆者はなっていたので、AIにも難しかったんだな、そうだよねという気持ちでいっぱいです😢
今後お洋服選ぶ際には、自分でも一旦どのシルエットかを予測するなど、AIに頼らずとも自身の目を肥やしていこうと思います!
ここまでお読み頂きありがとうございます🙇♀️
※ 筆者紹介
井上颯子(名古屋大学理学部1年):
頭は文系、進学先はド理系な大学一年生です。最近は80年代ものの洋画を見たり、90年代もののUKロックを聞いたりと一昔前の画質や音質を楽しむ日々を送っています。機械学習に関しては一切やったことがないので、精進して参ります!
---
私たちは、ワークショップのTAや機械学習ツールの使い方の紹介記事を執筆しています。今後も、AI構築の実際についてご紹介していきますので、お読みいただけると嬉しいです!
データ解析・AI構築の初学者向け自習テキスト
表データを利用したAI学習テキスト(Humanome CatData)
画像・動画を利用したAI学習テキスト(Humanome Eyes)
AI・DX・データサイエンスについてのご質問・共同研究等についてはお気軽にお問い合わせ下さい!