なぜAIなのか
近年、少子化の影響で労働人口が減少し、今まで人が目視で行っていた外観検査を自動化させようという動きが目立ちます。
最近は特にAIの進歩が著しく、AIを用いた外観検査の導入を検討している方も多いと思います。
しかし、なぜAIが良いのでしょうか。
その理由について、技術的な背景と実例を用いて説明していきたいと思います。
これまでの外観検査の自動化
検査の自動化については、昔から検討している人も多く、長年の経験と知恵で実現してきた人も大勢いらっしゃると思います。
まず、これまではどのように検査の自動化を実現してきたかを説明したいと思います。
ここでは前提として、人間の目の代わりにカメラを使います。
なので、カメラで撮影した画像に対して処理を行っていきます。
画像ファイルについて
画像ファイルは基本的に0~255の数字で構成されています。
黒が0で白が255、中間のグレーは128と表現されます。
そのため、以下の画像を例に数値を示してみます。
部分的に着目して数字で表現すると以下のようになります。
画像を用いた検査を行う場合は、この数字に様々な処理を行っていく必要があります。
ルールベース処理
ルールベースの代表的な手法をいくつか取り上げます。
二値化処理
指定した値より大きい部分を白、小さい部分を黒にする処理です。
特定の明るさの部分だけ抽出したい時によく使います。
傷やごみが検査対象と比べて明るかったり、暗かったりするとこれだけで判定することもできます。
この画像では80以上の値を255(白)にすることで一番外側の輪郭だけ真っ白にして、それ以外の部分を0(黒)にして残しました。
ぼかし
平滑化とも呼ばれます。周辺の明るさを見て平均を取ることによって、数値のばらつきが小さくなり、ノイズを除去することができます。
このような計算はフィルタ処理と呼ばれています。
計算はとてもシンプルで、数値化した画像とフィルタと呼ばれる数値の配列との内積を求めるだけです。
平滑化フィルタ
この場合は注目画素とその周辺を含めた9つの値の平均が出力となります。
エッジ抽出
輪郭部分のみを白にして背景と前景の境界を見つける手法です。
色がずっと変わらない部分は黒になり、明るさが急に変化する部分だけが白になるので、対象物の位置を見つけることが出来ます。
画像はラプラシアンフィルタで求めた結果ですが、縦と横を分けて考えたいときはソーベルフィルタの横方向、縦方向などを使います。
8近傍のラプラシアン
赤い部分より周りの方が明るいと白になります。
横方向のソーベルフィルタ
左が黒くて右が白いと反応して白になります。この例だと反応しないので黒になります。
縦方向のソーベルフィルタ
上が黒くて下が白いと反応して白になります。今回の画像は上が白くて下が黒いので反応しませんでした。
ちなみにフィルタの数字を入れ替えると下から上を見るようになるので反応して白になります。
それぞれ勾配の大きいところの差をとる(微分)ことで見つけています。
ルールベース検査の運用
ルールベースの検査をする上で必要なこと、運用時の課題など実例を交えて説明したいと思います。
ネジ検出の例
二値化
ただ二値化するだけでは背景の小さなノイズにも反応していしまいます。
ガウシアンフィルタ + 二値化
ガウシアンフィルタでぼかすことで白い小さなノイズが平均化されて暗くなり、
二値化したときにネジのみ抽出することが出来ました。
これらのメリットは、
- 処理が高速
- 想定しているパターンに強い
です。
例えるならライフルで射撃を行うスナイパーですね。
射撃の腕が求められます。
しかし、現場では今まで想定していなかったケースが出現したり、
照明や周辺機器などの劣化で少しずつ環境が変化していきます。
そのたびに、
- パラメータを調整
- フローの追加/見直し
を行うことになります。
パラメータやフローを見直すと今まで検査に成功していたものが、
上手くいかなくなる可能性があり、その調整は至難の技です。
「今までのテストデータ10万件の認識率は一切落とさずに、新しいデータは全て認識できるようにしてください。」
なんてプレッシャーかけてくる人もいます。
試しに新しい画像に対して、ガウシアンフィルタ + 二値化をやってみると、
ノイズに反応して上手くいきませんでした。
今回はガウシアンフィルタはカーネルサイズ19、シグマ5、二値化は閾値0.65としているのですが、
これらを調整すればこの画像に対しては上手くいくかもしれません。
しかし、変更するたびに今まで成功していたデータすべてが成功しているのかを確認していかなければなりません。
なのでパラメータの調整というのは本質的な改善ではなく、一時的に表面化しているデータに対して確率が一番よくなるように値を調整しているのに過ぎないのです。
本質的に改善したい場合は手法やフローを見直す必要があります。
そうして今までのデータを穴が空くほど分析して、日常でも検査対象の製品を見かける度に、「これは検査が難しそうだな」と考え始めたら職業病の始まりです。
それでもなんとか頑張って上手くいった時の達成感は非常に大きいのですが、
達成するためには、
- 基本的なルールベース処理の知識
- 検査対象と環境を熟知
- 長年の経験と勘
がかなりの確率で必要になってきます。
そのため、その人がいなくなった途端に誰もできなくなってしまうというリスクもあります。
AIって何をしているの?
最近AIとよく耳にしますが、基本的には人間が覚えさせたとおりに動作するものを指します。
そのため、様々な手法を含めたかなり広い言葉となっています。
ここでは、近年、技術的に大きく進歩したディープラーニングについて説明していきます。
ディープラーニング
ディープラーニングとは、ニューラルネットワークという技術の応用であり、実は1950年代からある古い技術です。
厳密にはニューラルネットワークの中間層と呼ばれる層が2層以上あるものをディープラーニング(深層学習)と呼びます。
近年になって流行している理由の1つは、計算リソースとしてGPUが使えるようになったからです。
では、なぜGPUが必要なのでしょうか。
それは、ディープラーニングが究極の力業であり、計算量が膨大となるからです。
通常のPCのCPUのコア数は2~8、多くても56程度ですが、GPUには1000~10000程コアが付いており、大量の計算を容易に行うことが出来ます。
そして気になる計算の内容についてですが、実はディープラーニングは答えに最も近くなるように無数のフィルタをかけているだけであり、学習する度にフィルタの係数を調整しているだけなのです。
そして層が多くなるほどその答えにたどり着くまでのパターン増え、様々なパターンが来ても正解に導くための表現力が上がります。
このフィルタ1つ1つがエッジを検出したり、特定の色や形状に反応したりしています。
つまり、実はルールベースで行っていたフィルタの組み合わせ処理を自動的にやっているだけなのです。
そのため、ルールベースの知識がない人でも、検査対象のどこが欠陥かを知っていて、
AIに教えることさえできれば、検査の自動化ができるということになります。
また、データが増えた際も基本的にはパラメータ調整などは不要で、AIに新たな画像と正解を与えれば、自動的にフィルタの値が更新されて精度が向上するので、長期的な運用がしやすくなります。
例えるならフルオートなマシンガンですね。
射撃の腕はライフルほどは求められないです。
では、試しに以下の画像に対して2つほどAIを作ってみましょう。
白い部分を見つけるAI
白い円の部分を見つけたいので赤色で塗りつぶしてAIに見つけたい場所を教えます。
その後学習を行うと以下のように白い円の部分のみ見つけてくれるAIが出来ます。
このAIのフィルタ部分は、白い部分に反応するように学習されます。
結果的にはルールベースでいうところの2値化とほぼ同じものが出来ているはずです。
白い円を四角に変換するAI
白い部分を四角に変換するために四角く赤で塗りつぶしてAIに教えます。
その後学習を行うと、白い部分だけでなく周辺の黒い部分にも反応して四角になりました。
このAIは円の四隅の黒にも反応するようにフィルタが構成されているはずです。
このようにルールベースでは表現しにくい状態をAIでは容易に表現することが出来ます。
そして、もちろん先ほどのネジに対しても検出が可能となります。
ネジを検出するAI
ネジの部分を赤く塗りつぶしてAIに教えます。
その後学習を行うことでネジの特性を抽出するフィルタが形成されるので、
別の画像に対してもネジを検出することが出来ます。
もし、うまくいかない場合はその画像のネジの部分を赤く塗ってAIに教えてあげれば、
AIは今までの画像も含めて学習してくれるので、いずれ全て検出できるようになっていきます。
結論
ルールベースによる検査は高速に行えるのがメリットで、問題が簡単であったり、環境の変化が少ない場合は向いていると思います。
一方、問題が複雑であったり、環境の変化が大きい場合は、パラメータ調整が不要であるAIの方が向いていると思います。
また、長期的に検査を行い、品質を向上していくことを考えると、パラメータ調整やルールベースの知識が不要なAIの方が良いと思います。
ただ、物差しで測るような基準が決まっている場合は、ルールベースの検査の方が確実であり、品質も保ちやすいと思います。
そのため、AIで対象を見つけて、ルールベースで測定するのがベストだと思っています。
検査領域や欠陥の検出における優位性
環境の変化が少ない | 環境の変化が大きい | |
---|---|---|
問題が簡単 | ルールベース | AI |
問題が複雑 | AI | AI |
引継/メンテナンスの容易性
AI > ルールベース
数値や形状の測定の優位性
ルールベース > AI
次回はこれらを踏まえた品質のお話をしたいと思います。