Amazon Rekognition Custom Labels の使用感について

#Amazon Rekognition Custom Labels を使ってみた

AWS の画像認識サービスの一つ、Amazon Rekognition Custom Labels がどんなものなのか評価も兼ねて使ってみたので主に使用感などを説明していけたらと思います。

###※サービス使用上の注意
Amazon Rekognition Custom Labels を使うには AWS アカウントが必要になります。また、**日本のリージョンや日本語の表示**で AWS を使用している場合、Amazon Rekognition Custom Labels を使用する為の画面が現れない(2020/3/4時点)ので注意してください。
画像分類の結果表示までに必要な作業手順については以下の他記事で詳しく解説されているのでそちらをご参考のほど。
[Amazon Rekognition Custom Labels を使って自分ちの猫を見分ける！](https://qiita.com/clockpulse/items/fe1f7ce6a130e9abe1c6)
[Amazon Rekognition Custom Labels でアーモンドとピーナッツの判別モデルを作ってみた。](https://qiita.com/KC_NN/items/d265eddcbdc8a47ed88c)

作業手順での注意点として画像を学習させる際に Draw Bounding Box での領域指定を行うと分類精度がかなり落ちることがあります！！
⇨領域指定なしで、背景がない単品の画像だとかなり精度が上がる

<img width="1058" alt="スクリーンショット 2020-03-03 13.09.32.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/505753/f4794712-d477-ccc1-a219-1c5ec641d295.png">

##この記事では以下のことについて記述します。

**・Amazon Rekognition Custom Labelsとは？
・特徴と使い方
・結果表示画面のサンプルサイト①
・物体検知と画像分類を組み合わせたサンプルサイト②
・実際に使ってみての感想と注意点
・終わりに**

##Amazon Rekognition Custom Labelsとは?（長いので以下 ARCL）
まずは簡単に ARCLがなんなのか知らない方もいると思うので簡単に説明すると、

・S3 (Amazon のファイルサーバー)にアップロードした画像を分類するツール
・自分で画像にラベルづけを行い、画像データを学習させることができる
・作成したどのラベルに画像が該当するのか、学習データを元に確信度と共に結果を表示する

というものになります。

##特徴と使い方

ARCL の主な特徴として
・比較的安価で画像分析と機械学習を体験できる
・自分で画像のラベルづけを自由に行えるため、目的に応じた画像分類のカテゴリを設定できる
・少ない画像データ(20枚程度)の学習でもそこそこの分類精度を確保できる
 　　例：普通の状態のりんごとかじられたりんごを正しく分類できる
・画像データを追加することで結果の精度を高めることができる
というものがあります。

現在 Google Vision API や既存の画像分析ツールは多く出ていますが、ARCL は自分で画像のラベルづけを自由に行えるため、「**目的に応じた画像分類のカテゴリーを設定できる**」点が他のサービスと特に差別化できる部分かと思います。
　例えばうどんと鍋焼きうどんと焼きうどんなどコアなものを分類したい場合や、燃えるゴミなのか燃えないゴミなのか判断したい場合などは自分でカテゴリーを設定できる ARCL が便利です。（そもそも主要 AI サービス技術の開発は海外主導で行われているものが多いので日本特有のものは学習済みモデルでは判断できなかったりする）


#結果表示画面のサンプルサイト①

<img width="788" alt="スクリーンショット 2020-01-30 11.22.51.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/505753/db412b0a-68d7-fcd8-18b9-da1e7b70875e.png">

*※学習データ表示のボタンは学習させたデータフォルダへのリンク*

上記の画面はサンプルとして作成したウェブサイトです。S3にアップロードしたりんごの画像を分析し、学習データと照らし合わせた結果を表示しています。

**分析手順**
*画像ファイルを選択 ⇨ S3に画像をアップロード ⇨ アップロードした画像を分析 ⇨ 結果を表示*



#物体検知と画像分類を組み合わせたサンプルサイト②
Amazon Rekognition と ARCL を組み合わせて Amazon Lambda を介して
1.画像が何なのか出力
2.画像が燃えるゴミなのか、燃えないゴミなのか、お弁当類のゴミなのか出力
３.画像のゴミ種別ごとに S3 にフォルダを分けて保存

という機能を持ったウェブサイトも作成してみました。
下のスクショがウェブサイトの画面になります。

<img width="888" alt="スクリーンショット 2020-03-03 11.54.37.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/505753/44bfea01-1180-84ab-1c84-3d900c5ca81b.png">

細かい構成図やコードは別記事に記載しようと思います。
#実際に使ってみての感想と注意点
20枚程度の少ない画像でも学習させる画像が正確であれば、りんごとかじられたりんごの区別は8~9割方正しくできていました。また、AWS の他のサービスと組み合わせることで色々な使い道があることもわかりました。
例 : 
・Lambda を使って分類結果をトリガーに画像をラベル毎に別フォルダに保存
・既存の学習済み Rekognition サービスで物体名検出し、ARCL で分類
・Amazon Translate を介してラベルを日本語に変換
など

注意点として、
・学習の際に Draw Bounding Box での領域指定を行うと精度が落ちて正確な分類が難しい
・60枚程度の画像データ学習でも１時間ほど学習時間がかかる
・~~作成したプロジェクトを削除する方法が見当たらない~~ (4/4/2020 プロジェクト削除機能が追加されました)
・プロジェクトのモデルを STARTING の状態で走らせ続けていると１時間 約4ドル課金されるので使用しないときは手動ですぐ止めないとコストがかさむ
など気になった部分もありました。
#終わりに
上記の注意点についてはサービスリリースから半年ちょっとの現時点でのことなのでこれからの機能改善に期待できますし、モデルの起動を最低限に保てばとても手軽にサービス利用ができるので画像分類に興味がある方はぜひ一度使用してみると面白いかと思います。
#参考にした記事
[Amazon Rekognition Custom Labels を使って自分ちの猫を見分ける！](https://qiita.com/clockpulse/items/fe1f7ce6a130e9abe1c6)
[Amazon Rekognition Custom Labels でアーモンドとピーナッツの判別モデルを作ってみた。](https://qiita.com/KC_NN/items/d265eddcbdc8a47ed88c)