Amazon Rekognitionで画像分類を実施してみた
背景
- 撮影した動物の画像が気に入らなかった場合、自動的に取捨選択してくれたら楽だな
- AWSの勉強も行いたい
ということで、画像分類に特化したAmazon Rekognitionのサービスをえらびました
Amazon Rekognitionについて
- 機械学習 (ML) モデルとインフラストラクチャを最初から構築することなく、事前にトレーニングされた、またはカスタマイズ可能なコンピュータビジョン API をアプリケーションにすばやく追加
- 何百万もの画像、ストリーミング、保存された動画を数秒で分析して、AI を使用して人間のレビュータスクを強化
- フルマネージド AI 機能を使用して、ビジネス上のニーズに基づいてスケールアップおよびスケールダウンを行い、分析した画像と動画に対してのみ料金を支払います。
参照:https://aws.amazon.com/jp/rekognition/
流れ
-
データの準備(前処理)
-
プロジェクトの作成
-
データセットの作成
-
モデルの作成・評価
データ準備(前処理)
ブラウザからS3に画像をアップロード
参考:Ahttps://docs.aws.amazon.com/ja_jp/sdk-for-javascript/v3/developer-guide/s3-example-photo-album.html
- アルバム・写真を保存できるS3バケットを作成する
- 画像をアップロード
Amazon Rekognition導入
AWSコンソール画面(https://us-east-1.console.aws.amazon.com/console ) から Amazon Rekognitionを選択
Amazon Rekognition > カスタムラベルを使用 > ご利用開始にあたって > プロジェクト > 作成
先に流れを確認したい場合はチュートリアル・サンプルプロジェクトなどで大まかな流れを確認できます。
https://us-west-2.console.aws.amazon.com/rekognition/custom-labels?region=us-west-2#/get-started/example-projects
データセット作成
今回はトレーニングデータとテストデータを分けていないので、
自動的に8:2で分けられるよう 1つのデータセットを設定します。
S3のURLについては、使用画像が入っているディレクトリで S3 URLをコピー を選択すればOK
パケット側の設定
ポリシーをコピーし、Paste the policy into the "Bucket Policy" section of xxx… を選択
↓
対象バケットの バケットポリシー を編集、データセット作成を選択
結果
データセットが作成済み という表示になりました。
新しくラベルを追加する
ローカルコンピュータから使用する画像にはラベルがつかないので、自身でラベルをつくります。
ディレクトリを分けている場合、あらかじめラベルを設定することもできます。
- 新しいラベルの追加
ラベル付けを開始 > ラベルを追加 > 新しいラベル名 > ラベルを追加 > 保存
参考:https://docs.aws.amazon.com/rekognition/latest/customlabels-dg/md-labels.html
2. 細かく設定したい場合は、画像ごとに境界を設定
犬と判定してほしい箇所に犬のラベルを付けました
3. トレーニングデータ・テストデータともにラベル付けを行い、完了
※ともにラベル付けを行わないと、モデルのトレーニングができないので注意
モデルのトレーニング
モデルのステータスが TRAINING_IN_PROGRESS → TRAINING_COMPLETED になっていれば成功
↓
参考:https://docs.aws.amazon.com/rekognition/latest/customlabels-dg/training-model.html
エラーが発生した場合
今回は
使用されているテストラベルとトレーニングラベルの重複が50%未満の場合に起きるエラーが発生しました
-
解決策
ラベルが重複するよう、テストデータ用のラベルを細かく追加
参考:https://docs.aws.amazon.com/rekognition/latest/customlabels-dg/tm-debugging-aggregate-errors.html
モデルの評価
テストデータセットのパフォーマンスを確認する
犬の顔に想定通りのラベルがついていましたが、全身・手足はFalse Negativeの結果となりました。
まとめ
精度の高いモデル作成はできなかったが、画像分類を学ぶよい切り口
- 問題点
ラベルの精度
データセットをあらかじめ作成
スマホなどで撮った写真 → AWSで画像選択 → 自身が良いと思った写真のみ残す
といったことも可能だと思います。
参考
Sagemakerをつかった画像分類について
Amazon Rekognitionとはまた違う手法ですので、気になった方はぜひご覧ください。
◆モデルについて学ぶ TensorFlow
https://www.tensorflow.org/tutorials/keras/classification
◆画像処理について(Dog vs Cat)
https://www.tensorflow.org/tutorials/images/classification
◆AWSを用いた機械学習
https://dev.classmethod.jp/articles/learn-machine-learning-within-an-hour-with-sagemaker/
◆現場で使える!TensorFlow開発入門 Kerasによる深層学習モデル構築手法
https://books.google.co.jp/books?hl=ja&lr=lang_ja|lang_en&id=-dtVDwAAQBAJ&oi=fnd&