見出し画像

光を意識して異常を捕捉しよう 第3話

こんにちは!あけましておめでとうございます!アダコテックの井上です。
弊社では、製造業向けの異常検知AIソフトウェアを提供しています。

今回も、外観検査装置の設計開発に携わったお話をします!

前回のお話

キズや汚れが目立ちにくい塗装(L塗装)が施されている検査対象製品に対して、ラインセンサカメラと高輝度ライン照明を利用し、最適な撮像照明条件を探索するための直交配列表実験を実施しました。

最適は正反射なの?非正反射なの?

直交配列表実験で求まった最適条件は正反射条件でした。対象物表面に対して入射する光の角度と、対象物表面からカメラに反射する光の角度が等しい条件のことを言い、反射明視野とも表現されます。対象表面の反射光を直接観察するので、表面特徴をしっかりと捉えることができます。

画像1

ちなみに前回で省略していましたが、L塗装は以下のような凹凸構造となっており、凸の方は反射率が高いため明るく映り、凹の方は反射率が低い(光が散乱しやすい)ため暗く映る状態となっています。

画像2

検出対象欠陥はキズ系(線形)、打痕系(クレータみたいな形)、ヨゴレ系(テカテカした油)の大きく分けて3種類ありました。
正反射条件における各欠陥の捕捉状況は以下の通りでした。

キズ:L塗装の凸部にあるキズが捕捉できない。凹部のキズは捕捉可能。
打痕:捕捉できるがL塗装と見間違えそう。
ヨゴレ:捕捉できる。

凸部に存在する傷が捕捉できていないのは、上記にもあるように凸面の反射率が高いため、正反射条件では画像上でサチってしまい(真っ白になる)、キズが見えない状態でした。
直交表配列実験で膨大特性評価する際の評価領域の設定にも問題があったのかも・・・?

画像6

それじゃあ非正反射条件のときはどうなっているんだろうという興味から、直交表配列実験時に撮像した画像を見てみると、しっかりと凸部にあるキズが捕捉できていました!
非正反射条件は、対象物表面からの反射光(直接光成分)は観察せず、外れた角度からの反射光(散乱光成分)を観察する条件のことを言い、反射暗視野とも表現されます。対象表面に存在する凹凸変化を捉えることが可能となります。

画像3

画像4

正反射条件における各欠陥の捕捉状況は以下の通りでした。

キズ:L塗装の凸部に存在するキズからの散乱光により捕捉可能。凹部は低コントラストだが、捕捉できる。
打痕:捕捉できるがL塗装と見間違えそう。
ヨゴレ:低コントラストだが、捕捉できる。

画像7

正反射条件(反射明視野)と非正反射条件(反射暗視野)によって、キズとヨゴレをしっかりと捕捉することができました。しかし、打痕については、「捕捉できるけどL塗装と見間違えそう」といった状態でした。見間違えそうと書いてあるのは、欠陥検出は画像処理が行うので、画像処理のアルゴリズム的にL塗装なのか打痕なのかを判定するのがめっちゃ難しいだろうなぁwwというソフトウェア開発者に対する気持ちでした。

結局ソフトウェア作ったのは自分なんですけどね。

画像5

そんなこんなで(?)、なるべく画像処理を楽にしたいという方針のもと、もう少し撮像照明条件をコネコネしてみました。その結果、正反射条件と非正反射条件を同時に点灯するという解が求まりました。

正反射条件・・・凸部が明るく、凹部が暗い。
非正反射条件・・・凸部が暗く、凹部が明るい。

この2つの条件を同時(かつ絶妙な照明の出力設定)に行うと、凸部も凹部も画像上で同じくらいの輝度となり、凹凸がないような状態となりました!
低コントラストですが、打痕についても捕捉しやすそうになりました。

画像8

この撮像照明条件の最適化実験の経験によって、製品の表面状態や欠陥種類、位置によっては一つの条件で全欠陥捕捉できるなんてことは難しく、複数の条件によって捕捉可能となるんだな!ということが理解できました。
(照明数や駆動系が増えるので、設備コストは上がってしまいますが・・・)

マルチライティングな外観検査装置

撮像照明条件が決まったから装置化だー!という感じで装置開発プロジェクトは一気に進んでいきます。実験機の電気設計図面を量産機に向けて修正しながら、ソフトウェアの設計仕様書も作成しました。あとは誰かがコーディングをしつつ、画像処理も作ってくれることを期待します。

結局ソフトウェア作ったのは自分なんですけどね。

画像10

当時は異常検知のための画像処理なんてほとんどやったことがなく(二値化くらいは知っている感じ)、とりあえず書籍やWebを読み漁ったり、上司に頼みまくってセミナーにガンガン参加したり、他事業部のツヨツヨな人に勝手に弟子入りしたり、めちゃくちゃ頑張りました。

ざっくりですが、以下のような方針と意識をもって欠陥検出アルゴリズムを作成し、なんとか検出率100%を達成できました!!

・キズ特化
・打痕特化
・ヨゴレ特化
   ×
・背景領域の輝度ムラに左右されないアルゴリズムであること
・1つの欠陥に対して1つの欠陥領域として検出できるような補正

マルチなライティングで撮像しているので、画像1枚に対する処理だけではなく、複数条件の画像を合成したり、画像間の同一領域の特徴量の相関を見て、通常から逸脱している領域を抽出・・・めっちゃ工夫しました。が、これが井上の外観検査人生において非常に貴重な経験となり、画像処理に対する自信が強くなりました!

もし、このときDeep Learningが流行っていたら画像処理をスキップして、絶対触りまくっていただろうなぁ・・・。

装置の動作シーケンスは以下な感じです。

画像9

対象製品を回転させながらラインセンサで撮像するのですが、360度ぴったりではなく、多少余裕を持たせて400度くらい撮像を行いました。なので、1つの照明条件で撮像するのに対象製品は2回転しています。撮像が終わったら画像処理を実行して、製品が基準位置まで回転したら次の照明条件で撮像開始して、という感じで並列的な処理をしています。

装置のモータ制御をしながら、撮像処理や画像処理の並列処理を連携するプログラムを作りデバッグしまっくている時がエンジニア感溢れててめちゃめちゃ楽しかったですね。まじで。

検査を開始してから良否結果が出るまで6秒強というサイクルタイムを実現できました。検査員の方は10秒~15秒くらいかけて外観検査しているので、ほぼ半分のスピードですね!やったぜ。

さいごに

人生初の外観検査装置開発は非常に濃厚で、撮像照明と画像処理のスキルをめちゃくちゃ向上させる(ほぼゼロスタートでしたw)ことができました。これ以降の外観検査装置開発は、この経験があったからこそ自信をもって進めていけたんだなぁ・・・と、しみじみ思っています。

後に、この製品の外観検査をしている工程に見学することがあり、検査員の動きを見てみると・・・製品をグワングワン動かしながら、正反射による観察と、非正反射による観察を行っていました。装置との照明条件と同じだー!と興奮した思い出もありますw

対象欠陥をデータとして捕捉するためにも撮像照明条件は超超超・・・重要です!外観検査開発に携わる人にとって、必須なスキルだと思っています!
現場に入り込んで、検査員の方の手の動きや周辺の照明環境を観察することが、最適な撮像照明条件を見つけるためのヒントにもなります!!

画像11

※光は人に向けちゃダメだよ

アダコテックでは、メンバーを募集しています。
製造業が抱える課題を一緒に解決していきましょう!


この記事が気に入ったらサポートをしてみませんか?