[Amazon Lookout for Vision] 製造業などにおける製品の異常を自動で検出する仕組みが実現できる新サービスを使ってみた #reinvent

2020.12.04

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、Mr.Moです。

現在開催中のre:Invent 2020では次々と新しいサービスの発表がされています。そのサービスの1つに「Amazon Lookout for Vision」があります。こちらは製造業などにおいて、製品に異常があるかどうかの自動検出を実現できるサービスになっています。まだプレビューでの提供ですが東京リージョンにも来ているようですのでさっそく使ってみたいと思います。

Amazon Lookout for Visionとは

Amazon Lookout for Visionを使用すると、工業製品の目視による欠陥を正確かつ大規模に見つけることができます。コンピュータビジョンを使用して、工業製品の欠品部品、車両や構造物の損傷、生産ラインの不規則性、シリコンウェハーの微小な欠陥、あるいはプリント基板のコンデンサの欠品など、品質が重要視されるあらゆる物理的なアイテムを識別します。

機械学習の専門的な知識が無くても、製品の画像データを用意するだけで製品の異常を検出する機械学習のモデルが構築できるサービスです。GUI、CLI両方で扱うことができるようですね。

さっそく使ってみる

公式のGetting Startedのドキュメントを参考にしてさっそく使ってみたいと思います。 今回はGUI(コンソール画面)を使う方法で進めていきます。使うにあたってはいくつかの手順が必要です。

[必要な手順]
1. プロジェクトの作成
2. データセットの作成
3. モデルのトレーニング
4. モデルの評価
5. モデルの使用

最初に本サービスを使う時だけですが、Amazon Lookout for Visionサービスが共通で使う用のS3バケットの作成が必要です。バケットの作成は簡単に実施できるので下記のように右上のボタンで作成を行いましょう。

image.png

事前準備

さっそく使おう!と意気込んでもデータが無いと何もできないのが機械学習のツライところです...ですがGetting Startedではお試し用のデータが用意されています。今回はこちらのデータを使っていきましょう。下記のコマンドで準備を行います。(コマンド打つ環境が無い場合はCloud9のターミナルを使って下記のコマンドを実行で良いと思います)

# 使用するデータを格納用のS3バケットを作成する
$ aws s3 mb s3://<任意のバケット名>

# 公式で用意されているデータを、さきほど作成したバケットにコピーする
$ aws s3 sync s3://circuitboarddataset/circuit_board s3://<さきほど作成したバケット名>/circuit_board

プロジェクトの作成

これから作成するデータセットや機械学習のモデルは、プロジェクトという単位の下で管理していきます。そのためまずはプロジェクトを作成します。

image.png

データセットの作成

次にデータセットの作成です。事前準備で用意したデータは正常と異常の製品画像が格納されています。(左が正常な製品の画像、右が異常がある製品の画像)

image.png

この画像データをデータセットとして登録していきます。登録方法はいくつかありますが、今回はS3にデータを置きましたのでS3バケットのパスを指定する方法で進めていきます。

  • ローカルコンピュータからアップロード
  • データが格納されているS3バケットパスを指定
  • Amazon SageMaker GroundTruthマニフェストファイルをインポート

image.png

上記のようにトレーニング用のデータとテスト用のデータとしてそれぞれS3のバケットを指定します。設定が終わったら画面下にある「データセットを作成」ボタンを押します。すると下記のように、データセットを管理する画面が表示されたと思います。

image.png

データセットの管理画面では画像イメージの追加・削除、ラベルの変更といった操作が行なえます。

image.png

※ データセット用の画像は一定の基準をクリアする必要があるようです。例えば画像ファイルの形式(PNG,JPEG)、最低限用意しないと行けない画像の枚数(単一のデータセットの場合は正常系の画像20枚、異常系の画像10枚。個別のトレーニングデータセットとテストデータセットの場合はトレーニングデータは正常系の画像10枚、テストデータは正常系の画像10枚、異常系の画像10枚)、画像のサイズはすべて同じでなければならない。などなどがあります。詳しくは公式のドキュメントを確認するようにしてください。

モデルのトレーニング

あとはトレーニングの実行をするだけです。モデルのトレーニングはボタンを押すだけで簡単に実行できます。機械学習の専門的な知識が無くても裏でよしなにトレーニングの調整を行ってくれるんですね、後はのんびり待つだけです。(いわゆるAutoML系のサービスですね)

image.png

モデルのトレーニングはそこそこ時間がかかります。この時は2時間ほど。

モデルの評価

しばらくするとトレーニングが完了し、モデルの評価を行うフェーズに入ります。Amazon Lookout for Vision では評価指標も画面上に表示してくれるため、簡単にモデルの精度を確認することができます。(なかなか精度の高いモデルができあがったようですね)

image.png

さらに、Amazon Lookout for Vision では出来上がったモデルを実際に試行することをサポートしています。ここでは未知の新しい画像を実際にモデルに判断させて、検出結果を確認できます。

image.png

すると、上記のように検出した結果とその結果がどのくらい信用できるかの信頼性をパーセンテージで表示してくれます。結果をよく見ると一番目に表示されてるものは信頼性が低く誤った検出をしてしまっていますね。これはいけません... そこで Amazon Lookout for Vision では人間の目で見て誤りだとわかった検出結果を修正する機能を提供しています。

image.png

さらに修正した検出結果をトレーニングデータに加えて再トレーニングするところまでサポートされています。生まれ変わったモデルはさきほど間違ってしまった画像データに対して見事に正解を叩き出していますね!

image.png

モデルの使用

ここまででかなり良い感じに機械学習のモデルが仕上がりました。では満を持してこのモデルを使っていきましょう。使い方も Amazon Lookout for Vision がバッチリ案内してくれます。(モデルをホストティングするコマンドとモデルに画像データを判定させるコマンドが記載されています)

image.png

下記に実行したコマンドを例として記載いたします。

# 現在インストールされている aws-cliのバージョンを確認(v2.1.7)
$ aws --version

# モデルのホスティングを開始するコマンド
$ aws lookoutvision start-model \
  --project-name Amazon-Lookout-for-Vision-Proj-20201203 \
  --model-version 2 \
  --min-inference-units 1

# ホスティングしたモデルに画像データを判定させるコマンド
$ aws lookoutvision detect-anomalies \
  --project-name Amazon-Lookout-for-Vision-Proj-20201203 \
  --model-version 2 \
  --content-type image/jpeg \
  --body /<判定させたい画像がある場所のパス>/image.jpeg

ダッシュボードで異常検出の確認

なお、ホスティングされたモデルが日々行った異常検出の結果はダッシュボードで確認することができます。

image.png

まとめ

データさえ用意すれば簡単に製品異常を検出するモデルが作れてしまうというのがわかりました。また、その検出結果をダッシュボードで確認できるところまで既にサポートしています。製品を検査する様々なケースに対応しうる優れたサービスといえそうですね。まだプレビューでの提供なので正式リリースが来るのが待ち遠しいサービスです。

AWS re:Invent 2020は現在絶賛開催中です!

参加がまだの方は、この機会にぜひこちらのリンクからレジストレーションして豊富なコンテンツを楽しみましょう!

AWS re:Invent | Amazon Web Services

またクラスメソッドではポータルサイトで最新情報を発信中です!

AWS re:Invent 2020 JAPAN PORTAL | クラスメソッド

参考