(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023168966
(43)【公開日】2023-11-29
(54)【発明の名称】コンピュータプログラム、および、検査装置
(51)【国際特許分類】
G06V 10/42 20220101AFI20231121BHJP
G06V 10/70 20220101ALI20231121BHJP
G06T 7/00 20170101ALI20231121BHJP
【FI】
G06V10/42
G06V10/70
G06T7/00 300F
G06T7/00 350B
【審査請求】未請求
【請求項の数】12
【出願形態】OL
(21)【出願番号】P 2022080384
(22)【出願日】2022-05-16
(71)【出願人】
【識別番号】000005267
【氏名又は名称】ブラザー工業株式会社
(74)【代理人】
【識別番号】110001058
【氏名又は名称】鳳国際弁理士法人
(72)【発明者】
【氏名】櫻井 孝一
【テーマコード(参考)】
5L096
【Fターム(参考)】
5L096BA03
5L096FA02
5L096JA03
5L096JA11
5L096KA04
(57)【要約】
【課題】機械学習モデルを用いて検査対象の物体と比較対象の物体との差異を検出する。
【解決手段】コンピュータプログラムは、検査対象の物体を含む対象画像を示す対象画像データを画像生成モデルに入力することによって、再現画像を示す第1再現画像データを生成する第1生成機能と、対象画像データと再現画像データとを用いて、対象画像と再現画像との差分を示す差分画像データを生成する第2生成機能と、差分画像データを特徴抽出モデルに入力することによって、差分画像データの特徴を示す第1特徴データを生成する第3生成機能と、第1特徴データを用いて、検査対象の物体と比較対象の物体との差異を検出する検出機能と、をコンピュータに実現させる。
【選択図】
図18
【特許請求の範囲】
【請求項1】
コンピュータプログラムであって、
検査対象の物体を含む対象画像を示す対象画像データを画像生成モデルに入力することによって、前記対象画像に対応する第1再現画像を示す第1再現画像データを生成する第1生成機能であって、前記対象画像データは、イメージセンサを用いて生成される画像データであり、前記画像生成モデルは、入力される画像データの特徴を抽出するエンコーダと、抽出された特徴に基づいて画像データを生成するデコーダと、を含む機械学習モデルである、前記第1生成機能と、
前記対象画像データと前記第1再現画像データとを用いて、前記対象画像と前記第1再現画像との差分を示す第1差分画像データを生成する第2生成機能と、
前記第1差分画像データを特徴抽出モデルに入力することによって、前記第1差分画像データの特徴を示す第1特徴データを生成する第3生成機能であって、前記特徴抽出モデルは、入力される画像データの特徴を抽出するエンコーダを含む機械学習モデルである、前記第3生成機能と、
前記第1特徴データを用いて、前記検査対象の物体と比較対象の物体との差異を検出する検出機能と、
をコンピュータに実現させるコンピュータプログラム。
【請求項2】
請求項1に記載のコンピュータプログラムであって、
前記検出機能は、前記第1特徴データと、前記比較対象の物体を含む比較画像を示す比較画像データを用いて生成される第2特徴データに基づく参照データと、を用いて、前記検査対象の物体と前記比較対象の物体との差異を検出し、
前記第2特徴データは、第2差分画像データを前記特徴抽出モデルに入力することによって生成され、前記第2差分画像データは、前記比較画像と、前記比較画像に対応する第2再現画像との差分を示す画像データであり、
前記第1特徴データは、前記第1差分画像データについて、画像内の単位領域ごとに算出される第1特徴ベクトルを含み、
前記第1特徴ベクトルは、前記第1差分画像データを前記特徴抽出モデルに入力することによって得られる複数個の特徴マップのそれぞれに基づく値を要素とするベクトルであり、
前記第2特徴データは、複数個の前記第2差分画像データのそれぞれについて、画像内の単位領域ごとに算出される第2特徴ベクトルを含み、
前記第2特徴ベクトルは、前記第2差分画像データを前記特徴抽出モデルに入力することによって得られる複数個の特徴マップのそれぞれに基づく値を要素とするベクトルであり、
前記参照データは、前記単位領域ごとに算出される前記複数個の第2特徴ベクトルの平均ベクトルおよび共分散行列を示すデータであり、
前記検出機能は、
前記第1特徴ベクトルと前記参照データとを用いて前記単位領域ごとにマハラノビス距離を算出し、
前記マハラノビス距離に基づいて、前記対象画像と前記比較画像との差異を検出する、コンピュータプログラム。
【請求項3】
請求項1に記載のコンピュータプログラムであって、
前記画像生成モデルは、複数個の第1訓練画像データを用いて訓練されており、
前記複数個の第1訓練画像データは、前記物体を示す元画像データであって前記物体の作成に用いられる前記元画像データに対して画像処理を実行して得られる画像データである、コンピュータプログラム。
【請求項4】
請求項3に記載のコンピュータプログラムであって、
前記第2再現画像を示す第2再現画像データは、前記複数個の第1訓練画像データを用いて訓練された前記画像生成モデルに前記比較画像データを入力することによって生成される、コンピュータプログラム。
【請求項5】
請求項3に記載のコンピュータプログラムであって、
前記特徴抽出モデルは、複数個の訓練差分画像データを用いて訓練されており、
前記複数個の訓練差分画像データは、前記元画像データに対して画像処理を実行することによって生成される第1画像データと、前記第1画像データを前記画像生成モデルに入力することによって生成される第2画像データと、の間の差分を示す画像データである、コンピュータプログラム。
【請求項6】
請求項5に記載のコンピュータプログラムであって、
前記第1画像データは、複数種類の欠陥のいずれかを画像に擬似的に付加する付加処理を含む画像処理を前記元画像データに対して実行することによって生成される欠陥付加画像データを含み、
前記特徴抽出モデルは、前記欠陥付加画像データを用いて生成される前記訓練差分画像データが入力される場合に、前記欠陥付加画像データによって示される画像に含まれる前記欠陥の種類を識別するように訓練される、コンピュータプログラム。
【請求項7】
請求項1に記載のコンピュータプログラムであって、
前記参照データは、複数個の前記第2差分画像データのそれぞれについて算出される複数個の前記第2特徴データを用いて算出される統計データであり、
前記検出機能は、
前記第1特徴データと前記統計データとを用いて特定の算出処理を実行することによって、前記対象画像と前記比較画像との差異の程度を示す第1評価値を算出し、
複数個の前記第2特徴データを含む複数個の特徴データのそれぞれについて前記特徴データと前記統計データとを用いて前記特定の算出処理を実行することによって算出される第2評価値の最大値と最小値と、前記第1評価値と、を用いて、前記対象画像と前記比較画像との差異を検出する、コンピュータプログラム。
【請求項8】
請求項1に記載のコンピュータプログラムであって、さらに、
検査対象の物体を含む原画像を示す原画像データであってイメージセンサを用いて生成される前記原画像データを物体検出モデルに入力することによって、前記原画像内の前記物体を含む物体領域を特定する特定機能と、
前記原画像データを用いて、特定された前記物体領域を含む前記対象画像であって前記原画像の一部である前記対象画像を示す前記対象画像データを生成する第4生成機能と、
をコンピュータに実現させ、
前記第1生成機能は、前記第4生成機能によって生成される前記対象画像データを前記画像生成モデルに入力することによって、前記第1再現画像データを生成し、
前記物体検出モデルは、前記物体を含む訓練画像を示す第2訓練画像データと、前記訓練画像内の前記物体が位置する領域を示す領域情報と、を用いて訓練された機械学習モデルであり、
前記第2訓練画像データは、物体画像を示す物体画像データと、背景画像を示す背景画像データと、を用いて生成される画像データであり、前記背景画像に前記物体画像を合成して得られる前記訓練画像を示す画像データであり、
前記物体画像データは、前記物体を示す元画像データであって前記物体の作成に用いられる前記元画像データに基づく画像データであり、
前記領域情報は、前記背景画像に前記物体画像を合成する際に用いられる前記物体画像の合成位置を示す位置情報に基づいて生成される情報である、コンピュータプログラム。
【請求項9】
請求項8に記載のコンピュータプログラムであって、
前記物体検出モデルは、第1種の物体と第2種の物体との両方を特定可能に訓練された1つの機械学習モデルであり、
前記画像生成モデルは、第1画像生成モデルと、第2画像生成モデルと、を含み、
前記第1画像生成モデルは、前記第1種の物体を含む画像を示す画像データが入力される場合に、前記第1種の物体を含む画像に対応する再現画像を示す再現画像データを生成するように訓練された機械学習モデルであり、
前記第2画像生成モデルは、前記第2種の物体を含む画像を示す画像データが入力される場合に、前記第2種の物体を含む画像に対応する再現画像を示す再現画像データを生成するように訓練された機械学習モデルであり、
前記特定機能は、検査対象の前記物体が前記第1種の物体である場合と、検査対象の前記物体が前記第2種の物体である場合と、の両方の場合に、1つの前記物体検出モデルを用いて、前記物体領域を特定し、
前記第1生成機能は、
検査対象の前記物体が前記第1種の物体である場合に、前記第1画像生成モデルを用いて前記第1再現画像データを生成し、
検査対象の前記物体が前記第2種の物体である場合に、前記第2画像生成モデルを用いて前記第1再現画像データを生成する、コンピュータプログラム。
【請求項10】
請求項9に記載のコンピュータプログラムであって、
前記特徴抽出モデルは、第1特徴抽出モデルと、第2特徴抽出モデルと、を含み、
前記第1特徴抽出モデルは、前記第1種の物体を含む画像を示す画像データと、前記第1種の物体を含む画像に対応する再現画像を示す再現画像データと、を用いて生成される差分画像データが入力される場合に、前記入力される差分画像データの特徴を示す特徴データを生成するように訓練された機械学習モデルであり、
前記第2特徴抽出モデルは、前記第2種の物体を含む画像を示す画像データと、前記第2種の物体を含む画像に対応する再現画像を示す再現画像データと、を用いて生成される差分画像データが入力される場合に、前記入力される差分画像データの特徴を示す特徴データを生成するように訓練された機械学習モデルであり、
前記第3生成機能は、
検査対象の前記物体が前記第1種の物体である場合に、前記第1特徴抽出モデルを用いて前記第1特徴データを生成し、
検査対象の前記物体が前記第2種の物体である場合に、前記第2画像生成モデルを用いて前記第1特徴データを生成する、コンピュータプログラム。
【請求項11】
請求項8に記載のコンピュータプログラムであって、
前記画像生成モデルは、前記第2訓練画像データの生成に用いられる前記物体画像データを用いて訓練されており、
前記特徴抽出モデルは、前記第2訓練画像データの生成に用いられる前記物体画像データを用いて生成される差分画像データを用いて訓練されている、コンピュータプログラム。
【請求項12】
検査装置であって、
検査対象の物体を含む対象画像を示す対象画像データを画像生成モデルに入力することによって、前記対象画像に対応する第1再現画像を示す第1再現画像データを生成する第1生成部であって、前記対象画像データは、イメージセンサを用いて生成される画像データであり、前記画像生成モデルは、入力される画像データの特徴を抽出するエンコーダと、抽出された特徴に基づいて画像データを生成するデコーダと、を含む機械学習モデルである、前記第1生成部と、
前記対象画像データと前記第1再現画像データとを用いて、前記対象画像と前記第1再現画像との差分を示す第1差分画像データを生成する第2生成部と、
前記第1差分画像データを特徴抽出モデルに入力することによって、前記第1差分画像データの特徴を示す第1特徴データを生成する第3生成部であって、前記特徴抽出モデルは、入力される画像データの特徴を抽出するエンコーダを含む機械学習モデルである、前記第3生成部と、
前記第1特徴データと、比較画像を示す比較画像データを用いて生成される第2特徴データに基づく参照データと、を用いて、前記対象画像と前記比較画像との差異を検出する検出部であって、前記第2特徴データは、第2差分画像データを前記特徴抽出モデルに入力することによって生成され、前記第2差分画像データは、前記比較画像と、前記比較画像に対応する第2再現画像との差分を示す画像データである、前記検出部と、
を備える検査装置。
【発明の詳細な説明】
【技術分野】
【0001】
本明細書は、機械学習モデルを用いて検査対象の物体と比較対象の物体との差異を検出するコンピュータプログラム、および、検査装置に関する。
【背景技術】
【0002】
画像データを生成する機械学習モデルである画像生成モデルを用いた異常検出が知られている。非特許文献1に開示された技術では、正常な製品を撮像して得られる複数個の撮像画像データが学習済みのCNN(Convolutional Neural Network)に入力されて、複数個の撮像画像データのそれぞれについて複数個の特徴マップが生成される。そして、複数個の特徴マップからランダムで選択される所定個数の特徴マップに基づいて正常な製品の特徴を示すガウシアンパラメータのマトリクスが生成される。検査時には、検査対象の製品を撮像して得られる撮像画像がCNNに入力されて、特徴マップが生成され、該特徴マップに基づいて検査品の特徴を示す特徴ベクトルが生成される。正常な製品のマトリクスと、検査対象の製品の特徴ベクトルと、を用いて、検査品の異常検出が行われる。
【先行技術文献】
【特許文献】
【0003】
【非特許文献1】T. Defard, A. Setkov, A. Loesch, and R. Audigier, “Padim: a patch distribution modeling framework for anomaly detection and localization”,arXiv:2011.08785(2020),https://arxiv.org/abs/2011.08785,投稿日17 Nov 2020
【発明の概要】
【発明が解決しようとする課題】
【0004】
このように、機械学習モデルを用いて、検査対象の物体と比較対象の物体との差異(例えば、検査対象の製品と正常な製品との差異)を検出する技術が求められていた。
【0005】
本明細書は、機械学習モデルを用いて検査対象の物体と比較対象の物体との差異を検出する新たな技術を開示する。
【課題を解決するための手段】
【0006】
本明細書に開示された技術は、上述の課題の少なくとも一部を解決するためになされたものであり、以下の適用例として実現することが可能である。
【0007】
[適用例1]コンピュータプログラムであって、検査対象の物体を含む対象画像を示す対象画像データを画像生成モデルに入力することによって、前記対象画像に対応する第1再現画像を示す第1再現画像データを生成する第1生成機能であって、前記対象画像データは、イメージセンサを用いて生成される画像データであり、前記画像生成モデルは、入力される画像データの特徴を抽出するエンコーダと、抽出された特徴に基づいて画像データを生成するデコーダと、を含む機械学習モデルである、前記第1生成機能と、前記対象画像データと前記第1再現画像データとを用いて、前記対象画像と前記第1再現画像との差分を示す第1差分画像データを生成する第2生成機能と、前記第1差分画像データを特徴抽出モデルに入力することによって、前記第1差分画像データの特徴を示す第1特徴データを生成する第3生成機能であって、前記特徴抽出モデルは、入力される画像データの特徴を抽出するエンコーダを含む機械学習モデルである、前記第3生成機能と、前記第1特徴データを用いて、前記検査対象の物体と比較対象の物体との差異を検出する検出機能と、をコンピュータに実現させるコンピュータプログラム。
【0008】
上記構成によれば、対象画像と第1再現画像との差分を示す第1差分画像データを特徴抽出モデルに入力することによって生成される第1特徴データを用いて、検査対象の物体と比較対象の物体との差異が検出される。この結果、機械学習モデルを用いて検査対象の物体と比較対象の物体との差異を検出することができる。例えば、対象画像がノイズを含む場合や検査対象の物体と比較対象の物体との差異が小さい場合に、検査対象の物体と比較対象の物体との差異を精度良く検出し得る。
【0009】
[適用例2]コンピュータプログラムであって、
検査対象の物体を含む原画像を示す原画像データであってイメージセンサを用いて生成される前記原画像データを物体検出モデルに入力することによって、前記原画像内の前記物体を含む物体領域を特定する特定機能と、
前記原画像データを用いて、特定された前記物体領域を含む対象画像であって前記原画像の一部である前記対象画像を示す対象画像データを生成する生成機能と、
前記対象画像データを用いて、前記検査対象の物体と比較対象の物体との差異を検出する検出機能と、
をコンピュータに実現させ、
前記物体検出モデルは、前記物体を含む訓練画像を示す訓練画像データと、前記訓練画像内の前記物体が位置する領域を示す領域情報と、を用いて訓練された機械学習モデルであり、
前記訓練画像データは、物体画像を示す物体画像データと、背景画像を示す背景画像データと、を用いて生成される画像データであり、前記背景画像に前記物体画像を合成して得られる前記訓練画像を示す画像データであり、
前記物体画像データは、前記物体を示す元画像データであって前記物体の作成に用いられる前記元画像データに基づく画像データであり、
前記領域情報は、前記背景画像に前記物体画像が合成する際に用いられる前記物体画像の合成位置を示す位置情報に基づいて生成される情報である、コンピュータプログラム。
【0010】
上記構成によれば、物体検出モデルは、背景画像に物体画像を合成して得られる訓練画像を示す訓練画像データと、訓練画像内の物体が位置する領域を示す領域情報を用いて訓練されている。そして、領域情報は、背景画像に物体画像が合成する際に用いられる物体画像の合成位置を示す位置情報に基づいて生成される情報である。この結果、ラベル情報は、例えば、オペレータが指定した領域を示す情報が用いられる場合と比較して、物体が位置する領域を精度良く示し得る。したがって、物体検出モデルは、物体検出モデルANは、物体が位置する領域を精度良く検出できるように、訓練される。このために、検査対象の物体と比較対象の物体との差異を精度良く検出し得る。
【0011】
[適用例3]適用例2に記載のコンピュータプログラムであって、
前記検出機能は、
前記対象画像データを特定の機械学習モデルに入力することによって前記対象画像データに対応する対応データを生成し、
前記対応データを用いて、前記検査対象の物体と比較対象の物体との差異を検出し、
前記特定の機械学習モデルは、第1機械学習モデルと、第2機械学習モデルと、を含み、
前記第1機械学習モデルは、第1種の物体を含む画像を示す画像データが入力される場合に、前記第1種の物体を含む画像に対応する対応データを生成するように訓練された機械学習モデルであり、
前記第2機械学習モデルは、前記第2種の物体を含む画像を示す画像データが入力される場合に、前記第2種の物体を含む画像に対応する対応データを生成するように訓練された機械学習モデルであり、
前記特定機能は、検査対象の前記物体が前記第1種の物体である場合と、検査対象の前記物体が前記第2種の物体である場合と、の両方の場合に、1つの前記物体検出モデルを用いて、前記物体領域を特定し、
前記検出機能は、
検査対象の前記物体が前記第1種の物体である場合に、前記第1機械学習モデルを用いて前記対応データを生成し、
検査対象の前記物体が前記第2種の物体である場合に、前記第2機械学習モデルを用いて前記対応データを生成する、コンピュータプログラム。
【0012】
上記構成によれば、物体領域の特定は、第1種の物体と第2種の物体との両方に共通の物体検出モデルを用いて行われ、検査対象の物体と比較対象の物体との差異の検出は、第1種の物体と第2種の物体とでそれぞれ異なる機械学習モデルを用いて行われる。この結果、物体検出モデルや機械学習モデルの訓練の負担や、物体検出モデルや機械学習モデルのデータ量が過度に大きくなることを抑制しつつ、検査対象の物体と比較対象の物体との差異を十分な精度で検出し得る。
【0013】
[適用例4]適用例2に記載のコンピュータプログラムであって、
前記検出機能は、
前記対象画像データを特定の機械学習モデルに入力することによって前記対象画像データに対応する対応データを生成し、
前記対応データを用いて、前記検査対象の物体と比較対象の物体との差異を検出し、
前記特定の機械学習モデルは、前記第2訓練画像データの生成に用いられる前記物体画像データを用いて訓練されている、コンピュータプログラム。
【0014】
上記構成によれば、訓練のための画像データを準備するための負担を軽減できる。
【0015】
なお、本明細書に開示される技術は、他の種々の形態で実現することが可能であり、例えば、物体検出モデル、物体検出モデルの訓練装置、訓練方法、検査装置、検査方法、これらの装置および方法を実現するためのコンピュータプログラム、そのコンピュータプログラムを記録した記録媒体、等の形態で実現することができる。
【図面の簡単な説明】
【0016】
【
図1】実施例の検査システム1000の構成を示すブロック図。
【
図13】訓練差分画像データ生成処理のフローチャート。
【
図15】PaDiMデータ生成処理のフローチャート。
【
図16】PaDiMデータ生成処理の第1の説明図。
【
図17】PaDiMデータ生成処理の第2の説明図。
【発明を実施するための形態】
【0017】
A.実施例
A-1.検査装置の構成
次に、実施の形態を実施例に基づき説明する。
図1は、実施例の検査システム1000の構成を示すブロック図である。検査システム1000は、検査装置100と、撮像装置400と、を含んでいる。検査装置100と撮像装置400とは、通信可能に接続されている。
【0018】
検査装置100は、例えば、パーソナルコンピュータなどの計算機である。検査装置100は、検査装置100のコントローラとしてのCPU110と、GPU115と、RAMなどの揮発性記憶装置120と、ハードディスクドライブなどの不揮発性記憶装置130と、マウスやキーボードなどの操作部150と、液晶ディスプレイなどの表示部140と、通信部170と、を備えている。通信部170は、外部機器、例えば、撮像装置400と通信可能に接続するための有線または無線のインタフェースを含む。
【0019】
GPU(Graphics Processing Unit)115は、CPU110の制御に従って、3次元グラフィックスなどの画像処理のための計算処理を行うプロセッサである。本実施例では、機械学習モデルの演算処理を実行するために利用される。
【0020】
揮発性記憶装置120は、CPU110が処理を行う際に生成される種々の中間データを一時的に格納するバッファ領域を提供する。不揮発性記憶装置130には、検査装置用のコンピュータプログラムPGと、背景画像データ群BDと、版下画像データRD1、RD2と、が格納されている。背景画像データ群BD、および、版下画像データRD1、RD2については、後述する。
【0021】
コンピュータプログラムPGは、複数個の機械学習モデルの機能をCPU110とGPU115とが協働して実現させるコンピュータプログラムをモジュールとして含んでいる。コンピュータプログラムPGは、例えば、検査装置100の製造者によって提供される。コンピュータプログラムPGは、例えば、サーバからダウンロードされる形態で提供されても良く、DVD-ROMなどに格納される形態で提供されてもよい。CPU110は、コンピュータプログラムPGを実行することにより、後述する検査準備処理や検査処理を実行する。
【0022】
複数個の機械学習モデルは、物体検出モデルANと、画像生成モデルGN1、GN2と、画像識別モデルDN1、DN2と、を含んでいる。これらのモデルの構成と利用方法については後述する。
【0023】
撮像装置400は、二次元イメージセンサを用いて被写体を撮像することによって被写体を表す画像データ(撮像画像データとも呼ぶ)を生成するデジタルカメラである。撮像画像データは、複数個の画素を含む画像を示すビットマップデータであり、具体的には、RGB値によって画素ごとの色を表すRGB画像データである。RGB値は、3個の色成分の階調値(以下、成分値とも呼ぶ)、すなわち、R値、G値、B値を含むRGB表色系の色値である。R値、G値、B値は、例えば、所定の階調数(例えば、256)の階調値である。撮像画像データは、画素ごとの輝度を表す輝度画像データであっても良い。
【0024】
撮像装置400は、検査装置100の制御に従って、撮像画像データを生成し、検査装置100に送信する。本実施例では、撮像装置400は、検査処理の検査対象であるラベルLが貼付された製品300を撮像して、撮像画像を示す撮像画像データを生成するために用いられる。
【0025】
図2は、製品300の説明図である。
図2(A)には、製品300の斜視図が示されている。製品300は、本実施例では、略直方体の筐体30を有するプリンタである。製造工程において、筐体30の前面31(+Dy側の面)には、矩形のラベルLが所定の貼付位置に貼付される。
【0026】
図2(B)には、ラベルLの一例として、2種のラベルL1、L2が示されている。ラベルL1は、例えば、背景B1と、製造者や製品のブランドロゴ、型番、ロット番号等の各種の情報を示す文字X1と、マークM1と、を含んでいる。同様に、ラベルL2は、例えば、背景B2と、文字X2と、マークM2と、を含んでいる。2種のラベルL1、L2は、例えば、互いに異なる製品に貼付されるラベルであり、文字やマークの少なくとも一部が互いに異なっている。本実施例では、2種のラベルL1、L2が検査対象となる。
【0027】
A-2.検査準備処理
検査準備処理は、ラベルLを検査する検査処理(後述)に先立って実行される。検査準備処理では、検査処理にて用いられる機械学習モデル(物体検出モデルAN、画像生成モデルGN1、GN2、画像識別モデルDN1、DN2)の訓練と、正常なラベルL(以下、正常品とも呼ぶ)の特徴を示すガウシアンマトリクスGM(後述)の生成と、が行われる。
図3は、検査準備処理のフローチャートである。
【0028】
S10では、CPU110は、訓練データ生成処理を実行する。訓練データ生成処理は、版下画像データRD1、RD2を用いて、機械学習モデルの訓練に用いられる画像データと、教師データと、を生成する処理である。
図4は、訓練データ生成処理のフローチャートである。
【0029】
S100では、CPU110は、不揮発性記憶装置130から版下画像を示す版下画像データRD1、RD2を取得する。版下画像データRD1、RD2は、撮像画像データと同様のビットマップデータ、本実施例では、RGB画像データである。版下画像データRD1は、ラベルL1の作成に用いられるデータであり、版下画像データRD2は、ラベルL2の作成に用いられるデータである。例えば、ラベルL1は、ラベル用のシートに版下画像データRD1によって示される版下画像DI1(後述)を印刷することによって作成される。以下では、版下画像データRD1を用いて実行される訓練データ生成処理について説明するが、版下画像データRD2を用いても同様の訓練データ生成処理が実行される。
【0030】
図5は、本実施例で用いられる画像の一例を示す図である。
図5(A)の版下画像DI1は、ラベルBL1を示している。このように版下画像DI1に示されるラベルを、実物のラベルL1と区別するために符号「BL1」を付す。ラベルBL1は、実物のラベルLを表現したCG(コンピュータグラフィックス)画像であり、文字BX1とマークBM1と、を含む。
【0031】
CG画像は、コンピュータによって生成される画像であり、例えば、オブジェクトを描画するための描画コマンドを含むベクタデータのレンダリング(ラスタライズとも呼ばれる)によって、生成される。
【0032】
本実施例では、版下画像DI1は、ラベルBL1のみを含み、背景を含んでいない。また、版下画像DI1においてラベルBL1は傾いていない。すなわち、版下画像DI1の矩形の四辺と、矩形のラベルBL1の四辺とは一致している。
【0033】
S110では、CPU110は、正常画像データ生成処理を実行する。正常画像データ生成処理は、版下画像データRD1を用いて、欠陥を含まない正常品の画像(以下、正常画像とも呼ぶ)を示す正常画像データを生成する処理である。
図6は、正常画像データ生成処理のフローチャートである。
【0034】
S205では、CPU110は、版下画像データRD1に対して明度補正処理を実行する。明度補正処理は、画像の明度を変更する処理である。例えば、明度補正処理は、各画素のRGB値の3個の成分値(R値、G値、B値)のそれぞれを、ガンマカーブを用いて変換することによって、行われる。ガンマカーブのγ値は、例えば、0.7~1.3の範囲内でランダムに決定される。γ値は、明度補正の程度を決定付けるパラメータである。γ値が1未満である場合には、補正によって(R値、G値、B値)が大きくなるので明度は高くなる。γ値が1より大きい場合には、補正によって(R値、G値、B値)が小さくなるので明度は低くなる。
【0035】
S210では、CPU110は、明度補正処理済みの版下画像データRD1に対して、平滑化処理を実行する。平滑化処理は、画像を平滑化する処理である。平滑化処理によって、画像内のエッジがぼける。平滑化処理には、例えば、ガウシアンフィルタを用いる平滑化処理が用いられる。例えば、ガウシアンフィルタのパラメータである標準偏差σは、0~3の範囲内でランダムに決定される。これによって、エッジのぼけ方にバラツキを持たせることができる。なお、変形例では、ラプラシアンフィルタやメディアンフィルタを用いる平滑化処理が用いられても良い。
【0036】
S215では、CPU110は、平滑化処理済みの版下画像データRD1に対して、ノイズ付加処理を実行する。ノイズ付加処理は、画像に対して、例えば、正規分布に従うノイズであり、例えば全ての画素に対して平均0、分散10のパラメータによって生成される正規分布乱数によるノイズを付加する処理である。
【0037】
S220では、CPU110は、ノイズ付加処理済みの版下画像データRD1に対して回転処理を実行する。回転処理は、特定の回転角度で画像を回転させる処理である。特定の回転角度は、例えば、-3度~+3度の範囲内でランダムに決定される。例えば、正の回転角度は時計回りの回転を示し、負の回転角度は反時計回りの回転を示す。回転は、例えば、版下画像DI1の重心を中心として実行される。
【0038】
S225では、CPU110は、回転処理後の版下画像データRD1に対して、シフト処理を実行する。シフト処理は、画像内のラベルの部分をシフト量分だけずらす処理である。縦方向のシフト量は、例えば、版下画像DI1の縦方向の画素数の数%の範囲、本実施例では、-20~+20画素の範囲内でランダムに決定される。同様に、横方向のシフト量は、例えば、横方向の画素数の数%の範囲でランダムに決定される。
【0039】
S230では、CPU110は、S205~S230の処理が実行された後の処理済みの版下画像データRD1を正常画像データとして保存する。例えば、処理済みの版下画像データRD1は、正常画像を示す識別情報と対応付けて不揮発性記憶装置130に格納される。
図5(B)には、正常画像データによって示される正常画像DI2が示されている。正常画像DI2のラベルBL2では、版下画像DI1のラベルBL1(
図5(B))と比較して、例えば、全体の明るさ、傾き、重心の位置、マークBM2や文字BX2のぼけの程度が異なっている。また、上述した回転処理およびシフト処理によって、正常画像DI2の4辺と、ラベルBL2の4辺と、の間には、隙間ntが生じている。隙間ntの領域は、所定の色、例えば、白色の画素によって埋められている。
【0040】
S235では、CPU110は、所定数(例えば、数百~数千)の正常画像データが生成されたか否かを判断する。所定数の正常画像データが生成されていない場合には(S235:NO)、CPU110は、S205に戻る。所定数の正常画像データが生成された場合には(S235:YES)、CPU110は、正常画像データ生成処理を終了する。
【0041】
なお、正常画像データ生成処理に含められる画像処理(シフト処理、回転処理、ノイズ付加処理、明度補正処理、平滑化処理)は、一例であり、適宜に省略され得るとともに、適宜に他の画像処理が追加され得る。例えば、版下画像DI1内の一部の構成要素(例えば、文字やマーク)の色や形状を適宜に置換や改変する処理が追加されても良い。
【0042】
正常画像データ生成処理後の
図4のS120では、CPU110は、生成された正常画像データを用いて異常画像データ生成処理を実行する。異常画像データ生成処理は、欠陥を含む異常品の画像(以下、異常画像とも呼ぶ)を示す異常画像データを生成する処理である。
図7は、異常画像データ生成処理のフローチャートである。
【0043】
S250では、CPU110は、
図4のS110の正常画像データ生成処理にて生成済みの複数個の正常画像データの中から、1個の処理対象の正常画像データを選択する。この選択は、例えば、ランダムに行われる。
【0044】
S255では、CPU110は、処理対象の正常画像データに対して、欠陥付加処理を実行する。欠陥付加処理は、キズ、汚れなどの欠陥を、正常画像DI2に対して疑似的に付加する処理である。
【0045】
異常画像データによって示される異常画像は、疑似的な欠陥を含むラベルを示す画像である。例えば、
図5(C)の異常画像DI4aのラベルBL4aは、文字BX4やマークBM4に加えて、疑似的な欠陥として、線状のキズを疑似的に示す画像(以下、線状キズdf4aとも呼ぶ)を含んでいる。線状キズdf4aは、例えば、ベジエ曲線やスプライン曲線などの曲線である。例えば、CPU110は、ベジエ曲線の制御点の位置や個数、線の太さ、線の色を、所定の範囲内でランダムに決定することによって、線状キズdf4aを生成する。CPU110は、生成された線状キズdf4aを正常画像DI2に合成する。これによって、異常画像DI4aを示す異常画像データが生成される。なお、本実施例では、線状キズに加えて、疑似的な汚れと、円状のキズ(以下、円状キズとも呼ぶ)と、が合成された異常画像データも生成される。例えば、
図5(D)の異常画像DI4bのラベルBL4bは、文字BX4やマークBM4に加えて、疑似的な欠陥として、汚れを疑似的に示す画像(以下、汚れdf4bとも呼ぶ)を含んでいる。汚れdf4bは、例えば、微小な多数の点を所定の領域に配置することによって生成される。変形例では、疑似的な欠陥は、該欠陥を撮像して得られる画像から該欠陥部分を抜き出すことによって生成されても良い。変形例では、疑似的な欠陥は、他の種類の欠陥、例えば、文字やマークの欠けや潰れ、ラベルの角部の折れを含んでも良い。
【0046】
S260では、CPU110は、欠陥付加処理済みの正常画像データを異常画像データとして保存する。例えば、欠陥付加処理済みの正常画像データは、付加された欠陥の種類(本実施例では、線状キズ、汚れ、円状キズの3種のうちのいずれか)を示す識別情報と対応付けて不揮発性記憶装置130に格納される。
【0047】
S265では、CPU110は、S255、S260の処理がM回(Mは2以上の整数)繰り返されたか否かを判断する。換言すれば、1個の正常画像データに基づいてM個の互いに異なる異常画像データが生成されたか否かが判断される。S255、S260の処理がM回繰り返されていない場合には(S265:NO)、CPU110は、S255に戻る。SS255、S260の処理がM回繰り返された場合には(S265:YES)、CPU110は、S270に処理を進める。Mは、例えば、1~5の範囲の値である。
【0048】
S270では、CPU110は、所定数の異常画像データが生成されたか否かを判断する。本実施例では、線状キズ、汚れ、円状キズの3種の欠陥が付加された異常画像データが、それぞれ、数百~数千ずつ生成された場合に、所定数の異常画像データが生成されたと判断される。所定数の異常画像データが生成されていない場合には(S270:NO)、CPU110は、S250に戻る。所定数の異常画像データが生成された場合には(S270:YES)、CPU110は、異常画像データ生成処理を終了する。
【0049】
異常画像データ生成処理後の
図4のS130では、CPU110は、生成された正常画像データと、背景画像データと、を用いて合成画像データ生成処理を実行する。合成画像データ生成処理は、背景画像にラベルの画像(本実施例では正常画像DI2)を合成して得られる合成画像を示す合成画像データを生成する処理である。
図8は、合成画像データ生成処理のフローチャートである。
図9は、合成画像データ生成処理の説明図である。
【0050】
S300では、CPU110は、
図4のS110の正常画像データ生成処理にて生成済みの複数個の正常画像データの中から、1個の処理対象の正常画像データを選択する。この選択は、例えば、ランダムに行われる。
【0051】
S305では、CPU110は、背景画像データ群BDの中から、1個の処理対象の背景画像データを選択する。
図9(A)には、背景画像データによって示される背景画像BIの一例が示されている。背景画像データ群BDに含まれる各背景画像データは、例えば、デジタルカメラを用いて、様々な被写体(例えば、風景、室内、プリンタなどのデバイス)を撮像して得られる撮像画像データである。これに限らず、背景画像データは、例えば、スキャナを用いて、絵や写真などの原稿を読み取って得られるスキャンデータを含んでも良い。背景画像データ群BDに含まれる背景画像データの個数は、例えば、数10~数千である。背景画像BIのサイズ(
図9のX方向およびY方向の画素数)は、後述する物体検出モデルANの入力画像のサイズに調整されている。
【0052】
S310では、CPU110は、背景画像BIに対して、正常画像DI2を合成するための合成情報を生成する。例えば、合成情報は、正常画像DI2を合成する合成位置を示す位置情報と、合成時の拡大率と、を含む。拡大率は、正常画像DI2を拡大または縮小する程度を示す値であり、所定の範囲(例えば、0.7~1.3)内でランダムに決定される。位置情報は、例えば、背景画像BIの左上の頂点Poを原点とする座標系において、合成時に正常画像DI2の重心Cpが位置すべき座標(x、y)を示す。正常画像DI2の重心Cpが位置すべき座標(x、y)は、例えば、正常画像DI2の全体が背景画像BI内に位置する範囲内でランダムに決定される。該合成情報は、後述する教師データ生成処理においても用いられる。
【0053】
S315では、CPU110は、選択された背景画像データと、選択された正常画像データと、を用いて、合成画像CIを示す合成画像データを生成する。具体的には、CPU110は、正常画像データに対して、合成情報に含まれる拡大率に従って、正常画像DI2を拡大または縮小するサイズ調整処理を実行する。CPU110は、サイズ調整処理済みの正常画像DI2を背景画像BIに合成する合成処理を実行する。合成処理では、CPU110は、正常画像DI2の複数個の画素のそれぞれについて、透過率αを規定する情報であるアルファチャンネルを生成する。正常画像DI2(
図5(B))のラベルBL2を構成する画素の透過率αは、1(100%)に設定され、隙間ntを構成する画素の透過率αは、0(100%)に設定される。CPU110は、合成情報に含まれる位置情報に従って、背景画像BI上に正常画像DI2を配置した場合に、正常画像DI2のラベルBL2を構成する画素(透過率αが1に設定された画素)と重なる背景画像BI上の画素を特定する。CPU110は、特定された背景画像BIの複数個の画素の値を、正常画像DI2の対応する複数個の画素の値に置換する。これによって、背景画像BIを背景とし、正常画像DI2を前景として、背景画像BIと正常画像DI2とが合成された合成画像CI(
図9(B))を示す合成画像データが生成される。
【0054】
S320では、CPU110は、生成された合成画像データを不揮発性記憶装置130に保存する。例えば、CPU110は、合成画像データを、合成画像データの生成に用いられた正常画像DI2によって示されるラベルBL2の種類(例えば、ラベルL1、L2のいずれか)を示す識別情報と対応付けて、不揮発性記憶装置130に格納する。
【0055】
S325では、CPU110は、全ての背景画像データを処理したか否かを判断する。未処理の背景画像データがある場合には(S325:NO)、CPU110は、S305に戻る。全ての背景画像データが処理された場合には(S325:YES)、CPU110は、S330に処理を進める。
【0056】
S330では、CPU110は、所定数(例えば、数千~数万)の合成画像データが生成されたか否かを判断する。所定数の合成画像データが生成されていない場合には(S330:NO)、CPU110は、S300に戻る。所定数の合成画像データが生成された場合には(S330:YES)、CPU110は、合成画像データ生成処理を終了する。
【0057】
合成画像データ生成処理後の
図4のS140では、CPU110は、教師データ生成処理を実行する。教師データ生成処理は、後述する物体検出モデルANの訓練処理にて用いられる教師データを生成する処理である。
図10は、教師データ生成処理のフローチャートである。
【0058】
S350では、CPU110は、
図4のS130の教師データ生成処理にて生成済みの複数個の合成画像データの中から、1個の処理対象の合成画像データを選択する。
【0059】
S355では、CPU110は、処理対象の合成画像データの生成時に生成された合成情報に基づいて、合成画像CI内のラベルBL2が配置された領域を示すラベル領域情報を生成する。具体的には、合成画像CIにおいて正常画像DI2が合成された領域の幅(X方向の長さ)Woと高さ(Y方向の長さ)Hoと、合成画像CIにおいて正常画像DI2が合成された領域の重心Cpの座標Cp(x、y)と、を含むラベル領域情報が生成される。領域の幅Woと高さHoとは、合成前の正常画像DI2の幅と高さと、合成情報に含まれる拡大率と、を用いて算出される。座標Cp(x、y)は、合成情報に含まれる位置情報に従って決定される。
【0060】
S360では、CPU110は、S350にて生成されたラベル領域情報と、ラベルの種別(クラスとも呼ぶ)を示すクラス情報と、を含む教師データを生成して保存する。クラス情報は、処理対象の合成画像データの生成に用いられた正常画像DI2に示されるラベルBL2の種別(本実施例ではラベルL1、L2のいずれか)を示す。教師データは、処理対象の合成画像データと対応付けて、不揮発性記憶装置130に格納される。この教師データは、物体検出モデルANの出力データODと対応している。このために、物体検出モデルANについて後述する際に、この教師データについても補足説明する。
【0061】
S365では、CPU110は、全ての合成画像データを処理したか否かを判断する。未処理の合成画像データがある場合には(S365:NO)、CPU110は、S350に戻る。全ての合成画像データが処理された場合には(S365:YES)、CPU110は、教師データ生成処理を終了する。教師データ生成処理が終了されると、
図4の訓練データ生成処理は終了される。
【0062】
訓練データ生成処理後の
図3のS20では、CPU110は、S20Aの物体検出モデルANの訓練処理と、S20Bの画像生成モデルGN1の訓練処理と、S20Cの画像生成モデルGN2の訓練処理と、を並列に実行する。これらの訓練処理を並列に実行することで、検査準備処理の全体の処理時間を低減できる。以下では、これらの機械学習モデルの概要と訓練処理とを説明する。
【0063】
図11は、物体検出モデルANの説明図である。
図11(A)は、物体検出モデルANの構成の例を示す概略図である。物体検出モデルANとしては、種々のオブジェクト検出モデルを採用可能である。本実施例では、物体検出モデルANは、YOLO(You only look once)と呼ばれるオブジェクト検出モデルである。YOLOは、例えば、論文「Joseph Redmon, Santosh Divvala, Ross Girshick, Ali Farhadi, "You Only Look Once: Unified, Real-Time Object Detection", Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2016, pp. 779-788」に開示されている。YOLOモデルは、畳込ニューラルネットワークを用いて、画像内のオブジェクトが位置する領域と、該領域に位置するオブジェクトの種別と、を予測する。
【0064】
図11(A)に示すように、物体検出モデルANは、m個(mは1以上の整数)の畳込層CV11-CV1mと、畳込層CV11-CV1mに続くn個(nは1以上の整数)の全結合層CN11-CN1nと、を有している(mは、例えば、24。nは、例えば、2)。m個の畳込層CV11-CV1mのうちの1以上の畳込層の直後には、プーリング層が設けられる。
【0065】
畳込層CV11-CV1mは、入力されるデータに対して、畳込処理とバイアスの加算処理とを含む処理を実行する。畳込処理は、入力されたデータに対して、t個のフィルタを順次に適用し、入力されたデータとフィルタとの相関を示す相関値を算出する処理である(tは、1以上の整数)。フィルタを適用する処理では、フィルタをスライドさせながら複数個の相関値が順次に算出される。バイアスの加算処理は、算出された相関値に、バイアスを加算する処理である。バイアスは、1個のフィルタに対して1個ずつ準備されている。フィルタの次元とフィルタの数tとは、通常は、m個の畳込層CV11-CV1mの間で異なっている。畳込層CV11-CV1mは、複数のフィルタの複数の重みと複数のバイアスとを含むパラメータセットを、それぞれ有している。
【0066】
プーリング層は、直前の畳込層から入力されたデータに対して、データの次元数を削減する処理を実行する。プーリングの処理としては、平均プーリング、最大プーリングなど、種々の処理を利用可能である。本実施例では、プーリング層は、最大プーリングを行う。最大プーリングは、所定サイズ(例えば、2×2)のウィンドウを所定のストライド(例えば、2)でスライドさせつつ、ウィンドウ内の最大値を選択することによって次元数を削減する。
【0067】
全結合層CN11-CN1nは、直前の層から入力されたf次元のデータ(すなわち、f個の値。fは2以上の整数)を用いて、g次元のデータ(すなわち、g個の値。gは2以上の整数)を出力する。出力されるg個の値のそれぞれは、入力されるf個の値で構成されるベクトルとf個の重みで構成されるベクトルとの内積に、バイアスを加えた値である。入力データの次元数fと出力データの次元数gとは、通常は、n個の全結合層CN11-CN1nの間で異なっている。全結合層CN11-CN1nは、複数の重みと複数のバイアスとを含むパラメータセットを、それぞれ有している。
【0068】
なお、畳込層CV11-CV1mと全結合層CN11-CN1nとのそれぞれによって生成されるデータは、活性化関数に入力されて変換される。活性化関数としては、種々の関数を利用可能である。本実施例では、最後の層(ここでは、全結合層CN1n)には、線形活性化関数(linear activation function)が用いられ、他の層には、漏洩正規化線形ユニット(Leaky Rectified Linear Unit:LReLU)が用いられる。
【0069】
物体検出モデルANの動作の概要を説明する。物体検出モデルANには、入力画像データIIaが入力される。本実施例では、訓練処理において、入力画像データIIaとして合成画像CI(
図9(B))を示す合成画像データが入力される。
【0070】
物体検出モデルANは、入力画像データIIaが入力されると、入力画像データIIaに対して上述したパラメータセットを用いた演算処理を実行して、出力データODを生成する。出力データODは、S×S×(Bn×5+C)個の予測値を含むデータである。各予測値は、オブジェクト(本実施例ではラベル)が位置すると予測される予測領域(バウンディングボックスとも呼ばれる)を示す予測領域情報と、該予測領域に存在するオブジェクトの種別(クラスとも呼ばれる)を示すクラス情報と、を含む。
【0071】
予測領域情報は、入力画像(例えば、合成画像CI)をS×S(Sは2以上の整数。Sは、例えば、7)に分割して得られる(S×S)個のセルに対して、Bn(Bnは1以上の整数、例えば、2)個ずつ設定される。そして、各予測領域情報は、セルに対する予測領域の中心座標(Xp、Yp)と幅Wpと高さHpと、確信度Vcと、の5個の値を含む。確信度Vcは、予測領域にオブジェクトが存在する確率を示す情報である。クラス情報は、セルに存在するオブジェクトの種別を種別ごとの確率で示す情報である。クラス情報は、オブジェクトの種別をC種(Cは1以上の整数、本実施例では、2)に分類する場合に、C個の確率を示す値を含む。このために、出力データODは、上述のように、S×S×(Bn×5+C)個の予測値を含む。
【0072】
上述した
図10のS360にて生成される教師データは、出力データODと対応している。具体的には、教師データは、対応する合成画像データが物体検出モデルANに入力される場合に、出力されるべき理想的な出力データODを示す。すなわち、教師データは、S×S×(Bn×5+C)個の予測値のうち、合成画像CI(
図9(B))におけるラベルBL2(正常画像DI2)の中心が位置するセルに対応する理想的な予測値として、上述したラベル領域情報と、最大の確信度Vc(例えば、1)と、ラベルの種別を示す上述したクラス情報と、を含む。また、教師データは、ラベルBL2の中心が位置しないセルに対応する予測値として、最小の確信度Vc(例えば、0)を含む。
【0073】
次に、物体検出モデルANの訓練処理(
図3のS20A)について説明する。
図11(B)は、物体検出モデルANの訓練処理のフローチャートである。物体検出モデルANは、出力データODが入力画像(例えば、合成画像CI)の適切なラベル領域と適切なラベルの種別とを示すように、訓練される。訓練によって、物体検出モデルANの演算に用いられる複数の演算パラメータ(複数の層CV11-CV1m、CN11-CN1nのそれぞれの演算に用いられる複数の演算パラメータを含む)が、調整される。訓練処理前は、複数の演算パラメータは、乱数値などの初期値に設定されている。
【0074】
S410では、CPU110は、不揮発性記憶装置130からバッチサイズ分の複数個の合成画像データを取得する。S420では、CPU110は、複数個の合成画像データを物体検出モデルANに入力し、複数個の合成画像データに対応する複数個の出力データODを生成する。
【0075】
S430では、複数個の出力データODと、複数個の出力データODに対応する複数個の教師データと、を用いて、損失値を算出する。ここで、出力データODに対応する教師データは、
図10のS360にて、該出力データODに対応する合成画像データに対応付けて保存された教師データを意味する。損失値は、合成画像データごとに算出される。
【0076】
損失値の算出には、損失関数が用いられる。損失関数は、出力データODと教師データとの間の差分に応じた損失値を算出する種々の関数であってよい。本実施例では、YOLOの上記の論文に開示されている損失関数が用いられる。この損失関数は、例えば、領域損失項と、オブジェクト損失項と、クラス損失項と、を含む。領域損失項は、教師データに含まれるラベル領域情報と、出力データODに含まれる対応する予測領域情報と、の差分が小さいほど小さな損失値を算出する項である。ラベル領域情報に対応する予測領域情報は、出力データODに含まれる複数個の予測領域情報のうち、ラベル領域情報が対応付けられたセルに対応付けられた予測領域情報である。オブジェクト損失項は、各予測領域情報の確信度Vcについて、教師データの値(0または1)と出力データODの値との差分が小さいほど小さな値を算出する項である。クラス損失項は、教師データに含まれるクラス情報と、出力データODに含まれる対応するクラス情報と、の差分が小さいほど小さな損失値を算出する項である。出力データODに含まれる対応するクラス情報は、出力データODに含まれる複数個のクラス情報のうち、教師データのクラス情報が対応付けられたセルに対応付けられたクラス情報である。各項の具体的な損失関数には、差分に応じた損失値を算出するための公知の損失関数、例えば、二乗誤差、クロスエントロピー誤差、絶対誤差が用いられる。
【0077】
S440では、CPU110は、算出された損失値を用いて、物体検出モデルANの複数の演算パラメータを調整する。具体的には、CPU110は、合成画像データごとに算出される損失値の合計が小さくなるように、所定のアルゴリズムに従って演算パラメータを調整する。所定のアルゴリズムとしては、例えば、誤差逆伝播法と勾配降下法とを用いたアルゴリズムが用いられる。
【0078】
S450では、CPU110は、訓練の終了条件が満たされるか否かを判断する。訓練終了条件は、種々の条件であってよい。訓練終了の条件は、例えば、損失値が基準値以下になったことや、損失値の変化量が基準値以下になったことや、S440の演算パラメータの調整が繰り返された回数が所定数以上になったことである。
【0079】
訓練の終了条件が満たされない場合には(S450:NO)、CPU110は、S410に戻って、訓練を継続する。訓練の終了条件が満たされた場合には(S450:YES)、CPU110は、S460にて、調整済の演算パラメータを含む訓練済みの物体検出モデルANのデータを、不揮発性記憶装置130に格納して、訓練処理を終了する
【0080】
訓練済みの物体検出モデルANによって生成される出力データODは、以下の特徴を有している。出力データODにおいて、入力画像内のラベルの中心を含むセルに対応付けられた予測領域情報の1つは、入力画像内のラベルの領域を適切に示す情報と、高い確信度Vc(1に近い確信度Vc)と、を含む。また、出力データODにおいて、入力画像内のラベルの中心を含むセルに対応付けられたクラス情報は、ラベルの種別を適切に示す。出力データODに含まれる他の予測領域情報は、ラベルの領域とは異なる領域を示す情報と、低い確信度Vc(0に近い確信度Vc)と、を含む。従って、高い確信度Vcを含む予測領域情報を用いて、入力画像内のラベルの領域を特定できる。
【0081】
次に画像生成モデルGN1、GN2の構成と、画像生成モデルGN1、GN2の訓練処理(
図3のS20B、S20C)について説明する。
図12は、画像生成モデルGNの説明図である。画像生成モデルGN1、GN2の構成は同じであるので、画像生成モデルGNの構成として説明する。
図12(A)は、画像生成モデルGNの構成の例を示す概略図である。本実施例では、画像生成モデルGNは、いわゆるオートエンコーダであり、エンコーダVeと、デコーダVdと、を備えている。
【0082】
エンコーダVeは、オブジェクトの画像を表す入力画像データIIgに対して次元削減処理を実行して、入力画像データIIgによって表される入力画像(例えば、
図5(B)の正常画像DI2)の特徴を抽出して特徴データを生成する。本実施例では、エンコーダVeは、p個(mは1以上の整数)の畳込層Ve21-Ve2pを有している。各畳込層の直後には、プーリング層が設けられる(例えば、最大プーリング層)。p個の畳込層のそれぞれの活性化関数は、例えば、ReLUである。
【0083】
デコーダVdは、特徴データに対して次元復元処理を実行して、出力画像データOIgを生成する。出力画像データOIgは、特徴データに基づいて再構成された画像を表している。出力画像データOIgの画像サイズと各画素の色値の色成分とは、入力画像データIIgのものと同じである。
【0084】
本実施例では、デコーダVdは、q個(qは1以上の整数)の畳込層Vd21-Vd2qを有している。最後の畳込層Vd2qを除いた残りの畳込層のそれぞれの直後には、アップサンプリング層が設けられる。最後の畳込層Vd2qの活性化関数は、出力画像データOIgの生成に適した関数(例えば、Sigmoid関数、または、Tanh関数)である。他の畳込層のそれぞれの活性化関数は、例えば、ReLUである。
【0085】
畳込層Ve21-Ve2p、Vd21-Vd2qは、入力されるデータに対して、畳込処理とバイアスの加算処理とを含む処理を実行する。これらの畳込層は、畳込処理に用いられる複数のフィルタの複数の重みと複数のバイアスとを含むパラメータセットを、それぞれ有している。
【0086】
次に、画像生成モデルGNの訓練処理(
図3のS20B、20C)について説明する。
図12(B)は、画像生成モデルGNの訓練処理のフローチャートである。訓練によって、画像生成モデルGNの演算に用いられる複数の演算パラメータ(畳込層Ve21-Ve2p、Vd21-Vd2qのそれぞれの演算に用いられる複数の演算パラメータを含む)が、調整される。訓練処理前は、複数の演算パラメータは、乱数値などの初期値に設定されている。
【0087】
S510では、CPU110は、不揮発性記憶装置130からバッチサイズ分の複数個の正常画像データを取得する。ここで、画像生成モデルGN1は、ラベルL1用の画像生成モデルGNであるので、画像生成モデルGN1の訓練処理では、ラベルL1を示す正常画像データが取得される。画像生成モデルGN2は、ラベルL2用の画像生成モデルGNであるので、画像生成モデルGN2の訓練処理では、ラベルL2を示す正常画像データが取得される。これによって、画像生成モデルGN1は、ラベルL1用に訓練され、画像生成モデルGN2は、ラベルL2用に訓練される。S520では、CPU110は、複数個の正常画像データを画像生成モデルGNに入力し、複数個の正常画像データに対応する複数個の出力画像データOIgを生成する。
【0088】
S530では、CPU110は、複数個の正常画像データと、複数個の正常画像データに対応する複数個の出力画像データOIgと、を用いて、損失値を算出する。具体的には、CPU110は、正常画像データと、対応する出力画像データOIgと、の間の差分を示す評価値を、正常画像データごとに算出する。損失値は、例えば、画素毎、色成分毎の成分値の交差エントロピー誤差の合計値である。損失値の算出には、成分値の差分に応じた損失値を算出するための他の公知の損失関数、例えば、二乗誤差、絶対誤差が用いられても良い。
【0089】
S540では、CPU110は、算出された損失値を用いて、画像生成モデルGNの複数の演算パラメータを調整する。具体的には、CPU110は、正常画像データごとに算出される損失値の合計が小さくなるように、所定のアルゴリズムに従って演算パラメータを調整する。所定のアルゴリズムとしては、例えば、誤差逆伝播法と勾配降下法とを用いたアルゴリズムが用いられる。
【0090】
S550では、CPU110は、訓練終了条件が満たされるか否かを判断する。訓練終了条件は、
図11(B)のS450と同様に、種々の条件、例えば、損失値が基準値以下になったことや、損失値の変化量が基準値以下になったことや、S540の演算パラメータの調整が繰り返された回数が所定数以上になったこと、が用いられる。
【0091】
訓練の終了条件が満たされない場合には(S550:NO)、CPU110は、S510に戻って、訓練を継続する。訓練の終了条件が満たされた場合には(S550:YES)、CPU110は、S560にて、調整済の演算パラメータを含む訓練済みの画像生成モデルGNのデータを、不揮発性記憶装置130に格納して、訓練処理を終了する。
【0092】
訓練済みの画像生成モデルGNによって生成される出力画像データOIgは、入力画像としての正常画像DI2の特徴を再構成して再現した再現画像DI5(
図5(E))を示す。このために、訓練済みの画像生成モデルGNによって生成される出力画像データOIgを、再現画像DI5を示す再現画像データとも呼ぶ。
図5(E)の再現画像DI5は、
図5(B)正常画像DI2とほぼ同様の画像である。なお、訓練済みの画像生成モデルGNは、正常画像DI2の特徴のみを再構成するように訓練される。このために、異常画像DI4a(
図5(C))や異常画像DI4b(
図5(D))を示す異常画像データが訓練済みの画像生成モデルGNに入力される場合に生成される再現画像データは、正常画像DI2を示すことが期待できる。すなわち、異常画像データが訓練済みの画像生成モデルGNに入力される場合に生成される再現画像データは、異常画像DI4a、DI4bに含まれる欠陥(線状キズdf4aや汚れdf4b)を含まない再現画像DI5を示す。換言すれば、画像生成モデルGNに、正常画像データが入力される場合も異常画像データが入力される場合も、再現画像DI5は、
図5(E)に示すように、正常画像DI2を再現した画像になる。
【0093】
図3のS20の訓練処理後のS30では、CPU110は、訓練差分画像データ生成処理を実行する。訓練差分画像データ生成処理は、後述する画像識別モデルDN1、DN2の訓練処理に用いる差分画像データを生成する処理である。
図13は、訓練差分画像データ生成処理のフローチャートである。
【0094】
S610では、CPU110は、不揮発性記憶装置130に格納済みの正常画像データ群と異常画像データ群との中から、1個の注目画像データを選択する。S620では、CPU110は、注目画像データを訓練済みの画像生成モデルGNに入力し、注目画像データに対応する再現画像データを生成する。なお、注目画像データがラベルL1の版下画像データRD1を用いて生成された画像データ(正常画像データまたは異常画像データ)である場合には、ラベルL1用の画像生成モデルGN1が用いられる。注目画像データがラベルL2の版下画像データRD2を用いて生成された画像データである場合には、ラベルL2用の画像生成モデルGN2が用いられる。
【0095】
S630では、CPU110は、注目画像データと、注目画像データに対応する再現画像データと、を用いて差分画像データを生成する。例えば、CPU110は、注目画像データによって示される画像の画素の成分値v1と、対応する再現画像の画素の成分値v2と、の差分値(v1-v2)を算出し、該差分値を0~1の範囲の値に正規化する。CPU110は、画素毎、色成分ごとに、当該差分値を算出し、該差分値を画素の色値とする差分画像データを生成する。
【0096】
図5(F)の差分画像DI6nは、注目画像データが正常画像DI2(
図5(B))を示す正常画像データである場合に生成される差分画像データによって示される。この場合には、
図5(E)の再現画像DI5と
図5(B)の正常画像DI2とは、ほぼ同じ画像であるので、差分画像DI6nの各画素値は、0に近い値になる。ただし、
図5(E)の再現画像DI5と
図5(B)の正常画像DI2とは、完全に同じではないので、差分画像DI6nの各画素値は、完全に0ではなく、画素ごとに異なり得る値であり、画素ごとにバラツキを有する値となる。以下では、差分画像DI6nを正常差分画像DI6nとも呼び、正常差分画像DI6nを示す差分画像データを正常差分画像データとも呼ぶ。
【0097】
図5(G)の差分画像DI6aは、注目画像データが異常画像DI4a(
図5(C))を示す異常画像データである場合に生成される差分画像データによって示される。この場合には、
図5(E)の再現画像DI5は、線状キズを含まないが、
図5(C)の異常画像DI4aは、線状キズdf4aを含む。このために、差分画像DI6aには、異常画像DI4aの線状キズdf4aと同様の線状キズdf6aが現れる。差分画像DI6aの線状キズdf6aを除く部分の各画素の値は、正常差分画像DI6nと同様に、0に近い値となる。
【0098】
図5(H)の差分画像DI6bは、注目画像データが異常画像DI4b(
図5(D))を示す異常画像データである場合に生成される差分画像データによって示される。この場合には、
図5(E)の再現画像DI5は、線状キズを含まないが、
図5(D)の異常画像DI4aは、汚れdf4bを含む。このために、差分画像DI6bには、異常画像DI4bの汚れdf4bと同様の汚れdf6bが現れる。差分画像DI6bの汚れdf6bを除く部分の各画素の値は、正常差分画像DI6nと同様に、0に近い値となる。以下では、差分画像DI6a、DI6bを異常差分画像DI6a、DI6bとも呼び、異常差分画像DI6a、DI6bを示す差分画像データを異常差分画像データとも呼ぶ。
【0099】
S640では、CPU110は、注目画像データに対応付けられた識別情報を取得する。識別情報は、注目画像データによって示される画像に含まれる欠陥に関する種類を示す情報である。欠陥に関する種類は、本実施例では、正常(欠陥無し)、線状キズ、汚れ、円状キズのいずれかである。
【0100】
S650では、CPU110は、生成された差分画像データと、取得された識別情報と、を、対応付けて不揮発性記憶装置130に保存(格納)する。識別情報は、後述する画像識別モデルDN1、DN2の訓練処理において教師データとして用いられる。
【0101】
S660では、CPU110は、格納済みの正常画像データ群と異常画像データ群に含まれる全ての画像データを処理したか否かを判断する。未処理の画像データがある場合には(S660:NO)、CPU110は、S610に戻る。全ての画像データが処理された場合には(S660:YES)、CPU110は、訓練差分画像データ生成処理を終了する。訓練データ生成処理によって生成される正常差分画像データ、異常差分画像データを総称して、訓練差分画像データとも呼ぶ。
【0102】
訓練差分画像データ生成処理後の
図3のS40では、CPU110は、S20Aの画像識別モデルDN1の訓練処理と、S40Bの画像識別モデルDN2の訓練処理と、を並列に実行する。これらの訓練処理を並列に実行することで、検査準備処理の全体の処理時間を低減できる。以下では、これらの機械学習モデルの概要と訓練処理とを説明する。
【0103】
図14は、画像識別モデルDNの説明図である。画像識別モデルDN1、DN2の構成は同じであるので、画像識別モデルDNの構成として説明する。
図14(A)は、画像識別モデルDNの構成の例を示す概略図である。画像識別モデルDNは、入力画像データIIdに対して、複数個の演算パラメータを用いる演算処理を実行して、入力画像データIIdに対応する出力データODdを生成する。本実施例では、入力画像データIIdとして、差分画像データが用いられる。本実施例では、出力データODdは、差分画像データの生成に用いられた画像内のラベルの欠陥に関する種類(本実施例では正常、線状キズ、汚れ、円状キズのいずれか)を識別した識別結果を示す。
【0104】
本実施例の画像識別モデルDNには、ResNet18と呼ばれる公知のモデルが用いられている。このモデルは、例えば、論文「K. He, X. Zhang, S. Ren, and J. Sun, “Deep residual learning for image recognition,” in ICML, 2016.」に開示されている。画像識別モデルDNは、エンコーダECと、分類部FCと、を含む。エンコーダECは、入力画像データIIdに対して次元削減処理を実行して、入力画像データIIdによって表される入力画像(例えば、
図5(F)-(H)の差分画像DI6n、DI6a、DI6b)の特徴を示す特徴マップを生成する。
【0105】
エンコーダECは、複数のレイヤLY1~LY4を備えている。各レイヤは、複数個の畳込層を含むCNN(Convolutional Neural Network)である。各畳込層は、所定サイズのフィルタを用いて畳込処理(convolution)を実行して特徴マップを生成する。各畳込処理の算出値は、バイアスが加算されたうえで、所定の活性化関数に入力されて変換される。各畳込層から出力される特徴マップは次の処理層(次の畳込層やレイヤ)に入力される。活性化関数には、いわゆるReLU(Rectified Linear Unit)等の公知の関数が用いられる。畳込処理に用いられるフィルタの重みおよびバイアスとは、後述する訓練処理によって調整される演算パラメータである。なお、各レイヤLY1~LY4から出力される特徴マップは、後述するPaDim用データ生成処理にて用いられるので、これらの特徴マップについては、PaDim用データ生成処理において補足説明する。
【0106】
分類部FCは、1以上の全結合層を含む。分類部FCは、エンコーダECから出力される特徴マップの次元数を削減して、出力データODdを生成する。分類部FCの全結合層の演算に用いられる重みおよびバイアスは、後述する訓練処理によって調整される演算パラメータである。
【0107】
次に、画像識別モデルDNの訓練処理(
図3のS40A、40B)について説明する。
図14(B)は、画像識別モデルDNの訓練処理のフローチャートである。訓練によって、画像識別モデルDNの演算に用いられる複数の演算パラメータ(畳込層、および、全結合層のそれぞれの演算に用いられる複数の演算パラメータを含む)が、調整される。訓練処理前は、複数の演算パラメータは、乱数値などの初期値に設定されている。
【0108】
S710では、CPU110は、不揮発性記憶装置130からバッチサイズ分の複数個の訓練差分画像データを取得する。ここで、バッチサイズ分の複数個の訓練差分画像データは、上述した異常差分画像データと正常差分画像データとの両方が含まれるように取得される。画像識別モデルDN1は、ラベルL1用の画像識別モデルDNであるので、画像識別モデルDN1の訓練処理では、ラベルL1を示す正常画像データおよび異常画像データを用いて生成された訓練差分画像データが取得される。画像識別モデルDN2は、ラベルL2用の画像識別モデルDNであるので、画像識別モデルDN2の訓練処理では、ラベルL2を示す正常画像データおよび異常画像データを用いて生成された訓練差分画像データが取得される。これによって、画像識別モデルDN1は、ラベルL1用に訓練され、画像識別モデルDN2は、ラベルL2用に訓練される。S720では、CPU110は、複数個の訓練差分画像データを画像識別モデルDNに入力し、複数個の訓練差分画像データに対応する複数個の出力データODdを生成する。
【0109】
S730では、CPU110は、複数個の出力データODdと、複数個の出力データODdに対応する複数個の教師データと、を用いて、損失値を算出する。ここで、出力データODdに対応する教師データは、
図13のS650にて、該出力データODdに対応する訓練差分画像データに対応付けて保存された識別情報である。具体的には、CPU110は、複数個の出力データODdのそれぞれについて、出力データODdと、該出力データODに対応する教師データと、の間の差分を示す損失値を算出する。
【0110】
損失値の算出には、所定の損失関数、例えば、二乗誤差が用いられる。損失値の算出には、出力データODdと教師データとの差分に応じた損失値を算出するための他の公知の損失関数、例えば、交差エントロピー誤差、絶対誤差が用いられても良い。
【0111】
S740では、CPU110は、算出された損失値を用いて、画像識別モデルDNの複数の演算パラメータを調整する。具体的には、CPU110は、出力データODdごとに算出される損失値の合計が小さくなるように、所定のアルゴリズムに従って演算パラメータを調整する。所定のアルゴリズムとしては、例えば、誤差逆伝播法と勾配降下法とを用いたアルゴリズムが用いられる。
【0112】
S750では、CPU110は、訓練終了条件が満たされるか否かを判断する。訓練終了条件は、
図11(B)のS450と同様に、種々の条件、例えば、損失値が基準値以下になったことや、損失値の変化量が基準値以下になったことや、S740の演算パラメータの調整が繰り返された回数が所定数以上になったこと、が用いられる。
【0113】
訓練の終了条件が満たされない場合には(S750:NO)、CPU110は、S710に戻って、訓練を継続する。訓練の終了条件が満たされた場合には(S750:YES)、CPU110は、S760にて、調整済の演算パラメータを含む訓練済みの画像識別モデルDNのデータを、不揮発性記憶装置130に格納して、訓練処理を終了する。
【0114】
訓練済みの画像識別モデルDNによって生成された出力データODdは、上述のように、差分画像データの生成に用いられた画像内のラベルの欠陥に関する種類(本実施例では正常、線状キズ、汚れ、円状キズのいずれか)を識別した識別結果を示す。ただし、後述する検査処理では、該出力データODdは用いられない。このために、出力データODdが欠陥に関する種類を精度良く識別できるまで画像識別モデルDNが訓練される必要はない。検査処理では、画像識別モデルDNのエンコーダECによって生成される特徴マップ(詳細は後述)が用いられる。このために、画像識別モデルDNは、画像識別モデルDNのエンコーダECが差分画像データの特徴を十分に反映した特徴マップを生成できる程度に、訓練されることが好ましい。
【0115】
画像識別モデルDNの訓練処理後の
図3のS50では、CPU110は、S50AのラベルL1用のPaDiMデータ生成処理と、S50BのラベルL2用のPaDiMデータ生成処理と、を並列に実行する。これらの処理を並列に実行することで、検査準備処理の全体の処理時間を低減できる。ラベルL1用のPaDiMデータ生成処理と、ラベルL2用のPaDiMデータ生成処理とは、基本的な処理内容は同一であるので、異なる部分を適宜指摘しつつ、PaDiMデータ生成処理について説明する。
【0116】
PaDiM(a Patch Distribution Modeling Framework for Anomaly Detection and Localization)は、機械学習モデルを用いた異常検出の仕組みであり、論文「T. Defard, A. Setkov, A. Loesch, and R. Audigier, “Padim: a patch distribution modeling framework for anomaly detection and localization”,arXiv:2011.08785(2020),https://arxiv.org/abs/2011.08785,投稿日17 Nov 2020」に開示されている。PaDiMデータ生成処理は、Padimのためのデータ(例えば、後述するガウシアンマトリクスGM)を生成する処理である。
図15は、PaDiMデータ生成処理のフローチャートである。
図16、
図17は、PaDiMデータ生成処理の説明図である。
【0117】
S810では、CPU110は、不揮発性記憶装置130から所定個数(K個とする)の正常差分画像データを取得する。正常差分画像データの個数Kは、例えば、1以上の整数、例えば、10~100程度である。ここで、ラベルL1用のPaDiMデータ生成処理では、ラベルL1を示す正常画像データを用いて生成された正常差分画像データの中から取得される。ラベルL2用のPaDiMデータ生成処理では、ラベルL2を示す正常画像データを用いて生成された正常差分画像データの中から取得される。取得されるK個の正常差分画像データは、生成済みの数百~数千の正常差分画像データの中から、例えば、ランダムに選択される。変形例では、生成済みの数百~数千の正常差分画像データの類似性が、例えば、ヒストグラムデータを用いて比較され、互いに類似しないK個の正常差分画像データが選択されても良い。
【0118】
S820では、CPU110は、取得された各正常差分画像データを、入力画像データIIdとして、画像識別モデルDNのエンコーダECに入力して、N個の特徴マップfmを取得する。ラベルL1用のPaDiMデータ生成処理では、N個の特徴マップfmを取得するために、ラベルL1用の画像識別モデルDN1のエンコーダEC1が用いられる。ラベルL2用のPaDiMデータ生成処理では、N個の特徴マップfmを取得するために、ラベルL2用の画像識別モデルDN2のエンコーダEC2が用いられる。
【0119】
ここで、N個の特徴マップfmについて説明する。
図16(A)には、画像識別モデルDNのエンコーダECが図示され、
図16(B)には、エンコーダECによって生成される特徴マップfmが図示されている。
【0120】
第1レイヤLY1は、n1個の特徴マップfm1(
図16(B))を生成する。該n1個の特徴マップfm1は、第2レイヤLY2に入力される。各特徴マップfm1は、例えば、32画素×32画素の画像データである。特徴マップfm1の個数n1(チャンネル数とも呼ぶ)は、例えば、64である。
【0121】
第2レイヤLY2は、n2個の特徴マップfm2(
図16(B))を生成する。該n2個の特徴マップfm2は、第3レイヤLY3に入力される。各特徴マップfm2は、例えば、16画素×16画素の画像データである。特徴マップfm2のチャンネル数n2は、例えば、128である。
【0122】
第3レイヤLY3は、n3個の特徴マップfm3(
図16(B))を生成する。該n3個の特徴マップfm3は、第4レイヤLY4に入力される。各特徴マップfm3は、例えば、8画素×8画素の画像データである。特徴マップfm3のチャンネル数n3は、例えば、256である。
【0123】
第4レイヤLY4は、n4個の特徴マップfm4を生成する。各特徴マップfm4は、例えば、4画素×4画素の画像データである。n4個の特徴マップfm4は、PaDiMデータ生成処理には用いられない。本ステップでは、レイヤLY1~レイヤLY3によって生成される合計N個(Nは3以上の整数)の特徴マップfm1~fm3が取得される(N=n1+n2+n3、本実施例では、N=448)。
【0124】
S820では、CPU110は、N個の特徴マップfmを用いて、正常差分画像(例えば、(
図5(F)の正常差分画像DI6n)の特徴マトリクスFMを生成する。
【0125】
具体的には、CPU110は、生成済みの特徴マップfmのサイズ(縦方向および横方向の画素数)を調整して、全ての特徴マップfmのサイズを同じにする。本実施例では、N個の特徴マップfmのうち、第1レイヤLY1にて生成される特徴マップfm1のサイズが最も大きい(
図16(B))。このために、本実施例では、CPU110は、第2レイヤLY2にて生成される特徴マップfm2に公知の拡大処理を実行して、特徴マップfm1と同じサイズの特徴マップfm2rを生成する(
図16(C))。同様に、CPU110は、第3レイヤLY3にて生成される特徴マップfm3に拡大処理を実行して、特徴マップfm1と同じサイズの特徴マップfm3rを生成する(
図16(C))。
【0126】
CPU110は、1つの正常差分画像データを用いて生成されたサイズ調整後のN個の特徴マップfmの中から、特徴マトリクスFMの生成に用いるべきR個の使用マップUmを選択する(
図16(D))。使用マップUmの個数Rは、1以上N以下の整数であり、例えば、50~200程度である。R個の使用マップUmは、例えば、ランダムに選択される。
【0127】
CPU110は、選択されたR個の使用マップUmを用いて、1つの正常差分画像の特徴マトリクスFMを生成する。特徴マトリクスFMは、サイズ調整後の特徴マップfmの各画素と一対一で対応する特徴ベクトルV(i、j)を要素とするマトリクスである。(i、j)は、特徴マップfmの対応する画素の座標を示す。特徴ベクトルは、R個の使用マップUmにおける座標(i、j)の画素の値を要素とするベクトルである。
図16(E)に示すように、1つの特徴ベクトルは、R次元のベクトル(要素数がRのベクトル)である。
【0128】
ここで、正常差分画像の特徴マトリクスFMは、正常差分画像ごと(正常差分画像データごと)に生成される。本実施例では、使用される正常差分画像データの個数はK個であるから、正常差分画像のK個の特徴マトリクスFM1~FMKが生成される(
図17(A))。
【0129】
S825では、CPU110は、正常差分画像のK個の特徴マトリクスFM1~FMKを用いて、正常差分画像のガウシアンマトリクスGMを生成する。正常差分画像のガウシアンマトリクスGMは、サイズ調整後の特徴マップfmの各画素と一対一で対応するガウシアンパラメータを要素とするマトリクスである。座標(i、j)の画素に対応するガウシアンパラメータは、平均ベクトルμ(i、j)と、共分散行列Σ(i、j)と、を含む。平均ベクトルμ(i、j)は、正常差分画像のK個の特徴マトリクスFM1~FMKの特徴ベクトルV(i、j)の平均である。共分散行列Σ(i、j)は、正常差分画像のK個の特徴マトリクスFM1~FMKの特徴ベクトルV(i、j)の共分散行列である。平均ベクトルμ(i、j)と、共分散行列Σ(i、j)は、K個の特徴ベクトルV(i、j)を用いて算出される統計データである。K個の正常差分画像データに対して、1つのガウシアンマトリクスGMが生成される。
【0130】
S830では、CPU110は、不揮発性記憶装置130から複数個の異常差分画像データを取得する。本実施例では、3種(線状キズ、汚れ、円状キズ)の欠陥を示す異常差分画像データが、それぞれ、K個ずつランダムに取得される。したがって、合計で(3×K)個の異常差分画像データが取得される。ラベルL1用のPaDiMデータ生成処理では、ラベルL1を示す異常画像データを用いて生成された異常差分画像データの中から取得される。ラベルL2用のPaDiMデータ生成処理では、ラベルL2を示す異常画像データを用いて生成された異常差分画像データの中から取得される。
【0131】
S835では、CPU110は、取得された各異常差分画像データを、入力画像データIIdとして、画像識別モデルDNのエンコーダECに入力して、N個の特徴マップfmを取得する。ラベルL1用のPaDiMデータ生成処理では、N個の特徴マップfmを取得するために、ラベルL1用の画像識別モデルDN1のエンコーダEC1が用いられる。ラベルL2用のPaDiMデータ生成処理では、N個の特徴マップfmを取得するために、ラベルL2用の画像識別モデルDN2のエンコーダEC2が用いられる。
【0132】
S840では、CPU110は、取得されたN個の特徴マップfmを用いて、異常差分画像(例えば、
図5(G)、(H)の異常差分画像DI6a、DI6b)の特徴マトリクスFMを生成する。特徴マトリクスFMの生成処理は、上述したS820にて説明した処理と同様である。本実施例では、使用される異常差分画像データの個数は(3×K)個であるから、異常差分画像の(3×K)個の特徴マトリクスFMが生成される。
【0133】
S845では、CPU110は、生成された各特徴マトリクスFMと、ガウシアンマトリクスGMと、を用いて、各差分画像の異常度マップAMを生成する。この時点までに、S820とS840にて、K個の正常差分画像と(3×K)個の異常差分画像とを含む(4×K)個の差分画像のそれぞれについて、特徴マトリクスFMが生成されている。CPU110は、(4×K)個の差分画像のそれぞれを注目差分画像(
図17(C))として、各差分画像の異常度マップAM(
図17(D))を生成する。
【0134】
図17(D)異常度マップAMは、サイズ調整後の特徴マップfmと同じサイズの画像データである。異常度マップAMの各画素の値は、マハラノビス距離である。座標(i、j)におけるマハラノビス距離D(i、j)は、注目差分画像の特徴マトリクスFMの特徴ベクトルV(i、j)と、正常画像のガウシアンマトリクスGMの平均ベクトルμ(i、j)および共分散行列Σ(i、j)と、を用いて、公知の式に従う算出処理を実行することによって算出される。マハラノビス距離D(i、j)は、座標(i、j)におけるK個の正常差分画像と注目差分画像との間の差異の程度を示す評価値である。このために、マハラノビス距離D(i、j)は、座標(i、j)における注目差分画像の異常度を示す値であると、言うことができる。K個の正常差分画像と注目差分画像との間の差異は、K個の正常差分画像の元になったK個の正常画像と、注目差分画像の元になった画像(正常画像や異常画像)と、の間の差異を反映している。このために、マハラノビス距離D(i、j)は、座標(i、j)におけるK個の正常画像と注目差分画像の元になった画像との間の差異の程度を示す評価値である、とも言うことができる。
【0135】
本実施例では、(4×K)個の差分画像(差分画像データ)が用いられるので、(4×K)個の異常度マップAMが生成される。
【0136】
S850では、CPU110は、(4×K)個の異常度マップAMの異常度の最大値Amaxと最小値Aminとを特定する。すなわち、(4×K)個の異常度マップAMの全ての画素の値の最大値と最小値とが、異常度の最大値Amaxと最小値Aminとして特定される。
【0137】
S855では、CPU110は、正常差分画像のガウシアンマトリクスGMと、異常度の最大値Amaxと最小値Aminとを、PaDiMデータとして、不揮発性記憶装置130に格納して、PaDiMデータ生成処理を終了する。S50AのラベルL1用のPaDiMデータ生成処理にて、ラベルL1用のPaDiMデータが生成され、S50BのラベルL2用のPaDiMデータ生成処理にて、ラベルL2用のPaDiMデータが生成される。PaDiMデータ生成処理が終了されると、
図3の検査準備処理は終了される。
【0138】
A-3.検査処理
図18は、検査処理のフローチャートである。
図19は、検査処理の説明図である。検査処理は、検査すべきラベルL(本実施例では、
図2(B)のラベルL1またはラベルL2)が欠陥等を含む異常品であるか、欠陥等を含まない正常品であるかを検査する処理である。検査処理は、ラベルLごとに実行される。検査処理は、ユーザ(例えば、検査の作業者)が処理の開始指示を、操作部150を介して検査装置100に入力した場合に、開始される。例えば、ユーザは、検査すべきラベルLが貼り付けられた製品300を、撮像装置400を用いて撮像するための所定の位置に配置した状態で、検査処理の開始指示を入力する。
【0139】
S900では、CPU110は、検査すべきラベルL(以下、検査品とも呼ぶ)を含む撮像画像を示す撮像画像データを取得する。例えば、CPU110は、撮像装置400に撮像指示を送信して、撮像装置400に撮像画像データを生成させ、撮像装置400から撮像画像データを取得する。この結果、例えば、
図19(A)の撮像画像FIを示す撮像画像データが取得される。
【0140】
撮像画像FIは、製品の前面F31と、前面F31上に貼付されたラベルFLとを示す画像である。このように撮像画像FIに示される製品の前面およびラベルを、実物の前面31およびラベルL(
図2)と区別するために符号の先頭に「F」を付した符号を用いて、前面F31、ラベルFLとする。
【0141】
S905では、CPU110は、取得された撮像画像データを物体検出モデルANに入力して、撮像画像FI内のラベルFLが位置するラベル領域LAと、ラベルFLの種別(ラベルL1、L2のいずれか)を特定する。具体的には、CPU110は、撮像画像データを、入力画像データIIa(
図11(A))として物体検出モデルANに入力して、撮像画像データに対応する出力データOD(
図11(A))を生成する。CPU110は、出力データODに含まれる(S×S×Bn)個の予測領域情報のうち、所定の閾値THa以上の確信度Vcを含む予測領域情報を特定し、該予測領域情報によって示される予測領域をラベル領域LAとして特定する。互いに重なる2以上のラベル領域LAが特定される場合には、例えば、「Non-maximal suppression」と呼ばれる公知の処理が行われて、2以上のラベル領域から1つのラベル領域LAが特定される。例えば、
図19(A)の例では、撮像画像FI内において、ラベルFLの全体を含み、ラベルFLにほぼ外接するラベル領域LAが特定されている。CPU110は、出力データODに含まれるクラス情報のうち、ラベル領域LAに対応するクラス情報に基づいて、ラベル領域LA内のラベルFLの種別を特定する。
【0142】
S910では、CPU110は、撮像画像データを用いて、検証画像TIを示す検証画像データを生成する。具体的には、CPU110は、撮像画像FIからラベル領域LAを切り出して、検証画像データを生成する。
図19(A)の検証画像TIは、ラベル領域LA内の画像(すなわち、ラベルFLの画像)を示している。なお、
図19(A)の検証画像TIのラベルFLは、キズなどの欠陥を含んでいないが、キズなどの欠陥を含む場合もある。
【0143】
S912では、CPU110は、特定されたラベルFLの種別に基づいて、使用すべき機械学習モデル(画像生成モデルGNおよび画像識別モデルDN)と、PaDiMデータ(ガウシアンマトリクスGMと異常度の最大値Amax、最小値Amin)を決定する。ラベルFLがラベルL1であると特定された場合には、使用すべき機械学習モデルは、ラベルL1用の画像生成モデルGN1および画像識別モデルDN1に決定され、使用すべきPaDiMデータは、ラベルL1用のPaDiMデータに決定される。ラベルFLがラベルL2であると特定された場合には、使用すべき機械学習モデルは、ラベルL2用の画像生成モデルGN2および画像識別モデルDN2に決定され、使用すべきPaDiMデータは、ラベルL2用のPaDiMデータに決定される。
【0144】
S915では、CPU110は、検証画像データを、使用すべき画像生成モデルGNに入力し、検証画像データに対応する再現画像データを生成する。再現画像データによって示される再現画像は、例えば、
図5(E)を参照して説明したように、入力された検証画像のラベルFLを再現した画像である。そして、検証画像のラベルFLにキズなどの欠陥が含まれる場合であっても再現画像には、該欠陥が含まれない。
【0145】
S920では、CPU110は、検証画像データと再現画像データとを用いて、差分画像データを生成する。差分画像データを生成する処理は、
図13のS630にて説明した、注目画像データと再現画像データとを用いて差分画像データを生成する処理と同様である。本ステップにて生成される再現画像データを検証差分画像データとも呼び、検証差分画像データによって示される画像を検証差分画像とも呼ぶ。検証差分画像は、検証画像のラベルFLが欠陥を含まない場合には、
図5(F)の正常差分画像DI6nと同様に欠陥を含まない画像となる。検証差分画像は、検証画像のラベルFLが欠陥を含む場合には、
図5(G)、(H)の異常差分画像DI6a、DI6bと同様に、欠陥を含む画像となる。
【0146】
S925では、CPU110は、取得された検証差分画像データを、使用すべき画像識別モデルDNのエンコーダECに入力することによって、検証差分画像データに対応するN個の特徴マップfmを生成する(
図16(B))。
【0147】
S930では、CPU110は、N個の特徴マップfmを用いて検証差分画像の特徴マトリクスFMを生成する。具体的には、CPU110は、N個の特徴マップのうち、画像識別モデルDNの訓練時に選択されたR個の使用マップUm(
図16(D))を用いて、検証差分画像の特徴マトリクスFMを生成する(
図16(E))。
【0148】
S935では、CPU110は、使用すべきガウシアンマトリクスGM(
図17(B))と、検証差分画像の特徴マトリクスFMと、を用いて、異常度マップAM(
図17(D))を生成する。異常度マップAMの生成方法は、
図17(B)~(D)を参照して説明した
図15のS845における異常度マップAMの生成方法と同じである。
【0149】
S937では、異常度の最大値Amaxと最小値Aminとを用いて、異常度マップAMを正規化する。異常度の最大値Amaxと最小値Aminは、上述したPaDiMデータ生成処理の
図15のS850にて特定された値である。異常度マップAMの正規化は、異常度マップAMの複数個の画素の値(すなわち、異常度)を、正規化前の異常度Aoから正規化後の異常度Asに変換することによって行われる。正規化後の異常度Asは、正規化前の異常度Aoと、最大値Amaxと、最小値Aminと、を用いて、以下の式(1)に従って算出される。正規化後の異常度マップAMでは、各画素の異常度は、0~1の範囲の値になる。
【0150】
As=(As-Amin)/(Amax-Amin) …(1)
【0151】
図19(C)の異常度マップAMnは、例えば、検査品が正常品である場合に生成される異常度マップの例である。
図19(D)の異常度マップAMaは、例えば、検査品が線状キズを有する異常品である場合に生成される異常度マップの例である。
図19(E)の異常度マップAMbは、例えば、検査品が汚れを有する異常品である場合に生成される異常度マップの例である。
図19(C)の異常度マップAMnには、異常画素は含まれていない。
図19(D)の異常度マップAMaには、複数個の異常画素で構成される線状キズdfaが現れている。
図19(E)の異常度マップAMbには、複数個の異常画素で構成される汚れdfbが現れている。異常画素は、例えば、異常度が閾値TH1以上である画素である。このように、異常度マップAMを参照することで、検証画像に含まれるキズなどの欠陥の位置、大きさ、形状を特定することができる。検証画像にキズなどの欠陥が含まれない場合には、異常度マップAMにおいても、欠陥の領域は特定されない。
【0152】
S940では、CPU110は、異常度マップAMにおける異常画素の個数が閾値TH2以上であるか否かを判断する。異常画素の個数が閾値TH2未満である場合には(S940:NO)、S950にて、CPU110は、検査品としてのラベルは正常品であると判定する。異常画素の個数が閾値TH2以上である場合には(S940:YES)、S945にて、CPU110は、検査品としてのラベルは異常品であると判定する。S955では、CPU110は、検査結果を表示部140に表示して、検査処理を終了する。このように機械学習モデルAN、GN、DNを用いて、検査品が正常品であるか異常品であるかを判定することができる。
【0153】
以上説明した本実施例によれば、検査装置100のCPU110は、検査対象のラベルFLを含む検証画像TIを示す検証画像データを画像生成モデルGNに入力することによって、再現画像データを生成する(
図18のS915)。CPU110は、検証画像データと再現画像データとを用いて、検証差分画像データを生成する(
図18のS920)。CPU110は、検証差分画像データを画像識別モデルDNのエンコーダECに入力することによって、検証差分画像データの特徴を示す特徴マトリクスFMを生成する(
図18のS925、S930)。CPU110は、該特徴マトリクスFMを用いて、検査対象のラベルと正常なラベルとの差異(具体的には欠陥)を検出する。この結果、画像識別モデルDN(エンコーダEC)を用いて検査対象のラベルと正常なラベルとの差異を検出することができる。
【0154】
例えば、検証画像がノイズを含む場合や、検査対象のラベルと正常なラベルとの差異が比較的小さい場合には、仮に、検証画像データや正常画像データをそのまま画像識別モデルDN(エンコーダEC)に入力して特徴マトリクスFMを生成したとしても、検証画像データと正常画像データの差異の有無(例えば、欠陥の有無)が該特徴マトリクスFMに反映され難い場合がある。この場合には、これらの特徴マトリクスFMを用いて、検査対象のラベルと正常なラベルとの差異を検出しようとしても、当該差異を精度良く検出できない場合がある。これに対して、差分画像では、検証画像と正常画像との差異がより強調される、換言すれば、検査対象のラベルと正常なラベルとの差異がより強調される。このために、本実施例では、検証差分画像データをエンコーダECに入力して特徴マトリクスFMを生成している。この結果、これらの特徴マトリクスFMを用いて、検査対象のラベルと正常なラベルとの差異を精度良く検出し得る。
【0155】
より具体的には、CPU110は、検証差分画像データの特徴を示す特徴マトリクスFMと、ガウシアンマトリクスGMとを用いて、検査対象のラベルと正常なラベルとの差異を検出する(
図18のS935~S950)。ガウシアンマトリクスGMは、正常差分画像データを画像識別モデルDN(エンコーダEC)に入力することによって生成される特徴マトリクスFMに基づくデータである(
図15のS815~S825)。正常差分画像データは、正常差分画像データは、正常画像DI2(
図5(B))と、正常画像DI2に対応する再現画像DI5(
図5(E))との差分を示す画像データである(
図13の610~S630)。したがって、検証差分画像データの特徴マトリクスFMと、正常差分画像データの特徴マトリクスFMと、の比較によって、検査対象のラベルと正常なラベルとの差異を精度良く検出し得る。
【0156】
さらに、本実施例によれば、検証差分画像データや正常差分画像データの特徴マトリクスFMは、検証差分画像データについて、画像内の単位領域(特徴マップfmの1画素に対応する領域)ごとに算出される特徴ベクトルV(i、j)を含む。特徴ベクトルV(i、j)は、検証差分画像データや正常差分画像データをエンコーダECに入力することによって得られる複数個の特徴マップfmのそれぞれに基づく値を要素とするベクトルである(
図16(E))。ガウシアンマトリクスGMは、複数個の正常差分画像データについて、画像内の単位領域ごとに算出される複数個の特徴ベクトルV(i、j)の平均ベクトルおよび共分散行列を示すデータである(
図17(B))。CPU110は、検証差分画像データの特徴マトリクスFMとガウシアンマトリクスGMとを用いて画像内の単位領域ごとに異常度(具体的にはマハラノビス距離)を算出して得られる異常度マップAMを生成する(
図18のS935、
図17(D))。CPU110は、該異常度マップAMに基づいて、検査対象のラベルと正常なラベルとの差異(例えば、欠陥)を検出する(
図19のS940~S950)。この結果、特徴マトリクスFMとガウシアンマトリクスGMとを用いて、異常度としてのマハラノビス距離を算出することで得られる異常度マップAMを用いて、検査対象のラベルと正常なラベルとの差異を精度良く検出し得る。また、異常度マップAMを用いることで、例えば、欠陥が存在する位置や範囲も容易に特定できる。
【0157】
さらに、本実施例によれば、画像生成モデルGNの訓練処理に用いられる複数個の正常画像データは、ラベルLの作成に用いられる版下画像データRD1、RD2に対して画像処理を実行して得られる画像データである(
図6)。この結果、複数個の正常画像データを容易に準備することができるので、画像生成モデルGNを訓練するための負担を軽減できる。例えば、複数個の正常画像データとして、撮像画像データが用いられる場合には、ユーザが正常なラベルLを撮像する必要があるので、ユーザの負担が増大する。特に、必要な正常画像データの個数が多い場合には、ユーザの負担が過度に増大する可能性がある。版下画像データRD1、RD2は、ラベルLを作成に用いられる画像データであるので、ユーザは画像生成モデルGNの訓練処理のためだけに画像データを用意する必要がない。このために、ユーザの負担が軽減できる。
【0158】
さらに、本実施例によれば、正常差分画像データの生成に用いられる再現画像データは、検証差分画像データの生成に用いられる再現画像データと同様に、正常画像データを用いて訓練された画像生成モデルGNを用いて生成される。このように、正常差分画像データが、検証差分画像データの生成と同じ画像生成モデルGNを用いて生成されるので、正常差分画像データと検証差分画像データとの両方に、同じ画像生成モデルGNの特性が反映される。この結果、正常差分画像データと検証差分画像データとの差異を、画像生成モデルGNの特性に起因する差異ではなく、検査対象のラベルと正常なラベルとの差異との差異(例えば、欠陥の有無)に起因する差異となるように、適切に正常差分画像データを生成できる。したがって、適切な正常差分画像データを用いて、画像識別モデルDNの訓練処理やPaDiMデータの生成を行うことができる。したがって、正常画像と検証画像との差異を適切に反映するように、特徴マトリクスFMやガウシアンマトリクスGMを生成できるので、検証画像と正常画像との差異をさらに精度良く検出し得る。
【0159】
さらに、本実施例によれば、画像識別モデルDNの訓練処理に用いられる複数個の訓練差分画像データは、版下画像データRD1、RD2に対して画像処理を実行することによって生成される第1画像データ(正常画像データおよび異常画像データ)と、第1画像データを画像生成モデルGNに入力することによって生成される第2画像データ(正常画像および異常画像を再現した再現画像データ)と、の間の差分を示す画像データである(
図13のS610~S630)。この結果、画像識別モデルDNのエンコーダECが検証差分画像データや正常差分画像データの特徴を抽出できるように、適切に画像識別モデルDNを訓練することができる。
【0160】
さらに、本実施例によれば、上述の第1画像データは、複数種類の欠陥(本実施例では、線状キズ、汚れ、円状キズ)のいずれかを画像に擬似的に付加する欠陥付加処理(
図7のS255)を含む画像処理を版下画像データRD1、RD2に対して実行することによって生成される異常画像データを含む。画像識別モデルDNは、異常画像データを用いて生成される異常差分画像データが入力される場合に、異常画像データによって示される異常画像(例えば、
図5(C)、(D)の異常画像DI4a、DIb)に含まれる欠陥の種類を識別するように訓練される(
図13のS640、S650、
図14(B)のS730)。例えば、欠陥の有無だけでなく、欠陥の種類も識別するタスクは、欠陥の有無だけを識別するタスクよりも高度である。また、欠陥の種類(キズ、汚れなど)によって欠陥の特徴は大きく異なる。このために、より高度なタスクを達成できるように画像識別モデルDNを訓練することで、様々な欠陥の特徴を精度良く抽出できるように画像識別モデルDNを訓練できる。この結果、画像識別モデルDNのエンコーダECが異常差分画像データに含まれる欠陥の特徴を適切に抽出できるように画像識別モデルDNを訓練することができる。したがって、該画像識別モデルDNを用いて生成される特徴マトリクスFMやガウシアンマトリクスGMを利用して検証画像と正常画像との差異をさらに精度良く検出し得る。
【0161】
さらに、本実施例によれば、CPU110は、複数個の正常差分画像データのそれぞれについて算出される複数個の特徴マトリクスFMを用いて算出される統計データであるガウシアンマトリクスGMと、検証差分画像データの特徴マトリクスFMと、を用いて、検証差分画像の異常度マップAMを算出する(
図15のS845)。そして、CPU110は、複数個の正常差分画像データと複数個の異常差分画像データとのそれぞれについて同様に算出される異常度マップAMにおける異常度の最大値Amaxと最小値Aminと、検証差分画像の異常度マップAMとを用いて、検査対象のラベルと正常なラベルとの差異を検出する(
図18のS937~S950)。この結果、例えば、複数個の正常差分画像データと複数個の異常差分画像データとのそれぞれについて同様に算出される異常度マップAMにおける異常度のバラツキ等を考慮して、適切な基準で異常度マップAMを評価できる。したがって、検査対象のラベルと正常なラベルとの差異を適切に検出できる。例えば、本実施例では、CPU110は、異常度マップAMを最大値Amaxと最小値Aminとを用いて正規化し、正規化された異常度マップAMを用いて、検証画像内のラベルが異常品であるか正常品であるかを判断している。正規化前の異常度マップAMは、異常度が取り得る値の範囲がどの程度の範囲となるかが不明である。このために、仮に、正規化前の異常度マップAMを用いる場合には、例えば、異常画素か否かを判断するための閾値TH1を適切に定めることは比較的困難であった。これに対して、本実施例では、比較的多数の異常度マップAMのサンプルに基づく最大値Amaxと最小値Aminを用いて、異常度が0~1の範囲に収まるように、異常度マップAMが正規化される。このために、1つの固定された閾値TH1を用いて、検証画像内のラベルが異常品であるか正常品であるかを適切に判断できる。例えば、検査処理ごとに判断基準がばらつくことを抑制し、安定した判断基準に基づいて、検証画像内のラベルが異常品であるか正常品であるかを判断できる。
【0162】
さらに、本実施例によれば、CPU110は、検査対象のラベルFLを含む撮像画像FI(
図19(A))を示す撮像画像データを物体検出モデルANに入力することによって、撮像画像FI内のラベル領域LAを特定する(
図18のS905)。CPU110は、撮像画像データを用いて、ラベル領域LAを含む検証画像TIを示す検証画像データを生成する(
図18のS910)。物体検出モデルANは、合成画像CI(
図9(B))を示す合成画像データと、合成画像CI内のラベルBLが位置する領域を示すラベル領域情報と、を用いて訓練された機械学習モデルである(
図11(B))。合成画像データは、正常画像DI2を示す正常画像データと背景画像BIを示す背景画像データとを用いて、背景画像BIに正常画像DI2を合成して得られる合成画像CIを示す。正常画像データは、版下画像データRD1、RD2に基づく画像データである(
図6、
図5(B))。ラベル領域情報は、背景画像BIに正常画像DI2を合成する際に用いられる合成情報に基づいて生成される(
図10のS355)。DI前記物体画像の合成位置を示す位置情報に基づいて生成される(
図10のS355)。合成情報は、正常画像DI2の合成位置を示す位置情報を含む。この結果、ラベル領域情報は、例えば、ユーザがオペレータとして指定した領域を示す情報が用いられる場合と比較して、ラベルBL2が位置する領域を精度良く示し得る。したがって、物体検出モデルANは、ラベル領域を精度良く検出できるように、訓練される。ラベル領域を精度良く検出できると、検証画像TIに過度に多くの背景が含まれることや、検証画像TIにラベルの一部が含まれないことを、抑制できるので、適切な検証画像データを生成できる。適切な検証画像データを用いることで、例えば、検査処理において、検査対象のラベルの欠陥の有無を精度良く検出できる。また、訓練時に、ユーザがラベル領域を指定する必要がないので、ユーザの負担を軽減できる。
【0163】
さらに、本実施例では、物体検出モデルANは、ラベルL1とラベルL2との両方を特定可能に訓練された1つの機械学習モデルである(
図3のS20A等)。そして、画像生成モデルGNは、ラベルL1用の画像生成モデルGN1と、ラベルL2用の画像生成モデルGN2と、を含む。画像生成モデルGN1は、ラベルL1を示す正常画像データに対応する再現画像データを生成するように訓練された機械学習モデルである(
図3のS30B)。画像生成モデルGN2は、ラベルL2を示す正常画像データに対応する再現画像データを生成するように訓練された機械学習モデルである(
図3のS30C)。検査処理において、CPU110は、検査対象のラベルLがラベルL1である場合とラベルL2である場合との両方の場合に、1つの物体検出モデルANを用いて、ラベル領域LAを特定する(
図18のS905)。CPU110は、検査対象のラベルLがラベルL1である場合に、ラベルL1用の画像生成モデルGN1を用いて、再現画像データを生成し、検査対象のラベルLがラベルL2である場合に、ラベルL2用の画像生成モデルGN2を用いて、再現画像データを生成する(
図18のS912、S915)。
【0164】
ラベルの領域を特定するタスクは、ラベル内の細部の構成自体とは関係が薄いために、複数種のラベルを1つの物体検出モデルANを用いて特定しても十分な精度で特定できる。これに対して、ラベルの再現画像を生成するタスクは、ラベルの構成を細部まで十分に再現し、かつ、ラベルの欠陥は再現しないようにする必要があるために、ラベルの種別ごとに専用の画像生成モデルGNを訓練することが好ましい。本実施例では、ラベルの種別に拘わらずに共通の1つの物体検出モデルANと、ラベルの種別ごとに専用の画像生成モデルGNを用いて、検査処理を実行する。この結果、機械学習モデルの訓練の負担や機械学習モデルのデータ量が過度に大きくなることを抑制しつつ、十分な精度で正常なラベルと欠陥を含むラベルとの差異を検出できる。
【0165】
さらに、本実施例によれば、画像識別モデルDNは、ラベルL1用の画像識別モデルDN1と、ラベルL2用の画像識別モデルDN2と、を含む。画像識別モデルDN1は、ラベルL1を示す画像データ(正常画像データおよび異常画像データ)を用いて生成される差分画像データの特徴を示す特徴マップfmを生成するように訓練された機械学習モデルである(
図3のS40A)。画像識別モデルDN2は、ラベルL2を示す画像データ(正常画像データおよび異常画像データ)を用いて生成される差分画像データの特徴を示す特徴マップfmを生成するように訓練された機械学習モデルである(
図3のS40B)。検査処理において、CPU110は、検査対象のラベルLがラベルL1である場合に、ラベルL1用の画像識別モデルDN1を用いて、特徴マップfmおよび特徴マトリクスFMを生成し、検査対象のラベルLがラベルL2である場合に、ラベルL2用の画像識別モデルDN2を用いて、特徴マップfmおよび特徴マトリクスFMを生成する(
図18のS912、S925、S930)。
【0166】
差分画像データを用いてラベルやラベルの欠陥の特徴を抽出するタスクは、ラベル自体の特徴と欠陥の特徴とを区別できるように抽出する必要があるために、ラベルの種別ごとに専用の画像生成モデルGNを訓練することが好ましい。本実施例では、ラベルの種別ごとに専用の画像識別モデルDNを用いて、検査処理を実行する。この結果、十分な精度で正常なラベルと欠陥を含むラベルとの差異を検出できる。
【0167】
さらに、本実施例によれば、画像生成モデルGNは、合成画像データの生成に用いられる正常画像データを用いて訓練されている(
図12(B))。画像識別モデルDNは、合成画像データの生成に用いられる正常画像データを用いて生成される正常差分画像データを用いて訓練されている(
図14(B))。この結果、物体検出モデルANと画像生成モデルGNと画像識別モデルDNとの訓練は、それぞれ、正常画像データ、あるいは、正常画像データを用いて生成される合成画像データや差分画像データを用いて実行される。この結果、複数個の機械学習モデルの訓練処理のための画像データを準備するための負担を低減できる。特に、正常画像データは、版下画像データRD1、RD2を用いて容易に生成できるので、例えば、撮像によって生成される画像データを用いる場合と比較して、訓練処理のための画像データを準備するための負担を大幅に低減できる。
【0168】
本実施例の検証差分画像データは、第1差分画像データの例であり、正常差分画像データは、第2差分画像データの例である。本実施例の検証画像データは、対象画像データの例であり、正常画像データは、比較画像データおよび第1訓練画像データの例であり、異常画像データは、欠陥付加画像データの例であり、合成画像データは、第2訓練画像データの例である。本実施例の画像識別モデルDN(エンコーダEC)は、特徴抽出モデルの例であり、特徴マトリクスFMは、第1特徴データおよび第2特徴データの例であり、ガウシアンマトリクスGMは、参照データおよび統計データの例である。本実施例の版下画像データRD1、RD2は、元画像データの例であり、撮像画像データは、原画像データの例である。
【0169】
B.変形例
(1)上記実施例では、CPU110は、PaDiMの仕組みを用いて、検査対象のラベルの欠陥を検出している。これに代えて、他の仕組みを用いて、検査対象のラベルの欠陥を検出しても良い。例えば、検証差分画像データを画像識別モデルDNに入力して得られる特徴マップfmを公知のGrad-CAMやGuided Grad-CAMの仕組みを用いて解析することで、検査対象のラベルの欠陥が検出されても良い。
【0170】
(2)検査対象の物体は、製品(例えば、複合機、ミシン、カッティングマシン、携帯端末など)に貼られるラベルに限らず、任意の物であってよい。検査対象の物体は、例えば、製品に印刷されるラベル画像であってよい。また、検査対象の物体は、製品そのものであっても良いし、製品に取り付けられる札、付属品、部品、刻印など、製品の任意の一部分であってよい。検査対象の物体に応じて、例えば、正常画像データや異常画像データは、版下画像データRDに代えて、製品の作成に用いられる設計図面データを用いて、生成されても良い。
【0171】
(3)上記実施例で用いられる機械学習モデルAN、GN、DNの構成は一例であり、他のモデルであってもよい。
【0172】
例えば、物体検出モデルAN、YOLOモデルに代えて、他の任意のモデルであってよい。物体検出モデルは、例えば、「YOLO v3」「YOLO v4」「YOLO v5」などの改良されたYOLOモデルであってよい。また、SSD、R-CNN、Fast R-CNN, Faster R-CNN、Mask R-CNNなどの、他のモデルが使用されてよい。
【0173】
画像生成モデルGNは、例えば、通常のオートエンコーダに限らず、VQ-VAE(Vector Quantized Variational Auto Encoder)、VAE(Variational Autoencoder)が用いられても良いし、いわゆるGAN(Generative Adversarial Networks)に含まれる画像生成モデルが用いられても良い。
【0174】
画像識別モデルDNは、CNN含むエンコーダを少なくとも含む任意の画像識別モデル、例えば、VGG16、VGG19が用いられても良い。
【0175】
どのような機械学習生成モデルが用いられる場合であっても、畳込層、転置畳込層などの具体的な層の構成や層数は、適宜に変更されて良い。また、機械学習モデルの各層で出力された値に対して実行される後処理も適宜に変更され得る。例えば、後処理に用いられる活性化関数は、任意の関数、例えば、ReLU、LeakyReLU、PReLU、ソフトマックス、シグモイドが用いられ得る。
【0176】
(4)上記実施例で用いられる機械学習モデルAN、GN、DNの訓練処理は一例であり、適宜に変更されて良い。
【0177】
例えば、画像生成モデルGNの訓練処理に用いられる正常画像データや異常画像データは、版下画像データRD1、RD2を用いて生成される画像データに代えて、実際に、正常なラベルや欠陥を含むラベルを撮像して得られる撮像画像データから切り出された画像データであっても良い。画像識別モデルDNの訓練処理に用いられる差分画像データの生成に用いられる正常画像データや異常画像データも同様である。
【0178】
物体検出モデルANの訓練処理に用いられる合成画像データに代えて、実際にラベルが貼付された製品を撮像して得られる撮像画像データが用いられても良い。あるいは、ラベルを撮像して得られる撮像画像データと、背景画像データと、を合成して得られる画像データが用いられても良い。
【0179】
上記実施例では、画像識別モデルDNの訓練処理に用いられる差分画像データは、正常画像データと、画像生成モデルGNに該正常画像データを入力して得られる再現画像データと、を用いて生成される。これに代えて、例えば、差分画像データは、検査処理に用いられる画像生成モデルGNとは別の画像生成モデルを用いて生成される再現画像データを用いて、生成されても良い。また、異常差分画像データは、例えば、正常差分画像データによって示される差分画像に疑似的に欠陥を付加して得られる画像データであっても良い。
【0180】
上記実施例では、画像識別モデルDNは、欠陥の種類を識別するように訓練されているが、欠陥の有無だけを識別するように訓練されても良い。
【0181】
また、上記実施例では、物体検出モデルANと画像生成モデルGN1、GN2との訓練処理は、1つの検査装置100によって並列に実行される。これに代えて、物体検出モデルANと画像生成モデルGN1、GN2との訓練処理とは、1つの検査装置によって、順次に1つずつ実行されても良いし、互いに異なる装置によって実行されても良い。画像識別モデルDN1、DN2の訓練処理についても同様である。ラベルL1用のPaDiMデータ生成処理とラベルL2用のPaDiMデータ生成処理とについても同様である。
【0182】
(5)特徴マトリクスFMを生成するための特徴抽出モデルとして、上記実施例では、画像識別モデルDNが用いられている。これに代えて、例えば、画像生成モデルGNと同様のオートエンコーダを、正常差分画像データや異常差分画像データが入力される場合に、該正常差分画像データや異常差分画像データを再現するように訓練し、該オートエンコーダに含まれるエンコーダを用いて特徴マトリクスFMが生成されても良い。あるいは、GANの仕組みを用いて正常差分画像データを異常差分画像データにスタイル変換するように訓練された画像生成モデルに含まれるエンコーダを用いて特徴マトリクスFMが生成されても良い。
【0183】
(6)
図18の検査処理は、一例であり、適宜に変更される。例えば、検査対象とされるラベルの種別は、2種に限らず、1種、もしくは、3種以上の任意の種別数であっても良い。ラベルの種別の個数に応じて、用いられる画像識別モデルDNや画像生成モデルGNの個数は変更される。
【0184】
検査対象のラベルの撮像時の配置や撮像装置400の設置位置を調整することで、検証画像TIと同様の撮像画像を示す撮像画像データが取得可能な場合などには、物体検出モデルANを用いる領域特定や撮像画像の切り出し(
図18のS905、S910)は省略されても良い。
【0185】
図18のS937の異常度マップAMの正規化が省略されても良い。この場合は、正規化前の異常度マップAMを用いて、欠陥の有無が判定されても良い。この場合には、PaDiMデータ生成処理において、
図15のS830~S850は省略されても良い。
【0186】
上記実施例では、正常差分画像と検証差分画像との差異を示すデータとして、マハラノビス距離を要素とする異常度マップAMが採用されている。差異を示すデータは、他の手法を用いて生成されるデータであっても良い。例えば、差異を示すデータは、正常画像の平均ベクトルμ(i、j)と、検証画像の特徴ベクトルV(i、j)と、のユークリッド距離を要素とするマップであっても良い。
【0187】
検査処理において、ラベルの欠陥を検出する方法も適宜に変更されて良い。例えば、CPU110は、PaDiMの手法を用いることなく、欠陥の有無を判定しても良い。具体的には、CPU110は、検証画像データと、検証画像データを画像生成モデルGNに入力して得られる再現画像データと、を用いて得られる検証差分画像データを用いて、差分画像を構成する画素のうち、差分が基準以上である画素を異常画素として特定しても良い。
【0188】
CPU110は、検証差分画像データを用いることなく、欠陥の有無を判定しても良い。具体的には、CPU110は、検証画像データを画像識別モデルDNに入力することによって、検証画像データの特徴マトリクスFMを生成し、該特徴マトリクスFMを用いてPaDiMの手法に従って、欠陥の有無を判定しても良い。この場合には、PaDiMデータ生成処理にて、ガウシアンマトリクスGMは、正常差分画像データに代えて、正常画像データを画像識別モデルDNに入力することによって、正常画像データの特徴マトリクスFMを生成し、該特徴マトリクスFMを用いガウシアンマトリクスGMを生成する。
【0189】
上記実施例では、物体検出モデルANは、撮像画像FI内の1つのラベル領域LAを特定することが想定されている。これに代えて、物体検出モデルANは、撮像画像FI内の複数個のラベル領域を特定しても良い。この場合には、各ラベル領域の画像を示す複数個の検証画像データが生成され、複数個の検証画像データを用いて、複数個のラベルの検査が行われても良い。
【0190】
上記実施例では、物体検出モデルANは、ラベルL1とラベルL2との両方のラベル領域を特定できるように訓練される。これに代えて、物体検出モデルANは、ラベルL1用の物体検出モデルと、ラベルL2用の物体検出モデルと、を含んでも良い。この場合には、検査処理において、ラベルL1を検査する際には、ラベルL1用の物体検出モデルを用いてラベル領域が特定され、ラベルL2を検査する際には、ラベルL2用の物体検出モデルを用いてラベル領域が特定される。
【0191】
上記実施例では、画像生成モデルGNは、ラベルL1とラベルL2との両方の正常画像を再現できるように、訓練されても良い。この場合には、検査処理において、ラベルL1を検査する場合とラベルL2を検査する場合との両方で、1つの共通の画像生成モデルGNが用いられる。同様に、画像識別モデルDNは、ラベルL1とラベルL2との両方の差分画像データの特徴を抽出できるように、訓練されても良い。この場合には、検査処理において、ラベルL1を検査する場合とラベルL2を検査する場合との両方で、1つの共通の画像識別モデルDNが用いられる。また、PaDiMデータ生成処理において、ラベルL1用のガウシアンマトリクスGMとラベルL2用のガウシアンマトリクスGMとは、1つの共通の画像識別モデルDNが用いて生成される。
【0192】
(7)上記実施例の検査処理は、欠陥などの異常検出のために用いられる。これに限らず、検査対象の物体と比較対象の物体との差異を検出する様々な処理に用いられ得る。例えば、監視カメラの画像において、撮像中の部屋と、無人の部屋と、の差異を検出することで、侵入者の有無を検出する処理や、現在と物体と、過去の物体と、の差異を検出することで、に基づいて、物体の経時変化や動作を検出する処理などに、本実施例の検査処理が用いられてもよい。
【0193】
(8)上記実施例では、検査準備処理と検査処理とは、
図1の検査装置100によって実行されている。これに代えて、検査準備処理と検査処理とは、それぞれ、別の装置によって実行されても良い。この場合には、例えば、検査準備処理によって訓練された機械学習モデルAN、DN、GN、および、PaDiMデータは、検査処理を実行する装置の記憶装置に格納される。また、検査準備処理と検査処理との全部または一部は、ネットワークを介して互いに通信可能な複数個の計算機(例えば、いわゆるクラウドサーバ)によって実行されても良い。また、検査処理を行うコンピュータプログラムと、検査準備処理を行うコンピュータプログラムとは、異なるコンピュータプログラムであっても良い。
【0194】
(9)上記各実施例において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部あるいは全部をハードウェアに置き換えるようにしてもよい。例えば、検査準備処理と検査処理との全部または一部は、ASIC(Application Specific Integrated Circuit)等のハードウェア回路によって実行されてよい。
【0195】
以上、実施例、変形例に基づき本発明について説明してきたが、上記した発明の実施の形態は、本発明の理解を容易にするためのものであり、本発明を限定するものではない。本発明は、その趣旨並びに特許請求の範囲を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物が含まれる。
【符号の説明】
【0196】
100…検査装置,1000…検査システム,110…CPU,120…揮発性記憶装置,130…不揮発性記憶装置,140…表示部,150…操作部,170…通信部,30…筐体,300…製品,400…撮像装置,AM…異常度マップ,AN…物体検出モデル,BD…背景画像データ群,BI…背景画像,CI…合成画像,DI1…版下画像,DI2…正常画像,DI4a,DI4b…異常画像,DI5…再現画像,DI6a,DI6b,DI6n…差分画像,DN…画像識別モデル,EC…エンコーダ,FI…撮像画像,FM…特徴マトリクス,GM…ガウシアンマトリクス,GN…画像生成モデル,L1,L2…ラベル,LA…ラベル領域,PG…コンピュータプログラ,RD1,RD2…版下画像データ,TI…検証画像,像,Um…使用マップ,fm…特徴マップ