千里の道も1枚から、画像分類AIの旅
Text by 技術本部 Kitani
私はDXソリューション開発部のアドバンストテクノロジー課に所属しています。
アドバンストテクノロジー課では、お客様の困りごとを解決するためのAIを含めたシステム開発を行っています。
私は、もともと人の顔認証システムを作る業務をしていたことから、画像の中から何が映っているかを判定・分類する「画像分類AI」の開発を任されることが多いです。
トリプルアイズで開発に関わった画像分類AIの対象物は、「動物」「植物」「虫」「料理」など、お客様の要望に合わせて開発してきました。お客様の業務にご利用いただくAIを開発する上で、強く感じるのは『学習データセットの品質が大事』ということです。本記事にて事例を含めてご紹介します。
画像分類AIの訓練
画像分類AIは通常、教師あり学習で訓練を行います。教師あり学習に用いるデータは、分類対象の映っている画像と正解ラベルが必要になります。
学習に用いる画像は、お客様にご用意いただく場合や、我々がお客様先にカメラを設置して撮影するなどして集めます。どうしても画像が足りない場合は、インターネット上の画像を収集して使用することもあります。その後、収集した画像に対し正解ラベルづけを行い学習データセットを作成します。
学習データセットの品質
品質の高い学習データセットを作成するために、以下の点を心がけています。
・ラベルの正確性の担保
学習データの各画像には、適切な正解ラベルがついている必要があります。プロジェクトメンバーが正解ラベルをつけるときはお客様から指導していただき、メンバー自身も画像を見て分類できるよう勉強していきます。
また、正解ラベルはできるだけ細かく分類するようにしています。こちらの論文(Understanding the Impact of Label Granularity on CNN-based Image Classification https://arxiv.org/abs/1901.07012 )では、いろいろな種類の猫に対し大雑把な「猫」という正解ラベルをつけるより、「トラ猫」「ペルシャ猫」「シャム猫」「エジプシャンマウ」などの具体的な正解ラベルをつけることが分類精度向上に寄与することが報告されています。
実際に私たちが作成した料理判定AIでは、「スパゲッティ」という大まかな正解ラベルをつけるより、「ミートソーススパゲティ」「カルボナーラ」「ペペロンチーノ」など、それぞれのメニュー名で正解ラベルをつけたほうが分類性能が高い結果となりました。
・ラベルの一貫性の担保
学習画像内に複数の対象が映っているのに、単一の正解ラベルのみ付与されている場合に精度が落ちることがあります。公開データベースImageNetでも、こちらの論文(Are we done with ImageNet? https://arxiv.org/abs/2006.07159)で指摘されてます。
お客様からいただいた画像の数が限られている場合は、識別対象の切り抜き画像を作成するなどして、画像内の識別対象と正解ラベルが正しく対応するように加工を行っています。
・ラベル間のバランスの調整
一般的に正解ラベルごとの学習データ数はできるだけ均一であるほうが望ましいと言われています。学習データ数が不均一だと、学習データ数が多いラベルに対して過学習を起こしたり、学習データ数が少ないラベルを出力しなくなるなど誤った学習をしがちなためです。
実際の開発では、学習データのバランス調整後にAIの学習・評価を行い、結果を見ながらバランスを微調整していくことが多いです。
・ノイズとなる画像の除去
インターネットから学習データを収集する場合、正解ラベルで画像をキーワード検索して学習データセットを作成する場合があります。
しかし、例えば「バラ」で検索すると、植物のバラの写真だけでなく、バラ農家の人の写真や、バラの絵、バラを使った製品など、様々な画像が表示されます。植物分類AIを作成するときに、バラの正解ラベルがついた『人』や『製品』の画像はノイズとなるため、除去する作業を行います。ノイズ画像はハッシュ値やクラスタリング、学習済みのAIを利用するなどして自動的に除去していますが、最後は人が確認して品質を保つようにしています。
まとめ
このように画像分類AIの開発時に行う作業の多くは、学習データの品質担保のための地道な作業の繰り返しです。お客様向けに開発するAIは、テストデータで精度が出ればそれで終わりではなく、実際にお客様が業務で利用されるときに、正しく動くことが重要となります。私は1枚1枚の学習データの確認作業が、精度向上に寄与し、その結果お客様に喜んでいただけるAIが開発できると考え、日々業務に取り組んでいます。
◼️第1回 顔認識と生成AI