Pythonを使用たニューラルネットワークで、物体表面のキズ、欠陥検知がどの程度可能かを検証
|
AIがどの程度有効なのか確認するためPythonを使用してニューラルネットワークを簡単な3層構成で作成し、
物体表面のキズ、欠陥検知を検証して見ました。
|
|
DAGM 2007 Competitionで使用された画像の欠陥を検出するためのデータセットを使用しました。
原画像は大きさが512*512、8ビットの大きさで、AIの処理時間を短くするため大きさを
128*128、8ビットの画像に一括変換しています。
難易度を下げるため、欠陥画像に一部分単色で塗り潰した加工を行いました。明るい色で塗り潰した画像と、 周辺の輝度と似た輝度で塗り潰した画像2種類準備しました。 |
|
学習用正常画像150枚と学習用欠陥画像150枚からデータセットを作成、
AIに画像毎の正常、異常の情報を教師データとして与え、2種類の画像を分類するよう学習させます。
次に検証用正常画像(同学習用)150枚と検証用欠陥画像150枚を認識して分類できているかを検証しました。 |
学習用正常画像150枚
学習用欠陥画像150枚
検証用正常画像150枚
検証用欠陥画像150枚
|
結果100%分類できました。驚いたのは正常画像と目視しても区別しにくい
赤い矢印で示した塗り潰しを含む欠陥画像を75枚、正確に分類できたことです。
欠陥画像は一部分単色で塗り潰してあります。明るい色で塗り潰した画像と、 赤い矢印の部分で示した周辺の輝度と似た輝度で塗り潰した画像2種類準備しました。 学習を行うことで赤い矢印の欠陥部分を認識し正常な画像と異常な画像を分類できるかがポイントです。 |
|
学習開始時は、300枚全て正常画像と認識して欠陥画像が不正解となり認識精度が0.5(50%)となっています。
学習を重ねることで認識精度が1.0(100%)へ推移していることが分かります。
AIにて学習と検証を交互に行い認識精度の推移をグラフに表示しました(青:学習、橙:検証)。 縦軸:認識精度、横軸:テスト回数、 判定:正常フォルダの画像を正常と認識した場合:OK、
異常フォルダの画像を異常と認識した場合:OK、
認識精度:OK枚数/300枚数。その他の場合:NG、 |
0.996は300枚の内、1枚誤認があったことになります。
1.0は300枚すべて正常画像、欠陥画像を認識し分類したことになります。 |
OSをxubuntuへ変更、
学習用正常画像150枚と学習用欠陥画像150枚 検証用正常画像(同学習用)150枚と検証用欠陥画像150枚 から 学習用正常画像150枚と学習用欠陥画像150枚 検証用正常画像(異学習用)150枚と検証用欠陥画像150枚 にデータセットを変更しました。 前回学習したパラメータを使用して、再度、学習、検証を行いました。 |
|
AIにて学習と検証を交互に行い認識精度の推移をグラフに表示しました(青:学習、橙:検証)。
縦軸:認識精度、横軸:テスト回数、 判定:正常フォルダの画像を正常と認識した場合:OK、
異常フォルダの画像を異常と認識した場合:OK、
認識精度:OK枚数/300枚数。その他の場合:NG、 |
検証開始時、認識精度が100%の正解とはなりませんでした。
学習、検証を繰り返すことで100%となりました。 |
上記ニューラルネットワーク例と全く同じ条件で畳み込みニューラルネットワークCNNを使用して
学習及び検証を行いました。上記ニューラルネットワーク3層の前段にCNNを追加しました。
|
|
ニューラルネットワークと畳み込みニューラルネットワークの違いは、ニューラルネットワークは
一枚の画像すべてを一列に変換して処理を行うことにより画像の形状を無視します。
CNNでは3次元(横*縦*RGB)のデータとして処理し形状に含まれる情報を維持していることです。 グラフは300枚の画像を100回学習し、認識精度が100%に達していることを表しています。 |
学習用正常画像と検証用正常画像は同じ 学習用欠陥画像と検証用欠陥画像は異なります。
|
OSをxubuntuへ変更、検証用正常セットデータを変更しました。
パラメータは前回の検証と同じものを使用して、再度、学習、検証を行いました。 学習用正常画像と検証用正常画像は異なり、学習用欠陥画像と検証用欠陥画像も異なります。 |
|
学習済みのパラメータを使用し、学習なしで、正常/欠陥画像を入力してAIが正確に正常/欠陥画像を判定するかテストを行います。
正常画像を配置する取り決めのフォルダ0に正常画像(1.png~5.png)と、欠陥画像(6.png~11.png)を配置 欠陥画像を配置する取り決めのフォルダ1に欠陥画像(1.png~5.png、148.png)と、正常画像(98.png)を配置しました。 |
|
右表右端の[0]は正常,[1]は異常
正常画像フォルダ 1.png[0] :正常画像と分類 10.png[1]:欠陥画像と分類 11.png[1]:欠陥画像と分類 2.png[0] :正常画像と分類 ... 6.png[1]:欠陥画像と分類 欠陥画像フォルダ 1.png[1] :欠陥画像と分類 ... 141.png[1]:欠陥画像と分類 98.png[0] :正常画像と分類 |
|