Amazon Rekognition Custom Labelsで画像分類してみた

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 Custom Labelsの概要

Amazon Rekognitionとは、画像や動画を機械学習モデルによって分析できるサービスです。ちなみに、Rekognitionのスペルはこれであっています。

画像分析でできることは、既存の学習済みモデルによるものと、自前のデータを使ってモデルを学習するものに分けられます。Rekognitionはラベル分析ができる、シーン分析ができる、と書かれている情報は、前者の学習済みモデルのほうの話ですので、例えばラベル分析であれば、検出したいラベルがあらかじめ用意されていないと使えないということになります。ただし、新しいラベルを追加してほしいとリクエストを出すことはできるようです。

そのため、何か独自の要件で画像分析をしたい場合には、自前データで学習するほうになり、それがCustom Labelsになります。

サービスの特徴

前回同様にサービスの特徴をまとめると以下のとおりです。

Amazon Rekognition
https://aws.amazon.com/jp/rekognition/

データセットはS3からインポート可能

あらかじめ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へ進みます。

Rekognition TOP

Rekognition TOP

プロジェクト作成

Get Startedページの左メニューから、Projectsを選択します。

Rekognition GetStarted

Rekognition GetStarted

ここからはほぼ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サービスなどに導入したい場合には、最適な選択肢になると思います。

Reference

[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/

その他の記事

Amazon Lookout for Visionで異常検知してみた
AWS
Amazon Lookout
画像処理
異常検知
校務システム キャンパスフォース スマートウォッチでバイタル見守り ECCUBE構築
engage AI・人工知能EXPO
校務システム キャンパスフォース
スマートウォッチでバイタル見守り
EC-CUBE構築
engage
AI・人工知能EXPO

TOP