AWS Amazon Rekognition 画像処理 画像分類
2023.01.29 更新
前回、製造業の目視検査の自動化を念頭に、Amazon Lookout for Visionで異常検知を試してみましたが、同じことがAmazon Rekognitionによる画像分類でも可能です。
Amazon Rekognitionを試したみた系の既存の情報の多くは、あらかじめ学習されたモデルで、ラベル検出だったり、顔の分析だったりを試すものが多いのですが、それだと個別業務の要件では使えません。Rekognitionの中のCustom Labelsというものが、データを自前で準備して独自のモデルを学習することに対応しています。
今回はこの「Amazon Rekognition Custom Labels」を試してみます。また、Lookout for Visionとの比較もしてみます。
Amazon Rekognitionとは、画像や動画を機械学習モデルによって分析できるサービスです。ちなみに、Rekognitionのスペルはこれであっています。
画像分析でできることは、既存の学習済みモデルによるものと、自前のデータを使ってモデルを学習するものに分けられます。Rekognitionはラベル分析ができる、シーン分析ができる、と書かれている情報は、前者の学習済みモデルのほうの話ですので、例えばラベル分析であれば、検出したいラベルがあらかじめ用意されていないと使えないということになります。ただし、新しいラベルを追加してほしいとリクエストを出すことはできるようです。
そのため、何か独自の要件で画像分析をしたい場合には、自前データで学習するほうになり、それがCustom Labelsになります。
前回同様にサービスの特徴をまとめると以下のとおりです。
Amazon Rekognition
https://aws.amazon.com/jp/rekognition/
あらかじめS3にアップロードしておいた画像をデータセットとしてインポートできる、という点はLookoutと同様です。独自のラベル名でフォルダ分けしておけば、自動的にアノテーションできる点も似ています。
ハイパーパラメータのチューニングが不要という点も同じです。
異常検知という観点では、前回のAmazon Lookout for Visionでは正常データだけで学習することができましたが、Amazon Rekognitionは画像分類であるため、正常・異常の両方のデータを準備する必要があります。
比較のために、前回と同じMVTec ADの木製板材のデータセットを使用しました。
THE MVTEC ANOMALY DETECTION DATASET (MVTEC AD)
https://www.mvtec.com/company/research/datasets/mvtec-ad/
Amazon Rekognitionトップの左メニューから、カスタムラベルを使用を選択します。続いてGet Startedへ進みます。
Get Startedページの左メニューから、Projectsを選択します。
ここからはほぼLookoutと同じです。
適当な名前を入力して、プロジェクトを作成します。
作成が完了すると、プロジェクトの流れを説明する画像が表示されますので、全体像を確認しましょう。
データセットを作成します。前回は異常検知であったため学習データに正常データのみを用いましたが、今回は画像分類なので異常データも必要になります。
そのため、前回はテストデータ用だった異常データのうちの半分を学習データに加えたものをS3にアップロードして使用しました。ラベル名は、normalとanomalyになります。
ラベルづけも完了した状態で、データセットの作成が完了しました。
「Train Model」をクリックすると学習が開始され、学習が完了するとテストデータによる検証結果が表示されます。
今回はトレーニングデータ277枚、テストデータ49枚の規模で全体枚数は変わりませんが、Lookoutでは1時間ほど学習に時間がかかったのに対して、もう少し早く完了したように思います。
前述のとおり、テストデータを半減させましたので単純比較はできませんが、 なんとF1スコアが1.00でパーフェクトな結果となりました。Lookoutでも0.96程度で相当高かったですが、今回は異常データも学習データに含めたからでしょうか、十分に良い結果が得られました。
Lookoutと同様に、学習したモデルを運用で使うための機能が用意されています。
が、Lookoutではエッジ、クラウドの両方での動作ができたのに対し、Rekognitionではクラウドだけがサポートされているようです。
起動させるユニット数を選択してAPIを起動・停止できたり、APIを呼び出すためのAWS CLIや、Pythonでのサンプルコードが表示されます。
今回は、Amazon Rekognitionから、Custom Labelsで画像分類を試してみました。 Lookoutと同様に、非常に少ない画像で高精度なモデルを得ることができました。
ただしLookoutと比較すると、クラウドAPIでの動作のみがサポートされている点から、工場での検品自動化には適さない場合があるだろうと思われます。また、実際のケースでは異常データが収集しづらいことが多いため、やはりLookoutのほうが使いやすい面があります。
純粋に画像分類をWebサービスなどに導入したい場合には、最適な選択肢になると思います。
[1] Amazon Rekognition
https://aws.amazon.com/jp/rekognition/
[2] THE MVTEC ANOMALY DETECTION DATASET (MVTEC AD)
https://www.mvtec.com/company/research/datasets/mvtec-ad/