検索
連載

機械学習を簡単に試したい人向け、「Amazon Lookout for Vision」で画像データを使った学習、ラベル付け、精度向上の手順AWSチートシート

AWS活用における便利な小技を簡潔に紹介する連載「AWSチートシート」。今回は、「Amazon Lookout for Vision」を使って、画像で簡単に異常検知を行う方法を紹介する。

PC用表示 関連情報
Share
Tweet
LINE
Hatena

 「Amazon Web Services」(AWS)活用における便利な小技を簡潔に紹介する連載「AWSチートシート」。今回は「Amazon Lookout for Vision」を使って、画像で簡単に異常検知を行う方法を紹介します。

「Amazon Lookout for Vision」とは

 「Amazon Lookout for Vision」は、コンピュータビジョンを使用して視覚表現の欠陥や異常を発見するサービスです。Lookout for Visionは機械学習を使用して、人と同じようにカメラからの画像を確認、理解します。それも人よりも高い精度とはるかに大きな規模で実行できます。つまり、機械学習で製品の画像を読み込ませて学習させることで、画像が異常か正常かを分類してくれるサービスです。しかも機械学習の専門知識を必要とせずに、ほんの数分で画像や対象物の検査を自動化することができるのです。

 製造業の企業は、対象の画像の違いを大規模で速やかに特定することで、品質を向上させ、運用コストを削減できます。品質管理、欠陥や損傷の評価、コンプライアンスを向上させながら、コストのかかる一貫性のない手動検査の必要性を排除できるのです。例えば、製品に不足しているコンポーネント、車両や構造物の損傷、生産ラインの不規則性、シリコンウェハーの微小な欠陥、その他の同様の問題を特定できます。

「カーペットの画像から“ほつれ”、シミ、金属片などの異常を判断する」サンプルで機械学習を知る

 本稿では、Lookout for Visionの使い方の例として、「カーペットの画像から“ほつれ”、シミ、金属片などの異常を判断する」サンプルを示します。

 前準備として、Amazon Web Services Japanのエバンジェリスト亀田治伸氏が用意してくれている画像データをダウンロードしておきます。

  • https://filesharingharunobukameda.s3-ap-northeast-1.amazonaws.com/Images.zip

 「開始方法」をクリックします。

 ストレージサービス「Amazon Simple Storage Service(S3)」のバケットを作成します。

 任意のプロジェクト名を付けてプロジェクトを作成します。

AIモデル作成

 ここまででプロジェクトを作成できました。ここからの流れをできるだけ簡単にした説明を挟みます。

  1. シミやほつれのない正常な画像を読み込ませる
  2. シミやほつれのある異常な画像を読み込ませる
  3. 正常な画像には「正常」、異常な画像には「異常」と答え、「ラベル」という“答え”を付けてあげる
  4. AIモデルに画像を覚えてもらう
  5. 学習したAIモデルに、別で用意した正常/異常が混ざった画像一覧を見せてちゃんと判断できるかどうかをテストする
  6. 振り分けを間違えた画像に対して本当はこっち(正常or異常)だよともう一度答えを教えてあげる
  7. 間違えたのを修正した画像込みで、もう一度AIモデルに学習してもらう
  8. 正解率が上がった!

 これを少し難しくいうと、下記のようになります。

  1. 正常のデータセットを読み込む
  2. 異常のデータセットを読み込む
  3. ラベルを追加する
  4. モデルをトレーニングする
  5. パフォーマンスメトリクスを確認し、スコアを見て改善策を練る
  6. 再度ラベリングしモデルを改善する
  7. 再度モデルをトレーニングする
  8. 正解率が上がった!

 続きを見ていきましょう。

 データセットを作成します。

 データセットを設定します。

 「イメージを追加」をクリックします。

 ダウンロードした画像データの中から「train/normal」の中にある20枚の画像を全部選択し、アップロードします。

 「ラベルを追加」をクリックします。

 全ての画像を正常として分類します。「2」「3」ページ目に移動するボタンを押すと次の画像が出るので、入れた画像全てを分類します。

 同じ要領で、ダウンロードした画像データの中から「train/anomaly」の中にある10枚の画像を全部選択し、アップロードします。

 異常なデータだけ「Anomaly」のラベルをクリックします。

 データセットのページの右上に「モデルをトレーニング」のボタンがあるのでクリックし、トレーニングを開始します。終わるまで25分前後かかると思います。

 終わったらパフォーマンスメトリクスを見ます。学習に使用したデータを用いて、モデルが生成された後、再度そのデータを使って推論テストを行った結果が出力されています。

コラム 「リコール」とは

 リコールは、異常のあるデータを「異常」と判定することのできた確率のことです。非常に重要で、特に製造業の異常検知では異常のものを見逃してはいけないので、リコールが100%でないと導入が難しくなります。

 商用環境においては、異常品を正常品と判断してしまわないように、常に正常品を異常と判定する方の数値が大きくなるようなチューニングを目指します。これにより人間が行うべき目検の全数を安心して減らすことが期待できます。


 トライアル検出を行います。未知のデータをこのモデルに読み込ませることで結果を確認します。

 正常と異常をひとまとめに一気にアップロードします。まずダウンロードした画像データの中から「trial/normal」と「trial/anomaly」のフォルダにある画像をどこかのフォルダ1カ所にコピーして、一度に選択できるように新規フォルダを作り、それらの画像を一度でアップロードします。

 結果を見ると、今回の場合は20枚アップロードしたうち19枚を異常と判断しています。本当は正常/異常で10枚ずつ入れたので、9枚の正常画像を異常と判定してしまっています。

 間違えているものを正しいラベルに貼り直します。

 例えば上の画像では本来では下の画像の判定が正しいはずなので、正しい/誤りボタンをクリックし、ちゃんとモデルに正解を教えてあげます。

 終わったらこの20枚のtrialの画像を最初に学習に使ったデータの中に追加して、学習用データとして取り込みます(勉強用のデータが増えたので精度の向上が期待できます)。

 先ほどと同じ手順で「モデルをトレーニング」を押します。30分ほどかかるはずです。

 モデル2ができているので結果を確認します。

 精度が向上していることを確認します。

まとめ

 このように、データを用意する→データにラベルを付けてあげる→読み込ませて学習させる→結果を見て間違ったところを直してあげる→もう一度読み込ませて学習させるという一連の流れで、簡単にどんどんAIを賢く学習させることができます。

 もちろん一からモデルを作成するのに比べたら、精度向上に限界はありますが、ほとんど手間がかからないので「AI導入の足掛かりとしてちょっとやってみたい」という場合には非常にマッチすると思います。興味がある方は、使ってみてはいかがでしょうか。

筆者紹介

石田 卓也(いしだ たくや)

株式会社システムシェアード xTechLab事業部所属。

普段はWeb技術、直近はAI、機械学習、IoT、サーバレスアプリケーションなど先端技術を用いて主体的に開発する。技術を探究するのはもちろん、産業×ITがどのように社会に利益を生み出せるかという観点の下、素晴らしい技術がもっと世間に広まるよう活動している。保有AWS認定資格は、「AWS認定ソリューションアーキテクト」「Alexa Skill Builder」など。


Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る