AWSには画像から異常検知を行うAmazon Lookout for Visionというサービスがあります。
https://aws.amazon.com/jp/lookout-for-vision/
- わずか 30 枚のイメージで、ライブのプロセスラインから異常を発見する機械学習 (ML) モデルを簡単に作成できます。
- 視覚的な異常をリアルタイムで特定し、欠陥の削減と防止、生産品質の向上を実現します。
- 計画外のダウンタイムを防ぎ、運用コストを削減するために、目視検査データを使って潜在的な問題を発見し、是正措置を講じます。
このサービスを試してみました。
題材
画像からの異常検知なので、画像を用意する必要があります。 事前に準備されているサンプル画像を使ってもいいのですが、自分で用意したいと思いました。 そこで用意したのがこちら。

はんこです。
森口と森田です。
森口を異常とすると失礼なので、森口印を正常、森田印を異常として検証しました。
(ちなみに、プリント基板のサンプル画像はこちらで提供されています。)
https://github.com/aws-samples/amazon-lookout-for-vision
手順
画像の準備
Lookout for Visionでは、正常の画像が20枚以上、異常の画像が10枚以上必要になります。 せっせとはんこをおして、iPhoneで撮影しました。できるだけ同じアングルになるように取りました。
正常(森口印)

異常(森田印)

判別できそうな予感!
ワークスペースの作成
ここからはマネジメントコンソール上で行います。まずは、Lookout for Visionの画面に移動します。
https://ap-northeast-1.console.aws.amazon.com/lookoutvision

左メニューのプロジェクトから、プロジェクトを作成します。名前をつけるだけです。 プロジェクトが作成できたら、「データセットを作成」をクリックします。

次の画面では、以下の項目を選択しました。
| 項目 | 選択肢 |
|---|---|
| 設定オプション | 1つのデータセットを作成する |
| イメージをインポート | コンピュータからイメージをアップロードする |
選択したら、「データセットを作成」をクリックします。
すると、このような画面になりますので、イメージを追加ボタンをクリックし、用意した画像をドラッグアンドドロップしてアップロードできます。
まずは正常画像(森口印)20枚をアップロードします。アップロード直後の画面はこのようになります。

「ラベルを追加」→「このページのすべてのイメージを選択」→「正常として分類」と操作を行い、「正常」のラベルを付けます。 1ページあたりの表示が9枚までなのでページングを切り替えてすべての画像に「正常」のラベルを付けた後、「変更を保存」ボタンを押します。
同じようにして、異常画像(森田印)をアップロードし、「異常」のラベルをつけます。 画像の追加アップロードは、「アクション」→「トレーニングデータセットにイメージを追加します」から行います。 フィルターで「ラベルなし」を選ぶと作業がはかどります。
30枚の画像全てにラベルをつけたら、モデルをトレーニングボタンを押し、トレーニングを開始します。
トレーニングが完了すると、トレーニング結果が表示されます。

モデル精度の検証
1回目
トライアル検出で、モデルの精度を検証してみます。 画像は正常3つと異常3つ用意しました。 結果はこちら!

そんなバカな。。全部異常に分類されました。(3勝3敗)
検証用に使った画像についても手動でラベルをつけることができ、この画像を追加してモデルの再学習ができます。 このあたりのフローが簡単にできるのはいいですね。
2回目
1回目の検出に使った6枚の画像を追加して再学習し、再度トライアル検出を行ってみました。
トライアル検出に使用する画像を間違えてしまい、6件全部を正常(森口印)にしてしまいました。(後で間違いに気づきました)
その結果がこちらです。

全部不正解(0勝6敗)です。 (´・ω・`) やり方が悪いのか、、そもそも題材が悪いのか。。
3回目
予め用意していた画像全部つぎ込んで、最後の実施です。(全部で60枚の画像)
ちなみにこのトライアル検出も使用する画像は間違えたので、すべて正常(森口印)で行っています。

なんと!ここに来て全部正解!!!
やったね。
おまけ
異常を検知できたかがよくわからない検証になったので、改めて、はんこを押しました。 3回目と同じモデルで、森口印10枚、森田印10枚で最終検証です!

| 期待値 | 検証数 | 正解数 | 不正解数 |
|---|---|---|---|
| 正常(森口印) | 10 | 10 | 0 |
| 異常(森田印) | 10 | 3 | 7 |
正常(森口印)はすべて正しく判定されました。
浅い知識ですが、、、 あってるか自信はありません。そしてどう判断していいかはわからない。。
| 指標 | 値 |
|---|---|
| 正解率(Accuracy) | 13/20 = 65% |
| 適合率(Precision) | 10/17 = 58.9% |
| 再現率(Recall) | 10/10 = 100% |
まとめ
-
もっと接写して撮ると結果が違うかも?
-
正常20枚、異常10枚の最小枚数でいい精度を出すのは無理がありそう
-
おそらく一生分の森口さん印を押しました(笑)
