JP2022150065A - 検査装置、コンピュータプログラム、および、検査方法 - Google Patents
検査装置、コンピュータプログラム、および、検査方法 Download PDFInfo
- Publication number
- JP2022150065A JP2022150065A JP2021052482A JP2021052482A JP2022150065A JP 2022150065 A JP2022150065 A JP 2022150065A JP 2021052482 A JP2021052482 A JP 2021052482A JP 2021052482 A JP2021052482 A JP 2021052482A JP 2022150065 A JP2022150065 A JP 2022150065A
- Authority
- JP
- Japan
- Prior art keywords
- image data
- image
- linear
- inspection device
- inspection
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Investigating Materials By The Use Of Optical Means Adapted For Particular Applications (AREA)
- Image Analysis (AREA)
Abstract
【課題】機械学習モデルを用いて対象物が良品であるか否かを精度良く判定する。
【解決手段】対象物の外観を検査する検査装置は、対象物の外観を含む撮像画像を示す入力画像データを学習済みモデルに入力することによって、撮像画像に対応する出力画像を示す出力画像データを生成する生成部と、出力画像データを用いて、線状領域の所定の特徴に関する特徴量を特定する特徴特定部と、線状領域の特徴量に基づいて、対象物が良品であるか否かを判定する良否判定部と、を備える。学習済みモデルは、撮像画像内の対象物が線状のキズを含む場合に、出力画像が線状のキズを示す線状領域を示すようにトレーニングされた機械学習モデルである。
【選択図】 図3
Description
本明細書は、機械学習モデルを用いて対象物の外観を検査する技術に関する。
特許文献1に開示された検査装置は、学習済みの推定器を利用して製品の良否を判定する。推定器は、製品の写る画像データが入力されると、製品に含まれる欠陥の種別および範囲を推定した結果を示す出力値を出力する。検査装置は、出力値が製品に欠陥が含まれることを示す場合に製品は良品ではないと判定し、出力値が製品に欠陥が含まれないことを示す場合に製品は良品であると判定する。
しかしながら、対象物(例えば製品)の外観に線状のキズが含まれる場合に、必ずしも対象物が良品ではないとは限らない。このために、上記技術では、対象物が良品であるか否かを精度良く判定できない可能性があった。
本明細書は、機械学習モデルを用いて対象物が良品であるか否かを精度良く判定できる技術を開示する。
本明細書に開示された技術は、上述の課題の少なくとも一部を解決するためになされたものであり、以下の適用例として実現することが可能である。
[適用例1]対象物の外観を検査する検査装置であって、前記対象物の外観を含む撮像画像を示す入力画像データを学習済みモデルに入力することによって、前記撮像画像に対応する出力画像を示す出力画像データを生成する生成部であって、前記学習済みモデルは、前記撮像画像内の前記対象物が線状のキズを含む場合に、前記出力画像が線状のキズを示す線状領域を示すようにトレーニングされた機械学習モデルである、前記生成部と、前記出力画像データを用いて、前記線状領域の所定の特徴に関する特徴量を特定する特徴特定部と、前記線状領域の前記特徴量に基づいて、前記対象物が良品であるか否かを判定する良否判定部と、を備える、検査装置。
上記構成によれば、機械学習モデルを用いて生成される出力画像データを用いて線状のキズを示す線状領域を特定し、線状領域の特徴量に基づいて、対象物が良品であるか否かを判定するので、機械学習モデルを用いて対象物が良品であるか否かを精度良く判定することができる。
なお、本明細書に開示される技術は、種々の形態で実現することが可能であり、例えば、検査装置、検査方法、これらの装置および方法を実現するためのコンピュータプログラム、そのコンピュータプログラムを記録した記録媒体、等の形態で実現することができる。
A.第1実施例
A-1.データ生成装置の構成
次に、実施の形態を実施例に基づき説明する。図1は、本実施例の検査システム1000の構成を示すブロック図である。検査システム1000は、検査装置100と、撮像装置400と、を含んでいる。検査装置100と撮像装置400とは、通信可能に接続されている。
A-1.データ生成装置の構成
次に、実施の形態を実施例に基づき説明する。図1は、本実施例の検査システム1000の構成を示すブロック図である。検査システム1000は、検査装置100と、撮像装置400と、を含んでいる。検査装置100と撮像装置400とは、通信可能に接続されている。
検査装置100は、例えば、パーソナルコンピュータなどの計算機である。検査装置100は、検査装置100のコントローラとしてのCPU110と、RAMなどの揮発性記憶装置120と、ハードディスクドライブなどの不揮発性記憶装置130と、マウスやキーボードなどの操作部150と、液晶ディスプレイなどの表示部140と、通信部170と、を備えている。通信部170は、外部機器、例えば、撮像装置400と通信可能に接続するための有線または無線のインタフェースを含む。
揮発性記憶装置120は、CPU110が処理を行う際に生成される種々の中間データを一時的に格納するバッファ領域を提供する。不揮発性記憶装置130には、検査装置用のコンピュータプログラムPGiが格納されている。
コンピュータプログラムPGiは、例えば、検査装置100の製造者によって提供される。コンピュータプログラムPGiは、例えば、サーバからダウンロードされる形態で提供されても良く、DVD-ROMなどに格納される形態で提供されてもよい。CPU110は、コンピュータプログラムPGiを実行することにより、後述する検査処理を実行する。
コンピュータプログラムPGiは、後述する生成ネットワーク(generator)GNの機能をCPU110に実現させるコンピュータプログラムである生成ネットワークプログラムNPをモジュールとして含んでいる。
撮像装置400は、光学的に被写体を撮像することによって被写体を表す画像データ(撮像画像データとも呼ぶ)を生成するデジタルカメラである。撮像装置400は、検査装置100の制御に従って、撮像画像データを生成し、検査装置100に送信する。本実施例では、撮像装置400は、検査処理の検査対象である製品(以下、ワーク300とも呼ぶ)を撮像して、ワーク300の外観を含む撮像画像を示す撮像画像データを生成するために用いられる。ワーク300は、例えば、金属や樹脂製の製品である。
A-2.生成ネットワークGNの構成
生成ネットワークプログラムNPによって実現される生成ネットワークGNの構成について説明する。図2は、生成ネットワークGNの構成を示すブロック図である。生成ネットワークGNは、入力データIDに対して、複数個の演算パラメータを用いて、演算処理を実行して、入力データIDに対応する出力データODを生成する。
生成ネットワークプログラムNPによって実現される生成ネットワークGNの構成について説明する。図2は、生成ネットワークGNの構成を示すブロック図である。生成ネットワークGNは、入力データIDに対して、複数個の演算パラメータを用いて、演算処理を実行して、入力データIDに対応する出力データODを生成する。
本実施例では、入力データIDは、所定のサイズ、例えば、縦572画素×横572画素の矩形の画像データである。入力データIDは、複数個の画素を含む画像を示すビットマップデータであり、具体的には、RGB値によって画素ごとの色を表すRGB画像データである。RGB値は、3個の色成分の階調値(以下、成分値とも呼ぶ)、すなわち、R値、G値、B値を含むRGB表色系の色値である。R値、G値、B値は、例えば、所定の階調数(例えば、256)の階調値である。入力データIDは、画素ごとの輝度を表す輝度画像データであっても良い。後述するように、本実施例では、ワーク300の外観を含む撮像画像を示す撮像画像データの一部である部分撮像画像データが入力データIDとして想定されている。このために、入力データIDによって示される画像は、ワーク300の外観の一部を含む。
出力データODは、所定のサイズ、例えば、入力データIDと同一のサイズの矩形の画像データである。出力データODは、複数個の画素を含む画像を示すビットマップデータである。出力データODの各画素の値は、例えば、0~1の範囲の値を取る。出力データODは、対応する入力データIDによって示される画像内のワーク300が線状のキズを含む場合に、線状のキズを示す線状領域を示す。例えば、出力データODにおいて、線状領域を構成する画素の値は、1に近い値となり、線状領域とは異なる部分を構成する画素の値は、0に近い値となる。すなわち、生成ネットワークGNは、ワーク300の外観の一部を含む画像を示す入力データIDが入力される場合に、線状領域を示す出力データODを出力するようにトレーニングされている。生成ネットワークGNのトレーニング処理については後述する。
生成ネットワークGNは、セマンティックセグメンテーションに用いられる機械学習モデルであり、畳み込みニューラルネットワークである。本実施事例の生成ネットワークGNは、U-netと呼ばれる公知のモデルである。U-netは、例えば、論文「Ronneberger, Olaf, Philipp Fischer, and Thomas Brox."U-Net: Convolutional Networks for Biomedical Image Segmentation." arXiv preprint arXiv:1505.04597, 2015.」に開示されている。以下では、生成ネットワークGNの構成を説明する。
生成ネットワークGNは、図2に示すように、複数個の層LY1~LY17を備えている。畳込層LY1には、入力データIDが入力される。n番目(nは、2~16の整数)の層には、(n-1)番目の層によって出力されるデータが入力される。
畳込層LY1、LY3、LY5、LY7、LY9、LY11、LY13、LY15は、それぞれ、入力されるデータに対して2回の畳込処理(convolution)を実行する。各畳込処理の算出値は、バイアスが加算されたうえで、所定の活性化関数に入力されて変換される。本実施例では、活性化関数には、いわゆるReLU(Rectified Linear Unit)が用いられる。各畳込処理のフィルタサイズは、例えば、3×3である。
畳込層LY17は、入力されるデータに対して、3回の畳込処理を実行する。各畳込処理のフィルタサイズは、例えば、最初の2回の畳込処理では3×3であり、最後の1回の畳込処理では1×1である。最後の1回の畳込処理後の値は、所定の活性化関数、例えば、ソフトマックス関数に入力されたうえで、出力される。
プーリング層LY2、LY4、LY6、LY8は、入力されるデータに対して、所定のサイズのウインドウ内の最大値を出力値として選択するマックスプーリングを実行する。これによって、入力されるデータの次元数が削減されて出力される。
転置畳込層LY10、LY12、LY14、LY16は、入力されるデータに対して、転置畳込処理(up-convolution)を実行する。これによって、入力されるデータの次元数が増大されて出力される。各転置畳込処理の算出値は、バイアスが加算されたうえで、所定の活性化関数に入力されて変換される。本実施例では、活性化関数には、いわゆるReLU(Rectified Linear Unit)が用いられる。各転置畳込処理のフィルタサイズは、例えば、2×2である。
なお、畳込層LY11には、転置畳込層LY10が出力するデータに加えて、畳込層LY7が出力するデータが入力される。畳込層LY13には、転置畳込層LY12が出力するデータに加えて、畳込層LY5が出力するデータが入力される。畳込層LY15には、転置畳込層LY14が出力するデータに加えて、畳込層LY3が出力するデータが入力される。畳込層LY17には、転置畳込層LY16が出力するデータに加えて、畳込層LY1が出力するデータが入力される。これによって、各層の処理の過程で、入力データIDによって示される画像内の被写体の位置情報が失われることを抑制して、セグメンテーションの精度を向上できる。
なお、畳込層LY7が出力するデータのサイズが、転置畳込層LY10が出力するデータのサイズと一致しない場合には、畳込層LY7が出力するデータは、転置畳込層LY10が出力するデータのサイズにクロッピングされた上で、畳込層LY11に入力される。畳込層LY13、LY15、LY17に入力されるデータについても同様である。
以上説明した畳込処理および転置畳込処理に用いられるフィルタの重み、および、バイアスは、後述するトレーニング処理によって調整される演算パラメータである。
A-3.検査処理
検査処理は、検査の対象物であるワーク300が良品であるか否かを判定する処理である。本実施例では、ワーク300の表面は、回転式の研磨装置によって研磨されている。このために、円または円弧の形状を有する線状のキズ(以下、円キズとも呼ぶ)がワーク300の表面に形成される場合がある。検査処理では、ワーク300の外観を損なうレベルの円キズがワーク300の表面に存在する場合に、ワーク300は不良品であると判定され、ワーク300の外観を損なうレベルの円キズがワーク300の表面に存在しない場合に、ワーク300は良品であると判定される。図3は、第1実施例の検査処理のフローチャートである。図4は、検査処理で用いられる画像の一例を示す図である。検査処理は、例えば、ワーク300の検査範囲が撮像装置400の撮影範囲に位置するようにワーク300が所定の位置に配置された状態で、検査者が実行指示を検査装置100に入力した場合、開始される。
検査処理は、検査の対象物であるワーク300が良品であるか否かを判定する処理である。本実施例では、ワーク300の表面は、回転式の研磨装置によって研磨されている。このために、円または円弧の形状を有する線状のキズ(以下、円キズとも呼ぶ)がワーク300の表面に形成される場合がある。検査処理では、ワーク300の外観を損なうレベルの円キズがワーク300の表面に存在する場合に、ワーク300は不良品であると判定され、ワーク300の外観を損なうレベルの円キズがワーク300の表面に存在しない場合に、ワーク300は良品であると判定される。図3は、第1実施例の検査処理のフローチャートである。図4は、検査処理で用いられる画像の一例を示す図である。検査処理は、例えば、ワーク300の検査範囲が撮像装置400の撮影範囲に位置するようにワーク300が所定の位置に配置された状態で、検査者が実行指示を検査装置100に入力した場合、開始される。
S100では、検査装置100のCPU110は、ワーク300の撮像画像データを取得する。CPU110は、撮像装置400に撮影指示を供給する。撮像装置400は、撮影指示に応じて、ワーク300を撮像し、撮像画像データを生成する。CPU110は、撮像装置400から、撮像画像データを取得する。
図4(A)には、撮像画像データによって示される撮像画像IIが図示されている。撮像画像IIは、ワーク300の外観(表面)を示している。図4(A)の撮像画像IIは、ワーク300の表面のうち、円キズSCの無い部分(無キズ部Bgとも呼ぶ)と、円キズSCと、を含み得る。撮像画像IIは、円キズSCを含まない場合もある。また、撮像画像IIは、外観の見栄え上の問題にならない微少なキズSmを含み得る(図4(A))。
S105では、CPU110は、撮像画像データを用いて、撮像画像IIを複数個の部分画像PIIに分割して、複数個の部分画像データを生成する。部分画像PIIは、生成ネットワークGNの入力データIDとして想定されている所定のサイズ(例えば、縦572画素×横572画素のサイズ)の画像である。撮像画像IIのサイズによっては、撮像画像IIの縁部に対応する一部の部分画像PIIのサイズが所定のサイズより小さくなる場合があるが、この場合には、該一部の部分画像PIIには、所定のサイズを有するように、予め準備された無キズ部Bgの画像が適宜に付加(パディング)される。図4(A)の例では、撮像画像IIは、縦5個×横3個の15個の部分画像PIIに分割されている。図4(B)には、1つの部分画像PIIが例示されている。
S110では、CPU110は、複数個の部分画像データのそれぞれを生成ネットワークGNに入力して、複数個の部分推定画像データを生成する。以下では、特定の部分画像データを生成ネットワークGNに入力データIDとして入力した場合に生成ネットワークGNによって生成される出力データODを、特定の部分画像データに対応する部分推定画像データと呼ぶ。
S113では、CPU110は、複数個の部分推定画像データのそれぞれを二値化して、複数個の二値化済みの部分推定画像データを生成する。具体的には、CPU110は、複数個の部分推定画像データによって示される画像内の複数個の画素の値を、所定の閾値を用いて、線状のキズを示すキズ領域SAを構成する画素と、無キズ部Bgを示す無キズ領域BAを構成する画素と、のいずれかに分類する。これによって、分類結果を示す二値化済みの部分推定画像データが生成される。
図4(C)には、図4(B)の部分画像PIIを示す部分画像データに対応する二値化済みの部分推定画像データによって示される部分推定画像POIが示されている。部分推定画像POIでは、キズ領域SAが無キズ領域BAと分離されて特定されている。
S115では、CPU110は、複数個の二値化済みの部分推定画像データを用いて、1個の推定画像データを生成する。図4(D)には、推定画像データによって示される推定画像OIの一例が示されている。図4(D)の推定画像OIは、図4(A)の撮像画像IIに対応する画像である。推定画像OIは、推定画像OIにおける各部分推定画像POIの相対的な位置と、撮像画像IIにおける対応する部分画像PIIの相対的な位置と、が一致するように、複数個の部分推定画像POIを結合して得られる画像である。
図4(D)の推定画像OIでは、キズ領域SAとして、円キズSCに対応するキズ領域SA1、SA2と、微細なキズSmに対応するキズ領域SA3と、が特定されている。図示は省略するが、推定画像OIは、例えば、無キズ部Bgに対応するにも関わらずに、誤ってキズ領域SAとして特定された微少領域(ノイズ領域とも呼ぶ)を含み得る。
S120では、CPU110は、推定画像データに対してハフ変換処理を実行して、推定画像OIにおいて円キズSCに対応する円CLを特定する。ハフ変換処理のアルゴリズムは、画像内の円や直線を特定するアルゴリズムとして公知であるので、その説明を省略する。なお、ハフ変換処理の前に、ハフ変換処理による特定精度を向上するために、ノイズ除去処理が実行されても良い。ハフ変換処理では、円CLの中心CPの座標と半径rとが決定されることによって、円CLが特定される。本実施例では、CPU110は、ハフ変換処理を用いて、推定画像OI内のキズ領域SAを構成する画素によって形成される全ての円CLを特定するのではなく、特定サイズの円CLのみを特定する。具体的には、CPU110は、円キズSCとして想定される範囲内の半径を有する円CLのみを特定する。円キズSCとして想定される半径の範囲は、例えば、多数のワーク300を調査することによって実験的に決定される。
図5は、実施例の検査処理において実行される画像処理の説明図である。図5(A)では、推定画像OIにおいて、2個の円CL1、CL2(中心CP1、CP2と半径r1、r2)が特定されている。円CL1は、撮像画像IIの円キズSC1が位置するキズ領域SA1に対応している。円CL2は、撮像画像IIの円キズSC2が位置するキズ領域SA2に対応している。
円CLが特定される個数(図5(A)の例では2個)は、撮像画像IIに応じて変動する。例えば、撮像画像IIが円キズSCを含まない場合には推定画像OIにて円キズSCが位置するキズ領域SAは特定されないので、円CLは特定されない。
S125では、CPU110は、ハフ変換処理によって、推定画像OIにて1個以上の円CLが特定されたか否かを判断する。円CLが特定されない場合には(S125:NO)、S160にて、CPU110は、ワーク300は良品であると判定して、判定結果を出力する。例えば、CPU110は、表示部140に判定結果を表示する。円CLが特定された場合には(S125:YES)、CPU110は、S130に処理を進める。
S130では、CPU110は、特定された1以上の円CLの中から、1個の注目円を選択する。S135では、CPU110は、展開画像DIを示す展開画像データを生成する。展開画像DIは、注目円の周方向を横方向に、注目円の径方向を縦方向に変換した画像である。
図5(A)の円CL1が注目円である場合を例にして説明する。図5(B)には、図5(A)の円CL1が注目円である場合に生成される展開画像DIが例示されている。CPU110は、円CL1の中心CP1を起点として、径方向に延びるN本の参照線Ln(nは、1~Nの整数)を設定する。N本の参照線Lnと円CL1とが交差するN個の交点Pnの周方向の位置は、互いに所定の角度θずつずれている。N個の交点Pnが円CL1の全周に亘って分散して配置されるように、N本の参照線Lnが配置される。例えば、所定の角度θが1度である場合には、359本の参照線Lnが配置される(N=360)。図5(A)には、図の煩雑を避けるために、3本の参照線L1~L3と交点P1~P3のみが図示されている。
展開画像DIは、N本の参照線Lnと一対一で対応するN本のラスタラインRLnによって構成される画像である。各ラスタラインは、展開画像DIの縦方向に延びる複数個の画素によって構成されるラインである。N本のラスタラインRLnは、展開画像DIの横方向に並んでいる。図5(B)には、図5(A)の3本の参照線L1~L3に対応する3本のラスタラインRL1~RL3が図示されている。1本のラスタラインを構成する複数個の画素は、該ラスタラインに対応する1本の参照線上に位置する推定画像OI内の複数個の画素である。CPU110は、N本の参照線Lnのそれぞれについて、参照線上の複数個の画素の値を取得することで、N本のラスタラインRLnのそれぞれのラスタラインデータを生成する。CPU110は、N本分のラスタラインデータを用いて、展開画像DIを示す展開画像データを生成する。図5(B)に示すように、展開画像DIは、推定画像OIと同様に、キズ領域SAと無キズ領域BAとを示す二値画像データである。
S140では、CPU110は、展開画像データを用いて、注目円に対応するキズ領域SAの幅dを算出する。注目円が図5(A)の円CL1である場合には、図5(B)の展開画像DIを示す展開画像データを用いて、円CL1に対応する円弧状のキズ領域SA1の幅d1が特定される。図5(C)には、図5(B)の展開画像DIの一部分AAの拡大図が示されている。拡大図において、升目状に配置された複数個の矩形は、複数個の画素を示す。拡大図においてハッチングされた画素は、キズ領域SA1を構成する画素であり、ハッチングされていない画素は、無キズ領域BAを構成する画素である。
例えば、CPU110は、展開画像DIのN本のラスタラインRLnのうち、キズ領域SA1が存在する複数本のラスタラインのそれぞれについて、キズ領域SA1を構成する画素数をカウントする。CPU110は、カウントされた画素数の平均値をキズ領域SA1の幅d1として算出する。N本のラスタラインRLnのうち、キズ領域SA1が存在しないラスタラインについては、画素数のカウントは行われない。すなわち、キズ領域SA1が存在しないラスタラインは、幅d1の算出には用いられない。図5(B)の例では、横方向の範囲R1、R2内に位置するラスタラインを用いて、範囲R1、R2外に位置するラスタラインを用いずに、幅d1の算出が行われる。キズ領域SA1の幅d1は、撮像画像II内の対応する円キズSC1の幅を示している。
S145では、CPU110は、キズ領域の幅dが基準以上であるか否かを判断する。例えば、キズ領域の幅dが、外観上問題があるキズの最小の幅に基づいて実験的に定められた閾値TH以上である場合には、キズ領域の幅dは基準以上であると判定される。キズ領域の幅dが、閾値TH未満である場合には、キズ領域の幅dは基準未満であると判定される。
キズ領域の幅dが基準以上である場合には(S145:YES)、S150にて、CPU110は、ワーク300は不良品であると判定して、判定結果を出力する。
キズ領域の幅dが基準未満である場合には(S145:NO)、S155にて、CPU110は、特定された全ての円CLを注目円として処理したか否かを判断する。未処理の円CLがある場合には(S155:NO)、CPU110は、S130に処理を戻す。全ての円CLが処理された場合には(S155:YES)、S160にて、CPU110は、ワーク300は良品であると判定して、判定結果を出力する。CPU110は、判定結果を出力すると、検査処理を終了する。
このように、基準以上の幅を有する円キズが少なくとも1個存在する場合には、ワーク300は不良品であると判定され、基準以上の幅を有する円キズが存在しない場合には、ワーク300は、良品であると判定される。
A-4.生成ネットワークGNのトレーニング
生成ネットワークGNを事前にトレーニングして、上述した検査装置100のコンピュータプログラムPGiにモジュールとして組み込まれる学習済みの生成ネットワークGNを生成する処理について説明する。
生成ネットワークGNを事前にトレーニングして、上述した検査装置100のコンピュータプログラムPGiにモジュールとして組み込まれる学習済みの生成ネットワークGNを生成する処理について説明する。
図6は、トレーニング装置200の構成を示すブロック図である。トレーニング装置200のハードウエア構成は、上述した図1の検査装置100と同様の構成を有する計算機である。トレーニング装置200の構成要素210~270は、図1の検査装置100の同名の構成要素110~170と同様の構成要素であるので、その説明を省略する。
トレーニング装置200の不揮発性記憶装置230には、検査装置用のコンピュータプログラムPGiに代えて、トレーニング装置用のコンピュータプログラムPGtが格納されている。
コンピュータプログラムPGtは、例えば、コンピュータプログラムPGiと同様に、検査装置100の製造者によって提供される。コンピュータプログラムPGtは、コンピュータプログラムPGiと同様に、例えば、サーバからダウンロードされる形態で提供されても良く、DVD-ROMなどに格納される形態で提供されてもよい。CPU110は、コンピュータプログラムPGtを実行することにより、後述する学習画像データ生成処理とトレーニング処理とを実行する。
コンピュータプログラムPGtは、トレーニング前の生成ネットワークGNの機能をCPU110に実現させるコンピュータプログラムである生成ネットワークプログラムNPをモジュールとして含んでいる。
不揮発性記憶装置230には、さらに、複数個の撮像画像データを含む撮像画像データ群IGが格納されている。撮像画像データは、例えば、検査システム1000の撮像装置400を用いて、検査処理(図3)のS100にて撮像画像データを取得する際と同様の条件で、ワーク(図示省略)を撮像することによって生成される。撮像されるワークは、検査対象のワーク300(図1)と同一の製造工程によって製造された製品である。
A-4-1.学習画像データ生成処理
学習画像データ生成処理は、後述するトレーニング処理にて用いられる学習画像データと、学習画像データに対応する教師画像データと、を生成する処理である。図7は、学習画像データ生成処理のフローチャートである。図8は、学習画像データ生成処理で用いられる画像の一例を示す図である。
学習画像データ生成処理は、後述するトレーニング処理にて用いられる学習画像データと、学習画像データに対応する教師画像データと、を生成する処理である。図7は、学習画像データ生成処理のフローチャートである。図8は、学習画像データ生成処理で用いられる画像の一例を示す図である。
S200では、CPU210は、ワーク(図示省略)の複数個の撮像画像データを取得する。取得される複数個の撮像画像データは、不揮発性記憶装置230に格納された撮像画像データ群IGの全部または一部である。図8(A)には、撮像画像データによって示される撮像画像IItの一例が示されている。図8(A)の撮像画像IItは、全体が無キズ部Bgであり、円キズを含んでいない。
S210では、CPU110は、複数個の撮像画像データを用いて、複数個の撮像画像IItのそれぞれを複数個の部分画像PIItに分割して、L個の部分画像データを生成する。各撮像画像IItの分割は、検査処理(図3)のS105と同様に実行される。したがって、部分画像PIItは、生成ネットワークGNの入力データIDとして想定されている所定のサイズ(例えば、縦572画素×横572画素のサイズ)の画像である。生成される部分画像データの個数Lは、2以上の整数であり、例えば、数百個である。
S220では、CPU210は、疑似的なキズを含む画像を示すK個の疑似画像データを生成する。疑似画像データは、撮像画像データと同様にRGB画像データである。図8(C)には、疑似画像データによって示される疑似画像CItの一例が示されている。疑似画像CItのサイズは、部分画像PIItのサイズ(例えば、縦572画素×横572画素のサイズ)と同一である。疑似画像CItは、単色の背景BP(例えば、黒)に、疑似的な円キズSCを示す円弧SIが配置された画像である。円弧SIは、円キズSCの色として想定される色(例えば、白や明るいグレー)の単色の画像である。円弧SIの半径、円弧SIの周方向の長さ、円弧SIの線幅は、想定される円キズSCの半径、周方向の長さ、幅の範囲内でランダムに決定される。円弧SIの線幅の範囲は、検査処理において不良品であると判定される幅と、検査処理において良品であると判定される幅と、の両方を含む範囲である。円キズSCが配置される位置、角度は、ランダムに決定される。図8(C)の例では、円弧SIの始点Psが疑似画像CItの左端に位置し、円弧SIの終点Peが疑似画像CItの内部に位置している。これに限らず、円弧SIの始点Psと終点Peとの両方が画像端(上端、下端、左端、右端のいずれか)に位置する疑似画像CItと、円弧SIの始点Psと終点Peとの両方が画像の内部に位置する疑似画像CItと、円弧SIの始点Psと終点Peとのうちの一方が画像端に位置し、他方が画像の内部に位置する疑似画像CItとが、所定の比率で生成される。また、円弧SIが配置されない疑似画像CIt(単色の背景BPのみの画像)が所定数含まれても良い。疑似画像データが生成される個数Kは、2以上の整数、例えば、数千個である。
S230では、CPU210は、複数個の疑似画像データをそれぞれ二値化して、教師画像データを生成する。教師画像データは、対応する疑似画像データを用いて生成される学習画像データが、入力データIDとして生成ネットワークGNに入力される場合に、生成ネットワークGNが出力すべき理想的な出力データODである。例えば、CPU210は、疑似画像CItの複数個の画素のうち、背景BPを構成する画素を「0」とし、円弧SIを構成する画素を「1」とする二値画像データを教師画像データとして生成する。複数個の疑似画像データと一対一で対応する同数の教師画像データが生成される。
S240では、CPU210は、複数個の疑似画像データのそれぞれに対して、アンチエイリアス処理を実行して、複数個の処理済みの疑似画像データを生成する。アンチエイリアス処理は、単色のオブジェクト(文字や線)の見栄えが自然な見栄えになるように、オブジェクトと背景との境界部分に、オブジェクトと背景との中間色の画素を適宜に配置する公知の処理である。アンチエイリアス処理を実行することによって、疑似画像CItにおける円弧SIを、実際に撮像された撮像画像における円キズSCに近づけることができる。
S250では、CPU210は、部分画像データとアンチエイリアス処理済みの疑似画像データとを合成して、学習画像データを生成する。具体的には、CPU210は、K個の疑似画像データのそれぞれを注目疑似画像データとして、以下の処理を実行する。CPU210は、L個の部分画像データの中から1つの画像データを、注目疑似画像データと合成する画像データとしてランダムに選択する。CPU210は、選択された部分画像データによって示される部分画像PIIt内の複数個の画素のうち、合成すべき疑似画像CIt内の円弧SIを構成する画素と対応する画素の値を、円弧SIを構成する画素の値に置換する。これによって、K個の学習画像データが生成される。図8(D)には、学習画像データによって示される学習画像TIの一例が示されている。図8(D)の学習画像TIは、部分画像PIItの無キズ部Bgの(図8(B))上に、アンチエイリアス処理済みの円弧SI(図8(C))が合成された画像である。
S260では、CPU210は、K個の学習画像データのそれぞれに、教師画像データを一対一で対応付けて不揮発性記憶装置230に保存する。1つの学習画像データに対応付けられる教師画像データは、S250にて該学習画像データを生成する際に用いられた疑似画像データに対応する教師画像データである。
以上説明した学習画像データ生成処理によって、K個のデータペアが生成される。各データペアは、学習画像データと、該学習画像データと対応する教師画像データと、のペアである。
A-4-2.トレーニング処理
トレーニング処理は、学習画像データ生成処理によって生成されたK個のデータペアを用いて、生成ネットワークGNをトレーニングする処理である。図9は、トレーニング処理のフローチャートである。
トレーニング処理は、学習画像データ生成処理によって生成されたK個のデータペアを用いて、生成ネットワークGNをトレーニングする処理である。図9は、トレーニング処理のフローチャートである。
S300では、CPU210は、生成ネットワークGNの複数個の演算パラメータを初期化する。例えば、これらの演算パラメータの初期値は、同一の分布(例えば、正規分布)から独立に取得された乱数に設定される。
S310では、CPU210は、不揮発性記憶装置230に格納されたK個のデータペアから、バッチサイズ分のデータペア、例えば、V個(Vは、1以上の整数)のデータペアを選択する。選択されるデータペアの個数Vは、例えば、数百個であり、具体的には、128、256、512等である。K個のデータペアをそれぞれ含む複数個のグループ(バッチ)に予め分割し、これらのグループから1個のグループが順次に選択されても良い。これに代えて、V個ずつのデータペアは、K個のデータペアから、毎回、ランダムに選択されても良い。
S320では、CPU210は、選択されたV個のデータペアに含まれるV個の学習画像データをそれぞれ、入力データIDとして生成ネットワークGNに入力して、V個の出力データODを生成する。
S330では、CPU210は、V個の出力データODのそれぞれについて、出力データODと、対応する教師画像データと、の間の誤差値Eを算出する。誤差値Eには、所定の損失関数が用いられる。例えば、本実施例では、出力データODの各画素の値と、教師画像データの対応する画素の値と、の間のクロスエントロピー誤差が算出される。そして、全ての画素のクロスエントロピー誤差の合計値が、誤差値Eとして算出される。
S340では、CPU210は、S330にて算出されたV個の誤差値Eを用いて、生成ネットワークGNの複数個の演算パラメータを調整する。具体的には、CPU210は、V個の誤差値Eの合計値が小さくなるように、所定の最適化アルゴリズムに従って演算パラメータを調整する。所定のアルゴリズムには、例えば、誤差逆伝播法と勾配降下法とを用いたアルゴリズム(例えば、Adam)が用いられる。
S350では、CPU110は、トレーニングが完了したか否かを判断する。本実施例では、作業者からの完了指示が入力された場合にはトレーニングが完了したと判断し、トレーニングの継続指示が入力された場合にはトレーニングが完了していないと判断する。例えば、CPU110は、トレーニング処理に用いられた学習画像データとは別の複数個のテスト用の画像データを生成ネットワークGNに入力して、複数個の出力データODを生成する。CPU110は、生成された出力データODによって示される画像を表示部140に表示する。作業者は、表示された画像を確認して、最終的な画像として十分な精度でキズ領域が特定されているか否かを確認し、確認結果に応じて、操作部150を介して、トレーニングの完了指示または継続指示を入力する。変形例では、例えば、S310~S340の処理が所定回数だけ繰り返された場合に、トレーニングが完了されたと判断されても良いし、誤差値Eが閾値以下になった場合に、トレーニングが完了されたと判断されても良い。
トレーニングが完了していないと判断される場合には(S350:NO)、CPU110は、S310に処理を戻す。トレーニングが完了したと判断される場合には(S350:YES)、CPU110は、トレーニング処理を終了する。このトレーニング処理によれば、トレーニング処理が終了した時点で、生成ネットワークGNは、演算パラメータが調整された学習済みモデルになっている。学習済みモデルを実現する生成ネットワークプログラムNPは、検査用のコンピュータプログラムPGiにモジュールとして組み込まれて(図1)、上述した検査処理(図3)に用いられる。
以上説明した本実施例によれば、検査装置100のCPU110は、撮像画像IIを示す撮像画像データを学習済みの生成ネットワークGNに入力することによって、撮像画像IIに対応する出力画像データ、具体的には、複数個の部分推定画像データを生成する(図3のS100~S110)。学習済みの生成ネットワークGNは、撮像画像II内のワーク300が線状のキズを含む場合に、出力画像が線状のキズを示す線状のキズ領域SAを示すようにトレーニングされた機械学習モデルである(図9等)。CPU110は、出力画像データを用いて、キズ領域SAの幅dを特定する(図3のS135、S140)。CPU110は、キズ領域SAの幅dに基づいて、ワーク300が良品であるか否かを判定する(図3のS145~S160)。
この結果、生成ネットワークGNを用いて生成される複数個の部分推定画像データを用いて線状のキズを示すキズ領域SAを特定し、該キズ領域SAの幅dに基づいて、ワーク300が良品であるか否かを判定するので、生成ネットワークGNを用いてワーク300が良品であるか否かを精度良く判定することができる。例えば、検査員による目視などでワーク300が良品であるか否かを判断する場合には、検査員の熟練度などに応じて、検査精度や検査速度が低下し得るが、本実施例によれば、このような問題を抑制できる。さらに、キズ領域SAの幅dを特定し、該幅dに基づいて、ワーク300が良品であるか否かを判定するので、生成ネットワークGNを用いて、単に、ワーク300が線状のキズを含むか否かを判断する場合と比較して、ワーク300が良品であるか否かを精度良く判断できる。例えば、ワーク300が線状のキズを有する場合であっても、キズの幅が十分に小さい場合には、外観上問題はなく、良品であると判断すべき場合もある。本実施例によれば、例えば、ワーク300が線状のキズを有する場合であっても該キズが外見上問題ないレベルであれば、ワーク300は良品であると判断できる。
さらに、本実施例によれば、CPU110は、複数個の部分推定画像データに基づく推定画像データを用いて、キズ領域SAのうち、円キズSCに対応する領域、すなわち、円または円弧形状のキズ領域を特定する(図3のS120、S125)。CPU110は、該円または円弧形状のキズ領域の幅dを特定し(図3のS130、S140)、該幅dに基づいて、ワーク300が良品であるか否かを判定する(図3のS145~S160)。本実施例のワーク300の外観には、製造工程における研磨の態様(回転式の研磨)に起因して円または円弧状のキズが含まれやすい。本実施例によれば、円または円弧状のキズが含まれやすいワーク300が良品であるか否かを精度良く判定することができる。
さらに、本実施例では、CPU110は、円または円弧状の領域であり、かつ、特定サイズの領域を特定する(図3のS120)。すなわち、上述したように、CPU110は、ハフ変換処理を用いて円CLを特定する際に、円キズSCとして想定される範囲内の半径を有する円CLのみを特定する。本実施例のワーク300は、製造工程での研磨に用いられる研磨装置のサイズに起因して特定サイズの円または円弧状のキズが含まれやすい。本実施例によれば、特定サイズの円キズSCが含まれやすいワーク300が良品であるか否かを精度良く判定することができる。
さらに、本実施例では、CPU110は、推定画像データに対して線検出アルゴリズムに従う画像処理であるハフ変換処理を実行して、円または円弧状のキズ領域SAに対応する円CLを特定し(図3のS120)、円CLを構成する線と直交する方向(すなわち、円CLの径方向)に沿ってキズ領域SAの幅dを特定する(図3のS135、S140、図5)。この結果、ハフ変換処理を利用して、円または円弧状のキズ領域SAの幅、換言すれば、ワーク300上の円キズSCの幅を精度良く特定できる。したがって、ワーク300が良品であるか否かをさらに精度良く判定することができる。
さらに、本実施例の生成ネットワークGNをトレーニング処理(図9)で用いられる複数個の学習画像データは、ワーク300を撮像することによって生成される部分画像PIItに対して、疑似的に作成された円キズSCを示す線状画像である円弧SIを合成することによって生成される画像データである(図7のS220、S240、S250、図8)。そして、学習画像データに対応する教師画像データは、学習画像TI内の円弧SIが合成された領域を示すデータである(図7のS230)。この結果、複数個の学習画像データと複数個の教師画像データとを生成するための負担を軽減することができる。例えば、一般的には、ワークは、不良品の割合よりも良品の割合が大幅に高い。このために、円キズを含む撮像画像を示す複数個の撮像画像データを準備することは困難である。円キズを含まない撮像画像IIt(図8(A))を示す複数個の撮像画像データを準備することは比較的容易である。このために、本実施例では、円キズを含まない撮像画像IItを用いて学習画像データを生成できるので、多数の学習画像データを少ない負担で容易に生成できる。さらに、実際の円キズSCを撮影して得られる画像データに対応する教師画像データは、例えば、オペレータが該画像内の円キズSCの位置を確認しながら作成される。本実施例では、疑似画像データを二値化するだけで教師画像データを作成できる(図7のS230)ので、多数の教師画像データを少ない負担で容易に生成できる。
さらに、本実施例では、学習画像データの生成の際に、部分画像PIItに合成される円弧SIは、アンチエイリアス処理が適用された線の画像である(図7のS240)。この結果、アンチエイリアス処理が行われない場合と比較して、疑似的に作成されたキズを示す円弧SIを、ワーク300の円キズSCを撮像して得られるキズの画像に類似させることができる。この結果、本実施例の学習画像データを用いることで、ワーク300の円キズSCをより精度良く特定できるように生成ネットワークGNをトレーニングすることができる。
さらに、本実施例では、学習画像データの生成の際に、複数個(L個)の部分画像PIItがベースの画像として用いられる。すなわち、本実施例で生成される複数個(K個)の学習画像データは、第1の部分画像に対して疑似的に作成された円弧SIを合成することによって生成される第1の学習画像データと、第2の部分画像に対して疑似的に作成された円弧SIを合成することによって生成される第2の学習画像データと、を含む。仮に、1種類の部分画像PIItをベースにして生成される学習画像データのみを用いて生成ネットワークGNをトレーニングすると、1種類の部分画像PIItの特徴の影響が過度に大きくなり、例えば、過学習が発生する。この場合には、生成ネットワークGNは、学習画像データについてはキズ領域SAを精度良く特定できたとしても、実際の検査処理ではキズ領域SAを精度良く特定できない。上記構成によれば、過学習の発生を抑制して、キズ領域SAを精度良く特定できるように機械学習モデルをトレーニングすることができる。
以上の説明から解るように、本実施例のワーク300は対象物の例であり、キズ領域SAの幅dは、線状領域の特徴量の例であり、円キズSCに対応するキズ領域SA1、SA2は、特定形状の領域の例である。また、撮像画像データは、入力画像データの例であり、複数個の部分推定画像データの全体は、出力画像データの例である。部分画像PIItは、ベース画像の例であり、疑似画像CItの円弧SIは、線状画像の例である。
B.第2実施例
(1)上記第1実施例では、円または円弧状の円キズSCを検査の対象のキズとして、検査処理が行われている。これに代えて、任意の形状の線状のキズを検査の対象のキズとして、検査処理が行われても良い。例えば、ワーク300の製造工程に起因して、ワーク300の表面に様々な形状の線状のキズが現れる可能性がある場合に、本変形例は有効である。図10は、第2実施例の検査処理のフローチャートである。図10では、図3の第1実施例の検査処理と同一の処理には、図3と同一の符号が付され、図3の実施例の検査処理とは異なる処理には、符号の末尾に「B」が付されている。
(1)上記第1実施例では、円または円弧状の円キズSCを検査の対象のキズとして、検査処理が行われている。これに代えて、任意の形状の線状のキズを検査の対象のキズとして、検査処理が行われても良い。例えば、ワーク300の製造工程に起因して、ワーク300の表面に様々な形状の線状のキズが現れる可能性がある場合に、本変形例は有効である。図10は、第2実施例の検査処理のフローチャートである。図10では、図3の第1実施例の検査処理と同一の処理には、図3と同一の符号が付され、図3の実施例の検査処理とは異なる処理には、符号の末尾に「B」が付されている。
図10の検査処理では、図3の実施例の検査処理のS120、S125、S130、S135、S140、S150に代えて、S120B、S125B、S130B、S135B、S140B、S150Bが実行される。
図10のS100~S115では、図3のS100~S115と同一の処理が実行されて、推定画像データが生成される。図11は、第2実施例の検査処理において実行される画像処理の説明図である。図11(A)には、変形例において生成される推定画像データによって示される推定画像OIbが示されている。図11(A)の推定画像OIbは、キズ領域SAbとして、曲線上のキズ領域SAb1、SAb2と、無キズ領域BAbと、が特定されている。
S120Bでは、CPU110は、キズ領域SAb1、SAb2をベクトル化することによって、キズ領域SAb1、SAb2に対応する線を特定する。具体的には、推定画像データに対して、キズ領域SAbを構成する画素(以下、キズ画素と呼ぶ)にラベリングするラベリング処理を実行する。ラベリング処理では、CPU110は、連続する一つながりの複数個のキズ画素で構成される画素群に、1個の識別子を割り当て、互いに離れた複数個のキズ画素で構成される複数個の画素群に、互いに異なる識別子を割り当てる。これによって、図11(A)の例では、キズ領域SAb1とキズ領域SAb2とは互いに離れているので、キズ領域SAb1を構成する複数個のキズ画素と、キズ領域SAb2を構成する複数個のキズ画素とは、互いに異なる識別子が割り当てられる。すなわち、キズ領域SAb1とキズ領域SAb2とが、別々の領域として特定される。
CPU110は、特定された各キズ領域に細線化処理を実行して、キズ領域を細線化する。細線化の処理には、公知の処理が用いられる。例えば、公開された画像処理のライブラリであるOpenCVでは、細線化処理(thinning)のための関数が準備されている。CPU110は、細線化された各キズ領域上に等間隔のM個(Mは2以上の整数)の基準点Pbm(mは1≦m≦Mを満たす整数)を設定する。CPU110は、隣り合う2個の基準点を結ぶベクトルを算出することによって、各キズ領域をベクトル化する。例えば、図11(A)では、キズ領域SAb1に設定された基準点のうちの4個の基準点Pb1~Pb4が図示されている。キズ領域SAb1に対応する線は、基準点Pb1と基準点Pb2とを結ぶベクトルと、基準点Pb2と基準点Pb3とを結ぶベクトルと、基準点Pb3と基準点Pb4とを結ぶベクトルと、を含む(M-1)本のベクトルで定義される。
S125Bでは、CPU110は、推定画像OIにて1個以上のキズの線が特定されたか否かを判断する。キズの線が特定されない場合には(S125B:NO)、S160にて、CPU110は、ワーク300は良品であると判定して、判定結果を出力する。キズの線が特定された場合には(S125B:YES)、CPU110は、S130Bに処理を進める。
S130Bでは、CPU110は、特定された1以上のキズの線の中から、1個の注目線を選択する。S135Bでは、CPU110は、展開画像DIbを示す展開画像データを生成する。展開画像DIbは、注目線に沿う方向を横方向に、注目線の法線方向を縦方向に変換した画像である。
図11(A)のキズ領域SAb1に対応する線が注目線である場合を例にして説明する。キズ領域SAb1に対応する線は、上述のように(M-1)本のベクトルで定義される線である。図11(B)には、図11(A)のキズ領域SAb1に対応する線が注目線である場合に生成される展開画像DIbが例示されている。CPU110は、(M-1)本のベクトルのそれぞれに対応する(M-1)本の参照線を設定する。各参照線は、対応するベクトルの中心を通り、かつ、該ベクトルと直交する所定の長さの直線である。図11(A)には、(M-1)本の参照線のうち、3本の参照線Lb1~Lb3が図示されている。参照線Lb1は、基準点Pb1と基準点Pb2とを結ぶベクトルに対応する。参照線Lb2は、基準点Pb2と基準点Pb3とを結ぶベクトルに対応する。参照線Lb3は、基準点Pb3と基準点Pb4とを結ぶベクトルに対応する。
展開画像DIbは、(M-1)本の参照線と一対一で対応するN本のラスタラインによって構成される画像である。各ラスタラインは、展開画像DIbの縦方向に延びる複数個の画素によって構成されるラインである。(M-1)本のラスタラインは、展開画像DIbの横方向に並んでいる。図11(B)には、図11(A)の3本の参照線Lb1~Lb3に対応する3本のラスタラインRLb1~RLb3が図示されている。1本のラスタラインを構成する複数個の画素は、該ラスタラインに対応する1本の参照線上に位置する推定画像OIb内の複数個の画素である。図11(B)に示すように、展開画像DIbは、推定画像OIbと同様に、キズ領域SAbと無キズ領域BAbとを示す二値画像データである。
S140Bでは、CPU110は、展開画像データを用いて、注目線に対応するキズ領域SAbの幅を算出する。例えば、CPU110は、展開画像DIbの(M-1)本のラスタラインのそれぞれについて、キズ領域SAbを構成する画素数をカウントする。CPU110は、カウントされた画素数の平均値をキズ領域SAbの幅として算出する。
S145では、CPU110は、キズ領域の幅が基準以上であるか否かを判断する。キズ領域の幅が基準以上である場合には(S145:YES)、S150にて、CPU110は、ワーク300は不良品であると判定して、判定結果を出力する。キズ領域の幅が基準未満である場合には(S145:NO)、S155Bにて、CPU110は、特定された全てのキズの線を注目線として処理したか否かを判断する。未処理の線がある場合には(S155B:NO)、CPU110は、S130Bに処理を戻す。全ての円CLが処理された場合には(S155B:YES)、S160にて、CPU110は、ワーク300は良品であると判定して、判定結果を出力する。CPU110は、判定結果を出力すると、検査処理を終了する。
以上説明した第2実施例によれば、CPU110は、推定画像データを用いて、キズ領域SAbに対応する線であってキズ領域SAbの形状に応じて決定される線を特定する(図10のS120B)。CPU110は、決定された線と直交する方向に沿ってキズ領域SAbの幅を特定する(図10のS135B、S140B)。この結果、任意の形状の線状のキズ領域SAbの幅を精度良く特定できる。換言すれば、任意の形状の線状のキズの幅を精度良く特定できる。
C.変形例:
(1)上記各実施例では、キズ領域SA、SAbの特徴量として、キズ領域の幅が用いられている。これに代えて、キズ領域SA、SAbの輝度が特徴量として用いられても良い。この場合には、CPU110は、キズ領域SA、SAbの輝度に基づいて、ワーク300が良品であるか否かを判定しても良い。例えば、CPU110は、キズ領域SA、SAbに対応する撮像画像IIの複数個の画素の平均輝度を、キズ領域SA、SAbの輝度として算出する。CPU110は、キズ領域SA、SAbの輝度と無キズ部Bgの輝度との差分が閾値以上である場合に、ワーク300は不良品であると判断し、キズ領域SA、SAbの輝度と無キズ部Bgの輝度との差分が閾値未満である場合に、ワーク300は良品であると判断しても良い。キズ領域SA、SAbの輝度と無キズ部Bgの輝度との差分が大きいほど、キズ領域SA、SAbに位置するキズが目立ち易いと考えられる。このために、キズ領域SA、SAbの輝度が特徴量として用いられる場合にも、ワーク300が良品であるか否かを精度良く判定することができる。
(1)上記各実施例では、キズ領域SA、SAbの特徴量として、キズ領域の幅が用いられている。これに代えて、キズ領域SA、SAbの輝度が特徴量として用いられても良い。この場合には、CPU110は、キズ領域SA、SAbの輝度に基づいて、ワーク300が良品であるか否かを判定しても良い。例えば、CPU110は、キズ領域SA、SAbに対応する撮像画像IIの複数個の画素の平均輝度を、キズ領域SA、SAbの輝度として算出する。CPU110は、キズ領域SA、SAbの輝度と無キズ部Bgの輝度との差分が閾値以上である場合に、ワーク300は不良品であると判断し、キズ領域SA、SAbの輝度と無キズ部Bgの輝度との差分が閾値未満である場合に、ワーク300は良品であると判断しても良い。キズ領域SA、SAbの輝度と無キズ部Bgの輝度との差分が大きいほど、キズ領域SA、SAbに位置するキズが目立ち易いと考えられる。このために、キズ領域SA、SAbの輝度が特徴量として用いられる場合にも、ワーク300が良品であるか否かを精度良く判定することができる。
また、キズ領域SA、SAbの特徴量として、キズ領域の幅や輝度とは異なる値、例えば、キズ領域の色と背景BPの色との色差が用いられても良い。
(2)上記各実施例の検査処理(図3、図10)は一例であり、適宜に変更される。例えば、生成ネットワークGNの入力データIDが十分に大きなサイズである場合には、撮像画像データは、分割されることなく、そのまま生成ネットワークGNに入力されても良い。この場合には、生成ネットワークGNから出力される出力データODを二値化したデータが、推定画像データになる。
また、キズ領域SA、SAbの幅や輝度に基づいて、ワーク300が良品であるか否かを判断するための判断基準は、様々は変形が可能である。例えば、線状のキズ領域SA、SAbのうち、第1の閾値以上の幅を有する部分の長さが第2の閾値以上である場合に、ワーク300は不良品であると判断され、線状のキズ領域SA、SAbのうち、第1の閾値以上の幅を有する部分の長さが第2の閾値未満である場合に、ワーク300は良品であると判断されても良い。
上記第1実施例では、円または円弧状のキズ領域が特定され、該キズ領域の幅に基づいて、ワーク300は良品であるか否かが判断されている。これに代えて、他の特定の形状、例えば、楕円、多角形などのキズ領域が特定されても良い。例えば、製造工程などを考慮して、ワーク300に現れ得る1種以上の特定形状を有するキズ領域が特定される。また、これらの特定形状を有するキズ領域の全てが検査の対象として特定されても良いし、これらの特定形状を有するキズ領域のうち、基準以上のサイズを有するキズ領域のみが特定されても良い。
上記第1実施例では、円または円弧状のキズ領域に対応する円CLを特定する線検出アルゴリズムとして、ハフ変換処理が用いられている。これに限らず、他のアルゴリズム、例えば、パターンマッチングが用いられても良い。
上記第2実施例では、キズ領域の形状に応じた線を特定するために、ベクトル化が行われている。これに代えて、例えば、最小二乗法などの公知の手法を用いてキズ領域の形状に近似する近似曲線を特定することによって、キズ領域の形状に応じた線が特定されても良い。
(3)上記第1実施例の学習画像データ生成処理(図7)は、一例であり、これに限られない。例えば、図7のS240のアンチエイリアス処理は省略されても良い。また、生成ネットワークGNの入力データIDが十分に大きなサイズである場合には、1個の撮像画像データを分割する必要がないので、図7のS210は省略されても良い。
図7のS220では、CPU210が自動で疑似画像データを生成しているが、オペレータが、公知の画像作成アプリケーションプログラムを用いて、疑似画像データを生成しても良い。
また、図7の学習画像データ生成処理では、生成される全ての学習画像データが、部分撮像画像データと疑似画像データとを合成して得られる画像データである。これに代えて、学習画像データの全部または一部は、円キズSCを有するワークを撮像して得られる撮像画像データ、もしくは、該撮像画像データを分割した部分撮像画像データであっても良い。この場合には、該学習画像データに対応する教師画像データは、例えば、オペレータが撮像画像内の円キズSCの位置を確認しながら作成する画像データである。
(4)上記第1実施例のトレーニング処理(図9)は、一例であり、これに限られない。誤差値Eは、クロスエントロピー誤差に代えて、他の種類の誤差値、例えば、平均二乗誤差が用いられても良い。また、誤差値Eは、クロスエントロピー誤差の項に加えて、他の補助的な項、例えば、正則化項が加えられても良い。
(5)生成ネットワークGNの具体的な構成は、図2に示す構成に限られず、他の様々な構成であっても良い。例えば、生成ネットワークGNにおいて、畳込層や転置畳込層やプーリングの層数は、適宜に変更されて良い。また、各層で出力された値に対して実行される後処理も任意の様々な構成が採用される。例えば、後処理に用いられる活性化関数は、任意の他の関数、例えば、PReLU、ソフトマックス、シグモイドが用いられても良い。
また、生成ネットワークGNは、U-netとは、異なる機械学習モデルであっても良い。例えば、SegNetなどのFCN(Fully Convolutional Networks)、PSPNetなど、セマンティックセグメンテーションのための他の機械学習モデルが採用されても良い。
(6)図1の検査装置100や図6のトレーニング装置200のハードウェア構成は、一例であり、これに限られない。例えば、検査装置100やトレーニング装置200のプロセッサは、CPUに限らず、GPU(Graphics Processing Unit)やASIC(application specific integrated circuit)、あるいは、これらとCPUとの組み合わせであっても良い。また、トレーニング装置200や検査装置100の全部または一部は、ネットワークを介して互いに通信可能な複数個の計算機(例えば、いわゆるクラウドサーバ)であっても良い。
(7)上記各実施例において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部あるいは全部をハードウェアに置き換えるようにしてもよい。例えば、生成ネットワークGNは、プログラムモジュールに代えて、ASIC(Application Specific Integrated Circuit)等のハードウェア回路によって実現されてよい。
以上、実施例、変形例に基づき本発明について説明してきたが、上記した発明の実施の形態は、本発明の理解を容易にするためのものであり、本発明を限定するものではない。本発明は、その趣旨並びに特許請求の範囲を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物が含まれる。
100…検査装置,1000…検査システム,110…CPU,120…揮発性記憶装置,130…不揮発性記憶装置,140…表示部,150…操作部,170…通信部,200…トレーニング装置,210…CPU,230…不揮発性記憶装置,240…表示部,250…操作部,270…通信部,400…撮像装置,GN…生成ネットワーク,II,IIt…撮像画像,NP…生成ネットワークプログラム,OI,OIb…推定画像,PGi…コンピュータプログラム,PGt…コンピュータプログラム,SA,SAb…キズ領域,TI…学習画像
Claims (14)
- 対象物の外観を検査する検査装置であって、
前記対象物の外観を含む撮像画像を示す入力画像データを学習済みモデルに入力することによって、前記撮像画像に対応する出力画像を示す出力画像データを生成する生成部であって、前記学習済みモデルは、前記撮像画像内の前記対象物が線状のキズを含む場合に、前記出力画像が線状のキズを示す線状領域を示すようにトレーニングされた機械学習モデルである、前記生成部と、
前記出力画像データを用いて、前記線状領域の所定の特徴に関する特徴量を特定する特徴特定部と、
前記線状領域の前記特徴量に基づいて、前記対象物が良品であるか否かを判定する良否判定部と、
を備える、検査装置。 - 請求項1に記載の検査装置であって、さらに、
前記出力画像データを用いて、前記線状領域のうち、特定形状の領域を特定する特定形状特定部を備え、
前記特徴特定部は、前記特定形状の領域の前記特徴量を特定し、
前記良否判定部は、前記特定形状の領域の前記特徴量に基づいて、前記対象物が良品であるか否かを判定する、検査装置。 - 請求項2に記載の検査装置であって、
前記特定形状は、円または円弧であり、
前記特徴特定部は、前記円または円弧状の前記線状領域の前記特徴量を特定し、
前記良否判定部は、前記円または円弧状の前記線状領域の前記特徴量に基づいて、前記対象物が良品であるか否かを判定する、検査装置。 - 請求項2または3に記載の検査装置であって、
前記特定形状特定部は、前記特定形状の領域であり、かつ、特定サイズの領域を特定する、検査装置。 - 請求項1~4のいずれかに記載の検査装置であって、
前記特徴特定部は、前記特徴量として、前記線状領域の幅を特定する幅特定部である、検査装置。 - 請求項5に記載の検査装置であって、さらに、
前記出力画像データを用いて、前記線状領域のうち、特定形状の領域を特定する特定形状特定部を備え、
前記特定形状特定部は、前記出力画像データに対して所定の線検出アルゴリズムに従う画像処理を実行して、前記特定形状の領域に対応する前記特定形状の線を特定し、
前記幅特定部は、前記特定形状の線と直交する方向に沿って前記特定形状の領域の幅を特定する、検査装置。 - 請求項5に記載の検査装置であって、さらに、
前記出力画像データを用いて、前記線状領域に対応する線であって前記線状領域の形状に応じて決定される線である対応線を特定する線特定部を備え、
前記幅特定部は、前記対応線と直交する方向に沿って前記線状領域の幅を特定する、検査装置。 - 請求項1~4のいずれかに記載の検査装置であって、
前記特徴特定部は、前記特徴量として、前記線状領域の輝度を特定する輝度特定部である、検査装置。 - 請求項1に記載の検査装置であって、
前記学習済みモデルをトレーニングする処理は、
複数個の学習画像データを前記機械学習モデルに入力することによって、前記複数個の学習画像データに対応する複数個の出力画像データを生成する処理と、
前記複数個の出力画像データと、前記複数個の学習画像データに対応する複数個の教師画像データと、を用いて、前記出力画像データと前記教師画像データとの差が小さくなるように、前記学習済みモデルの複数個の演算パラメータを調整する処理と、
を含み、
前記複数個の学習画像データは、前記対象物を撮像することによって生成されるベース画像に対して、疑似的に作成されたキズを示す線状画像を合成することによって生成される合成画像を示す合成画像データを含み、
前記複数個の教師画像データのうち、前記合成画像データに対応するデータは、前記合成画像内の前記線状画像が合成された領域を示すデータである、検査装置。 - 請求項9に記載の検査装置であって、
前記線状画像は、アンチエイリアス処理が適用された線の画像である、検査装置。 - 請求項9または10に記載の検査装置であって、
前記ベース画像は、第1のベース画像と、前記第1のベース画像とは異なる第2のベース画像と、を含み、
前記複数個の学習画像データは、前記第1のベース画像に対して前記線状画像を合成することによって生成される第1の合成画像データと、前記第2のベース画像に対して前記線状画像を合成することによって生成される第2の合成画像データと、を含む、検査装置。 - 請求項1~11のいずれかに記載の検査装置であって、
前記機械学習モデルは、U-netである、検査装置。 - コンピュータプログラムであって、
対象物の外観を含む撮像画像を示す入力画像データを学習済みモデルに入力することによって、前記撮像画像に対応する出力画像を示す出力画像データを生成する生成機能であって、前記学習済みモデルは、前記撮像画像内の前記対象物が線状のキズを含む場合に、前記出力画像が線状のキズを示す線状領域を示すようにトレーニングされた機械学習モデルである、前記生成機能と、
前記出力画像データを用いて、前記線状領域の所定の特徴に関する特徴量を特定する特徴特定機能と、
前記線状領域の前記特徴量に基づいて、前記対象物が良品であるか否かを判定する良否判定機能と、
をコンピュータに実現させる、コンピュータプログラム。 - 対象物の外観を検査する検査方法であって、
前記対象物の外観を含む撮像画像を示す入力画像データを学習済みモデルに入力することによって、前記撮像画像に対応する出力画像を示す出力画像データを生成する生成工程であって、前記学習済みモデルは、前記撮像画像内の前記対象物が線状のキズを含む場合に、前記出力画像が線状のキズを示す線状領域を示すようにトレーニングされた機械学習モデルである、前記生成工程と、
前記出力画像データを用いて、前記線状領域の所定の特徴に関する特徴量を特定する特徴特定工程と、
前記線状領域の前記特徴量に基づいて、前記対象物が良品であるか否かを判定する良否判定工程と、
を備える、検査方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021052482A JP2022150065A (ja) | 2021-03-25 | 2021-03-25 | 検査装置、コンピュータプログラム、および、検査方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021052482A JP2022150065A (ja) | 2021-03-25 | 2021-03-25 | 検査装置、コンピュータプログラム、および、検査方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2022150065A true JP2022150065A (ja) | 2022-10-07 |
Family
ID=83464669
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021052482A Pending JP2022150065A (ja) | 2021-03-25 | 2021-03-25 | 検査装置、コンピュータプログラム、および、検査方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2022150065A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7462377B1 (ja) | 2023-10-03 | 2024-04-05 | 株式会社Rist | 方法、プログラム、情報処理装置、及び学習済みモデル |
-
2021
- 2021-03-25 JP JP2021052482A patent/JP2022150065A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7462377B1 (ja) | 2023-10-03 | 2024-04-05 | 株式会社Rist | 方法、プログラム、情報処理装置、及び学習済みモデル |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7004145B2 (ja) | 欠陥検査装置、欠陥検査方法、及びそのプログラム | |
US10853932B2 (en) | Method of defect detection on a specimen and system thereof | |
KR100954703B1 (ko) | 결함을 검출하는 방법 및 시스템 | |
US10957034B2 (en) | Method of examination of a specimen and system thereof | |
TW490591B (en) | Pattern inspection apparatus, pattern inspection method, and recording medium | |
JP2017049974A (ja) | 識別器生成装置、良否判定方法、およびプログラム | |
JP2016115331A (ja) | 識別器生成装置、識別器生成方法、良否判定装置、良否判定方法、プログラム | |
CN110596120A (zh) | 玻璃边界缺陷检测方法、装置、终端及存储介质 | |
TWI786570B (zh) | 生成可用於檢查半導體樣本的訓練集 | |
JP2008051617A (ja) | 画像検査装置、その方法、及びその記録媒体 | |
CN117495856B (zh) | 基于深度学习的晶圆表面检测方法、装置、设备和介质 | |
TW202240546A (zh) | 用於自動視覺檢查之圖像增強技術 | |
JP2022150065A (ja) | 検査装置、コンピュータプログラム、および、検査方法 | |
KR20080056149A (ko) | 미지 품질의 패턴을 사용하여 기준 이미지를 생성하기 위한시스템 및 방법 | |
JP2010164506A (ja) | 検査方法 | |
CN107977961B (zh) | 基于峰值覆盖值和混合特征的纺织品瑕疵检测方法 | |
CN115953347A (zh) | 一种单视角下工业缺陷检测方法及系统 | |
US20230005157A1 (en) | Pattern-edge detection method, pattern-edge detection apparatus, and storage medium storing program for causing a computer to perform pattern-edge detection | |
CN113920087A (zh) | 基于深度学习的微小元器件缺陷检测系统及方法 | |
JP2023067464A (ja) | 画像生成モデル、および、画像生成モデルのトレーニング方法 | |
Ntoulmperis et al. | 3D point cloud analysis for surface quality inspection: A steel parts use case | |
KR20230036650A (ko) | 영상 패치 기반의 불량 검출 시스템 및 방법 | |
JP7345764B2 (ja) | 検査システムおよび検査プログラム | |
JP7273358B2 (ja) | 画像処理装置、学習済みモデル、コンピュータプログラム、および、属性情報の出力方法 | |
WO2022153743A1 (ja) | 判定システム、判定方法及びプログラム |