AWSには画像から異常検知を行うAmazon Lookout for Visionというサービスがあります。

https://aws.amazon.com/jp/lookout-for-vision/

  • わずか 30 枚のイメージで、ライブのプロセスラインから異常を発見する機械学習 (ML) モデルを簡単に作成できます。
  • 視覚的な異常をリアルタイムで特定し、欠陥の削減と防止、生産品質の向上を実現します。
  • 計画外のダウンタイムを防ぎ、運用コストを削減するために、目視検査データを使って潜在的な問題を発見し、是正措置を講じます。

このサービスを試してみました。

題材

画像からの異常検知なので、画像を用意する必要があります。 事前に準備されているサンプル画像を使ってもいいのですが、自分で用意したいと思いました。 そこで用意したのがこちら。

20220125_111717764_iOS.jpg

はんこです。 森口森田です。 森口を異常とすると失礼なので、森口印を正常、森田印を異常として検証しました。

(ちなみに、プリント基板のサンプル画像はこちらで提供されています。)

https://github.com/aws-samples/amazon-lookout-for-vision

手順

画像の準備

Lookout for Visionでは、正常の画像が20枚以上、異常の画像が10枚以上必要になります。 せっせとはんこをおして、iPhoneで撮影しました。できるだけ同じアングルになるように取りました。

正常(森口印)

68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f313138303434312f39656636663337362d633034342d343264612d353962642d3037383236646333303939362e6a706567.jpeg

異常(森田印)

20220125_112023894_iOS.jpg

判別できそうな予感!

ワークスペースの作成

ここからはマネジメントコンソール上で行います。まずは、Lookout for Visionの画面に移動します。

https://ap-northeast-1.console.aws.amazon.com/lookoutvision

ap-northeast-1.console.aws.amazon.com_lookoutvision(Surface Pro 7).png

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

ap-northeast-1.console.aws.amazon.com_lookoutvision(Surface Pro 7) (1).png

次の画面では、以下の項目を選択しました。

項目選択肢
設定オプション 1つのデータセットを作成する
イメージをインポートコンピュータからイメージをアップロードする

選択したら、「データセットを作成」をクリックします。

すると、このような画面になりますので、イメージを追加ボタンをクリックし、用意した画像をドラッグアンドドロップしてアップロードできます。

まずは正常画像(森口印)20枚をアップロードします。アップロード直後の画面はこのようになります。

ap-northeast-1.console.aws.amazon.com_lookoutvision(Surface Pro 7) (3).png

「ラベルを追加」→「このページのすべてのイメージを選択」→「正常として分類」と操作を行い、「正常」のラベルを付けます。 1ページあたりの表示が9枚までなのでページングを切り替えてすべての画像に「正常」のラベルを付けた後、「変更を保存」ボタンを押します。

同じようにして、異常画像(森田印)をアップロードし、「異常」のラベルをつけます。 画像の追加アップロードは、「アクション」→「トレーニングデータセットにイメージを追加します」から行います。 フィルターで「ラベルなし」を選ぶと作業がはかどります。

30枚の画像全てにラベルをつけたら、モデルをトレーニングボタンを押し、トレーニングを開始します。

トレーニングが完了すると、トレーニング結果が表示されます。

ap-northeast-1.console.aws.amazon.com_lookoutvision_region=ap-northeast-1(Surface Pro 7).png

モデル精度の検証

1回目

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

ap-northeast-1.console.aws.amazon.com_lookoutvision_region=ap-northeast-1(Surface Pro 7) (1).png

そんなバカな。。全部異常に分類されました。(3勝3敗)

検証用に使った画像についても手動でラベルをつけることができ、この画像を追加してモデルの再学習ができます。 このあたりのフローが簡単にできるのはいいですね。

2回目

1回目の検出に使った6枚の画像を追加して再学習し、再度トライアル検出を行ってみました。

トライアル検出に使用する画像を間違えてしまい、6件全部を正常(森口印)にしてしまいました。(後で間違いに気づきました)

その結果がこちらです。

ap-northeast-1.console.aws.amazon.com_lookoutvision_region=ap-northeast-1(Surface Pro 7) (4).png

全部不正解(0勝6敗)です。 (´・ω・`) やり方が悪いのか、、そもそも題材が悪いのか。。

3回目

予め用意していた画像全部つぎ込んで、最後の実施です。(全部で60枚の画像)

ちなみにこのトライアル検出も使用する画像は間違えたので、すべて正常(森口印)で行っています。

ap-northeast-1.console.aws.amazon.com_lookoutvision_region=ap-northeast-1(Surface Pro 7) (5).png

なんと!ここに来て全部正解!!!

やったね。

おまけ

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

ap-northeast-1.console.aws.amazon.com_lookoutvision_region=ap-northeast-1(Surface Pro 7) (6).png

期待値検証数正解数不正解数
正常(森口印)10100
異常(森田印)1037

正常(森口印)はすべて正しく判定されました。

浅い知識ですが、、、 あってるか自信はありません。そしてどう判断していいかはわからない。。

指標
正解率(Accuracy)13/20 = 65%
適合率(Precision)10/17 = 58.9%
再現率(Recall)10/10 = 100%

まとめ

  • もっと接写して撮ると結果が違うかも?

  • 正常20枚、異常10枚の最小枚数でいい精度を出すのは無理がありそう

  • おそらく一生分の森口さん印を押しました(笑)

20220125_132804482_iOS.jpg