(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024168483
(43)【公開日】2024-12-05
(54)【発明の名称】プログラム、および、画像処理装置
(51)【国際特許分類】
G06T 7/00 20170101AFI20241128BHJP
G06T 1/00 20060101ALI20241128BHJP
G06T 5/40 20060101ALI20241128BHJP
G06T 5/50 20060101ALI20241128BHJP
【FI】
G06T7/00 610Z
G06T7/00 350B
G06T1/00 300
G06T5/40
G06T5/50
【審査請求】未請求
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2023085200
(22)【出願日】2023-05-24
(71)【出願人】
【識別番号】000005267
【氏名又は名称】ブラザー工業株式会社
(74)【代理人】
【識別番号】110001058
【氏名又は名称】鳳国際弁理士法人
(72)【発明者】
【氏名】田中 良幸
【テーマコード(参考)】
5B057
5L096
【Fターム(参考)】
5B057CA01
5B057CA08
5B057CA12
5B057CA16
5B057CB01
5B057CB08
5B057CB12
5B057CB16
5B057CE06
5B057CH09
5B057DA16
5B057DB02
5B057DB06
5B057DB09
5B057DC19
5B057DC32
5B057DC40
5L096AA02
5L096AA06
5L096BA03
5L096CA02
5L096CA17
5L096EA16
5L096EA35
5L096EA39
5L096FA16
5L096FA32
5L096FA33
5L096FA34
5L096FA35
5L096FA59
5L096FA60
5L096FA64
5L096FA66
5L096FA67
5L096FA69
5L096GA08
5L096GA30
5L096GA40
5L096GA41
5L096GA51
5L096GA55
5L096HA11
5L096JA03
5L096KA04
(57)【要約】
【課題】 画像の明るさに応じて処理を進行する。
【解決手段】
注目オブジェクトを表す入力画像の対象色成分の強度分布を表す第1ヒストグラムを生成する。外観の異常を有するオブジェクトを表す画像データから外観の異常の無いオブジェクトを表す画像データを生成するように訓練済の生成モデルに、入力画像のデータを入力することによって、再構成画像のデータを生成する。再構成画像の対象色成分の強度分布を表す第2ヒストグラムを生成する。第1ヒストグラムと第2ヒストグラムとの間の差異が差異閾値以上である場合に、特定の処理を実行する。
【選択図】
図8
【特許請求の範囲】
【請求項1】
プログラムであって、
注目オブジェクトを表す入力画像の対象色成分の強度分布を表す第1ヒストグラムを生成する第1生成機能と、
外観の異常を有するオブジェクトを表す画像データから外観の異常の無いオブジェクトを表す画像データを生成するように訓練済の生成モデルに、前記入力画像のデータを入力することによって、再構成画像のデータを生成する画像生成機能と、
前記再構成画像の前記対象色成分の強度分布を表す第2ヒストグラムを生成する第2生成機能と、
前記第1ヒストグラムと前記第2ヒストグラムとの間の差異が差異閾値以上である場合に、特定の処理を実行する実行機能と、
をコンピュータに実現させる、プログラム。
【請求項2】
請求項1に記載のプログラムであって、
前記対象色成分は、輝度である、
プログラム。
【請求項3】
請求項2に記載のプログラムであって、さらに、
前記入力画像の特定の有彩色の色成分の強度分布を表す第3ヒストグラムを生成する第3生成機能と、
前記再構成画像の前記特定の有彩色の色成分の強度分布を表す第4ヒストグラムを生成する第4生成機能と、
をコンピュータに実現させ、
前記実行機能は、前記第1ヒストグラムと前記第2ヒストグラムとの間の前記差異が前記差異閾値以上である場合と、前記第3ヒストグラムと前記第4ヒストグラムとの間の差異が有彩差異閾値以上である場合と、を含む特定の場合に、前記特定の処理を実行する、
プログラム。
【請求項4】
請求項1から3のいずれかに記載のプログラムであって、さらに、
前記第1ヒストグラムと前記第2ヒストグラムとの間の前記差異が前記差異閾値未満であることを含む許容条件が満たされる場合に、前記注目オブジェクトが外観の異常を有するか否かを、前記入力画像と前記再構成画像とを使用して判定する異常判定機能を、コンピュータに実現させる、プログラム。
【請求項5】
請求項1から3のいずれかに記載のプログラムであって、さらに、
前記差異閾値は、前記生成モデルの訓練のために前記生成モデルに入力された訓練画像データと、前記訓練画像データを前記訓練済の生成モデルに入力することによって生成される生成画像データと、を使用して決定されている、
プログラム。
【請求項6】
請求項1から3のいずれかに記載のプログラムであって、さらに、
前記注目オブジェクトの撮影画像のデータを使用して、前記撮影画像の明るさが許容範囲内か否かを判定する明るさ判定機能と、
前記撮影画像の前記明るさが前記許容範囲内であると判定される場合に、前記撮影画像から、前記注目オブジェクトを表す部分である前記入力画像を検出する検出機能と、
前記撮影画像の前記明るさが前記許容範囲外であると判定される場合に、前記入力画像の検出をキャンセルするキャンセル機能と、
をコンピュータに実現させる、プログラム。
【請求項7】
請求項6に記載のプログラムであって、
前記明るさ判定機能は、前記撮影画像のデータと、予め準備される基準画像に対応付けられる基準データと、を使用して、前記撮影画像の前記明るさが前記許容範囲内か否かを判定する、
プログラム。
【請求項8】
画像処理装置であって、
注目オブジェクトを表す入力画像の対象色成分の強度分布を表す第1ヒストグラムを生成する第1生成部と、
外観の異常を有するオブジェクトを表す画像データから外観の異常の無いオブジェクトを表す画像データを生成するように訓練済の生成モデルに、前記入力画像のデータを入力することによって、再構成画像のデータを生成する画像生成部と、
前記再構成画像の前記対象色成分の強度分布を表す第2ヒストグラムを生成する第2生成部と、
前記第1ヒストグラムと前記第2ヒストグラムとの間の差異が差異閾値以上である場合に、特定の処理を実行する実行部と、
を備える、画像処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本明細書は、オブジェクトを表す画像を処理する技術に関する。
【背景技術】
【0002】
従来から、外観検査などのオブジェクトの外観に関する処理に、オブジェクトを表す画像データが使用されている。画像データとしては、撮影により得られる画像データが、使用され得る。ここで、適切な照明パターンを設計するための以下の技術が提案されている。すなわち、光源を複数の評価用発光パターンで発光させ、複数の評価用発光パターンで照明された少なくとも1つのワークに関する複数の評価用ワーク画像をカメラによって撮影し、複数の評価用ワーク画像に基づいて、連続値のパラメータを変化させることで発光パターンをシミュレートし、ワークの状態を識別するための発光パターンを表すパラメータを算出する。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
画像の明るさに応じて処理を進行する点については、工夫の余地があった。
【0005】
本明細書は、画像の明るさに応じて処理を進行する新たな技術を開示する。
【課題を解決するための手段】
【0006】
本明細書に開示された技術は、以下の適用例として実現することが可能である。
【0007】
[適用例1]プログラムであって、注目オブジェクトを表す入力画像の対象色成分の強度分布を表す第1ヒストグラムを生成する第1生成機能と、外観の異常を有するオブジェクトを表す画像データから外観の異常の無いオブジェクトを表す画像データを生成するように訓練済の生成モデルに、前記入力画像のデータを入力することによって、再構成画像のデータを生成する画像生成機能と、前記再構成画像の前記対象色成分の強度分布を表す第2ヒストグラムを生成する第2生成機能と、前記第1ヒストグラムと前記第2ヒストグラムとの間の差異が差異閾値以上である場合に、特定の処理を実行する実行機能と、をコンピュータに実現させる、プログラム。
【0008】
この構成によれば、入力画像の対象色成分の強度分布を表す第1ヒストグラムと、再構成画像の対象色成分の強度分布を表す第2ヒストグラムと、の間の差異が差異閾値以上である場合に、特定の処理が実行されるので、入力画像の明るさに応じて処理を進行できる。
【0009】
なお、本明細書に開示の技術は、種々の態様で実現することが可能であり、例えば、画像処理方法および画像処理装置、それらの方法または装置の機能を実現するためのコンピュータプログラム、そのコンピュータプログラムを記録した記録媒体(例えば、一時的ではない記録媒体)、等の形態で実現することができる。
【図面の簡単な説明】
【0010】
【
図1】一実施例としてのデータ処理装置を示す説明図である。
【
図2】(A)は、製品300の斜視図である。(B)は、ラベルLの例を示す図である。(C)は、撮影画像の例を示す図である。(D)は、ラベル部分画像の例を示す図である。
【
図3】(A)-(C)は、撮影画像と再構成画像と差分画像との例を示す図である。
【
図4】(A)-(C)は、ラベルの明るさと差分画像との例を示す図である。
【
図5】画像生成モデルM2の構成の例を示すブロック図である。
【
図6】画像生成モデルM2の訓練処理の例を示すフローチャートである。
【
図7】ラベルLの検査処理の例を示すフローチャートである。
【
図8】画像判定処理の例を示すフローチャートである。
【
図9】(A)-(C)は、ヒストグラムの例を示す図である。
【
図10】(A)は、相関cの算出式の例を示す図である。(B)は、合計差分dの算出式の例を示す図である。
【
図11】異常部分検出処理の例を示すフローチャートである。
【
図12】(A)は、ヒートマップ画像の例を示す図である。(B)は、抽出される異常画素の例を示す図である。(C)は、抽出される異常部分の例を示す図である。
【
図13】画像判定処理の別の実施例を示すフローチャートである。
【
図14】画像判定処理の別の実施例を示すフローチャートである。
【
図15】画像判定処理の別の実施例を示すフローチャートである。
【
図16】差異閾値の決定処理の例を示すフローチャートである。
【発明を実施するための形態】
【0011】
A.第1実施例:
A1.装置構成:
図1は、一実施例としてのデータ処理装置を示す説明図である。データ処理装置100は、例えば、パーソナルコンピュータである。本実施例では、製品300(例えば、複合機)に、ラベルLが貼付されている。データ処理装置100は、ラベルLの外観の検査のために、ラベルLの外観を表す画像データを処理する。データ処理装置100は、注目オブジェクト(本実施例では、ラベルL)の外観を表す画像データを処理する画像処理装置の例である。
【0012】
データ処理装置100は、プロセッサ110と、記憶装置115と、表示部140と、操作部150と、通信インタフェース170と、GPU190と、を備えている。これらの要素は、バスを介して互いに接続されている。記憶装置115は、揮発性記憶装置120と、不揮発性記憶装置130と、を含んでいる。
【0013】
プロセッサ110は、データを処理するように構成された装置である。プロセッサ110は、例えば、CPU(Central Processing Unit)、または、SoC(System on a chip)であってよい。揮発性記憶装置120は、例えば、DRAMであり、不揮発性記憶装置130は、例えば、フラッシュメモリである。不揮発性記憶装置130は、プログラム131、132と、物体検出モデルM1と、画像生成モデルM2と、版下画像D1と、背景画像群D2と、のそれぞれのデータを格納している。これらのデータの詳細については、後述する。なお、第3プログラム133と基準ヒストグラムD3とは、後述する他の実施例で使用される。
【0014】
表示部140は、液晶ディスプレイ、有機ELディスプレイなどの、画像を表示するように構成された装置である。操作部150は、ボタン、レバー、表示部140上に重ねて配置されたタッチパネルなどの、ユーザによる操作を受け取るように構成された装置である。ユーザは、操作部150を操作することによって、種々の指示をデータ処理装置100に入力可能である。通信インタフェース170は、他の装置と通信するためのインタフェースである。通信インタフェース170は、例えば、USBインタフェース、有線LANインタフェース、IEEE802.11の無線インタフェース、産業用カメラのインタフェース(例えば、CameraLink、CoaXPressなど)、のうちの1種以上を含む。通信インタフェース170には、撮影装置400が接続されている。
【0015】
GPU(Graphics Processing Unit)190は、画像処理、機械学習などの種々の数値演算を実行するように構成された演算装置である。本実施例では、後述するように、プロセッサ110とGPU190とが協働して、種々の演算を実行する。なお、GPU190を制御するためのドライバプログラム(図示省略)は、GPU190の製造者によって提供され得る。
【0016】
撮影装置400は、二次元イメージセンサを用いて被写体を撮影することによって、被写体を表す画像データ(撮影画像データとも呼ぶ)を生成する。本実施例では、撮影装置400は、デジタルカメラである。撮影画像データは、複数個の画素を含む画像を表すビットマップデータである。本実施例では、撮影画像データは、赤Rと緑Gと青Bとの3色成分の階調値によって画素ごとの色を表すRGB画像データである。R値、G値、B値は、例えば、ゼロから255までの256階調で表される。なお、撮影画像データは、他の色成分(例えば、輝度)の階調値によって画素毎の色を表してよい。
【0017】
撮影装置400は、ラベルLが貼付された製品300を撮影して、製品300のうちのラベルLを含む部分の撮影画像を表す撮影画像データを生成する。撮影画像データは、ラベルLの外観の異常(例えば、傷、汚れなど)の検出に使用される。なお、製品300の撮影時には、光源500(例えば、発光ダイオード、白熱灯、蛍光灯など)が、製品300(ひいては、ラベルL)を照らす。適切な処理のためには、撮影画像が、ラベルLを適切な明るさで表すことが好ましい(すなわち、撮影時のラベルLの明るさが、適切な明るさであることが好ましい)。データ処理装置100は、撮影画像データを使用して、撮影画像中のラベルLの明るさが適切であるか否かを判定する(詳細は後述)。
【0018】
A2.ラベルと撮影画像:
図2(A)は、製品300の斜視図である。本実施例では、製品300は、略直方体の複合機である。製品300の製造工程において、製品300の外面の所定の位置にラベルLが貼付される。そして、ラベルLの外観の検査のために、撮影装置400は、製品300上のラベルLを撮影する。ラベルLの撮影時には、撮影装置400の撮影範囲CV内にラベルLが位置するように、製品300に対する撮影装置400の相対的な位置と向きとが調整される。
【0019】
図2(B)は、ラベルLの例を示す図である。本実施例では、ラベルLは、矩形状のシートである。ラベルLは、製造者名、製造者のロゴ、ブランドロゴ、認証マークなど、種々の情報を表し得る。ラベルLによって表されるべき適切な情報は、製品300に予め対応付けられている。なお、ラベルLの形状は、矩形に代えて、他の種々の形状であってよい(例えば、円形、楕円形、多角形など)。
【0020】
図2(C)は、撮影画像の例を示す図である。撮影画像i1は、製品300のうちのラベルLを含む一部分を表している。プロセッサ110は、このような撮影画像から、ラベルLを表す部分を取得する(取得される部分画像を、「ラベル部分画像」とも呼ぶ)。
図2(D)は、取得されるラベル部分画像の例を示す図である。ラベル部分画像i2中では、撮影画像i1中と比べて、ラベルL以外の部分の割合が小さい。また、
図2(D)の例では、ラベル部分画像i2は、ラベルLの全体を表している。ラベル部分画像は、ラベルLの外観の異常検出に使用される。
【0021】
本実施例では、撮影画像i1とラベル部分画像i2は、第1方向Dxに平行な2辺と、第1方向Dxに垂直な第2方向Dyに平行な2辺と、を有する矩形状の画像である。画像i1、i2は、第1方向Dxと第2方向Dyとに沿ってマトリクス状に並ぶ複数の画素のそれぞれの色値によって、表されている。本実施例では、ラベル部分画像i2の各画素の色値は、撮影画像i1の各画素の色値と同様に、赤R、緑G、青Bの3個の階調値で表される。各階調値は、例えば、0から255までの256段階で表されている。なお、ラベル部分画像は、他の色成分(例えば、輝度)の階調値によって画素毎の色を表してよい。
【0022】
A3.外観の異常検出の概要:
プロセッサ110(
図1)は、ラベルLの撮影画像であるラベル部分画像と、画像生成モデルM2の演算によってラベル部分画像から生成されるラベルLの再構成画像と、を使用して、ラベルLの外観の異常を検出する。画像生成モデルM2は、外観の異常を有するラベルの画像から外観の異常の無い同じラベルの画像を生成する種々の機械学習モデルであってよい。本実施例では、画像生成モデルM2は、いわゆる変分オートエンコーダ(Variational auto-encoder : VAE)である。画像生成モデルM2の詳細については、後述する。
【0023】
図3(A)-
図3(C)は、撮影画像と再構成画像と差分画像との例を示す図である。
図3(A)のラベル部分画像i2aは、外観の異常の無いラベルLaを表している。プロセッサ110は、ラベル部分画像i2aを使用する画像生成モデルM2の演算によって、外観の異常の無いラベルLagを表す再構成画像i2agを生成する。差分画像i2adは、ラベル部分画像i2aと再構成画像i2agとの間の差分を示している。差分画像i2adの各画素の色値は、ラベル部分画像i2aと再構成画像i2agとの間の対応する画素の階調値の差分(例えば、輝度値の差分の絶対値)を示している。ラベル部分画像i2aのラベルLaが外観の異常を有しない場合、再構成画像i2agとラベル部分画像i2aとの間の差は小さい。差分画像i2adの各画素の階調値(すなわち、差分)は、ゼロに近い。ただし、再構成画像i2agは、ラベル部分画像i2aと同一ではない。従って、差分画像i2adの各画素の階調値は、画素毎に、異なり得る。
【0024】
図3(B)のラベル部分画像i2bは、傷Dbを有するラベルLbを表している。画像生成モデルM2の演算によってラベル部分画像i2bから生成される再構成画像i2bgは、外観の異常の無いラベルLbgを表している。これらの画像i2b、i2bgの間の差分画像i2bdは、傷Dbと同様の傷Dbdを表している。差分画像i2bdのうち傷Dbd以外の部分では、各画素の階調値(すなわち、差分)は、ゼロに近い。
【0025】
図3(C)のラベル部分画像i2cは、汚れDcを有するラベルLcを表している。画像生成モデルM2の演算によってラベル部分画像i2cから生成される再構成画像i2cgは、外観の異常の無いラベルLcgを表している。これらの画像i2c、i2cgの間の差分画像i2cdは、汚れDcと同様の汚れDcdを表している。差分画像i2cdのうち汚れDcd以外の部分では、各画素の階調値(すなわち、差分)は、ゼロに近い。
【0026】
このように、ラベル部分画像と再構成画像との間の差分画像は、ラベルの外観の異常(傷や汚れなど)を表し得る。なお、撮影画像中のラベルの明るさ(すなわち、撮影時のラベルの明るさ)が暗い、または、明るい場合、画像生成モデルM2の演算は、適切な再構成画像を生成できない場合がある。
図4(A)-
図4(C)は、ラベルの明るさと差分画像との例を示す図である。
図4(A)は、撮影画像中のラベルの明るさ(すなわち、撮影時のラベルの明るさ)が適切である場合を示している。ラベル部分画像i2aと再構成画像i2agと差分画像i2adとは、
図3(A)のものと、それぞれ同じである。再構成画像i2agは、外観の異常の無いラベルLagを、適切に表している。
【0027】
図4(B)は、撮影画像中のラベルの明るさ(すなわち、撮影時のラベルの明るさ)が暗い場合を示している。プロセッサ110は、製品300の撮影画像i1xから、ラベルLaを表すラベル部分画像i2xを取得する。ラベル部分画像i2x中では、ラベルLaが暗く映っている。光源500の光量不足など、種々の原因によって、ラベルLaは暗く映り得る。ラベル部分画像i2xから、再構成画像i2xgが生成される。画像生成モデルM2に入力される画像i2x中のラベルLaが暗い場合、画像生成モデルM2は、ラベルLaを適切に再構成できない場合がある。例えば、再構成画像i2xgによって表されるラベルLax上では、ロゴや文字などの情報が、ぼやけ得る。ラベルLaの外観に異常が無い場合であっても、ラベル部分画像i2xと再構成画像i2xgとの間の差分画像i2xdは、広い範囲で大きな差分を示し得る。
【0028】
図4(C)は、撮影画像中のラベルの明るさ(すなわち、撮影時のラベルの明るさ)が明るい場合を示している。製品300の撮影画像i1zから、ラベルLaを表すラベル部分画像i2zが取得される。ラベル部分画像i2z中では、ラベルLaが明るく映っている。光源500の光量過多など、種々の原因によって、ラベルLaは明るく映り得る。ラベル部分画像i2zから、再構成画像i2zgが生成される。ラベル部分画像i2z中のラベルLaが明るい場合、画像生成モデルM2は、ラベルLaを適切に再構成できない場合がある。例えば、再構成画像i2zgによって表されるラベルLaz上では、ロゴや文字などの情報が、ぼやけ得る。従って、ラベルLaの外観に異常が無い場合であっても、ラベル部分画像i2zと再構成画像i2zgとの間の差分画像i2zdは、広い範囲で大きな差分を示し得る。
【0029】
このように、撮影時のラベルの明るさ、すなわち、撮影画像中のラベルの明るさは、画像処理に影響を与え得る。例えば、画像生成モデルM2によって不適切な再構成画像が生成される可能性は、撮影画像中のラベルの明るさに応じて、変化する。本実施例では、プロセッサ110は、不適切な再構成画像の使用の可能性を低減するための処理を実行する(詳細は、後述)。以下、先ずは画像生成モデルM2について説明し、続いて、検査処理について説明する。
【0030】
A4.画像生成モデルM2:
図5は、画像生成モデルM2の構成の例を示すブロック図である。本実施例では、画像生成モデルM2は、いわゆる変分オートエンコーダである。変分オートエンコーダは、例えば、以下の論文に開示されている。
Diederik P. Kingma, Max Welling, "Auto-Encoding Variational Bayes", arXiv:1312.6114, https://arxiv.org/abs/1312.6114
【0031】
画像生成モデルM2は、エンコーダVeとデコーダVdとを有している。エンコーダVeは、入力画像IIgのデータの次元削減処理を実行することによって、入力画像IIgの特徴を表す潜在変数ベクトルzを生成する。変分オートエンコーダでは、潜在変数ベクトルzの各要素が確率分布(例えば、正規分布)に従うことが、想定されている。デコーダVdは、潜在変数ベクトルzの次元復元処理を実行することによって、潜在変数ベクトルzによって表される特徴を有する再構成画像OIgのデータを生成する。後述するように、画像生成モデルM2の訓練では、外観の異常の無いラベルL(
図2(A))を表す入力画像IIgのデータが画像生成モデルM2に入力される。そして、外観の異常の無い同じラベルLを表す再構成画像OIgのデータが生成されるように、画像生成モデルM2が訓練される。訓練済の画像生成モデルM2は、
図3(A)-
図3(C)で説明したように、外観の異常を有するラベルの画像から、外観の異常の無いラベルの再構成画像を生成可能である。
【0032】
エンコーダVeの構成は、入力画像IIgのデータから潜在変数ベクトルzを算出する種々の構成であってよい。本実施例では、エンコーダVeは、畳込層Ve21、Ve22と、全結合層Ve23、Ve24と、演算層Ve25と、を有している。
【0033】
入力画像IIgのデータは、第1畳込層Ve21に入力される。第1畳込層Ve21から出力されるデータは、第2畳込層Ve22に入力される。畳込層Ve21、Ve22は、入力されるデータに対して、畳込処理とバイアスの加算処理とを含む処理を実行する。畳込層Ve21、Ve22は、畳込処理に用いられる複数のフィルタの複数の重みと複数のバイアスとを含む演算パラメータのセットを、それぞれ有している。畳込層Ve21、Ve22のそれぞれの活性化関数は、例えば、Relu(Rectified Linear Unit)である。
【0034】
第1全結合層Ve23は、第2畳込層Ve22から出力されるデータを使用して、潜在変数ベクトルzの複数の要素のそれぞれの確率分布の平均を示す平均ベクトルμを生成する。第2全結合層Ve24は、第2畳込層Ve22から出力されるデータを使用して、潜在変数ベクトルzの複数の要素のそれぞれの確率分布の標準偏差を示す標準偏差ベクトルσを生成する。全結合層Ve23、Ve24は、それぞれ、入力されるデータによって表されるベクトルと重みベクトルとの内積とバイアスとの和を活性化関数に入力することによって、出力用のデータを生成する。全結合層Ve23、Ve24は、それぞれ、重みベクトルとバイアスとを含む演算パラメータのセットを有している。全結合層Ve23、Ve24のそれぞれの活性化関数は、例えば、Reluである。
【0035】
演算層Ve25は、平均ベクトルμと標準偏差ベクトルσとによって定められる複数の確率分布に基づいて、潜在変数ベクトルzの複数の要素を決定する。ここで、上記の論文で説明されている「再パラメータ化トリック(reparameterization trick)」と呼ばれる技術に従って、潜在変数ベクトルzが決定される。本実施例では、演算層Ve25は、ゼロの平均と1の分散とによって定められる正規分布(N(0,1))に基づく複数の乱数値で構成されるノイズベクトルを生成する。演算層Ve25は、ノイズベクトルと標準偏差ベクトルσとの積(ここでは、要素毎の積)に、平均ベクトルμを加算することによって、潜在変数ベクトルzを算出する。
【0036】
デコーダVdの構成は、潜在変数ベクトルzから再構成画像OIgを生成する種々の構成であってよい。本実施例では、デコーダVdは、全結合層Vd21と、全結合層Vd21の下流側に直列に接続される転置畳込層Vd22、Vd23と、を有している。
【0037】
エンコーダVeからの潜在変数ベクトルzは、全結合層Vd21に入力される。全結合層Vd21は、潜在変数ベクトルzと重みベクトルとの内積とバイアスとの和を活性化関数に入力することによって、出力用のデータを生成する。全結合層Vd21は、重みベクトルとバイアスとを含む演算パラメータのセットを有している。全結合層Vd21の活性化関数は、例えば、Reluである。
【0038】
転置畳込層Vd22、Vd23は、入力されるデータに対して、転置畳込処理とバイアスの加算処理とを含む処理を実行する。転置畳込処理は、入力されるデータに対して、ストライドとパディングとに応じて適宜に要素(例えばゼロを示す要素)を追加して要素数を増加させた後に、フィルタを用いる畳込み演算を行う処理である。最後の転置畳込層Vd23から出力されるデータは、再構成画像OIgを表している。転置畳込層Vd22、Vd23は、転置畳込処理に用いられる複数のフィルタの複数の重みと複数のバイアスとを含む演算パラメータのセットを、それぞれ有している。最後の転置畳込層Vd23の活性化関数は、再構成画像OIgの生成に適した関数(例えば、Sigmoid関数、または、Tanh関数)である。他の転置畳込層Vd22の活性化関数は、例えば、Reluである。
【0039】
なお、各層Ve21-Ve25、Vd21-Vd23の入力データの構成と出力データの構成とは、種々の構成であってよい。本実施例では、入力画像IIgと再構成画像OIgとは、それぞれ、赤R、緑G、青Bの3チャンネルで各画素の色を示すカラービットマップデータである。入力画像IIgのデータの要素数(ここでは、高さ*幅*チャンネル数)は、256*512*3であってよい。RGBのそれぞれの色値は、ゼロから255までの256階調で表されてよい。なお、高さは、第2方向Dy(
図4(A))の画素数を示し、幅は、第1方向Dxの画素数を示している。エンコーダVeは、高さに相当する要素数と幅に相当する要素数とを低減してよい。例えば、畳込層Ve21、Ve22は、データの要素数を、「256*512*3」から、「128*256*64」、「64*128*128」の順に、変化させてよい。全結合層Ve23、Ve24は、それぞれ、データの要素数を、「64*128*128」から「32(すなわち、1*1*32)」に変化させてよい。このように、平均ベクトルμと標準偏差ベクトルσと潜在変数ベクトルzとは、それぞれ、32個の要素で構成されてよい。デコーダVdは、高さに相当する要素数と幅に相当する要素数とを増大してよい。例えば、デコーダVdの全結合層Vd21は、データの要素数を、「32」から「64*128*128」に変化させてよい。転置畳込層Vd22、Vd23は、データの要素数を、「64*128*128」から、「128*256*64」、「256*512*3」の順に変化させてよい。いずれの場合も、再構成画像OIgのデータ構成(具体的には、高さ*幅*チャンネル数)は、入力画像IIgのものと同じに設定される。
【0040】
画像生成モデルM2の複数の演算パラメータは、後述する訓練処理によって、調整される。
【0041】
A5.画像生成モデルM2の訓練処理:
図6は、画像生成モデルM2の訓練処理の例を示すフローチャートである。データ処理装置100(
図1)のプロセッサ110は、第1プログラム131を実行することによって、画像生成モデルM2を訓練する。訓練前には、画像生成モデルM2の複数の演算パラメータは、乱数値などの初期値に設定されている。
【0042】
S110では、プロセッサ110(
図1)は、不揮発性記憶装置130から版下画像D1のデータを取得する。版下画像D1は、外観の異常の無いラベルL(
図2(B))を表す画像であり、ラベルLの製造のために予め準備されている。製品300の製造工程では、版下画像D1がシートに印刷されることによって、ラベルLが形成される。
【0043】
S120では、プロセッサ110は、版下画像D1のデータの拡張処理を実行する。データ拡張処理は、画像処理によって画像データを増やす処理である。画像処理は、版下画像D1から外観の異常の無いラベルLを表す他の画像を生成する種々の処理であってよい。本実施例では、プロセッサ110は、リサイズ処理、回転処理、明度変更処理、色変更処理、ぼかし処理、ノイズ付加処理から乱数を使用して1以上の画像処理を選択する。プロセッサ110は、選択された1以上の画像処理を版下画像D1のデータに対して実行することによって、処理済の版下画像のデータを生成する。
【0044】
リサイズ処理は、画像中のラベルLの大きさ(すなわち、画素数)を変更する種々の処理であってよい。例えば、プロセッサ110は、乱数を使用して決定される比率に従って画像中のラベルLのサイズを変更してよい。比率は、例えば、0.8以上、1.2以下の範囲内で決定されてよい。
【0045】
回転処理は画像中のラベルLの回転位置を変更する種々の処理であってよい。例えば、プロセッサ110は、乱数を使用して決定される回転角度に従って画像中のラベルLをラベルLの重心を中心に回転してよい。回転角度は、例えば、-3度以上、+3度以下の範囲内で決定されてよい(正の回転角度は、時計回りの回転を示し、負の回転角度は、反時計回りの回転を示す)。
【0046】
なお、リサイズ処理と回転処理とによる各画素の色値の決定方法は、種々の方法であってよい(例えば、ニアレストネイバ、バイリニア、バイキュービックなど)。
【0047】
明度変更処理は、画像の全体の明るさを変更する種々の処理であってよい。例えば、プロセッサ110は、乱数を使用して決定されるガンマ値によって表されるガンマカーブを使用して、R、G、Bのそれぞれの階調値を調整してよい。ガンマ値は、例えば、0.7以上、1.3以下の範囲内で決定されてよい。
【0048】
色変更処理は、画像の色を変更する種々の処理であってよい。例えば、プロセッサ110は、R、G、Bのそれぞれの階調値に、色成分毎に乱数を使用して決定される変更量を加算してよい。変更量は、例えば、-10以上、+10以下の範囲内で決定されてよい。
【0049】
ぼかし処理は、画像中のラベルLをぼかす種々の処理であってよい。ぼかし処理は、平滑化とも呼ばれる。例えば、プロセッサ110は、平滑化フィルタ(例えば、中央値フィルタ)を使用するフィルタ処理を実行してよい。
【0050】
ノイズ付加処理は、画像にノイズを付加する種々の処理であってよい。例えば、プロセッサ110は、乱数を使用して選択される複数の画素のR、G、Bのそれぞれの階調値に、色成分毎に乱数を使用して決定される変更量を加算してよい。変更量は、画素毎に決定されてよい。
【0051】
データ拡張処理は、これらの処理に加えて、他の画像処理(例えば、位置をシフトする処理)を含んでよい。また、データ拡張処理は、これらの処理の全部または一部に代えて、他の画像処理を含んでよい。
【0052】
S130では、プロセッサ110(
図1)は、不揮発性記憶装置130の背景画像群D2のデータから1個の処理対象の背景画像のデータを取得する。本実施例では、背景画像群D2の各背景画像は、様々な被写体(例えば、風景、装置(例えば、複合機)など)をデジタルカメラを用いて撮影して得られる撮影画像である。これに限らず、背景画像は、絵や写真などの原稿をスキャナによって読み取って得られる読取画像を含んでよく、イラストなどのコンピュータによって生成された画像を含んでよい。
【0053】
S140では、プロセッサ110は、S130で取得された背景画像のデータと、S120で生成された処理済の版下画像のデータと、を使用して、合成画像のデータを生成する。合成画像は、背景画像上に処理済の版下画像を重畳して得られる画像を表している。プロセッサ110は、背景画像上の処理済の版下画像の重畳位置を、乱数を使用して決定する。例えば、重畳位置は、処理済の版下画像の全体が背景画像内に位置する範囲内で決定される。
【0054】
S150では、プロセッサ110は、合成画像のデータの拡張処理を実行する。拡張処理は、S120の拡張処理と同様に、1以上の画像処理から選択される。プロセッサ110は、乱数を使用して1以上の画像処理を選択し、選択された1以上の画像処理を合成画像のデータに対して実行することによって、処理済の合成画像のデータを生成する。なお、プロセッサ110は、画像生成モデルM2に受け入れられるデータ構成(ここでは、高さ*幅*チャンネル数)を有する処理済の合成画像のデータを生成する。S120、S150の拡張処理(例えば、回転処理やリサイズ処理など)によって隙間(すなわち、色値が定義されていない部分)が生じる場合、プロセッサ110は、隙間の画素の色を所定の色(例えば、白色)に設定してよい。
【0055】
S170では、プロセッサ110は、処理済の合成画像のデータを、訓練画像データとして、記憶装置115(例えば、不揮発性記憶装置130)に格納する。訓練画像データによって表される訓練画像は、版下画像D1と同様に外観の異常の無いラベルLを表している。ただし、訓練画像と版下画像D1との間では、画像の全体の明るさ、画像中のラベルLの傾き、画像中のラベルLの大きさ、画像中のラベルLの位置、ラベルLのボケの度合い、などのラベルLの表現に関する種々のパラメータが異なっている。
【0056】
S180では、プロセッサ110は、訓練画像データの生成を終了するための生成終了条件が満たされるか否かを判定する。生成終了条件は、画像生成モデルM2の訓練のための複数の訓練画像データが生成済であることを示す種々の条件であってよい。本実施例では、生成終了条件は、生成済の訓練画像データの総数が所定の閾値(例えば、数百、数千程度)以上であることである。
【0057】
生成終了条件が満たされない場合(S180:No)、プロセッサ110は、S120へ移行して、新たな訓練画像データを生成する。生成終了条件が満たされる場合(S180:Yes)、プロセッサ110は、S210へ移行する。
【0058】
S210では、プロセッサ110は、S120-S170で生成済の複数の訓練画像データから、未処理の複数の訓練画像データで構成されるサブセットを選択する。サブセットの画像データの総数は、予め決められている。
【0059】
S220では、プロセッサ110は、サブセットに含まれる訓練画像データを画像生成モデルM2に入力することによって、画像データを生成する(生成画像データと呼ぶ)。プロセッサ110は、訓練画像データを使用して、画像生成モデルM2の演算を進行する。プロセッサ110は、画像生成モデルM2の演算の一部、または、全部を、GPU190に実行させてよい。
【0060】
S230では、プロセッサ110は、訓練画像データと生成画像データとを使用して、評価値を算出する。評価値の算出は、訓練画像データ毎に行われる。そして、プロセッサ210は、サブセットに含まれる複数の訓練画像データから算出される複数の評価値を使用して、損失を算出する。損失は、例えば、複数の評価値の合計値であってよい。
【0061】
評価値の算出方法は、画像生成モデルM2の訓練に適する任意の方法であってよい。評価値は、訓練画像と生成画像との間の差の大きさを示すことが好ましい。本実施例では、評価値は、変分オートエンコーダの上記の論文で説明されている再構成誤差と正則化項との和である。再構成誤差は、例えば、訓練画像と生成画像との間のクロスエントロピーロスであってよい。正則化項は、例えば、潜在変数の確率分布と、正規分布(平均=ゼロ、標準偏差=1)と、の一致の度合いを示すカルバック・ライブラー・ダイバージェンスを使用して算出されてよい。本実施例では、潜在変数ベクトルz(
図5)の各要素が、潜在変数を示している。各潜在変数の確率分布は、平均ベクトルμと標準偏差ベクトルσとの対応する要素によって表される平均と標準偏差とによって定められる。
【0062】
S240では、プロセッサ110は、損失を使用して画像生成モデルM2の複数の演算パラメータを調整する。本実施例では、プロセッサ110は、損失が小さくなるように、複数の演算パラメータを調整する。調整方法は、任意の方法であってよい。例えば、誤差逆伝播法と勾配降下法とを使用する方法が、採用されてよい。ここで、プロセッサ110は、いわゆるAdamの最適化を行ってよい。プロセッサ110は、複数の演算パラメータを調整するための演算の一部、または、全部を、GPU190に実行させてよい。
【0063】
S250では、プロセッサ110は、画像生成モデルM2の訓練を終了するための訓練終了条件が満たされるか否かを判定する。訓練終了条件は、画像生成モデルM2が適切に訓練されたことを示す任意の条件であってよい。訓練終了条件は、例えば、S230で算出される損失が所定の損失閾値以下であることであってよい。これに代えて、訓練終了条件は、繰り返されるS230で算出される損失の変化量が所定の変化量閾値以下であること、または、S240の繰り返しの回数が所定の回数閾値以上であること、であってよい。
【0064】
訓練終了条件が満たされない場合(S250:No)、プロセッサ110は、S210へ移行し、新たなサブセットの処理を実行する。訓練終了条件が満たされる場合(S250:Yes)、S260で、プロセッサ110は、訓練済の画像生成モデルM2を表すデータを、記憶装置115(ここでは、不揮発性記憶装置130)に格納する。そして、プロセッサ110は、
図6の処理を終了する。
【0065】
以上のように、画像生成モデルM2は、外観の異常の無いラベルLの画像データから、外観の異常の無い同じラベルの画像データを生成するように訓練される。すなわち、画像生成モデルM2は、外観の異常の無いラベルLの画像の特徴を再構成するように、訓練される。従って、画像生成モデルM2に入力される画像データが外観の異常を有するラベルLb、Lc(
図3(B)、
図3(C))を表す場合であっても、訓練済の画像生成モデルM2によって生成される画像データは、外観の異常の無いラベルLbg、Lcgを表すことが可能である。このように、画像生成モデルM2は、画像生成モデルM2に入力される画像中のラベルが外観の異常を有するか否かに拘わらずに、外観の異常の無いラベルを表す画像データを生成するように、訓練される。
【0066】
また、画像生成モデルM2は、画像生成モデルM2に入力される訓練画像と同じ再構成画像を生成するように、訓練される。従って、画像生成モデルM2に入力される画像のラベルの明るさが、画像生成モデルM2の訓練に使用される訓練画像のラベルの明るさと同程度である場合、画像生成モデルM2は、適切な再構成画像を生成できる。画像生成モデルM2の訓練に使用される複数の訓練画像のラベルの明るさの分布範囲は、適切な再構成画像を生成するためのラベルの適切な明るさの範囲を示している。画像中のラベルの明るさが訓練画像中のラベルの明るさと大きく異なる場合、
図4(B)、
図4(C)で説明したように、画像生成モデルM2は、不適切な再構成画像を生成し得る。
【0067】
A6.検査処理:
図7は、製品300(
図2(A))のラベルLの検査処理の例を示すフローチャートである。データ処理装置100(
図1)のプロセッサ110は、第2プログラム132を実行することによって、検査処理を実行する。
図2(A)で説明したように、検査のために、製品300と撮影装置400との間の相対的な配置が調整される。本実施例では、機械(ベルトコンベア、または、ターンテーブルなど)によって製品300の位置と向きとが調整される。製品300の配置の後、検査処理の開始指示が、データ処理装置100に入力される。本実施例では、作業者は、操作部150を操作することによって、開始指示を入力する。プロセッサ110は、開始指示に応じて、検査処理を開始する。なお、製品300の配置は、作業者によって調整されてよい。製品300の位置と向きとに代えて、撮影装置400の位置と向きとが調整されてよい。開始指示は、データ処理装置100とは異なる他の装置によって、通信インタフェース170を介して、データ処理装置100に入力されてよい。
図7の処理は、1個の製品300の検査処理を示している。プロセッサ110は、複数個の製品300のそれぞれを検査するために、
図7の処理を繰り返す。
【0068】
S310では、プロセッサ110は、撮影指示を撮影装置400に供給する。撮影装置400は、撮影指示に応じて、製品300のうちのラベルLを含む部分を撮影し、撮影画像のデータを生成する。プロセッサ110は、撮影装置400から、撮影画像のデータを取得する。この撮影画像は、
図2(C)の撮影画像i1のように、製品300のうちのラベルLを含む部分を表している。
【0069】
S320では、プロセッサ110は、判定実行条件が満たされるか否かを判定する。判定実行条件は、後述する画像判定処理を実行するための条件である。本実施例では、判定実行条件は、現行の検査処理が、画像判定処理を伴う最後の検査処理から数えて100回目の検査処理であることである。すなわち、100回に1回の割合で、判定実行条件が満たされる。
【0070】
判定実行条件が満たされる場合(S320:Yes)、S330で、プロセッサ110は、画像判定処理を実行する。
図8は、画像判定処理の例を示すフローチャートである。S460では、プロセッサ110は、撮影画像からラベルL(
図2(B))を表す部分画像(すなわち、ラベル部分画像)を検出し、ラベル部分画像のデータを取得する。
図2(D)のラベル部分画像i2は、
図2(C)の撮影画像i1から検出されるラベル部分画像の例である。
【0071】
ラベルLを表す部分の検出方法は、任意の方法であってよい。本実施例では、プロセッサ110は、ラベルLを検出するように訓練済の物体検出モデルM1を使用して、ラベルLを検出する。物体検出モデルM1は、種々の物体検出モデルであってよい。本実施例では、物体検出モデルM1は、YOLOv4と呼ばれる機械学習モデルである。YOLOv4は、例えば、以下の論文に開示されている。
Alexey Bochkovskiy, Chien-Yao Wang, Hong-Yuan Mark Liao, "YOLOv4: Optimal Speed and Accuracy of Object Detection", arXiv:2004.10934, https://arxiv.org/abs/2004.10934
【0072】
YOLOv4モデルは、オブジェクト(本実施例では、ラベルL)を表す領域(バウンディングボックスとも呼ばれる)を予測する。物体検出モデルM1の訓練方法は、ラベルLを表すバウンディングボックスを検出するように物体検出モデルM1を訓練する任意の方法であってよい。例えば、上記論文に記載の訓練方法が採用されてよい。
【0073】
S460(
図8)では、プロセッサ110は、撮影画像データを使用して物体検出モデルM1の演算を進行することによって、ラベルLを表すバウンディングボックスを検出する。
図2(C)のバウンディングボックスBBは、撮影画像i1から検出されるバウンディングボックスの例である。バウンディングボックスBBは、ラベルLを囲んでいる。なお、プロセッサ110は、物体検出モデルM1の演算の一部、または、全部を、GPU190に実行させてよい。
【0074】
プロセッサ110は、撮影画像のデータに対するトリミング処理を実行することによって、撮影画像のうちのバウンディングボックスを含む領域を抽出する。
図2(C)の領域EAは、撮影画像i1から抽出される領域の例である。領域EAは、バウンディングボックスBBを含んでいる。
【0075】
バウンディングボックスのアスペクト比(ここでは、高さと幅の比率)は、画像生成モデルM2に受け入れられるアスペクト比である処理アスペクト比と異なる場合がある。この場合、プロセッサ110は、バウンディングボックスを含むとともに処理アスペクト比を有する領域を、抽出する。ここで、プロセッサ110は、バウンディングボックスを含む最小領域を抽出してよい。なお、ラベルLの一部は、バウンディングボックスの外にはみ出得る。プロセッサ110は、バウンディングボックスと、バウンディングボックスを囲む周辺領域(例えば、所定幅の領域)と、を含む最小領域を抽出してよい。バウンディングボックスと周辺領域を含む領域は、ラベルLの全体を含むことができる。バウンディングボックスに対する抽出される領域の位置は、種々の位置であってよい。例えば、抽出される領域の重心位置は、バウンディングボックスの重心位置に配置されてよい。
【0076】
プロセッサ110は、抽出された領域の画像に対する解像度変換処理を実行することによって、ラベル部分画像のデータを取得する。ラベル部分画像のデータは、画像生成モデルM2(
図5)に受け入れられるデータ構成(具体的には、高さ*幅*チャンネル数)を有している。
図2(D)のラベル部分画像i2は、撮影画像i1(
図2(C))から抽出される領域EAの画像を、表している。解像度変換処理による各画素の色値の決定方法は、種々の方法であってよい(例えば、ニアレストネイバ、バイリニア、バイキュービックなど)。
【0077】
S505(
図8)では、プロセッサ110は、ラベル部分画像のデータを使用して、画像生成モデルM2の演算を進行することによって、再構成画像のデータを生成する。
図3(A)-
図3(C)に示すように、ラベルが外観の異常を有するか否かに拘わらずに、再構成画像は、外観の異常の無いラベルを表し得る。ただし、
図4(B)、
図4(C)に示すように、ラベル部分画像中のラベルの明るさが不適切である場合、再構成画像は、不適切なラベルを表し得る。なお、プロセッサ110は、画像生成モデルM2の演算の一部、または、全部を、GPU190に実行させてよい。
【0078】
S510(
図8)では、プロセッサ110は、ラベル部分画像の各画素の輝度Vを取得する。本実施例では、プロセッサ110は、元の色値(本実施例では、RGBの3色成分の階調値)と輝度Vとの予め決められた対応関係を使用して、輝度Vを算出する。対応関係は、例えば、RGB色空間とHSV色空間との対応関係であってよい。
【0079】
S515では、プロセッサ110は、再構成画像の各画素の輝度Vを取得する。輝度Vの取得方法は、S510での輝度Vの取得方法と同じである。
【0080】
S520では、プロセッサ110は、ラベル部分画像の輝度VのヒストグラムHIを生成する。S525では、プロセッサ110は、再構成画像の輝度VのヒストグラムHRを生成する。
図9(A)-
図9(C)は、ヒストグラムの例を示す図である。
図9(A)-
図9(C)には、ラベル部分画像i2a、i2x、i2zと、再構成画像i2ag、i2xg、i2zgと、グラフと、が示されている。グラフには、ラベル部分画像のヒストグラムHI(入力ヒストグラムHIと呼ぶ)と再構成画像のヒストグラムHR(再構成ヒストグラムHRと呼ぶ)とが重ねて示されている。横軸は、輝度Vを示し、縦軸は、頻度Fを示している。
【0081】
図9(A)は、
図4(A)のラベル部分画像i2aと再構成画像i2agとから得られるグラフの例を示している。ラベル部分画像i2aが適切な明るさのラベルLaを表す場合、再構成画像i2agは、ラベル部分画像i2aのラベルLaの明るさと同程度の明るさでラベルLagを表し得る。再構成ヒストグラムHRは、入力ヒストグラムHIに類似する。
【0082】
図9(B)は、
図4(B)のラベル部分画像i2xと再構成画像i2xgとから得られるグラフの例を示している。
図6で説明したように、画像生成モデルM2は、訓練画像のラベルの明るさと同程度の明るさのラベルを表す画像を生成するように、訓練される。従って、ラベル部分画像i2xのラベルLaが過度に暗い場合、画像生成モデルM2は、訓練画像のラベルの明るさと同程度の明るさのラベルを表す画像、すなわち、ラベル部分画像i2xのラベルLaの明るさよりも明るいラベルLaxを表す再構成画像i2xgを生成する。グラフに示すように、再構成ヒストグラムHRと入力ヒストグラムHIとの間の差は、大きい。具体的には、高い輝度Vの範囲では、再構成ヒストグラムHRの頻度Fは大きく、入力ヒストグラムHIの頻度Fは小さい。
【0083】
図9(C)は、
図4(C)のラベル部分画像i2zと再構成画像i2zgとから得られるグラフの例を示している。ラベル部分画像i2zのラベルLaが過度に明るい場合、画像生成モデルM2は、訓練画像のラベルの明るさと同程度の明るさのラベルを表す画像、すなわち、ラベル部分画像i2zのラベルLaの明るさよりも暗いラベルLazを表す再構成画像i2zgを生成する。グラフに示すように、再構成ヒストグラムHRと入力ヒストグラムHIとの間の差は、大きい。具体的には、高い輝度Vの範囲では、再構成ヒストグラムHRの頻度Fは小さく、入力ヒストグラムHIの頻度Fは大きい。
【0084】
S530(
図8)では、プロセッサ110は、ラベル部分画像の入力ヒストグラムHIと再構成画像の再構成ヒストグラムHRとの間の差異の指標値を算出する(入力指標値とも呼ぶ)。入力指標値は、入力ヒストグラムHIと再構成ヒストグラムHRとの間の差の大きさを表す種々の値であってよい。本実施例では、プロセッサ110は、入力ヒストグラムHIと再構成ヒストグラムHRとの相関を、入力指標値として算出する。
図10(A)は、相関cの算出式の例を示す図である。この相関cは、ピアソンの積率相関係数である。ピアソンの積率相関係数は、2個のデータセットの間の線形相関を表す尺度である。ピアソンの積率相関係数は、2個のデータセットの共分散を標準偏差の積で除算することによって、算出される。本実施例では、ヒストグラムHI、HRが、1番からn番までのn個の区間(ビンとも呼ばれる)のそれぞれの頻度Fを示すこととする。すなわち、輝度Vの全範囲は、n個の区間に分割される。
図10(A)において、頻度HI_kは、入力ヒストグラムHIのk番目の区間の頻度である。頻度HR_kは、再構成ヒストグラムHRのk番目の区間の頻度である。平均HI_mは、入力ヒストグラムHIのn個の頻度Fの平均である。平均HR_mは、再構成ヒストグラムHRのn個の頻度Fの平均である。
【0085】
図9(A)のように、再構成ヒストグラムHRが入力ヒストグラムHIに類似する場合、相関cは、大きくなる。
図9(B)、
図9(C)のように、ヒストグラムHR、HIの間の差が大きい場合、相関cは小さくなる。
【0086】
S540(
図8)では、プロセッサ110は、入力指標値を使用して、ヒストグラムHI、HRの間の差異が差異閾値以上であるか否かを判定する。本実施例では、プロセッサ110は、相関cが所定の第1判定閾値以下である場合に、差異が差異閾値以上であると判定する。
図9(A)のヒストグラムHI、HRが処理される場合、相関cが第1判定閾値より大きい(すなわち、ヒストグラムの差異が差異閾値未満である)と判定される。
図9(B)、
図9(C)のヒストグラムHI、HRが処理される場合、相関cが第1判定閾値以下である(すなわち、ヒストグラムの差異が差異閾値以上である)と判定される。ヒストグラムの図示を省略するが、
図3(B)、
図3(C)のラベル部分画像i2b、i2cと再構成画像i2bg、i2cgとが処理される場合、ヒストグラムの差異が差異閾値未満であると判定される。差異閾値(ここでは、第1判定閾値)は、ラベル部分画像のラベルの明るさが適切である場合に、ヒストグラムHI、HRの間の差異が差異閾値未満であり、かつ、ラベル部分画像のラベルの明るさが不適切である場合に、ヒストグラムHI、HRの間の差異が差異閾値以上であるように、予め実験的に決定される。
【0087】
S540の判定結果がYesである場合(すなわち、ヒストグラムHI、HRの間の差が閾値以上である場合)、S550で、プロセッサ110は、第1判定結果処理を実行する。第1判定結果処理は、S540の判定結果(ここでは、Yes)に対応付けられる任意の処理であってよい。本実施例では、第1判定結果処理は、S552、S554、S556を含んでいる。S552では、プロセッサ110は、画像判定の結果を「明るさ異常」に決定する。S554では、プロセッサ110は、画像判定の結果を、作業者に報知する。報知の方法は、作業者に画像判定の結果を伝達可能な任意の方法であってよい。例えば、プロセッサ110は、画像判定の結果を示す情報を、表示部140に表示してよい。S556では、プロセッサ110は、画像判定の結果を示す結果データを、記憶装置115(例えば、不揮発性記憶装置130)に格納する。S550の後、プロセッサ110は、
図8の処理、すなわち、
図7のS330の処理を終了する。
【0088】
なお、本実施例では、画像判定の結果が「明るさ異常」である場合、S554で結果の報知を受けた作業者は、次の検査処理の開始前に(例えば、S550の後のS559で)、光源500の光量を適切な光量に調整する。これにより、次の検査処理では、撮影装置400は、適切な明るさでラベルを表す撮影画像を生成可能である。
【0089】
S540(
図8)の判定結果がNoである場合(すなわち、ヒストグラムHI、HRの間の差が閾値未満である場合)、S560で、プロセッサ110は、第2判定結果処理を実行する。第2判定結果処理は、S540の判定結果(ここでは、No)に対応付けられる任意の処理であってよい。本実施例では、第2判定結果処理は、S562、S564、S566を含んでいる。S562では、プロセッサ110は、画像判定の結果を「明るさ正常」に決定する。S564、S566は、S550に含まれるS554、S556と、それぞれ同じである。S560の後、プロセッサ110は、
図8の処理、すなわち、
図7のS330の処理を終了する。
【0090】
S340(
図7)では、プロセッサ110は、画像判定の結果が「明るさ正常」であるか否かを判定する。結果が「明るさ正常」である場合(S340:Yes)、S360で、プロセッサ110は、ラベル部分画像と再構成画像とを使用して、異常部分検出処理を実行する。
【0091】
図11は、異常部分検出処理の例を示すフローチャートである。S362では、プロセッサ110は、ラベル部分画像によって表されるラベルの外観の異常の可能性を示すヒートマップ画像のデータを生成する。
図12(A)は、ヒートマップ画像の例を示す図である。本実施例では、ヒートマップ画像は、ラベル部分画像と再構成画像との間の差分を示す差分画像である。図中の差分画像i2bdは、
図3(B)のラベル部分画像i2bと再構成画像i2bgとから生成される差分画像の例を示している。上述したように、再構成画像は、ラベル部分画像と同一ではない。従って、差分画像は、ラベルの外観の異常に限らず、種々のノイズを示し得る。例えば、差分画像i2bdは、傷Dbdに加えて、複数のノイズ部分D21、D22、D23を、示し得る(
図3(B)では、ノイズ部分D21、D22、D23の図示は省略されている)。
【0092】
差分画像の各画素の色値は、ラベル部分画像と再構成画像との対応する画素の色値の差の大きさを示す種々の値であってよい。本実施例では、差分画像の画素の色値は、輝度Vの差分の絶対値を示している。なお、差分画像の色値は、複数の色成分(例えば、RGB)のそれぞれの階調値(例えば、差分の絶対値)を示してよい。
【0093】
S364(
図11)では、プロセッサ110は、差分画像から、所定の階調閾値以上の階調値を有する異常画素を抽出する。
図12(B)の画像i2bpは、差分画像i2bd(
図12(A))から抽出される異常画素の例を示している。傷Dbdとノイズ部分D21、D22を示す画素が、抽出されている。ノイズ部分D23(
図12(A))は、抽出されていない。小さい差分を示すノイズは、除去される。階調閾値は、ノイズを示す画素の階調値(すなわち差分)が階調閾値より小さく、かつ、異常を示す画素の階調値が階調閾値よりも大きいように、予め実験的に決定される。
【0094】
S366(
図11)では、プロセッサ110は、所定の面積閾値以上の面積を有する連続領域を、異常部分として抽出する。連続領域は、複数の異常画素が連続する領域である。面積としては、例えば、画素数が使用される。
図12(C)の画像i2bnは、
図12(B)の画像i2bpから抽出される異常部分の例を示している。傷Dbdを示す連続領域が、異常部分として抽出され、小さいノイズ部分D21、D22(
図12(B))は抽出されていない。面積の小さいノイズは、除去される。面積閾値は、ノイズを示す連続領域の面積が面積閾値より小さく、かつ、異常を示す連続領域の面積が面積閾値よりも大きいように、予め実験的に決定される。
【0095】
図3(A)に示すようにラベルLaに外観の異常が無い場合、異常部分の無い差分画像i2adが生成され得る。このような差分画像i2adからは、異常部分は検出されない。
【0096】
S366(
図11)の後、プロセッサ110は、
図11の処理、すなわち、
図7のS360の処理を、終了する。
【0097】
S370では、プロセッサ110は、異常部分が検出されるか否かを判定する。異常部分が検出されない場合(S370:No)、S380で、プロセッサ110は、第1検査結果処理を実行する。第1検査結果処理は、異常部分が検出されない場合に対応付けられる任意の処理であってよい。本実施例では、プロセッサ110は、検査結果が正常であることを示す検査結果データを記憶装置115(例えば、不揮発性記憶装置130)に格納する。S380の後、プロセッサ110は、検査処理を終了する。
【0098】
異常部分が検出される場合(S370:Yes)、S390で、プロセッサ110は、第2検査結果処理を実行する。第2検査結果処理は、異常部分が検出される場合に対応付けられる任意の処理であってよい。本実施例では、プロセッサ110は、検査結果が異常であることを示す検査結果データを記憶装置115(例えば、不揮発性記憶装置130)に格納する。S390の後、プロセッサ110は、検査処理を終了する。
【0099】
S340で、画像判定の結果が「明るさ正常」とは異なる場合(S340:No)、プロセッサ110は、ラベルの外観の検査を実行せずに、
図7の処理を終了する。従って、
図4(B)、
図4(C)の再構成画像i2xg、i2zgのような不適切な再構成画像を使用して検査が行われる可能性は、低減する。
【0100】
判定実行条件が満たされない場合(
図7:S320:No)、S350で、プロセッサ110は、ラベル検出処理を実行する。S350の処理は、
図8のS460の処理と同じである。S350の後、S355で、プロセッサ110は、再構成画像のデータを生成する。S355の処理は、
図8のS505の処理と同じである。S355の後、プロセッサ110は、S360へ移行する。このように、判定実行条件が満たされない場合には、プロセッサ110は、画像判定処理をスキップする。S550、S559(
図8)で説明したように、本実施列では、画像判定の結果が「明るさ異常」である場合、作業者は、光源500の光量を適切な光量に調整する。従って、画像判定処理が実行される場合、その後のしばらくの間(猶予期間と呼ぶ)は、撮影装置400は適切な明るさでラベルを表す撮影画像のデータを生成できると推定される(すなわち、猶予期間では、画像判定処理は不要と推定される)。判定実行条件は、猶予期間中には満たされず、猶予期間の経過後に満たされるように、予め決定される。本実施例では、猶予期間は、99回の検査処理が行われる期間である。猶予期間は、検査処理の回数に代えて、時間(例えば、日、時など)によって定められてよい。ラベル部分画像中のラベルの明るさは、光源500の光量の変化などの環境の変化に起因して変化し得る。猶予期間は、ラベル部分画像中のラベルの明るさが適切な範囲内に維持される期間に、予め、実験的に決定されてよい。
【0101】
以上のように、本実施例では、プロセッサ110は、以下の処理を実行する。
図3(A)-
図3(C)、
図9(A)-
図9(C)で説明したように、S520(
図8)では、プロセッサ110は、ラベル部分画像(例えば、ラベル部分画像i2a-i2c、i2x、i2z)の輝度VのヒストグラムHIを生成する(以下、ヒストグラムHIを、第1ヒストグラムHIとも呼ぶ)。第1ヒストグラムHIは、輝度Vの強度分布を表している。輝度Vは、ヒストグラムHIによって表される強度分布の色成分である対象色成分の例である。ラベル部分画像は、処理対象の画像である入力画像の例である。本実施例では、ラベル部分画像は、ラベルを表している(例えば、ラベルLa-Lc(
図3(A)-
図3(B)、
図9(A)-
図9(C))。ラベルは、注目しているオブジェクトである注目オブジェクトの例である。
【0102】
図3(A)-
図3(C)に示すように、S505(
図8)では、プロセッサ110は、画像生成モデルM2にラベル部分画像(例えば、ラベル部分画像i2a-i2c、i2x、i2z)のデータを入力することによって、再構成画像(例えば、再構成画像i2ag-i2cg、i2xg、i2zg)のデータを生成する。
図3(A)-
図3(C)、
図6で説明したように、画像生成モデルM2は、外観の異常を有するラベル(例えば、ラベルLb、Lc)を表す画像データから外観の異常の無いラベル(例えば、Lbg、Lcg)を表す画像データを生成するように訓練済である。
【0103】
図9(A)-
図9(C)で説明したように、S525(
図8)では、プロセッサ110は、再構成画像(例えば、再構成画像i2ag、i2xg、i2zg)の輝度VのヒストグラムHRを生成する(以下、ヒストグラムHRを、第2ヒストグラムHRとも呼ぶ)。第2ヒストグラムHRは、輝度Vの強度分布を表している。
【0104】
S540、S550(
図8)では、プロセッサ110は、相関cが第1判定閾値以下である場合に(S540:Yes)、第1判定結果処理(S550)を実行する。S540、
図10(A)で説明したように、相関cは、第1ヒストグラムHIと第2ヒストグラムHRとの間の相関を表している。相関cは、第1ヒストグラムHIと第2ヒストグラムHRとの類似度を示している。相関cが第1判定閾値以下であることは、第1ヒストグラムHIと第2ヒストグラムHRとの間の差異が差異閾値以上であることを示している(第1判定閾値は、差異閾値を示すパラメータの例である)。第1判定結果処理は、第1ヒストグラムHIと第2ヒストグラムHRとの間の差異が差異閾値以上である場合に対応付けられる特定の処理の例である。
【0105】
このように、プロセッサ110は、第1ヒストグラムHIと第2ヒストグラムHRとの間の差異が差異閾値以上である場合に第1判定結果処理を実行するので、ラベル部分画像の明るさに応じて処理を進行できる。
【0106】
ここで、第1判定結果処理は、ヒストグラムHI、HRの差異が差異閾値未満である場合(S540:No)には実行されない処理を含むことが好ましい(例えば、
図8のS552)。これにより、プロセッサ110は、ヒストグラムHI、HRの間の差異が差異閾値以上である場合に、ヒストグラムHI、HRの間の差異が差異閾値未満である場合の処理とは異なる処理を実行できる。
【0107】
また、複数のラベルが処理される場合、複数のラベル部分画像の間で、明るさや画像内のラベルの位置などのラベルの表現が異なり得る。本実施例では、プロセッサ110は、ラベル部分画像のデータと画像生成モデルM2を使用して、ラベル部分画像に適する再構成画像のデータを生成する。従って、未知のラベル部分画像の第1ヒストグラムHIとの比較に適する第2ヒストグラムHR(ひいては、第2ヒストグラムHRの生成に使用すべき基準の画像)の事前の準備は、省略される。このように、ヒストグラムHI、HRを使用する判定処理の負担は、軽減される。
【0108】
また、
図9(A)-
図9(C)で説明したように、ヒストグラムHI、HRは、輝度Vの強度分布を表している。従って、プロセッサ110は、ラベルの色に拘わらずに、ラベル部分画像の明るさに応じて処理を進行できる。
【0109】
また、S540、S560(
図8)では、プロセッサ110は、相関cが第1判定閾値よりも大きい場合に(S540:No)、画像判定の結果を「明るさ正常」に決定する(S560)。相関cが第1判定閾値よりも大きいことは、第1ヒストグラムHIと第2ヒストグラムHRとの間の差異が差異閾値未満であることを示している。そして、S340、S360-S390(
図7)で説明したように、画像判定の結果が「明るさ正常」である場合(S340:Yes)、すなわち、ヒストグラムHI、HRの間の差異が差異閾値未満である場合、プロセッサ110は、S360-S390の処理を実行する。S360-S390では、プロセッサ110は、ラベル部分画像と再構成画像とを使用して、ラベルが外観の異常を有するか否かを判定する。本実施例では、S360で、プロセッサ110は、ラベル部分画像と再構成画像とを使用して、ラベルの異常部分を検出する。異常部分が検出される場合(S370:Yes)、S390で、プロセッサ110は、検査結果が異常であると判定する、すなわち、ラベルが外観の異常を有すると判定する。異常部分が検出されない場合(S370:No)、S380で、プロセッサ110は、検査結果が正常であると判定する、すなわち、ラベルが外観の異常を有していないと判定する。
【0110】
ここで、ラベルが外観の異常を有するか否かの判定を、異常判定と呼ぶ。第1ヒストグラムHIと第2ヒストグラムHRとの間の差異が差異閾値未満であるという条件を、ヒストグラム条件と呼ぶ。ラベル部分画像と再構成画像とを使用する異常判定の実行が許容される条件を、許容条件と呼ぶ。本実施例では、許容条件は、ヒストグラム条件を含んでいる。具体的には、S340(
図7)に示すように、許容条件は、ヒストグラム条件と同じである。ヒストグラム条件を含む許容条件が満たされる場合(
図7:S340:Yes)、プロセッサ110は、適切な明るさでラベルを表すラベル部分画像と、そのラベル部分画像を使用して生成される再構成画像と、を使用して、適切な異常判定を実行できる。ヒストグラム条件を含む許容条件が満たされない場合(
図7:S340:No)、プロセッサ110は、異常判定を実行せずに、検査処理を終了する。従って、プロセッサ110は、不適切な明るさでラベルを表すラベル部分画像を使用する不適切な異常判定を、回避可能である。
【0111】
B.第2実施例:
図13、
図14は、画像判定処理の別の実施例を示すフローチャートである。
図14は、
図13の処理の続きの処理を示している。本実施例の画像判定処理は、
図8の処理に代えて、S330(
図7)で実行される。
【0112】
S410では、プロセッサ110は、S310(
図7)で取得される撮影画像の各画素の輝度Vを取得する。輝度Vの取得方法は、S510(
図8)での輝度Vの取得方法と同じである。
【0113】
S420では、プロセッサ110は、撮影画像の輝度Vのヒストグラムを生成する(撮影ヒストグラムと呼ぶ)。図示を省略するが、撮影ヒストグラムは、
図9(A)-
図9(C)のヒストグラムHI、HRと同様に、輝度Vの強度分布を表している。
【0114】
S430では、プロセッサ110は、撮影ヒストグラムと基準ヒストグラムD3(
図1)との間の差異の指標値を算出する(撮影指標値とも呼ぶ)。基準ヒストグラムD3は、予め準備される基準画像の輝度Vのヒストグラムである。基準画像は、撮影画像の基準を示す画像であり、撮影画像(例えば、
図2(C)の撮影画像i1)と同様に製品300のうちのラベルLを含む部分を表している。基準画像は、外観の異常の無いラベルLを適切な明るさで表している。基準画像のデータは、予め準備されている。基準ヒストグラムD3のデータは、基準画像のデータを使用して、予め準備されている。本実施例では、基準ヒストグラムD3のデータは、予め、不揮発性記憶装置130に格納されている。
【0115】
撮影指標値の算出式は、ヒストグラムHI、HRに代えて、撮影ヒストグラムと基準ヒストグラムD3が使用される点を除いて、S530(
図8)の入力指標値の算出式と同じである。本実施例では、プロセッサ110は、相関(
図10(A))を算出する。
【0116】
なお、基準ヒストグラムD3のデータに代えて、基準画像のデータが記憶装置115(例えば、不揮発性記憶装置130)に予め格納されてよい。S430では、プロセッサ110は、基準画像のデータを使用して基準ヒストグラムを生成してよい。
【0117】
S440では、プロセッサ110は、撮影画像の明るさが許容範囲内か否かを判定する。上述したように、基準画像は、適切な明るさでラベルLを表している。基準ヒストグラムは、適切な明るさでラベルLを表す撮影画像のヒストグラムの例を示している。撮影画像の明るさが適切である場合、撮影ヒストグラムと基準ヒストグラムとの間の差は小さい。そこで、本実施例では、プロセッサ110は、撮影ヒストグラムと基準ヒストグラムとの間の差異が閾値以下である場合に、撮影画像の明るさが許容範囲内であると判定する。
【0118】
本実施例では、プロセッサ110は、撮影指標値(ここでは、相関)が所定の第1撮影閾値以上である場合に、ヒストグラムの差が閾値以下であると判定する、すなわち、撮影画像の明るさが許容範囲内であると判定する。第1撮影閾値は、撮影画像の明るさが適切である場合に、ヒストグラムの相関が第1撮影閾値以上であり、撮影画像の明るさが不適切である場合に、ヒストグラムの相関が第1撮影閾値未満であるように、予め実験的に決定される。
【0119】
図3(A)-
図3(C)のラベル部分画像i2a-i2cは、いずれも、適切な明るさでラベルLa-Lcを表している。このようなラベル部分画像i2a-i2cを含む撮影画像(図示省略)が処理される場合、S440の判断結果は、Yesであり得る。
図4(B)、
図4(C)の撮影画像i1x、i1zは、いずれも、不適切な明るさでラベルLaを表している。このような撮影画像i1x、i1zが処理される場合、S440の判断結果は、Noであり得る。
【0120】
S440の判定結果がNoである場合、S450で、プロセッサ110は、第1前段処理を実行する。第1前段処理は、S440の判定結果(ここではNo)に対応付けられる任意の処理であってよい。本実施例では、第1前段処理は、S452、S454、S456を含んでいる。S452、S454、S456は、
図8のS550に含まれるS552、S554、S556と、それぞれ同じである。S450の後、プロセッサ110は、
図13の処理、すなわち、
図7のS330の処理を終了する。S454で結果の報知を受けた作業者は、次の検査処理の開始前に(例えば、S450の後のS459で)、光源500の光量を適切な光量に調整する。これにより、次の検査処理では、撮影装置400は、適切な明るさでラベルを表す撮影画像を生成可能である。
【0121】
S440の判定結果がYesである場合、S460で、プロセッサ110は、ラベル検出処理を実行する。S460の処理は、
図8のS460の処理と同じである。S470では、プロセッサ110は、ラベルが検出されるか否かを判定する。
【0122】
ラベルが検出されない場合(S470:No)、S480で、プロセッサ110は、第2前段処理を実行する。第2前段処理は、S470の判定結果(ここでは、No)に対応付けられる任意の処理であってよい。本実施例では、第2前段処理は、S482、S484、S486を含んでいる。S482では、プロセッサ110は、画像判定の結果を「不検出」に決定する。S484、S486は、S450に含まれるS454、S456と、それぞれ同じである。S484では、プロセッサ110は、画像判定の結果(ここでは、「不検出」)を、作業者に報知する。S480の後、プロセッサ110は、
図13の処理、すなわち、
図7のS330の処理を終了する。画像判定の結果が「不検出」である場合、
図7のS340の判定結果は「No」である。プロセッサ110は、ラベルLの外観の検査を実行せずに、
図7の処理を終了する。従って、ラベルLが検出されない撮影画像を使用して検査が行われる可能性は、低減する。
【0123】
ラベルが検出される場合(S470:Yes)、プロセッサ110は、
図14のS505へ移行する。
図14のS505-S566は、
図8のS505-S566と、それぞれ同じである。S505-S540では、プロセッサ110は、ラベル部分画像の入力ヒストグラムHIと再構成画像の再構成ヒストグラムHRとの間の差異が差異閾値以上であるか否かを判定する。そして、プロセッサ110は、この判定の結果に対応付けられる処理(S550、または、S560)を実行する。そして、プロセッサ110は、
図13の処理、すなわち、
図7のS330の処理を終了する。
【0124】
以上のように、本実施例の画像判定処理(
図13、
図14)は、
図8の処理を含んでいる。従って、本実施例は、
図8の実施例のものと同じ種々の利点を有する。例えば、プロセッサ110は、第1ヒストグラムHIと第2ヒストグラムHRとの間の差異が差異閾値以上である場合に(S540:Yes)、第1判定結果処理(S550)を実行するので、ラベル部分画像の明るさに応じて処理を進行できる。また、ヒストグラムHI、HRは、輝度Vの強度分布を表しているので、プロセッサ110は、ラベルの色に拘わらずに、ラベル部分画像の明るさに応じて処理を進行できる。
【0125】
また、S410-S440(
図13)では、プロセッサ110は、ラベルの撮影画像のデータを使用して、撮影画像の明るさが許容範囲内か否かを判定する。撮影画像の明るさが許容範囲内であると判定される場合(S440:Yes)、S460で、プロセッサ110は、撮影画像から、ラベルを表す部分であるラベル部分画像を検出する(例えば、
図3(A)-
図3(C)のラベル部分画像i2a-i2c)。撮影画像の明るさが許容範囲外であると判定される場合(S440:No)、プロセッサ110は、ラベル部分画像の検出(S460)をキャンセルする。本実施例では、プロセッサ110は、ラベル部分画像の検出(S460)に代えて、予め決められた処理(S450)を実行する。このように、撮影画像の明るさが許容範囲外であると判定される場合(S440:No)、ラベル部分画像の検出がキャンセルされるので、不適切なラベル部分画像を使用する処理の可能性は低減する。例えば、撮影画像i1x(
図4(B))のように暗い撮影画像に対してラベル部分画像の検出処理が実行される場合、ラベルLaを表す部分とは異なる部分が検出され得る。このような不適切な部分画像を使用して処理(例えば、検査処理)が進行する可能性は、低減する。
【0126】
また、本実施例では、プロセッサ110は、S410-S420(
図13)で、撮影画像のデータを使用して撮影ヒストグラムを生成する。プロセッサ110は、S430-S440で、撮影ヒストグラムと基準ヒストグラムD3とを使用して、撮影画像の明るさが許容範囲内か否かを判定する。このように、プロセッサ110は、撮影画像のデータと基準ヒストグラムD3のデータとを使用して、撮影画像の明るさが許容範囲内か否かを判定する。基準ヒストグラムD3は、予め準備される基準画像に対応付けられる基準データの例である。プロセッサ110は、このような基準画像に対応付けられる基準データを使用して、撮影画像の明るさが許容範囲内か否かを適切に判定できる。
【0127】
C.第3実施例:
図15は、画像判定処理の別の実施例を示すフローチャートである。図中には、画像判定処理の一部であるS532、S534、S536、S540cが示されている。プロセッサ110は、これらの処理S532、S534、S536、S540cを、S540(
図8、
図14)の代わりに実行する。
【0128】
S530(
図8、
図14)の後、S532(
図15)で、プロセッサ110は、ラベル部分画像(例えば、ラベル部分画像i2a、i2x、i2z(
図9(A)-
図9(C)))の複数の有彩色成分(ここでは、R、G、B)のそれぞれのヒストグラムを生成する(入力ヒストグラムと呼ぶ)。S534では、プロセッサ110は、再構成画像(例えば、再構成画像i2ag、i2xg、i2zg(
図9(A)-
図9(C)))の複数の有彩色成分(ここでは、R、G、B)のそれぞれのヒストグラムを生成する(再構成ヒストグラムと呼ぶ)。同じ色成分に対応する入力ヒストグラムと再構成ヒストグラムとの間では、ヒストグラムの構成(例えば、区間の総数)は同じである。
【0129】
S536では、プロセッサ110は、同じ色成分に対応する入力ヒストグラムと再構成ヒストグラムとの間の差異の指標値を算出する(入力指標値とも呼ぶ)。R、G、Bのそれぞれの入力指標値の算出方法は、S530(
図8、
図14)での輝度Vの入力指標値の算出方法と同じである。
【0130】
S540cでは、プロセッサ110は、入力ヒストグラムと再構成ヒストグラムとの間の差異が差異閾値以上であるか否かを判定する。この判定は、V、R、G、Bの色成分毎に行われる。判定方法は、S540(
図8、
図14)の判定方法と同じである。差異閾値(ここでは、第1判定閾値)は、V、R、G、Bの色成分毎に、予め決められている。差異閾値は、ラベル部分画像のラベルの明るさが適切である場合にヒストグラムの差異が差異閾値未満であり、ラベル部分画像のラベルの明るさが不適切である場合にヒストグラムの差異が差異閾値以上であるように、予め実験的に決定される。
【0131】
プロセッサ110は、V、R、G、Bのうちの1以上の色成分の差異が対応する差異閾値以上であるか否か(本実施例では、1以上の色成分の相関が、対応する第1判定閾値以下であるか否か)を判定する。1以上の色成分の差異が差異閾値以上である場合(S540c:Yes)、プロセッサ110は、S550(
図8、
図14)に移行する。全ての色成分の差異が差異閾値未満である場合(S540c:No)、プロセッサ110は、S560(
図8、
図14)に移行する。
【0132】
以上のように、本実施例では、S532(
図15)で、プロセッサ110は、ラベル部分画像(例えば、ラベル部分画像i2a-i2c、i2x、i2z(
図3(A)-
図3(C)、
図9(A)-
図9(C)))の特定の有彩色の色成分(例えば、赤R)の入力ヒストグラムを生成する(第3ヒストグラムと呼ぶ)。第3ヒストグラムは、特定の有彩色の色成分の強度分布を表している。S534で、プロセッサ110は、再構成画像(例えば、再構成画像i2ag-i2cg、i2xg、i2zg)の特定の有彩色の色成分の再構成ヒストグラムを生成する(第4ヒストグラムと呼ぶ)。第4ヒストグラムは、特定の有彩色の色成分の強度分布を表している。
【0133】
S540c(
図15)、S550(
図8、
図14)では、プロセッサ110は、V、R、G、Bのうちの1以上の色成分の差異が、その色成分に対応する差異閾値以上である場合に、第1判定結果処理(S550)を実行する。すなわち、第1判定結果処理(S550)は、以下の特定の場合に、実行される。特定の場合は、輝度Vの第1ヒストグラムと第2ヒストグラムとの間の差異が輝度Vに対応する差異閾値以上である場合と、特定の有彩色の色成分(例えば、赤R)の第3ヒストグラムと第4ヒストグラムとの間の差異が特定の有彩色の色成分に対応する差異閾値(有彩差異閾値と呼ぶ)以上である場合と、を含んでいる。本実施例では、特定の場合は、さらに、有彩色の他の色成分(例えば、緑G、または、青B)のヒストグラムの差異がその色成分に対応する差異閾値以上である場合と、V、R、G、Bのうちの2以上の色成分の差異が差異閾値以上である場合と、を含んでいる。
【0134】
撮影時にラベルを照らす光の色は、変化し得る。例えば、光源500の光の色は、時間の経過によって、変化し得る。また、部屋の窓を通して外部からの光(例えば太陽光)がラベルを照らす場合、その光の色は時間に応じて変化し得る。撮影時にラベルを照らす光の色が意図される色(例えば、白色)からずれている場合、ラベル部分画像によって表されるラベルの色が不適切であり得、そして、画像生成モデルM2によって不適切な再構成画像が生成され得る(例えば、ラベルに外観の異常が無い場合であっても、再構成画像は、ラベルの異常を示し得る)。このようなラベル部分画像と再構成画像との間では、有彩色の色成分の強度分布が異なり得る。本実施例では、特定の有彩色の色成分の第3ヒストグラムと第4ヒストグラムとの間の差異が差異閾値以上である場合(
図15:S540c:Yes)、プロセッサ110は、第1判定結果処理(
図8、
図14:S550)を実行する。このように、プロセッサ110は、ラベル部分画像の色に応じて処理を進行できる。
【0135】
なお、特定の有彩色の色成分は、ラベルを照らす光の色(例えば、光源500の光の色)に適する任意の色成分であってよい。例えば、光源500の光の色が意図せずに緑色に変化し易い場合、特定の有彩色の色成分として、緑Gが採用されてよい。ヒストグラムの差異の判定に使用される有彩色の色成分の総数は、3に限らず、1、2、または、4以上であってよい。有彩色の色成分は、R、G、Bから選択される色成分に限らず、シアンC、マゼンタM、または、イエローYなどの、種々の色成分であってよい。
【0136】
また、S540c(
図15)、S560(
図8、
図14)では、プロセッサ110は、色成分V、R、G、Bのそれぞれの相関が、対応する色成分の第1判定閾値よりも大きい場合、すなわち、色成分V、R、G、Bのそれぞれのヒストグラムの差異が、対応する色成分の差異閾値未満である場合(S540c:No)、画像判定の結果を「明るさ正常」に決定する(S560)。そして、S340、S360-S390(
図7)で説明したように、画像判定の結果が「明るさ正常」である場合(S340:Yes)、すなわち、色成分V、R、G、Bのそれぞれのヒストグラムの差異が対応する差異閾値未満である場合、プロセッサ110は、S360-S390の処理を実行する。S360-S390では、プロセッサ110は、ラベル部分画像と再構成画像とを使用して、ラベルが外観の異常を有するか否かを判定する。このように、異常判定の実行が許容される許容条件は、輝度Vのヒストグラムの差異が輝度Vに対応する差異閾値未満であるという条件と、他の色成分(ここでは、R、G、B)のそれぞれのヒストグラムの差異が、対応する差異閾値未満であるという条件と、を含んでいる。許容条件が満たされる場合(S340:No)、プロセッサ110は、適切な明るさと適切な色とでラベルを表すラベル部分画像と、そのラベル部分画像を使用して生成される再構成画像と、を使用して、適切な異常判定を実行できる。許容条件が満たされない場合(S340:No)、プロセッサ110は、異常判定を実行せずに、検査処理を終了する。従って、プロセッサ110は、不適切な明るさ、または、不適切な色でラベルを表すラベル部分画像を使用する不適切な異常判定を、回避可能である。
【0137】
D.第4実施例:
図16は、差異閾値の決定処理の例を示すフローチャートである。この処理は、S540(
図8、
図14)で使用される差異閾値(ここでは、第1判定閾値)を決定するための処理である。データ処理装置100(
図1)のプロセッサ110は、第3プログラム133に従って、
図16の処理を実行する。
【0138】
S605、S610、S615、S620、S625、S630は、ラベル部分画像の代わりに訓練画像が使用される点を除いて、
図8、
図14のS505、S510、S515、S520、S525、S530と、それぞれ同じである。S605では、プロセッサ110は、外観の異常の無いラベルLを表す訓練画像のデータを、訓練済の画像生成モデルM2に入力することによって、再構成画像のデータを生成する(生成される再構成画像を、生成画像とも呼ぶ)。訓練画像のデータは、画像生成モデルM2の訓練処理(
図6)で使用されたデータである。プロセッサ110は、S610-S630を実行することによって、訓練画像の輝度Vのヒストグラムと、生成画像の輝度Vのヒストグラムと、の間の差異の指標値を算出する(参考指標値とも呼ぶ)。参考指標値の算出式は、ヒストグラムHI、HRに代えて、訓練画像のヒストグラムと生成画像のヒストグラムが使用される点を除いて、S530(
図8、
図14)の入力指標値の算出式と同じである。本実施例では、プロセッサ110は、相関(
図10(A))を算出する。
【0139】
図6で説明したように、画像生成モデルM2の訓練には、複数の訓練画像が使用される。複数の訓練画像は、互いに異なる明るさでラベルを表す複数の訓練画像を含んでいる。
図16の処理では、訓練に使用された複数の訓練画像のうちの一部の複数の訓練画像が使用される。
図16で使用される複数の訓練画像は、互いに異なる明るさでラベルを表す複数の訓練画像を含んでいる。プロセッサ110は、複数の訓練画像のそれぞれに対してS605-S630の処理を実行することによって、複数の参考指標値を算出する。複数の訓練画像から得られる複数の参考指標値のそれぞれは、適切な明るさでラベルを表すラベル部分画像から算出され得る入力指標値(
図8:S530)を示している。なお、
図16の処理では、訓練に使用された複数の訓練画像の全てが、使用されてよい。
【0140】
S640では、プロセッサ110は、複数の参考指標値を使用して、差異閾値を決定する。本実施例では、プロセッサ110は、参考指標値を使用してS540(
図8、
図14)の判定が行われると仮定する場合に、複数の参考指標値のそれぞれの判定結果が「差異が差異閾値未満である」となるように、差異閾値を決定する。これにより、適切な明るさでラベルを表すラベル部分画像の判定結果が「差異が差異閾値以上である」となる可能性は低減する。
【0141】
指標値が相関c(10(A))を示す場合、指標値が小さいほど、ヒストグラムの差異が大きい。プロセッサ110は、複数の参考指標値よりも小さい値に差異閾値(ここでは、第1判定閾値)を決定する。例えば、第1判定閾値は、複数の参考指標値のうちの最小の参考指標値に、1未満の係数(例えば、0.8)を乗じた値に設定される。
【0142】
S650では、プロセッサ110は、決定した差異閾値を示すデータを、記憶装置115(例えば、不揮発性記憶装置130)に格納する。そして、プロセッサ110は、
図16の処理を終了する。S540(
図8、
図14)では、プロセッサ110は、
図16の処理で決定された差異閾値を使用する。
【0143】
以上のように、本実施例では、プロセッサ110は、画像生成モデルM2の訓練のために画像生成モデルM2に入力された訓練画像データと、訓練画像データを訓練済の画像生成モデルM2に入力することによって生成される生成画像データと、を使用して差異閾値を決定する。従って、プロセッサ110は、画像生成モデルM2に適する差異閾値を決定できる。例えば、プロセッサ110は、訓練画像のヒストグラムと生成画像のヒストグラムとの間の差異が差異閾値未満であるように、差異閾値を決定してよい。この場合、ラベル部分画像が、訓練画像のラベルの明るさと同程度の明るさでラベルを表す場合に、プロセッサ110は、ヒストグラムの差異が差異閾値未満であると判定できる。なお、外観の異常を有するラベルの画像が差異閾値の決定に使用される場合、その画像に起因して、不適切な差異閾値が決定される可能性がある。差異閾値の決定には、外観の異常の無いラベルを表す訓練画像が使用されることが好ましい。
【0144】
なお、プロセッサ110は、複数の参考指標値のうちの一部の複数の参考指標値(例えば、最も大きい差異を示す複数の参考指標値)からは「ヒストグラムの差異が差異閾値以上である」という判定結果が得られるように、差異閾値を決定してよい。例えば、プロセッサ110は、第1判定閾値を、複数の参考指標値のうちの最小の参考指標値に1より大きい係数(例えば、1.2)を乗じた値に設定してよい。この場合、不適切な再構成画像が生成される場合に、「ヒストグラムの差異が差異閾値未満である」という判定結果が得られる可能性は、低減する。また、第1判定閾値は、最小の参考指標値と同じ値に設定されてよい。
【0145】
本実施例の閾値決定処理は、
図15の実施例に適用されてよい。
図15の実施例では、差異閾値は、色成分毎に決定される。プロセッサ110は、色成分毎に
図16の処理を実行することによって、各色成分の差異閾値を決定してよい。ここで、S610、S615では、処理対象の色成分の階調値が取得される。S620、S625では、処理対象の色成分のヒストグラムが生成される。
【0146】
E.変形例:
(1)画像判定処理は、
図8、
図13-
図14、
図15の処理に代えて、他の種々の処理であってよい。例えば、ヒストグラムHI、HRの色成分である対象色成分は、輝度Vに代えて、他の種々の色成分であってよい。例えば、赤R、緑G、青Bのいずれかが、採用されてよい。対象色成分は、入力画像中のラベルの明るさと相関を有する色成分であることが好ましい。このような対象色成分の階調値は、入力画像中のラベルの明るさに応じて変化する。従って、プロセッサ110は、ヒストグラムHI、HRの差異を使用することによって、入力画像のラベルの明るさが適切であるか否かを、適切に判定できる。明るさと相関を有する色成分としては、例えば、白に対応する階調値(例えば、255のような最大階調値)と黒に対応する階調値(例えば、ゼロ)との間で変化する色成分を採用可能である。
【0147】
(2)ヒストグラムの差異の指標値は、相関c(
図10(A))に代えて、ヒストグラムの差異の大きさを示す種々の値であってよい。例えば、プロセッサ110は、2つのヒストグラムの間の合計差分を、指標値として算出してよい。
図10(B)は、合計差分dの算出式の例を示す図である。合計差分dは、n個の区間のそれぞれの頻度HI_k、HR_kの差分の2乗の合計値である。
図9(A)のように、再構成ヒストグラムHRが入力ヒストグラムHIに類似する場合、合計差分dは小さくなる。
図9(B)、
図9(C)のように、再構成ヒストグラムHRと入力ヒストグラムHIとの間の差が大きい場合、合計差分dは大きくなる。S540(
図8、
図14)では、プロセッサ110は、合計差分dが所定の第2判定閾値以上である場合に、ヒストグラムの差異が差異閾値以上であると判定してよい。
【0148】
第2判定閾値は、
図16の処理によって決定されてよい。S630では、プロセッサ110は、参考指標値として、合計差分を算出する。S640では、プロセッサ110は、複数の参考指標値よりも大きい値に第2判定閾値を決定してよい。例えば、プロセッサ110は、第2判定閾値を、複数の参考指標値のうちの最大の参考指標値に1より大きい係数(例えば、1.2)を乗じた値に設定してよい。これに代えて、プロセッサ110は、第2判定閾値を、複数の参考指標値のうちの最大の参考指標値に1より小さい係数(例えば、0.8)を乗じた値に設定してよい。また、第2判定閾値は、最大の参考指標値と同じ値に設定されてよい。
【0149】
図15の実施例においても、相関に代えて合計差分が使用されてよい。この場合、差分閾値(ここでは、第2判定閾値)は、色成分毎に決定される。
図13のS430、S440においても、相関に代えて合計差分が使用されてよい。S440では、プロセッサ110は、合計差分が所定の第2撮影閾値以下である場合に、ヒストグラムの差が閾値以下であると判定する、すなわち、撮影画像の明るさが許容範囲内であると判定する。
【0150】
(3)差異閾値の決定方法は、
図16の方法に代えて、他の種々の方法であってよい。例えば、
図16の処理において、訓練画像に代えて、適切な明るさでラベルを表す複数の撮影画像が使用されてよい。
【0151】
(4)ラベル部分画像(すなわち、入力画像)のヒストグラムと再構成画像のヒストグラムとの間の差異が差異閾値以上である場合に実行される特定の処理は、S550(
図8、
図14)の処理に限らず、種々の処理であってよい。例えば、プロセッサ110は、光源500の光量を調整する処理を実行してよい。ラベル部分画像が再構成画像と比べて明るい場合には、プロセッサ110は、光源500の光量を低減してよい。ラベル部分画像が再構成画像と比べて暗い場合には、プロセッサ110は、光源500の光量を増大してよい。プロセッサ110は、光量の変更と、変更済の光量に基づくヒストグラムの差異の算出(例えば、
図8のS460、S505-S530の処理と同じ処理)とを、ヒストグラムの差異が差異閾値よりも小さくなるまで繰り返すことによって、光量を調整してよい。ここで、光源500は、データ処理装置100(例えば、通信インタフェース170)に接続されてよい。
【0152】
(5)ラベル部分画像と再構成画像とを使用する異常判定の実行が許容される許容条件は、第1ヒストグラムHIと第2ヒストグラムHRとの間の差異が差異閾値未満であるというヒストグラム条件を含む種々の条件であってよい。許容条件は、例えば、ラベル部分画像中の最高輝度が所定の上限以下であることを含んでよい。
【0153】
(6)ラベルの外観の異常を検出する処理は、
図11で説明した処理に代えて、異常を検出可能な任意の処理であってよい。例えば、プロセッサ110は、異常を有する画像と異常の無い画像とのいずれかにラベル部分画像を分類するように訓練済の機械学習モデルを使用して、ラベルの外観の異常の有無を判定してよい。また、プロセッサ110は、CFLOW-ADと呼ばれる技術を使用して、ラベルの外観の異常を検出してよい。CFLOW-ADは、以下の論文に開示されている。
Denis Gudovskiy, Shun Ishizaka and Kazuki Kozuka (2022), "CFLOW-AD: Real-Time Unsupervised Anomaly Detection with Localization via Conditional Normalizing Flows", 2022 IEEE/CVF Winter Conference on Applications of Computer Vision (WACV), 1819-1828. https://doi.org/10.1109/WACV51458.2022.00188
【0154】
また、
図11のS362では、プロセッサ110は、異常の可能性を示すヒートマップ画像のデータを、機械学習モデルを使用して生成してよい。ここで、PaDiM(a Patch Distribution Modeling Framework for Anomaly Detection and Localization)と呼ばれる技術が採用されてよい。PaDiMは、機械学習モデルを使用して異常を検出する技術であり、論文「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」に開示されている。
【0155】
PaDiMでは、注目オブジェクト(以下、注目オブジェクトがラベルであることとする)を表す画像を識別するように訓練済の畳込ニューラルネットワーク(CNN:Convolutional Neural Network)が使用される。CNNとしては、例えば、ResNet18と呼ばれる公知のモデルが、使用される。このCNNは、それぞれが1以上の畳込層を含む複数の畳込処理部と、全結合層を含む分類処理部と、を備えている。
【0156】
異常検出に先立って、ガウシアンマトリクスが生成される。以下、プロセッサ110がガウシアンマトリクスを生成することとして、説明する。プロセッサ110は、外観の異常の無いラベルの画像(正常画像と呼ぶ)を使用して、ガウシアンマトリクスを生成する。ガウシアンマトリクスの生成には、N枚の正常画像が使用される(Nは、1以上の整数。Nは、例えば、数十、または、数百程度)。正常画像は、ラベルL(
図2(B))の撮影画像を含んでよい。また、正常画像は、
図6の訓練画像のようにコンピュータによって合成された画像を含んでよい。
【0157】
プロセッサ110は、正常画像のデータをCNNに入力することによって、複数の畳込処理部のそれぞれによる特徴マップを算出する。プロセッサ110は、最初の3個の畳込処理部の複数の特徴マップから予め選択されたL枚(Lは、1以上の整数)の特徴マップを使用することによって、パッチ毎の特徴ベクトルを算出する。パッチは、最大の特徴マップの画素に対応する。以下、パッチの位置が、座標(i,j)で表されることとする(iは、第1方向Dxの画素位置であり、jは、第2方向Dyの画素位置である)。特徴マップの解像度がCNNに入力される画像の解像度よりも低いので、1個のパッチ(i,j)には、画像の複数の画素が対応付けられる(換言すれば、画像は、複数のパッチに分割される)。
【0158】
パッチ(i,j)に対応付けられる特徴ベクトル(i,j)は、L個の要素を有するL次元ベクトルである。プロセッサ110は、L個の要素を、上記のL枚の特徴マップを使用して取得する。ここで、プロセッサ110は、解像度が最大の特徴マップの解像度と同じになるように、各特徴マップを公知の拡大処理によって拡大する。特徴ベクトル(i,j)のL個の要素は、同じ解像度を有するL枚の特徴マップにおける座標(i,j)に対応するL個の画素のL個の値である。なお、1枚の正常画像からは、複数のパッチのそれぞれの特徴ベクトルが、算出される。N枚の正常画像からは、パッチ毎に、N個の特徴ベクトルが算出される。
【0159】
ガウシアンマトリクスは、各パッチのガウシアンパラメータを表している。ガウシアンパラメータ(i,j)は、平均ベクトル(i,j)と共分散行列(i,j)とを含んでいる。平均ベクトル(i,j)は、N個の特徴ベクトル(i,j)の平均である。共分散行列(i,j)は、N個の特徴ベクトル(i,j)の共分散行列である。プロセッサ110は、各パッチのN個の特徴ベクトルを使用して、各パッチのガウシアンパラメータを算出する。プロセッサ110は、CNNのデータとガウシアンマトリクスを表すデータとを、記憶装置115(例えば、不揮発性記憶装置130)に格納する。
【0160】
図11のS362では、プロセッサ110は、ラベル部分画像とガウシアンマトリクスを使用して、ヒートマップ画像を生成する。プロセッサ110は、ラベル部分画像のデータをCNNに入力することによって、CNNの複数の畳込処理部のそれぞれによる特徴マップを算出する。プロセッサ110は、算出される複数の特徴マップのうちの上記のL枚の特徴マップを使用して、複数のパッチのそれぞれの特徴ベクトルを算出する(テスト特徴ベクトルと呼ぶ)。プロセッサ110は、テスト特徴ベクトル(i,j)と、ガウシアンパラメータ(i,j)と、を使用して、パッチ(i,j)の異常スコア(i,j)を算出する。異常スコアとしては、いわゆるマハラノビス距離が採用される。パッチ(i,j)のマハラノビス距離(i,j)は、パッチ(i,j)におけるN個の正常画像とラベル部分画像との間の差異の程度を示す評価値である、従って、マハラノビス距離(i、j)は、座標(i、j)におけるラベル部分画像の異常度を示す値であると、いうことができる。プロセッサ110は、PaDiMの上記の論文に記載の計算式に従って、各パッチのマハラノビス距離、すなわち、異常スコアを算出する。プロセッサ110は、パッチ(すなわち、画素)毎の異常スコアを表す画像のデータを生成する。生成される画像は、ヒートマップ画像の例である。
【0161】
なお、プロセッサ110は、異常スコアを、予め決められた範囲(例えば、ゼロ以上、1以下の範囲)で表されるように、正規化してよい。正規化は、例えば、予め決められた最小値と最大値とを使用して行われてよい。最小値と最大値とは、外観の異常を有するラベルの複数の画像と、複数の正常画像とを、CNNに入力して算出される正規化されていない複数の異常スコアを使用して、予め決定されてよい。最大値は、複数の正規化されていない異常スコアの最大値に設定されてよい。最小値は、複数の正規化されていない異常スコアの最小値に設定されてよい。プロセッサ110は、正規化された異常スコアAsを、正規化されていない異常スコアAoと、最大値Amaxと、最小値Aminと、を使用して、以下の式に従って算出してよい。
As=(Ao-Amin)/(Amax-Amin)
【0162】
また、PaDiMによるヒートマップ画像の生成では、ラベルの画像に代えて、ラベルの画像から得られる差分画像が使用されてよい。具体的には、CNNの訓練には、複数の正常差分画像と複数の異常差分画像とが使用される。正常差分画像は、正常画像のデータを画像生成モデルM2に入力することによって得られる再構成画像と、正常画像と、の間の差分を表している(例えば、
図3(A)の差分画像i2ad)。異常差分画像は、外観の異常を有するラベルの画像である異常画像を画像生成モデルM2に入力することによって得られる再構成画像と、異常画像と、の間の差分を表している(例えば、
図3(B)、
図3(C)の差分画像i2bd、i2cd)。CNNは、画像の種類(例えば、正常、傷、汚れ、など)を識別するように、訓練される。プロセッサ110は、複数の正常差分画像のデータをCNNに入力することによって、ガウシアンマトリクスを決定する。上述したように、正常差分画像の各画素の階調値(すなわち、差分)は、ゼロに近い。ただし、再構成画像は、正常画像と同一ではない。従って、正常差分画像の各画素の階調値は、画素毎に、異なり得る。S362(
図11)では、プロセッサ110は、ラベル部分画像から得られる差分画像とガウシアンマトリクスを使用して、ヒートマップ画像を生成する。
図3(B)、
図3(C)のラベルLb、Lcのように、ラベルが外観の異常を有する場合、差分画像は、ラベルの外観の異常を表す。この場合、ヒートマップ画像中の異常部分に対応する部分では、異常スコアが大きい。
図3(A)のラベルLaのように、ラベルが外観の異常を有していない場合、差分画像は、ラベルの外観の異常を表さない。この場合、ヒートマップ画像の全体に亘って、異常スコアは小さい。PaDiMによるヒートマップ画像の生成に差分画像が使用される場合、ラベルの画像が使用される場合と比べて、ラベル部分画像と正常画像との間の差異が、より強調され得る。
【0163】
(7)撮影画像の明るさが許容範囲内か否かを判定する処理は、
図13のS410-S440の処理に代えて、他の種々の処理であってよい。プロセッサ110は、輝度Vのヒストグラムに代えて、輝度Vの分布の特徴を表す種々の統計量(平均値、中央値など)を使用してよい。例えば、プロセッサ110は、撮影画像の輝度Vの中央値が予め決められた許容範囲内である場合に、撮影画像の明るさが許容範囲内であると判定してよい。輝度Vの中央値の許容範囲は、外観の異常の無いラベルを適切な明るさで表す基準画像を使用して、予め決定されてよい。例えば、許容範囲は、基準画像の輝度Vの中央値を含む所定幅の範囲であってよい。許容範囲を示すデータは、記憶装置115(例えば、不揮発性記憶装置130)に予め格納される。プロセッサ110は、撮影画像のデータと許容範囲のデータとを使用して、撮影画像の明るさが許容範囲内か否かを判定してよい。許容範囲のデータは、予め準備される基準画像に対応付けられる基準データの例である。なお、輝度Vの中央値の許容範囲は、基準画像とは独立に決定されてよい。また、基準データは、基準画像のデータであってよい。プロセッサ110は、基準画像のデータを分析することによって、撮影画像の明るさの許容範囲を決定してよい。また、この判定には、輝度Vに代えて、他の色成分(例えば、緑G)が使用されてよい。
【0164】
(9)画像生成モデルM2は、変分オートエンコーダに限らず、外観の異常を有するラベルを表す画像データから外観の異常の無いラベルを表す画像データを生成する任意の機械学習モデルであってよい。画像生成モデルM2は、例えば、VQ-VAE(Vector Quantised-Variational AutoEncoder)と呼ばれるモデルであってよい。VQ-VAEは、以下の論文に開示されている。
「Aaron van den Oord, Oriol Vinyals and Koray Kavukcuoglu. “Neural Discrete Representation Learning.” arXiv, May 30, 2018, http://arxiv.org/abs/1711.00937」
いずれの場合も、モデルの具体的な構成(例えば、各層の具体的な構成(データの次元、活性化関数など)、層の数など)は、適宜に変更されてよい。
【0165】
(10)画像生成モデルM2の訓練処理は、
図6で説明した処理に代えて、外観の異常を有するラベルを表す画像データから外観の異常の無いラベルを表す画像データを生成するように画像生成モデルM2を訓練する任意の処理であってよい。例えば、訓練画像は、外観の異常を有するラベルを表す画像を含んでよい。外観の異常を有するラベルを表す訓練画像を使用して生成される再構成画像と、訓練画像から異常を除去して得られる正常画像と、の間の差異が小さくなるように、画像生成モデルM2の演算パラメータが調整されてよい。画像生成モデルM2の訓練は、データ処理装置100によって実行されてよく、データ処理装置100とは異なる別の装置によって実行されてよい。
【0166】
(10)物体検出モデルM1は、YOLOv4に代えて、注目オブジェクト(例えば、ラベル)を検出する任意の機械学習モデルであってよい。物体検出モデルM1は、SSD、R-CNN、Fast R-CNN, Faster R-CNN、Mask R-CNNのいずれかであってよい。物体検出モデルM1の訓練は、データ処理装置100によって実行されてよく、データ処理装置100とは異なる別の装置によって実行されてよい。
【0167】
(11)撮影画像から注目オブジェクト(例えば、ラベル)を表す部分を検出する処理(S350(
図7)、S460(
図8、
図13))は、物体検出モデルM1を使用する処理に代えて、他の種々の処理であってよい。例えば、プロセッサ110は、予め準備されたラベルのテンプレート画像を使用するテンプレートマッチングによって、ラベルを表す部分を検出してよい。
【0168】
(12)画像判定処理(
図8、
図13-
図14、
図15)は、検査処理(
図7)に代えて、他の種々の処理で実行されてよい。例えば、プロセッサ110は、注目オブジェクト(例えば、ラベル)の撮影のために光源500の光量を調整する処理で、画像判定処理を実行してよい。プロセッサ110は、S540、S540cの判定結果がNoとなるように、光量を調整してよい。
【0169】
(13)検査処理と画像判定処理とは、上記の処理に代えて、他の種々の処理であってよい。例えば、
図7のS320、S350は省略されてよい。すなわち、S330、S340は、毎回実行されてよい。ラベルの撮影(S310)が省略され、プロセッサ110は、他のデータ処理装置から撮影画像のデータを取得してよい。プロセッサ110は、他のデータ処理装置からラベル部分画像(すなわち、入力画像)のデータを取得してよい。この場合、ラベル検出処理(S350(
図7)、S460(
図8、
図13))は、省略されてよい。
図7のS380、S390では、プロセッサ110は、ヒートマップ画像を表示部140に表示してよい。
【0170】
(14)処理対象のオブジェクトである注目オブジェクトは、ラベルシート(例えば、ラベルL(
図2(B))に限らず、任意のオブジェクトであってよい。注目オブジェクトは、製品(例えば、複合機)に設けられるオブジェクトであってよい。注目オブジェクトは、ラベルシートと、立体的な銘と、塗装された模様と、を含む複数の要素から選択される1以上の要素を含んでよい。立体的な銘と塗装された模様とは、それぞれ、製造者名、製造者のロゴ、ブランドロゴ、認証マークなど、製品に関する種々の情報を示してよい。製品は、複合機に限らず、ミシン、カッティングマシン、工作機械、携帯端末など、任意の製品であってよい。
【0171】
(15)ヒストグラムを使用する画像処理を実行する画像処理装置は、上述したデータ処理装置100(
図1)に代えて、他の種々の装置(例えば、デジタルカメラ、スマートフォン)であってよい。ネットワークを介して互いに通信可能な複数の装置(例えば、コンピュータ)が、画像処理装置による画像処理の機能を一部ずつ分担して、全体として、画像処理の機能を提供してもよい(これらの装置を備えるシステムが画像処理装置に対応する)。
【0172】
上記各実施例において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部あるいは全部をハードウェアに置き換えるようにしてもよい。例えば、画像生成モデルM2を使用する再構成画像の生成の機能(S505(
図8、
図14)、S605(
図16))を、専用のハードウェア回路によって実現してもよい。
【0173】
また、本開示の機能の一部または全部がコンピュータプログラムで実現される場合には、そのプログラムは、コンピュータ読み取り可能な記録媒体(例えば、一時的ではない記録媒体)に格納された形で提供することができる。プログラムは、提供時と同一または異なる記録媒体(コンピュータ読み取り可能な記録媒体)に格納された状態で、使用され得る。「コンピュータ読み取り可能な記録媒体」は、メモリーカードやCD-ROMのような携帯型の記録媒体に限らず、各種ROM等のコンピュータ内の内部記憶装置や、ハードディスクドライブ等のコンピュータに接続されている外部記憶装置も含み得る。
【0174】
上記の実施例と変形例とは、適宜に組み合わせることができる。また、上記の実施例と変形例とは、本開示の理解を容易にするためのものであり、本発明を限定するものではない。本発明は、その趣旨を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物が含まれる。
【符号の説明】
【0175】
100…データ処理装置、110…プロセッサ、115…記憶装置、120…揮発性記憶装置、130…不揮発性記憶装置、131…第1プログラム、132…第2プログラム、133…第3プログラム、140…表示部、150…操作部、170…通信インタフェース、210…プロセッサ、300…製品、400…撮影装置、500…光源、L…ラベル