(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024163476
(43)【公開日】2024-11-22
(54)【発明の名称】プログラム、および、判断装置
(51)【国際特許分類】
G06T 7/00 20170101AFI20241115BHJP
G01N 21/898 20060101ALI20241115BHJP
G01N 21/88 20060101ALI20241115BHJP
【FI】
G06T7/00 350B
G06T7/00 610Z
G01N21/898 A
G01N21/88 J
【審査請求】未請求
【請求項の数】18
【出願形態】OL
(21)【出願番号】P 2023079103
(22)【出願日】2023-05-12
(71)【出願人】
【識別番号】000005267
【氏名又は名称】ブラザー工業株式会社
(74)【代理人】
【識別番号】110001058
【氏名又は名称】鳳国際弁理士法人
(72)【発明者】
【氏名】宮澤 雅史
【テーマコード(参考)】
2G051
5L096
【Fターム(参考)】
2G051AA40
2G051AB02
2G051CA04
2G051EA12
2G051EB05
5L096AA02
5L096BA03
5L096CA02
5L096DA02
5L096EA33
5L096EA43
5L096FA32
5L096FA35
5L096FA60
5L096FA67
5L096FA69
5L096GA19
5L096HA11
5L096KA04
(57)【要約】
【課題】生地の欠陥の有無を適切に判断する。
【解決手段】
対象生地の読取画像の補正処理を行い、処理済の画像を機械学習モデルに入力する。ここで、補正処理は、第1パターンが規則的に並ぶ第1方向の角度を第1特定角度に近づける第1補正を含んでよい。補正処理は、対象生地を表す画像中の対象生地の歪みを補正する歪み補正を含んでよい。あるいは、読取画像を機械学習モデルに入力する。ここで、機械学習モデルの訓練に使用される複数の訓練画像は、複数の訓練画像の複数の第1方向の第1基準方向に対する角度の分布範囲が第1角度範囲であるように構成されてよい。機械学習モデルは、生地を表す第1種画像に、歪みの付与を含む画像処理を実行することによって得られる第2種画像を使用して訓練されてよい。
【選択図】
図1
【特許請求の範囲】
【請求項1】
織物または編物である生地の欠陥の有無を判断するコンピュータのためのプログラムであって、
光学的に読み取られた対象生地の画像である読取画像のデータを取得する機能と、
前記読取画像の補正処理を行う補正機能であって、前記補正処理は、前記対象生地を表す画像中の、糸によって形成される第1パターンが規則的に並ぶ方向である第1方向の第1基準方向に対する角度を第1特定角度に近づける第1補正を含む、前記補正機能と、
前記補正処理による処理済の画像を機械学習モデルに入力して前記対象生地の欠陥の有無を判断する判断機能であって、前記機械学習モデルは、前記第1方向の角度が前記第1特定角度である生地の画像を使用して訓練されている、前記判断機能と、
をコンピュータに実現させるプログラム。
【請求項2】
請求項1に記載のプログラムであって、
前記機械学習モデルは、生地を表す複数の訓練画像を使用して訓練されており、
前記複数の訓練画像は、前記複数の訓練画像の複数の第1方向の角度の分布範囲が前記第1特定角度を含む特定範囲であるように、構成され、
前記特定範囲は、前記対象生地の読取のために前記対象生地を搬送する搬送装置によって支持される生地の読取画像を使用して推定される前記生地の回転と斜行との一方または両方に基づく前記第1方向の角度の分布を使用して、決定される、
プログラム。
【請求項3】
請求項1に記載のプログラムであって、
前記補正処理は、前記対象生地を表す画像中の、糸によって形成される第2パターンが規則的に並ぶ方向である第2方向の第2基準方向に対する角度をアフィン変換の剪断によって第2特定角度に近づける第2補正を含み、
前記機械学習モデルは、生地を表す複数の訓練画像を使用して訓練されており、
前記複数の訓練画像は、訓練画像の第2方向の前記第2基準方向に対する角度を前記アフィン変換の剪断によって前記第2特定角度に近づける補正による補正済の複数の訓練画像を含む、
プログラム。
【請求項4】
請求項1に記載のプログラムであって、
前記機械学習モデルは、生地を表す複数の訓練画像を使用して訓練されており、
前記複数の訓練画像は、前記複数の訓練画像の複数の第2方向の角度の分布範囲が角度範囲であるように、構成され、前記第2方向は、生地の画像中の糸によって形成される第2パターンが規則的に並ぶ方向であり、
前記角度範囲は、前記対象生地の読取のために前記対象生地を搬送する搬送装置によって支持される生地の読取画像を使用して推定される前記生地の回転と斜行との一方または両方に基づく前記第2方向の角度の分布を使用して、決定される、
プログラム。
【請求項5】
請求項1に記載のプログラムであって、
前記第1特定角度は、前記対象生地の読取のために前記対象生地を搬送する搬送装置によって支持される生地の読取画像を使用して推定される前記生地の回転と斜行との一方または両方に基づく前記第1方向の角度の分布を使用して、決定される、
プログラム。
【請求項6】
織物または編物である生地の欠陥の有無を判断するコンピュータのためのプログラムであって、
光学的に読み取られた対象生地の画像である読取画像のデータを取得する機能と、
前記読取画像を機械学習モデルに入力して前記対象生地の欠陥の有無を判断する判断機能と、
をコンピュータに実現させ、
前記機械学習モデルは、生地を表す複数の訓練画像を使用して訓練されており、
前記複数の訓練画像は、前記複数の訓練画像の複数の第1方向の第1基準方向に対する角度の分布範囲が第1角度範囲であるように、構成され、前記第1方向は、生地の画像中の糸によって形成される第1パターンが規則的に並ぶ方向であり、
前記第1角度範囲は、前記対象生地の読取のために前記対象生地を搬送する搬送装置によって支持される生地の読取画像を使用して推定される前記生地の回転と斜行との一方または両方に基づく前記第1方向の角度の分布を使用して、決定される、
プログラム。
【請求項7】
織物または編物である生地の欠陥の有無を判断するコンピュータのためのプログラムであって、
光学的に読み取られた対象生地の画像である読取画像のデータを取得する機能と、
前記読取画像の補正処理を行う補正機能であって、前記補正処理は、前記対象生地を表す画像中の前記対象生地の歪みを補正する歪み補正を含む、前記補正機能と、
前記補正処理による処理済の画像を機械学習モデルに入力して前記対象生地の欠陥の有無を判断する判断機能と、
をコンピュータに実現させるプログラム。
【請求項8】
請求項7に記載のプログラムであって、
前記歪み補正は、歪みを補正する機械学習モデルである歪み補正モデルによる歪みの補正を含み、
前記歪み補正モデルは、生地を表す第1種画像に歪みを付与することによって得られる第2種画像から、前記第1種画像を生成するように、訓練されている、
プログラム。
【請求項9】
請求項8に記載のプログラムであって、
前記第1種画像は、生地を表す画像の一部分に欠陥の画像を追加することによって得られ、
前記第2種画像は、前記第1種画像によって表される前記欠陥と同じ欠陥を表している、
プログラム。
【請求項10】
請求項8または9に記載のプログラムであって、
前記歪みの付与は、前記第1種画像内に配置された複数の制御点のそれぞれの変位ベクトルに従って、行われ、
前記複数の制御点の複数の変位ベクトルは、隣り合う制御点の変位ベクトルの間の差違が基準以下となるように、構成されている、
プログラム。
【請求項11】
請求項7に記載のプログラムであって、
前記歪み補正は、基準画像を使用するキーポイントマッチングの結果を使用する歪みの補正を含む、
プログラム。
【請求項12】
請求項7に記載のプログラムであって、
前記補正処理は、さらに、角度補正を含み、
前記角度補正は、
前記対象生地を表す画像中の、糸によって形成される第1パターンが規則的に並ぶ方向である第1方向の第1基準方向に対する角度をアフィン変換によって第1特定角度に近づける第1補正と、
前記対象生地を表す画像中の、糸によって形成される第2パターンが規則的に並ぶ方向である第2方向の第2基準方向に対する角度をアフィン変換の剪断によって第2特定角度に近づける第2補正と、
の一方、または、両方を含み、
前記歪み補正は、前記角度補正による処理済の画像中の前記対象生地の歪みを補正する、
プログラム。
【請求項13】
織物または編物である生地の欠陥の有無を判断するコンピュータのためのプログラムであって、
光学的に読み取られた対象生地の画像である読取画像のデータを取得する機能と、
前記読取画像を機械学習モデルに入力して前記対象生地の欠陥の有無を判断する判断機能と、
をコンピュータに実現させ、
前記機械学習モデルは、生地を表す第1種画像に、歪みの付与を含む画像処理を実行することによって得られる第2種画像を使用して訓練されている、
プログラム。
【請求項14】
請求項13に記載のプログラムであって、
前記画像処理は、さらに、角度変更処理を含み、
前記角度変更処理は、
生地の画像中の糸によって形成される第1パターンが規則的に並ぶ方向である第1方向であって、処理対象の画像の前記第1方向の第1基準方向に対する角度をアフィン変換によって変更する第1変更処理と、
生地の画像中の糸によって形成される第2パターンが規則的に並ぶ方向である第2方向であって、処理対象の画像の前記第2方向の第2基準方向に対する角度をアフィン変換の剪断によって変更する第2変更処理と、
の一方、または、両方を含み、
前記歪みの付与は、前記角度変更処理による処理済の画像に歪みを付与する、
プログラム。
【請求項15】
織物または編物である生地の欠陥の有無を判断する判断装置であって、
光学的に読み取られた対象生地の画像である読取画像のデータを取得する取得部と、
前記読取画像の補正処理を行う補正部であって、前記補正処理は、前記対象生地を表す画像中の、糸によって形成される第1パターンが規則的に並ぶ方向である第1方向の第1基準方向に対する角度を第1特定角度に近づける第1補正を含む、前記補正部と、
前記補正処理による処理済の画像を機械学習モデルに入力して前記対象生地の欠陥の有無を判断する判断部であって、前記機械学習モデルは、前記第1方向の角度が前記第1特定角度である生地の画像を使用して訓練されている、前記判断部と、
を備える判断装置。
【請求項16】
織物または編物である生地の欠陥の有無を判断する判断装置であって、
光学的に読み取られた対象生地の画像である読取画像のデータを取得する取得部と、
前記読取画像を機械学習モデルに入力して前記対象生地の欠陥の有無を判断する判断部と、
を備え、
前記機械学習モデルは、生地を表す複数の訓練画像を使用して訓練されており、
前記複数の訓練画像は、前記複数の訓練画像の複数の第1方向の第1基準方向に対する角度の分布範囲が第1角度範囲であるように、構成され、前記第1方向は、生地の画像中の糸によって形成される第1パターンが規則的に並ぶ方向であり、
前記第1角度範囲は、前記対象生地の読取のために前記対象生地を搬送する搬送装置によって支持される生地の読取画像を使用して推定される前記生地の回転と斜行との一方または両方に基づく前記第1方向の角度の分布を使用して、決定される、
判断装置。
【請求項17】
織物または編物である生地の欠陥の有無を判断する判断装置であって、
光学的に読み取られた対象生地の画像である読取画像のデータを取得する取得部と、
前記読取画像の補正処理を行う補正部であって、前記補正処理は、前記対象生地を表す画像中の前記対象生地の歪みを補正する歪み補正を含む、前記補正部と、
前記補正処理による処理済の画像を機械学習モデルに入力して前記対象生地の欠陥の有無を判断する判断部と、
を備える、判断装置。
【請求項18】
織物または編物である生地の欠陥の有無を判断する判断装置であって、
光学的に読み取られた対象生地の画像である読取画像のデータを取得する取得部と、
前記読取画像を機械学習モデルに入力して前記対象生地の欠陥の有無を判断する判断部と、
を備え、
前記機械学習モデルは、生地を表す第1種画像に、歪みの付与を含む画像処理を実行することによって得られる第2種画像を使用して訓練されている、
判断装置。
【発明の詳細な説明】
【技術分野】
【0001】
本明細書は、織物または編物である生地の欠陥の有無を判断する技術に関する。
【背景技術】
【0002】
材料表面の欠陥を識別するために機械学習を使用する技術が提案されている。例えば、特許文献1に記載の技術では、対象材料表面の画像をニューラルネットワークに入力して欠陥低減バージョンが生成され、欠陥低減バージョンと入力された画像とを比較して差異が識別され、識別された差異の位置で対象材料表面の欠陥が識別される。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
織物または編物である生地の欠陥の有無を判断するために、生地の読取画像と機械学習モデルとが使用されてよい。ところが、生地の読取画像が使用される場合、種々の原因に起因して、機械学習モデルを使用して得られる判断結果の精度が低下し得る。例えば、読取画像中の生地の向きが、機械学習モデルに適する向きからズレ得る。このような生地の向きのズレは、判断結果の精度を低下させ得る。また、生地は、金属、硬質樹脂、ガラスなどの硬質な部材と比べて、変形し易い。例えば、生地が搬送される場合、生地には、斜行、歪み、などの変形が生じ得る。読取画像中の生地の変形は、判断結果の精度を低下させ得る。
【0005】
本明細書は、生地の欠陥の有無を適切に判断する技術を開示する。
【課題を解決するための手段】
【0006】
本明細書に開示された技術は、以下の適用例として実現することが可能である。
【0007】
[適用例1]織物または編物である生地の欠陥の有無を判断するコンピュータのためのプログラムであって、光学的に読み取られた対象生地の画像である読取画像のデータを取得する機能と、前記読取画像の補正処理を行う補正機能であって、前記補正処理は、前記対象生地を表す画像中の、糸によって形成される第1パターンが規則的に並ぶ方向である第1方向の第1基準方向に対する角度を第1特定角度に近づける第1補正を含む、前記補正機能と、前記補正処理による処理済の画像を機械学習モデルに入力して前記対象生地の欠陥の有無を判断する判断機能であって、前記機械学習モデルは、前記第1方向の角度が前記第1特定角度である生地の画像を使用して訓練されている、前記判断機能と、をコンピュータに実現させるプログラム。
【0008】
この構成によれば、読取画像によって表される生地によって示される第1方向の角度が第1特定角度からずれている場合であっても、生地の欠陥の有無を適切に判断できる。
【0009】
[適用例2]織物または編物である生地の欠陥の有無を判断するコンピュータのためのプログラムであって、光学的に読み取られた対象生地の画像である読取画像のデータを取得する機能と、前記読取画像を機械学習モデルに入力して前記対象生地の欠陥の有無を判断する判断機能と、をコンピュータに実現させ、前記機械学習モデルは、生地を表す複数の訓練画像を使用して訓練されており、前記複数の訓練画像は、前記複数の訓練画像の複数の第1方向の第1基準方向に対する角度の分布範囲が第1角度範囲であるように、構成され、前記第1方向は、生地の画像中の糸によって形成される第1パターンが規則的に並ぶ方向であり、前記第1角度範囲は、前記対象生地の読取のために前記対象生地を搬送する搬送装置によって支持される生地の読取画像を使用して推定される前記生地の回転と斜行との一方または両方に基づく前記第1方向の角度の分布を使用して、決定される、プログラム。
【0010】
この構成によれば、読取画像によって表される生地によって示される第1方向の角度が変化する場合であっても、生地の欠陥の有無を適切に判断できる。
【0011】
[適用例3]織物または編物である生地の欠陥の有無を判断するコンピュータのためのプログラムであって、光学的に読み取られた対象生地の画像である読取画像のデータを取得する機能と、前記読取画像の補正処理を行う補正機能であって、前記補正処理は、前記対象生地を表す画像中の前記対象生地の歪みを補正する歪み補正を含む、前記補正機能と、前記補正処理による処理済の画像を機械学習モデルに入力して前記対象生地の欠陥の有無を判断する判断機能と、をコンピュータに実現させるプログラム。
【0012】
この構成によれば、読取画像によって表される生地が歪みを有する場合であっても、生地の欠陥の有無を適切に判断できる。
【0013】
[適用例4]織物または編物である生地の欠陥の有無を判断するコンピュータのためのプログラムであって、光学的に読み取られた対象生地の画像である読取画像のデータを取得する機能と、前記読取画像を機械学習モデルに入力して前記対象生地の欠陥の有無を判断する判断機能と、をコンピュータに実現させ、前記機械学習モデルは、生地を表す第1種画像に、歪みの付与を含む画像処理を実行することによって得られる第2種画像を使用して訓練されている、プログラム。
【0014】
この構成によれば、読取画像によって表される生地が歪みを有する場合であっても、生地の欠陥の有無を適切に判断できる。
【0015】
なお、本明細書に開示の技術は、種々の態様で実現することが可能であり、例えば、欠陥の有無の判断方法および判断装置、機械学習モデルの生成方法および生成装置、それらの方法または装置の機能を実現するためのコンピュータプログラム、そのコンピュータプログラムを記録した記録媒体(例えば、一時的ではない記録媒体)、等の形態で実現することができる。
【図面の簡単な説明】
【0016】
【
図1】一実施例としてのデータ処理装置を示す説明図である。
【
図2】デジタルカメラ110と織物700と搬送装置900との斜視図である。
【
図3】訓練処理の例を示すフロートチャートである。
【
図4】(A)-(G)は、訓練処理で処理される情報を示す図である。
【
図5】第1角度AA1の推定処理の例を示すフローチャートである。
【
図6】異常検知モデル310の例を示すブロック図である。
【
図8】(A)-(D)は、ブロック画像と異常マップとの例を示す図である。
【
図9】第2実施例の訓練処理の例を示すフローチャートである。
【
図10】第1角度AA1の分布の例を示すヒストグラムである。
【
図11】第2実施例の検査処理の例を示すフローチャートである。
【
図12】第3実施例の訓練処理の例を示すフローチャートである。
【
図13】第1角度AC1の推定処理の例を示すフローチャートである。
【
図14】(A)-(E)は、第1角度AC1に関連して処理される情報を示す図である。(F)-(J)は、第2角度AC2に関連して処理される情報を示す図である。
【
図15】第2角度AC2の推定処理の例を示すフローチャートである。
【
図16】第3実施例の検査処理の例を示すフローチャートである。
【
図17】第4実施例の訓練処理の例を示すフローチャートである。
【
図18】(A)は、第1角度AC1の分布の例を示すヒストグラムである。(B)は、第2角度AC2の分布の例を示すヒストグラムである。
【
図19】第5実施例の訓練処理の例を示すフローチャートである。
【
図20】(A)-(E)は、訓練処理で処理される情報を示す図である。
【
図21】歪み補正モデル320の例を示すブロック図である。
【
図22】第5実施例の検査処理の例を示すフローチャートである。
【
図23】第6実施例の訓練処理の例を示すフローチャートである。
【
図24】第6実施例の検査処理の例を示すフローチャートである。
【
図25】キーポイントマッチングによる歪み補正の例を示す図である。
【
図26】第7実施例の訓練処理の例を示すフローチャートである。
【
図27】第8実施例の訓練処理の例を示すフローチャートである。
【
図28】第8実施例の検査処理の例を示すフローチャートである。
【
図29】第9実施例の訓練処理の例を示すフローチャートである。
【発明を実施するための形態】
【0017】
A.第1実施例:
A1.装置構成:
図1は、一実施例としてのデータ処理装置を示す説明図である。データ処理装置200は、例えば、パーソナルコンピュータである。データ処理装置200は、対象物(例えば、織物または編物である生地)の外観の検査のための種々のデータ処理を行う。以下、織物700の外観が検査されることとする。
【0018】
データ処理装置200は、プロセッサ210と、記憶装置215と、表示部240と、操作部250と、グラフィックスプロセッシングユニット260(GPU260と呼ぶ)と、通信インタフェース270と、を備えている。これらの要素は、バスを介して互いに接続されている。記憶装置215は、揮発性記憶装置220と、不揮発性記憶装置230と、を含んでいる。
【0019】
プロセッサ210は、データ処理を行うように構成された装置であり、例えば、Central Processing Unit(CPU)、または、System on a chip(SoC)である。揮発性記憶装置220は、例えば、DRAMであり、不揮発性記憶装置230は、例えば、フラッシュメモリである。不揮発性記憶装置230は、訓練プログラム232と、検査プログラム233と、異常検知モデル310と、歪み補正モデル320と、のそれぞれのデータを格納している。異常検知モデル310と歪み補正モデル320とは、機械学習モデルを形成するプログラムモジュールである。プログラム232-233と、モデル310、320との詳細については、後述する。なお、歪み補正モデル320は、後述する他の実施例で使用される(本実施例では、省略される)。
【0020】
表示部240は、液晶ディスプレイ、有機ELディスプレイなどの、画像を表示するように構成された装置である。操作部250は、ボタン、レバー、表示部240上に重ねて配置されたタッチパネルなどの、ユーザによる操作を受け取るように構成された装置である。表示部240と操作部250とは、いわゆるタッチスクリーンを形成してよい。ユーザは、操作部250を操作することによって、種々の要求と指示とをデータ処理装置200に入力可能である。
【0021】
GPU260は、画像処理、機械学習などの種々の数値演算を実行するように構成された演算装置である。GPU260は、プロセッサ210の指示に従って、種々の演算を実行する。なお、GPU260を制御するためのドライバプログラム(図示省略)は、GPU260の製造者によって提供され得る。
【0022】
通信インタフェース270は、他の装置と通信するためのインタフェースである(例えば、USBインタフェース、有線LANインタフェース、IEEE802.11の無線インタフェース、産業用カメラのインタフェース(例えば、CameraLink、CoaXPressなど)、のうちの1種以上を含む)。通信インタフェース270には、デジタルカメラ110と搬送装置900とが接続される。搬送装置900は、織物700を搬送する装置である。デジタルカメラ110は、織物700の撮影に使用される。
【0023】
図2は、デジタルカメラ110と織物700と搬送装置900との斜視図である。本実施例では、織物700は、搬送装置900によって搬送される。搬送装置900は、2個のローラ910、920を有している。織物700は、2個のローラ910、920によって、案内される。2個のローラ910、920の間で、織物700は、平らな部分を形成する。光源120は、織物700の平らな部分に光を照射する。デジタルカメラ110の撮影方向D110は、織物700の平らな部分を向いている。
【0024】
搬送装置900は、第1ローラ910に接続されたロータリーエンコーダ912と、第2ローラ920に接続された駆動モーター922と、を有している。駆動モーター922は、第2ローラ920を回転させることによって、織物700を第1ローラ910から第2ローラ920へ搬送する。データ処理装置200は、ロータリーエンコーダ912からのデータを使用して、織物700の搬送位置を取得できる。データ処理装置200は、駆動モーター922を制御することによって、織物700の搬送を制御できる。
【0025】
図2の下部には、織物700のパターンの例が示されている。織物700は、経糸Wpと緯糸Wfとを使用して、織られている。織物700の織り方は、種々の織り方であり得る。図中のパターンW1、W2、W3は、「平織」、「綾織」、「朱子織」のパターンを、それぞれ示している。いずれの場合も、織物700は、織り方に対応付けられるパターンが規則的に並ぶように、構成される。複数の特定パターンが特定の方向に向かっておおよそ等間隔で並ぶ場合に、特定パターンが特定の方向に規則的に並ぶといえる。デジタルカメラ110によって生成される織物700の撮影画像は、織物700の細かいパターンを表している。
【0026】
A2.訓練処理:
図3は、異常検知モデル310(
図1)の訓練処理の例を示すフロートチャートである。異常検知モデル310は、後述する検査処理で、織物700の異常を検知するために使用される。異常検知モデル310は、異常を検知する任意のモデルであってよい。また、異常検知モデル310の訓練処理は、異常検知モデル310に適する任意の処理であってよい。
【0027】
本実施例では、異常検知モデル310は、異常の無い訓練用の織物の画像を使用して、訓練される(異常検知モデル310の詳細については、後述)。ここで、訓練用の織物の撮影画像が使用されこととする。撮影画像中では、種々の原因に起因して、織物の画像が傾き得る(すなわち、織物の画像が回転し得る)。織物の画像の回転の原因は、例えば、搬送装置900による織物の搬送方向に対するデジタルカメラ110の向きの調整の誤差と、搬送装置900に対する織物700の取り付け位置の誤差と、柔らかい織物の変形と、などがある。撮影画像中の織物の画像の意図しない回転は、異常検知モデル310を使用する検査の精度を低下させ得る。そこで、本実施例では、プロセッサ210は、訓練処理と検査処理とのそれぞれにおいて、撮影画像中の織物の画像の角度を補正する。
【0028】
作業者は、搬送装置900に、訓練用の織物700tを取り付ける(訓練織物700tとも呼ぶ)。訓練織物700tは、異常の無い織物700である。そして、作業者は、データ処理装置200(
図1)の操作部250を操作して、訓練処理の開始指示を入力する。プロセッサ210は、指示に応じて、訓練プログラム232に従って、訓練処理を開始する。
【0029】
S110では、プロセッサ210は、デジタルカメラ110に撮影指示を供給する。デジタルカメラ110は、訓練織物700tを撮影する。プロセッサ210は、デジタルカメラ110から、撮影画像データを取得する。
【0030】
図4(A)-
図4(G)は、訓練処理で処理される情報を示す図である。
図4(A)は、織物700の撮影画像の例を示している。図中には、撮影画像Ba1と、その一部分Ba1Pの拡大図と、が示されている。撮影画像Ba1は、第1方向Dxに平行な2辺と、第1方向Dxに垂直な第2方向Dyに平行な2辺と、を有する矩形状の画像である。撮影画像Ba1のデータは、画素毎のR(赤)、G(緑)、B(青)のそれぞれの成分の色値を表すカラーのビットマップデータである。なお、撮影画像データによって表される色成分は、R、G、Bに代えて、他の色成分(例えば、輝度値)であってよい。
【0031】
図示するように、撮影画像Ba1は、互いに明るさが異なる第1部分Pa1と第2部分Pa2とを含んでいる。ここで、第1部分Pa1は、明るい島状の部分であり、第2部分Pa2は、暗い残りの部分であることとする。撮影画像Ba1は、規則的に並ぶ複数の第1部分Pa1を表している。第1部分Pa1と第2部分Pa2とによって表されるパターンは、緯糸Wfと経糸Wp(
図2)によって形成されるパターンを表している。例えば、織物700の織り方が第3パターンW3を示す場合、緯糸Wfは、経糸Wpに囲まれる島状の部分を形成する。撮影画像Ba1中では、第1部分Pa1は、緯糸Wfを示し得、第2部分Pa2は、経糸Wpを示し得る。
【0032】
図4(A)には、2個の第1部分Pa1と、それらの第1部分Pa1を囲む第2部分Pa2と、で構成されるパターンPTaが示されている。このパターンPTaは、糸Wf、Wpによって形成されるパターンの例である。このパターンPTaは、右下に向かって規則的に並んでいる。図示を省略するが、撮影画像Ba1上では、複数のパターンPTaが、右下に向かって線状に並ぶことによって、ラインPTLを形成している。第1方向Daは、ラインPTLの延びる方向である。図示を省略するが、撮影画像Ba1上で、複数のラインPTLが、第2方向Dyに並んでいる。
【0033】
S130(
図3)では、プロセッサ210は、撮影画像を複数のブロック画像に分割する。1個のブロック画像のサイズ(すなわち、幅(第1方向Dxの画素数)と高さ(第2方向Dyの画素数))は、異常検知モデル310(
図1)に受け入れられるサイズである。
【0034】
S140では、プロセッサ210は、各ブロック画像の第1角度AA1を推定する。
図5は、第1角度AA1の推定処理の例を示すフローチャートである。S410では、プロセッサ210は、ブロック画像を二値化する。二値化の方法は、任意の方法であってよい(例えば、大津の二値化)。
図4(B)は、二値化されたブロック画像の一部分を示している。図示するように、二値化画像Ba2は、第1部分Pa1と第2部分Pa2とを表している。
【0035】
S420(
図5)では、プロセッサ210は、二値化画像に含まれる複数の特徴点から、注目特徴点を選択する。本実施例では、島状の部分(ここでは、第1部分Pa1)が、特徴点として使用される。プロセッサ210は、未処理の第1部分Pa1を、注目特徴点として選択する。
【0036】
S430では、プロセッサ210は、注目特徴点の右下の領域から、最も近い特徴点を選択する。例えば、特徴点Pa1a(
図4(B))が注目特徴点である場合、注目特徴点Pa1aの右下の特徴点Pa1bが選択される。これら2個の特徴点Pa1a、Pa1bは、パターンPTaを形成する。
【0037】
S440(
図5)では、始点から終点へ至るベクトルVaの角度AA1vを算出する。
図4(C)は、ベクトルVaの例を示している。ベクトルVaは、始点Psから終点Peへ至るベクトルである。本実施例では、始点Psは、S420で選択される注目特徴点の重心位置であり、終点Peは、S430で選択される特徴点の重心位置である。角度AA1vは、基準方向に対するベクトルVaの角度である。本実施例では、基準方向は、第1方向Dxである(第1方向Dxを、基準方向Dxとも呼ぶ)。角度AA1vは、基準方向Dxを時計回り方向に角度AA1vで回転させた方向がベクトルVaの方向と同じとなる角度である。
【0038】
S450(
図5)では、プロセッサ210は、全ての特徴点の処理が完了したか否かを判断する。未処理の特徴点が残っている場合(S450:No)、プロセッサ210は、S420へ移行して、新たな特徴点を処理する。
図4(D)に示すように、プロセッサ210は、複数の第1部分Pa1の複数のベクトルVaのそれぞれの角度AA1vを算出する。
【0039】
全ての特徴点の処理が完了した場合(
図5:S450:Yes)、S460で、プロセッサ210は、複数のベクトルVaの複数の角度AA1vを使用して、ブロック画像の第1角度AA1を推定する。第1角度AA1は、複数の角度AA1vによって表される種々の代表的な角度であってよい。本実施例では、プロセッサ210は、角度AA1vのヒストグラムを生成する。
図4(E)は、角度AA1vのヒストグラムの例を示している。横軸は、角度AA1vを示し、縦軸は、頻度Fを示している。なお、角度AA1vのゼロ度と360度とは同じ角度を示すこととする。後述する他の角度についても、同様である。プロセッサ210は、最大の頻度Fに対応付けられる角度を、第1角度AA1として採用する。
【0040】
第1角度AA1の推定方法は、他の種々の方法であってよい。例えば、プロセッサ210は、ヒストグラムを近似する近似曲線Cavを算出し、近似曲線Cavのピークの角度を第1角度AA1として採用してよい。近似曲線Cavは、種々の関数によって表されてよい(例えば、正規分布を表すガウス関数)。また、プロセッサ210は、複数の角度AA1vの種々の要約統計量(平均値、中央値、最頻値、など)を、第1角度AA1として採用してよい。
【0041】
図4(B)、
図4(C)に示すように、ベクトルVaは、パターンPTaを形成する2個の第1部分Pa1(例えば、特徴点Pa1a、Pa1b)の並ぶ方向を示している。複数のパターンPTaは、このベクトルVaとおおよそ同じ方向に、規則的に並んでいる。第1角度AA1は、複数のパターンPTaが規則的に並ぶ方向(すなわち、複数のパターンPTaによって形成されるラインPTLの延びる方向である第1方向Da)を示している。
【0042】
第1角度AA1の推定(
図5:S460)の後、プロセッサ210は、
図5の処理を終了する。なお、S140(
図3)では、プロセッサ210は、ブロック画像毎に、第1角度AA1を決定する。全てのブロック画像の第1角度AA1が決定される場合、処理は、S150へ移行する。
【0043】
S150では、プロセッサ210は、第1角度AA1が第1特定角度AA1Zになるように、各ブロック画像の角度を補正する。本実施例では、第1特定角度AA1Zは、予め決められている。また、プロセッサ210は、ブロック画像の回転によって、第1角度AA1を補正する。
【0044】
図4(C)には、第1特定角度AA1Zの例が示されている。第1特定角度AA1Zは、角度AA1vと同様に、基準方向Dxに対する角度を示している。方向Dazは、第1特定角度AA1Zによって定められる方向である(基準方向Dazと呼ぶ)。基準方向Dazとしては、典型的な第1角度AA1に対応付けられる方向が採用されることが好ましい。これにより、補正のためのブロック画像の回転角度を低減できる。
【0045】
図4(F)は、第1角度AA1の補正の例を示している。プロセッサ210は、第1角度AA1が第1特定角度AA1Zと同じになるように、ブロック画像Ba3を回転する。この回転により、プロセッサ210は、補正済ブロック画像Ba4のデータを生成する。回転の角度は、第1特定角度AA1Zと角度AA1vとの間の差分である。なお、回転の中心は、ブロック画像Ba3の中心であってよい。また、補正済ブロック画像Ba4の高さと幅とは、ブロック画像Ba3の高さと幅と同じである。ブロック画像Ba3のうち補正済ブロック画像Ba4からはみ出た部分P3aは、切り捨てられてよい。補正済ブロック画像Ba4のうち、ブロック画像Ba3が割り当てられない部分P4aの画素の色は、所定の色(例えば、黒色)に設定されてよい。これに代えて、プロセッサ210は、S110(
図3)で取得される元の撮影画像(すなわち、分割前の撮影画像)から、部分P4aに対応する部分画像を取得し、取得した部分画像を部分P4aに割り当ててよい。ここで、プロセッサ210は、ブロック画像Ba3の回転角度で回転済の撮影画像から、部分画像を取得する。以下、補正済ブロック画像を、訓練ブロック画像と呼ぶ。
【0046】
後述するように、本実施例では、検査処理においても、第1角度AA1が第1特定角度AA1Zと同じになるように、画像が補正される。このような角度補正済の画像内において、織物700の画像の小さい傾きが残り得る。例えば、織物700は柔らかいので、画像内の一部分で織物700の画像が傾き得る。そこで、本実施例では、プロセッサ210は、データオーグメンテーションによって、種々の第1角度AA1を示す複数の訓練画像のデータを生成する。
【0047】
S152(
図3)では、プロセッサ210は、S140で得られる複数の第1角度AA1の分布を使用して、特定範囲AA1Sを決定する。
図4(G)は、第1角度AA1の分布の例を示すヒストグラムである。横軸は、第1角度AA1を示し、縦軸は、頻度Fを示している。プロセッサ210は、複数の第1角度AA1のほとんどを含むように、基準範囲AA1Aを決定する。プロセッサ210は、基準範囲AA1Aの幅を狭めることによって、特定範囲AA1Sの幅(第1幅と呼ぶ)を決定する。例えば、プロセッサ210は、基準範囲AA1Aの幅に、ゼロより大きく1未満の所定の第1係数(例えば、0.1以上、0.9以下)を乗じることによって、特定範囲AA1Sの第1幅を算出する。プロセッサ210は、第1特定角度AA1Zを中心とする第1幅の範囲を、特定範囲AA1Sとして採用する。第1係数は、角度補正済の画像内の織物700の画像の傾きによって示される第1角度AA1が、特定範囲AA1Sに含まれるように、予め実験的に決定される。
【0048】
基準範囲AA1Aの決定方法は、種々の方法であってよい。例えば、プロセッサ210は、複数の第1角度AA1を昇順に並べ、上位の一部(例えば、5%)と、下位の一部(例えば、5%)を除いた残りの第1角度AA1の分布範囲を、基準範囲AA1Aとして採用してよい。また、プロセッサ210は、ヒストグラムを近似する近似曲線Caaを算出し、近似曲線Caaによって定められる範囲を基準範囲AA1Aとして採用してよい。例えば、近似曲線Caaは、正規分布を表すガウス関数によって表されてよい。そして、基準範囲AA1Aは、正規分布の平均を中心とする標準偏差の4倍の幅を有する範囲であってよい。このように、プロセッサ210は、外れ値を除いた残りの複数の第1角度AA1を含むように、基準範囲AA1Aを決定することが好ましい。いずれの場合も、特定範囲AA1Sとしては、第1特定角度AA1Zを含む範囲が採用される。
【0049】
S154(
図3)では、プロセッサ210は、データオーグメンテーションによって、新たな複数の訓練ブロック画像のデータを生成する。本実施例では、プロセッサ210は、S150で生成される訓練ブロック画像(すなわち、補正済ブロック画像)を種々の角度で回転させることによって、複数の訓練ブロック画像を生成する。ここで、プロセッサ210は、最終的に得られる複数の訓練ブロック画像の複数の第1角度AA1が特定範囲AA1S内でおおよそ一様に分布するように、複数の訓練ブロック画像を生成する。S150では、複数の補正済ブロック画像が生成される。プロセッサ210は、複数の補正済ブロック画像を使用して、複数の訓練ブロック画像を生成する。画像の回転によって欠落部分(例えば、
図4(F)の部分P4a)が生じる場合、S150(
図3)で説明したように、プロセッサ210は、元の撮影画像(S110)を使用して欠落部分を補充してよい。
【0050】
ここで、プロセッサ210は、最終的にN枚(Nは2以上の整数)の訓練ブロック画像のデータを生成することとする。訓練ブロック画像の数Nは、異常検知モデル310の訓練に適する任意の数であってよい(例えば、数百程度、または、数千程度)。プロセッサ210は、N枚の訓練ブロック画像を生成するために、S110で、複数枚の撮影画像のデータを取得してよい。そして、S130では、プロセッサ210は、複数枚の撮影画像のそれぞれから、複数のブロック画像を取得してよい。ここで、複数枚の撮影画像の間で、訓練織物700tのうちの撮影画像によって表される部分が異なることが好ましい。例えば、プロセッサ210は、織物700tの撮影毎に、搬送装置900に織物700tを搬送させてよい。
【0051】
S290(
図3)では、プロセッサ210は、N枚の訓練ブロック画像を使用して、異常検知モデル310を訓練する。
図6は、異常検知モデル310の例を示すブロック図である。本実施例では、異常検知モデル310は、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」に開示されている。
【0052】
PaDiMの技術では、特徴抽出モデルを使用して画像データから特徴ベクトルが生成される。予め、正常な対象物を表す複数の画像データから複数の特徴ベクトルが生成され、複数の特徴ベクトルの分布を示す平均ベクトルと共分散行列とが算出される(平均ベクトルと共分散行列とのセットは、ガウシアンパラメータとも呼ばれる)。訓練処理によって、ガウシアンパラメータが算出される。検査処理では、検査対象の対象物を表す画像データから特徴ベクトルが生成される。そして、特徴ベクトルとガウシアンパラメータとから得られる距離(ここでは、マハラノビス距離)が、異常スコアとして算出される。
【0053】
本実施例では、画像を複数のクラスに分類するための画像分類モデル310tの一部分が、特徴抽出モデル310aとして使用される。画像分類モデル310tには、入力画像データIdが入力される。入力画像データIdは、第1方向Dxに平行な2辺と、第1方向Dxに垂直な第2方向Dyに平行な2辺と、を有する矩形状の画像を表すビットマップデータである。画像分類モデル310tは、入力画像データIdを使用して、入力画像データIdの種類(例えば、クラス毎の確信度)を示す出力データOdを生成する。
【0054】
画像分類モデル310tとしては、種々のモデルを採用可能である。本実施例では、画像分類モデル310tとして、ResNet18と呼ばれる公知のモデルが使用される。ResNet18は、例えば、論文「K. He, X. Zhang, S. Ren, and J. Sun, “Deep residual learning for image recognition,” in ICML, 2016.」に開示されている。
【0055】
実施例では、画像分類モデル310tは、複数の処理ブロックBC1-BC4、BFを含んでいる。処理ブロックBC1-BC4は、それぞれ、Convolutional Neural Network(CNN)である。処理ブロックBC1-BC4は、それぞれ、1以上の畳込層を含む。処理ブロックBFは、1以上の全結合層を含む。処理ブロックBFは、1つ前の処理ブロックからの特徴マップの次元を削減することによって、出力データOdを生成する。
【0056】
画像分類モデル310tは、複数の演算パラメータを有している。例えば、各畳込層は、畳込演算に使用されるフィルタの重みとバイアスとを有している。各全結合層は、演算に使用される重みとバイアスとを有している。複数の演算パラメータは、画像分類モデル310tの訓練処理によって、調整される。なお、インターネット上では、種々の訓練済の画像分類モデルのデータが、公開されている。本実施例では、公開された訓練済の画像分類モデルのデータが、画像分類モデル310tとして使用される。訓練済の画像分類モデルは、多数の画像データ(例えば、1000クラスに分類されたImageNetと呼ばれるデータセット)を使用して、訓練済である。このような訓練済モデルは、織物700の画像の特徴を、適切に、抽出できる。
【0057】
特徴ベクトルの生成には、画像分類モデル310tの複数の畳込層から得られる複数の特徴マップが使用される。本実施例では、プロセッサ210は、第1処理ブロックBC1に含まれる畳込層からの第1特徴マップfm1と、第2処理ブロックBC2に含まれる畳込層からの第2特徴マップfm2と、第3処理ブロックBC3に含まれる畳込層からの第3特徴マップfm3と、を使用する。異常検知モデル310に含まれる特徴抽出モデル310aは、画像分類モデル310tのうちの最初の部分であって、処理ブロックBC1-BC3を含む部分が、使用される。なお、特徴抽出モデル310aは、画像分類モデル310tの全部を含んでもよい。
【0058】
特徴マップfm1、fm2、fm3は、それぞれ、第1方向Dxと第2方向Dyとに沿って並ぶ複数の画素のそれぞれの特徴量を表している。幅Wは、第1特徴マップfm1の第1方向Dxの画素数を示し、高さHは、第1特徴マップfm1の第2方向Dyの画素数を示している。特徴マップfm1、fm2、fm3の間では、解像度が異なっている。解像度の高い順は、fm1、fm2、fm3の順である。
【0059】
図中の数n1、n2、n3は、特徴マップfm1、fm2、fm3のチャンネル数を、それぞれ、示している。ここで、n1<n2<n3であることとする。
【0060】
プロセッサ210は、特徴マップfm2、fm3を、公知の拡大処理(すなわち、解像度変換処理。例えば、ニアレストネイバ)によって、最大の特徴マップfm1と同じ解像度を有する特徴マップfm2r、fm3rに変換する。解像度変換は、チャンネル毎に、行われる。これらの特徴マップfm1、fm2r、fm3rの全体は、W*H*(n1+n2+n3)個の特徴量を表している。
【0061】
プロセッサ210は、特徴マップfm1、fm2r、fm3rのn1+n2+n3個のチャンネルのうちのR個のチャンネルを使用して特徴マトリクスFMを形成する(R<n1+n2+n3)。R個のチャンネルは、予め、選択されてよい。これに代えて、プロセッサ210は、ランダムに(例えば、乱数を使用して)、R個のチャンネルを選択してよい。特徴マトリクスFMは、H*W*R個の要素で構成される。特徴マトリクスFMは、H*W個の画素のそれぞれの特徴ベクトルを表している。図中の特徴ベクトルxijは、位置(i、j)の特徴ベクトルを示している(iは、第1方向Dxの画素位置を示し、jは、第2方向Dyの画素位置を示す)。特徴ベクトルxijは、R個の要素を有するR次元ベクトルである。
【0062】
図6の下部には、N個の訓練ブロック画像TI1-TINが示されている。プロセッサ210は、N個の訓練ブロック画像TI1-TINを使用して、N個の特徴マトリクスFMを算出する。この結果、H*W個の画素位置毎に、N個の特徴ベクトルが算出される。
【0063】
図6の下部には、N個の訓練ブロック画像TI1-TINから算出されるN個の特徴ベクトルxij,1-xij,Nが示されている。これらN個の特徴ベクトルは、位置(i、j)に対応付けられている。プロセッサ210は、N個の特徴ベクトルxij,1-xij,Nを使用して、平均ベクトルμijと、共分散行列Σijとを、算出する。平均ベクトルμijは、正常な織物700tの画像から得られる平均的な特徴ベクトルxijを示している。共分散行列Σijは、正常な織物700tの画像から得られる複数の特徴ベクトルxijの要素間の共分散の行列である。なお、共分散行列Σijは、PaDiMの上記の論文に記載の計算式に従って、算出される。平均ベクトルμijと共分散行列Σijとのセットは、ガウシアンパラメータとも呼ばれる。
【0064】
プロセッサ210は、H*W個の画素のそれぞれのガウシアンパラメータを算出する。これにより、プロセッサ210は、H*W個のガウシアンパラメータで構成されるガウシアンマトリクスGMの各要素の値を決定する。プロセッサ210は、特徴抽出モデル310aと、ガウシアンマトリクスGMと、を含む異常検知モデル310のデータを、記憶装置215(ここでは、不揮発性記憶装置230)に格納する。そして、プロセッサ210は、
図3の訓練処理を終了する。以上のように、本実施例では、訓練処理によって、ガウシアンマトリクスGMの各要素の値が決定される。
【0065】
A3.検査処理:
図7は、検査処理の例を示すフローチャートである。作業者は、搬送装置900(
図2)に、検査対象の織物700(対象織物700とも呼ぶ)を取り付ける。そして、作業者は、データ処理装置200(
図1)の操作部250を操作して、検査処理の開始指示を入力する。プロセッサ210は、指示に応じて、検査プログラム233に従って、検査処理を開始する。
【0066】
S710では、プロセッサ210は、対象織物700の未検査の部分を撮影できるように、駆動モーター922(
図2)を制御することによって、対象織物700を搬送する。なお、検査処理の開始後の最初のS710では、対象織物700の搬送は省略されてよい。
【0067】
S720では、プロセッサ210は、デジタルカメラ110に撮影指示を供給する。デジタルカメラ110は、対象織物700を撮影する。プロセッサ210は、デジタルカメラ110から、撮影画像データを取得する。
【0068】
S730では、プロセッサ210は、撮影画像を複数のブロック画像に分割する。分割方法は、S130(
図3)での分割方法と同じである。
【0069】
S740では、プロセッサ210は、複数のブロック画像のそれぞれの第1角度AA1を推定する。第1角度AA1の推定方法は、S140(
図3)での第1角度AA1の推定方法と同じである。
【0070】
S750では、プロセッサ210は、第1角度AA1が第1特定角度AA1Zになるように、各ブロック画像の角度を補正する。補正方法は、S150(
図3)の補正方法と同じである。
【0071】
S890では、プロセッサ210は、補正済のブロック画像を異常検知モデル310に入力し、対象織物700が異常(すなわち、欠陥)を有するか否かを判断する。判断方法は、異常検知モデル310に適する任意の方法であってよい。本実施例では、プロセッサ210は、PaDiMの上記の論文に記載の方法で、H*W個の位置のそれぞれの異常スコアを算出する。具体的には、プロセッサ210は、補正済のブロック画像を異常検知モデル310(
図6)に入力することによって、特徴マトリクスFMを算出する。ここで、訓練時に使用されたR個のチャンネルが使用される。特徴マトリクスFMは、H*W個の位置のそれぞれの特徴ベクトルを表している。プロセッサ210は、特徴ベクトルxijとガウシアンパラメータ(μij、Σij)とを使用して、異常スコアを算出する。異常スコアとしては、特徴ベクトルxijとガウシアンパラメータ(μij、Σij)との間のマハラノビス距離が、採用される(異常スコアの算出式としては、PaDiMの上記の論文に記載されている算出式が、採用される)。異常スコアは、H*W個の位置毎に、算出される。大きい異常スコアは、異常の高い可能性を示している。
【0072】
H*W個の位置のそれぞれの異常スコアは、いわゆる異常マップ(ヒートマップとも呼ばれる)を形成する。
図8(A)-
図8(D)は、ブロック画像と異常マップとの例を示す図である。なお、異常マップの解像度は、ブロック画像の解像度よりも低い。図中では、比較しやすいように、各画像は、同じサイズにサイズ調整されている。
【0073】
図8(A)は、正常な対象織物700aのブロック画像BIaと、異常マップBHaと、を表している。図示するように、異常マップBHaは、大きい異常スコアを有する異常部分を示していない。
【0074】
図8(B)は、線状の欠陥701bを有する対象織物700bのブロック画像BIbと、異常マップBHbと、を表している。このような欠陥701bは、種々の原因によって、形成され得る。例えば、糸(例えば、緯糸Wf、または、経糸Wp(
図2))の不具合が、欠陥701bを形成し得る。また、対象織物700bと他の部材(例えば、織物700の運搬用の装置)との接触によって、欠陥701bが形成され得る。異常マップBHbは、欠陥701bを示す線状の異常部分ANbを示している。
【0075】
図8(C)は、点状の欠陥701cを有する対象織物700cのブロック画像BIcと、異常マップBHcと、を表している。このような欠陥701cは、種々の原因によって、形成され得る。例えば、糸(例えば、緯糸Wf、または、経糸Wp(
図2))のほつれが、欠陥701cを形成し得る。また、対象織物700bと他の部材(例えば、織物700の運搬用の装置)との接触によって、欠陥701cが形成され得る。異常マップBHcは、欠陥701cを示す点状の異常部分ANcを示している。
【0076】
図8(D)は、汚れ701dを有する対象織物700dのブロック画像BIdと、異常マップBHdと、を表している。異常マップBHdは、汚れ701dを示す異常部分ANdを示している。
【0077】
プロセッサ210は、複数のブロック画像の複数の位置のそれぞれの異常スコアを算出する。プロセッサ210は、複数の異常スコアを使用して、対象織物700が異常を有すると判断するための異常条件が満たされるか否かを判断する。異常条件は、種々の条件であってよい。異常条件は、例えば、最大の異常スコアが第1閾値以上であることであってよい。第1閾値は、対象織物700の異常を適切に検出するように、予め実験的に決定されてよい。また、異常条件は、第2閾値以上の異常スコアを有する画素の総数が第3閾値以上であることであってよい。第2閾値と第3閾値とは、対象織物700の異常を適切に検出するように、予め実験的に決定されてよい。
【0078】
S894(
図7)では、プロセッサ210は、異常条件が満たされるか否かを判断する。異常条件が満たされない場合(S894:No)、S896で、プロセッサ210は、搬送が完了したか否かを判断する。対象織物700の未検査の部分が残っている場合、S896の判断結果はNoである。この場合、プロセッサ210は、S710へ移行し、対象織物700の未検査の部分を検査する。搬送が完了した場合(S896:Yes)、プロセッサ210は、検査処理を終了する。
【0079】
S894で、異常条件が満たされる場合(S894:Yes)、S898で、プロセッサ210は、第1処理を実行する。第1処理は、異常に関連する任意の処理であってよい。本実施例では、プロセッサ210は、対象織物700の搬送を停止し、異常を作業者に通知する。異常の通知方法は、種々の方法であってよい。例えば、プロセッサ210は、エラーメッセージ、または、異常マップを、表示部240に表示してよい。これに代えて、プロセッサ210は、図示しないスピーカから警告音を出力してよい。S898の後、プロセッサ210は、検査処理を終了する。
【0080】
以上のように、本実施例では、データ処理装置200のプロセッサ210は、対象織物700の欠陥の有無を判断するために、以下の処理を実行する。S720、S730(
図7)では、プロセッサ210は、対象織物700の撮影画像を表すブロック画像のデータを取得する。ブロック画像のデータは、光学的に読み取られた対象織物700の画像である読取画像のデータの例である。S750では、プロセッサ210は、ブロック画像の補正処理を行う。
図4(F)に示すように、補正処理は、基準方向Dxに対する第1方向Da(
図4(F))の第1角度AA1を第1特定角度AA1Zに近づける補正を含む。
図4(A)、
図4(F)で説明したように、第1角度AA1は、対象織物700を表す画像中の複数のパターンPTaが規則的に並ぶ方向である第1方向Daを示している。パターンPTaは、糸Wf、Wpによって形成される。S890では、プロセッサ210は、補正処理による処理済のブロック画像を異常検知モデル310に入力して対象織物700の欠陥の有無を判断する。
図3のS150、S290、
図5で説明したように、異常検知モデル310(具体的には、ガウシアンマトリクスGM)は、第1角度AA1が第1特定角度AA1Zである訓練織物700tの画像(例えば、補正済ブロック画像Ba4(
図4(F)))を使用して訓練されている。
【0081】
この構成によれば、ブロック画像によって表される対象織物700によって示される第1角度AA1が第1特定角度AA1Zからずれている場合であっても、第1角度AA1が第1特定角度AA1Zとなるようにブロック画像は補正される(ブロック画像は、撮影画像の例である)。また、複数の訓練ブロック画像は、第1角度AA1が第1特定角度AA1Zである訓練ブロック画像を含んでいる。従って、プロセッサ210は、異常検知モデル310を使用することによって、対象織物700の欠陥の有無を適切に判断できる。
【0082】
また、本実施例では、
図3で説明したように、異常検知モデル310は、訓練織物700tを表す複数の訓練ブロック画像を使用して訓練されている。S152、S154で説明したように、複数の訓練ブロック画像は、複数の訓練ブロック画像の複数の第1角度AA1の分布範囲が第1特定角度AA1Zを含む特定範囲AA1Sであるように、構成されている。そして、S152(
図3)、
図4(G)で説明したように、特定範囲AA1Sは、訓練織物700tの撮影画像を使用して推定される第1角度AA1の分布を使用して、決定される。ここで、訓練織物700tは、対象織物700の撮影のために対象織物700を搬送する搬送装置900によって支持される。また、第1角度AA1は、織物700(例えば、訓練織物700t)の回転に基づく角度を示している。
【0083】
この構成によれば、補正済のブロック画像内において、対象織物700の画像の傾きが残る場合であっても、異常検知モデル310は、そのような傾きを示す訓練ブロック画像を使用して訓練されているので、プロセッサ210は、異常検知モデル310を使用することによって、対象織物700の欠陥の有無を適切に判断できる。
【0084】
また、特定範囲AA1Sは、訓練織物700tの撮影画像を使用して推定される第1角度AA1の分布を使用して、決定される。従って、第1角度AA1の実際の分布の幅よりも広い特定範囲AA1Sの使用は、容易に回避できる。この結果、異常検知モデル310の訓練の負担は、低減可能である。
【0085】
なお、補正済のブロック画像内における対象織物700の画像の傾きの影響(すなわち、検査結果に対する影響)が小さい場合、S152、S154は、省略されてよい。
【0086】
B.第2実施例:
B1.訓練処理:
図9は、第2実施例の訓練処理の例を示すフローチャートである。本実施例では、プロセッサ210は、互いに異なる第1角度AA1を示す複数の訓練ブロック画像を使用して、異常検知モデル310を訓練する。
【0087】
S110、S130、S140は、
図3のS110、S130、S140と、それぞれ同じである。プロセッサ210は、正常な織物700tを表す複数のブロック画像のそれぞれの第1角度AA1を推定する。
【0088】
S142bでは、プロセッサ210は、複数の第1角度AA1の分布を使用して、角度範囲AA1Rを決定する。角度範囲AA1Rは、後述するデータオーグメンテーションに使用される。
図10は、第1角度AA1の分布の例を示すヒストグラムである。横軸は、第1角度AA1を示し、縦軸は、頻度Fを示している。プロセッサ210は、複数の第1角度AA1のほとんどを含むように、角度範囲AA1R(具体的には、下限AA1Lと上限AA1H)を決定する。角度範囲AA1Rの決定方法は、S152(
図3)で説明した基準範囲AA1A(
図4(G))の決定方法と同じであってよい。
【0089】
S144bでは、プロセッサ210は、第1特定角度AA1Zを決定する。本実施例では、プロセッサ210は、角度範囲AA1Rの中心の値(すなわち、下限AA1Lと上限AA1Hとの平均値)を、第1特定角度AA1Zとして採用する。
【0090】
S150は、
図3のS150と同じである。プロセッサ210は、第1角度AA1が第1特定角度AA1Zになるように、各ブロック画像の角度を補正する。
【0091】
S154bでは、プロセッサ210は、データオーグメンテーションによって、複数の訓練ブロック画像のデータを生成する。本実施例では、プロセッサ210は、S150で生成される補正済ブロック画像を種々の角度で回転させることによって、複数の訓練ブロック画像を生成する。
【0092】
ここで、プロセッサ210は、最終的に得られる複数の訓練ブロック画像の複数の第1角度AA1が角度範囲AA1R内でおおよそ一様に分布するように、複数の訓練ブロック画像のデータを生成する。例えば、プロセッサ210は、回転によって第1特定角度AA1Zから得られる複数の角度(複数の第1角度AA1に相当する)が、角度範囲AA1R内でおおよそ一様に分布するように、複数の訓練ブロック画像のそれぞれの回転の角度をランダムに決定する。
【0093】
上述したように、S150では、複数の補正済ブロック画像のデータが生成される。プロセッサ210は、複数の補正済ブロック画像を使用して、複数の訓練ブロック画像を生成する。画像の回転によって欠落部分(例えば、
図4(F)の部分P4a)が生じる場合、S150(
図3)で説明したように、プロセッサ210は、元の撮影画像(S110)を使用して欠落部分を補充してよい。
【0094】
また、プロセッサ210は、
図3の実施例と同様に、N枚の訓練ブロック画像を生成するために、S110で、複数枚の撮影画像のデータを取得してよい。
【0095】
S290は、
図3のS290と同じである。プロセッサ210は、N枚の訓練ブロック画像を使用して、異常検知モデル310(ここでは、ガウシアンマトリクスGM)を訓練する。そして、プロセッサ210は、
図9の処理を終了する。
【0096】
B2.検査処理:
図11は、第2実施例の検査処理の例を示すフローチャートである。
図7の検査処理との主な差違は、第1角度AA1を補正するためのS740、S750が省略されている点である。
【0097】
S710、S720、S730は、
図7のS710、S720、S730と、それぞれ同じである。プロセッサ210は、撮影画像を複数のブロック画像に分割する。
【0098】
S890bでは、プロセッサ210は、複数のブロック画像のそれぞれを異常検知モデル310に入力し、対象織物700が異常を有するか否かを判断する。
図7のS890との差違は、補正済のブロック画像に代えて、補正されていないブロック画像が使用される点だけである。
【0099】
S890bの後のS894、S896、S898は、
図7のS894、S896、S898と、それぞれ同じである。S896の判断結果がNoである場合、プロセッサ210は、S710へ移行する。
【0100】
以上のように、本実施例では、プロセッサ210は、対象織物700の欠陥の有無を判断するために、以下の処理を実行する。S720、S730(
図11)では、プロセッサ210は、対象織物700の撮影画像を表すブロック画像のデータを取得する。S890bでは、プロセッサ210は、ブロック画像を異常検知モデル310に入力して対象生地の欠陥の有無を判断する。
図9で説明したように、異常検知モデル310は、訓練織物700tを表す複数の訓練ブロック画像を使用して訓練されている。複数の訓練ブロック画像のデータは、S154bのデータオーグメンテーションによって生成される。本実施例では、データオーグメンテーションによって、訓練ブロック画像の第1角度AA1が変化する。
図4(A)、
図4(F)で説明したように、第1角度AA1は、織物700の画像内において、複数のパターンPTaが規則的に並ぶ方向(すなわち、複数のパターンPTaによって形成されるラインPTLの延びる第1方向Da)を示している。パターンPTaは、糸Wf、Wpによって形成される。S154bで説明したように、複数の訓練ブロック画像は、複数の訓練ブロック画像の複数の第1方向Daの基準方向Dazに対する第1角度AA1の分布範囲が角度範囲AA1Rであるように、構成されている。S154b、
図10で説明したように、角度範囲AA1Rは、訓練織物700tの撮影画像を使用して推定される第1角度AA1の分布を使用して、決定される。ここで、訓練織物700tは、対象織物700の撮影のために対象織物700を搬送する搬送装置900によって支持される。また、第1角度AA1は、織物700(例えば、訓練織物700t)の回転に基づく第1方向Daの角度を示している。
【0101】
この構成によれば、複数の訓練ブロック画像の複数の第1角度AA1の分布範囲が角度範囲AA1Rであるように、複数の訓練ブロック画像が構成され、角度範囲AA1Rは、撮影画像を使用して推定される第1角度AA1の分布を使用して決定される。従って、撮影画像によって表される対象織物700によって示される第1角度AA1が変化する場合であっても、プロセッサ210は、異常検知モデル310を使用することによって、対象織物700の欠陥の有無を適切に判断できる。また、第1角度AA1の実際の分布の幅よりも広い角度範囲AA1Rの使用は、容易に回避できる。この結果、異常検知モデル310の訓練の負担は、低減可能である。
【0102】
C.第3実施例:
C1.訓練処理:
図12は、第3実施例の訓練処理の例を示すフローチャートである。
図3の実施例との差違は、織物700の画像の回転による傾きに加えて、織物700の斜行(スキュー)が補正される点である。織物700には、種々の原因に起因して、斜行が生じ得る。織物700の斜行の原因は、例えば、織物700の製造工程における織物700に対する不均一な力の印加、搬送装置900に対する織物700の取り付け位置の誤差、柔らかい織物700の変形、などがある。なお、角度のデータオーグメンテーション(S152、S154(
図3))は、省略される。
【0103】
S110、S130は、
図3のS110、S130と、それぞれ同じである。プロセッサ210は、撮影画像を複数のブロック画像に分割する。
【0104】
S140cでは、プロセッサ210は、各ブロック画像の第1角度AC1を推定する。本実施例では、第1角度AC1は、
図4(F)の第1角度AA1とは異なり、第1方向Dxにおおよそ平行な方向を示している(詳細は、後述)。
【0105】
図13は、第1角度AC1の推定処理の例を示すフローチャートである。S410は、
図5のS410と同じである。プロセッサ210は、ブロック画像を二値化する。
【0106】
図14(A)-
図14(E)は、第1角度AC1に関連して処理される情報を示す図である。
図14(A)は、二値化されたブロック画像の一部分の例を示している。二値化画像Bc2は、明るい島状の部分である複数の第1部分Pc1と、暗い残りの部分である第2部分Pc2と、を表している。二値化画像Bc2は、複数の第1部分Pc1と第2部分Pc2とによって表されるパターンを表している。このパターンは、糸Wf、Wp(
図2)によって形成されるパターンである。
【0107】
図14(A)には、2個の第1部分Pc1(例えば、第1部分Pc11、Pc12)と、それらの第1部分Pc1を囲む第2部分Pc2と、で構成される第1パターンPTc1が示されている。この第1パターンPTc1は、糸Wf、Wpによって形成されるパターンの例である。複数の第1パターンPTc1は、第1方向Dxにおおよそ平行な方向に向かって規則的に並んでいる。複数の第1パターンPTc1は、第1方向Dxにおおよそ平行な方向に向かって線状に並ぶことによって、ラインPTLc1を形成する。第1方向Dc1は、ラインPTLc1の延びる方向である。図示を省略するが、二値化画像Bc2上で、複数のラインPTLc1は、第2方向Dyに並んでいる。撮影画像上においても、複数のラインPTLc1は、第2方向Dyに並んでいる。
【0108】
S420(
図13)は、
図5のS420と同じである。本実施例では、島状の第1部分Pc1が、特徴点として使用される。プロセッサ210は、未処理の第1部分Pc1を、注目特徴点として選択する。
【0109】
S430c1では、プロセッサ210は、注目特徴点の第1方向Dxに位置する検索領域から、特徴点を選択する。
図14(B)は、注目特徴点Pc11と選択領域SA11を示している。本実施例では、選択領域SA11は、円形状の領域である。選択領域SA11の中心Pc11sは、注目特徴点Pc11の重心位置Pc11cから、第1方向Dxへ、距離Ds1離れた位置に配置される。値Rc1は、選択領域SA11の半径を示している。
図14(A)に示すように、注目特徴点Pc11に対応付けられる選択領域SA11には、第1部分Pc12が含まれる。プロセッサ210は、この選択領域SA11から第1部分Pc12を選択する。
【0110】
距離Ds1と半径Rc1とは、選択領域SA11が1個の第1部分Pc1の全体を含み得るとともに、2個の第1部分Pc1の全体を含まないように、織物700に合わせて予め実験的に決定される。なお、選択領域SA11には、1以上の第1部分Pc1が接し得る。プロセッサ210は、選択領域SA11に接する1以上の第1部分Pc1から、選択領域SA11に含まれる部分の大きさ(例えば、画素数)が最も大きい第1部分Pc1を選択する。
【0111】
S440c1では、プロセッサ210は、始点から終点へ至るベクトルVc1の角度AC1vを算出する。
図14(C)は、ベクトルVc1の例を示している。ベクトルVc1の決定方法は、
図4(C)のベクトルVaの決定方法と、同じである。ベクトルVc1の始点Pc1sは、S420で選択される注目特徴点Pc1(例えば、第1部分Pc11)の重心位置であり、ベクトルVc1の終点Pc1eは、S430c1で選択される特徴点Pc1(例えば、第1部分Pc12)の重心位置である。角度AC1vの算出方法は、
図4(C)の角度AA1vの算出方法と同じである。本実施例では、角度AC1vの基準方向は、第1方向Dxである。
【0112】
S450(
図13)は、
図5のS450と同じである。未処理の特徴点が残っている場合(S450:No)、プロセッサ210は、S420へ移行して、新たな特徴点を処理する。
【0113】
全ての特徴点の処理が完了した場合(S450:Yes)、S460c1で、プロセッサ210は、複数のベクトルVc1の複数の角度AC1vを使用して、ブロック画像の第1角度AC1を推定する。第1角度AC1の推定方法は、
図5のS460の第1角度AA1の推定方法と同じである。
図14(D)は、角度AC1vのヒストグラムの例を示している。プロセッサ210は、最大の頻度Fに対応付けられる角度を、第1角度AC1として採用する。第1角度AC1の推定方法は、他の種々の方法であってよい(例えば、近似曲線Ccv1を使用する方法、複数の角度AC1vの種々の要約統計量(平均値、中央値、最頻値、など)を採用する方法、など)。
【0114】
図14(A)に示すように、ベクトルVc1は、第1パターンPTc1を形成する2個の第1部分Pc1(例えば、特徴点Pc11、Pc12)の並ぶ方向を示している。複数の第1パターンPTc1は、このベクトルVc1とおおよそ同じ方向に、規則的に並んでいる。第1角度AC1は、複数の第1パターンPTc1が規則的に並ぶ方向(すなわち、複数の第1パターンPTc1によって形成されるラインPTLc1の延びる方向である第1方向Dc1)を示している。
【0115】
第1角度AC1の推定(
図13:S460c1)の後、プロセッサ210は、
図13の処理を終了する。なお、S140c(
図12)では、プロセッサ210は、複数のブロック画像のそれぞれの第1角度AC1を推定する。
【0116】
S150cでは、プロセッサ210は、第1角度AC1が第1特定角度AC1Zになるように、各ブロック画像の角度を補正する。本実施例では、第1特定角度AC1Zの方向は、典型的な第1角度AA1に対応付けられる方向に、予め決定される(本実施例では、+Dx方向)。以下、+Dx方向を、第1基準方向とも呼ぶ。角度の補正方法は、S150(
図5)、
図4(F)の補正方法と同じである。
図14(E)は、第1角度AC1の補正の例を示している。プロセッサ210は、第1角度AC1が第1特定角度AC1Zと同じになるように、ブロック画像Bc3を回転することによって、補正済ブロック画像Bc4のデータを生成する。
【0117】
以上のS140c、S150c(
図12)によって、プロセッサ210は、ブロック画像の回転に基づく角度を補正する。S160c、S170c(
図12)は、プロセッサ210は、補正済ブロック画像の剪断(スキューとも呼ばれる)に基づく角度を補正する。
【0118】
S160cでは、プロセッサ210は、各補正済ブロック画像の第2角度AC2を推定する。第2角度AC2は、第2方向Dyにおおよそ平行な方向を示している。処理対象のブロック画像は、S150cによる補正済のブロック画像である。
【0119】
図15は、第2角度AC2の推定処理の例を示すフローチャートである。S410c2では、プロセッサ210は、S150c(
図12)の補正済ブロック画像の二値化画像を取得する。プロセッサ210は、補正済ブロック画像の二値化によって、二値化画像のデータを取得してよい。これに代えて、プロセッサ210は、S410(
図13)で生成される二値化画像を、S150c(
図12)と同じ角度で回転することによって、補正済ブロック画像の二値化画像のデータを取得してよい。
【0120】
図14(F)-
図14(J)は、第2角度AC2に関連して処理される情報を示す図である。
図14(F)は、二値化されたブロック画像の一部分の例を示している。二値化画像Bc2rは、明るい島状の部分である複数の第1部分Pc1と、暗い残りの部分である第2部分Pc2と、を表している。
【0121】
図14(F)には、2個の第1部分Pc1(例えば、第1部分Pc21、Pc22)と、それらの第1部分Pc1を囲む第2部分Pc2と、で構成される第2パターンPTc2が示されている。この第2パターンPTc2は、糸Wf、Wpによって形成されるパターンの例である。図示を省略するが、複数の第2パターンPTc2は、-Dy方向におおよそ平行な方向に向かって規則的に並んでいる。複数の第2パターンPTc2は、-Dy方向におおよそ平行な方向に向かって線状に並ぶことによって、ラインPTLc2を形成する。第2方向Dc2は、ラインPTLc2の延びる方向である。図示を省略するが、二値化画像Bc2r上で、複数のラインPTLc2は、第1方向Dxに並んでいる。撮影画像上においても、複数のラインPTLc2は、第1方向Dxに並んでいる。
【0122】
S420(
図15)は、
図5のS420と同じである。本実施例では、島状の第1部分Pc1が、特徴点として使用される。プロセッサ210は、未処理の第1部分Pc1を、注目特徴点として選択する。
【0123】
S430c2では、プロセッサ210は、注目特徴点の-Dy方向に位置する検索領域から、特徴点を選択する。
図14(G)は、注目特徴点Pc21と選択領域SA21を示している。本実施例では、選択領域SA21は、円形状の領域である。選択領域SA21の中心Pc21sは、注目特徴点Pc21の重心位置Pc21cから、-Dy方向へ、距離Ds2離れた位置に配置される。値Rc2は、選択領域SA21の半径を示している。
図14(F)に示すように、注目特徴点Pc21に対応付けられる選択領域SA21には、第1部分Pc22が含まれる。プロセッサ210は、この選択領域SA21から第1部分Pc22を選択する。
【0124】
距離Ds2と半径Rc2との決定方法は、
図14(B)の距離Ds1と半径Rc1との決定方法と、それぞれ同様である。また、プロセッサ210は、選択領域SA21に接する1以上の第1部分Pc1から、選択領域SA21に含まれる部分の大きさ(例えば、画素数)が最も大きい第1部分Pc1を選択する。
【0125】
S440c2では、プロセッサ210は、始点から終点へ至るベクトルVc2の角度AC2vを算出する。
図14(H)は、ベクトルVc2の例を示している。ベクトルVc2の決定方法は、
図4(C)のベクトルVaの決定方法と、同じである。ベクトルVc2の始点Pc2sは、S420(
図15)で選択される注目特徴点Pc1(例えば、第1部分Pc21)の重心位置であり、ベクトルVc2の終点Pc2eは、S430c2で選択される特徴点Pc2(例えば、第1部分Pc22)の重心位置である。角度AC2vの算出方法は、
図4(C)の角度AA1vの算出方法と同じである。本実施例では、角度AC2vの基準方向は、-Dy方向である。
【0126】
S450(
図15)は、
図5のS450と同じである。未処理の特徴点が残っている場合(S450:No)、プロセッサ210は、S420へ移行して、新たな特徴点を処理する。
【0127】
全ての特徴点の処理が完了した場合(S450:Yes)、S460c2で、プロセッサ210は、複数のベクトルVc2の複数の角度AC2vを使用して、ブロック画像の第2角度AC2を推定する。第2角度AC2の推定方法は、
図5のS460の第1角度AA1の推定方法と同じである。
図14(I)は、角度AC2vのヒストグラムの例を示している。プロセッサ210は、最大の頻度Fに対応付けられる角度を、第2角度AC2として採用する。第2角度AC2の推定方法は、他の種々の方法であってよい(例えば、近似曲線Ccv2を使用する方法、複数の角度AC2vの種々の要約統計量(平均値、中央値、最頻値、など)を採用する方法、など)。
【0128】
図14(F)に示すように、ベクトルVc2は、第2パターンPTc2を形成する2個の第1部分Pc1(例えば、特徴点Pc21、Pc22)の並ぶ方向を示している。複数の第2パターンPTc2は、このベクトルVc2とおおよそ同じ方向に、規則的に並んでいる。第2角度AC2は、複数の第2パターンPTc2が規則的に並ぶ方向(すなわち、複数の第2パターンPTc2によって形成されるラインPTLc2の延びる方向である第2方向Dc2)を示している。
【0129】
第2角度AC2の推定(
図15:S460c2)の後、プロセッサ210は、
図15の処理を終了する。なお、S160c(
図12)では、プロセッサ210は、複数のブロック画像のそれぞれの第2角度AC2を推定する。
【0130】
S170cでは、プロセッサ210は、第2角度AC2が第2特定角度AC2Zになるように、各補正済ブロック画像の角度を補正する。本実施例では、第2特定角度AC2Zの方向は、典型的な第2角度AA2に対応付けられる方向に、予め決定される(本実施例では、-Dy方向)。以下、-Dy方向を、第2基準方向とも呼ぶ。また、プロセッサ210は、ブロック画像の剪断(スキューとも呼ばれる)によって、第2角度AC2を補正する。
【0131】
図14(J)は、第2角度AC2の補正の例を示している。プロセッサ210は、第2角度AC2が第2特定角度AC2Zと同じになるように、S150c(
図12)で生成される補正済ブロック画像Bc4の剪断変換によって、新たな補正済ブロック画像Bc5のデータを生成する(剪断変換は、アフィン変換の一種である)。剪断変換の処理としては、種々の処理を採用可能である。例えば、プロセッサ210は、補正済ブロック画像Bc4の第1方向Dxに平行な画素ライン(例えば、画素ラインPLc)を、第1方向Dxに平行に移動させてよい。移動量は、予め決められた基準画素ライン(例えば、+Dy方向の端の画素ラインPLcs)からの距離に比例する値に設定されてよい。比例係数は、剪断変換による第2角度AC2の変化量を示しており、第2角度AC2と第2特定角度AC2Zとの間の差分に対応付けられている。画像の剪断変換によって欠落部分(例えば、部分P5c)が生じる場合、S150(
図3)で説明したように、プロセッサ210は、元の撮影画像(S110(
図12))を使用して欠落部分を補充してよい。
【0132】
以上のように、回転に基づく角度の補正(S140c、S150c)と、剪断に基づく角度の補正(S160c、S170c)とが行われる。以下、これらの処理による補正済ブロック画像を、訓練ブロック画像と呼ぶ。プロセッサ210は、N枚の訓練ブロック画像のデータを生成する。プロセッサ210は、
図3の実施例と同様に、N枚の訓練ブロック画像を生成するために、S110で、複数枚の撮影画像のデータを取得してよい。また、プロセッサ210は、データオーグメンテーションによって、訓練ブロック画像の総数を増やしてよい。データオーグメンテーションの処理は、拡大処理、縮小処理、回転処理など、種々の処理を含んでよい。
【0133】
S290は、
図3のS290と同じである。プロセッサ210は、N枚の訓練ブロック画像を使用して、異常検知モデル310(ここでは、ガウシアンマトリクスGM)を訓練する。そして、プロセッサ210は、
図12の処理を終了する。
【0134】
C2.検査処理:
図16は、第3実施例の検査処理の例を示すフローチャートである。
図7の検査処理との主な差違は、回転による第1角度AC1の補正に加えて、剪断変換による第2角度AC2の補正が行われる点である。
【0135】
S710、S720、S730は、
図7のS710、S720、S730と、それぞれ同じである。プロセッサ210は、撮影画像を複数のブロック画像に分割する。
【0136】
S740cでは、プロセッサ210は、複数のブロック画像のそれぞれの第1角度AC1を推定する。第1角度AC1の推定方法は、S140c(
図12)での第1角度AC1の推定方法と同じである。
【0137】
S750cでは、プロセッサ210は、第1角度AC1が第1特定角度AC1Zになるように、各ブロック画像の角度を補正する。補正方法は、S150c(
図12)の補正方法と同じである(ここでは、画像の回転)。
【0138】
S760cでは、プロセッサ210は、S750cによる複数の補正済ブロック画像のそれぞれの第2角度AC2を推定する。第2角度AC2の推定方法は、S160c(
図12)での第2角度AC2の推定方法と同じである。
【0139】
S770cでは、プロセッサ210は、第2角度AC2が第2特定角度AC2Zになるように、各補正済ブロック画像の角度を補正する。補正方法は、S170c(
図12)の補正方法と同じである(ここでは、画像の剪断変換)。
【0140】
S890は、
図7のS890と同じである。プロセッサ210は、S740c-S770cによって生成される複数の補正済ブロック画像のそれぞれを異常検知モデル310に入力し、対象織物700が異常を有するか否かを判断する。
【0141】
S890の後のS894、S896、S898は、
図7のS894、S896、S898と、それぞれ同じである。S896の判断結果がNoである場合、プロセッサ210は、S710へ移行する。
【0142】
以上のように、本実施例では、プロセッサ210は、対象織物700の欠陥の有無を判断するために、補正処理を実行する(
図16)。補正処理は、S750cの補正(第1補正と呼ぶ)と、S770cの補正(第2補正と呼ぶ)と、を含んでいる。第1補正(S750c)は、
図7の実施例と同様の画像の回転による第1角度AC1の補正である。第2補正(S770c)は、画像の剪断変換による第2角度AC2の補正である。具体的には、
図14(J)に示すように、第2補正は、第2基準方向(ここでは、-Dy方向)に対する第2方向Dc2の第2角度AC2を、アフィン変換の剪断によって、第2特定角度AC2Zに近づける。
図14(F)で説明したように、第2角度AC2は、対象織物700を表す画像中の複数の第2パターンPTc2が規則的に並ぶ方向である第2方向Dc2を示している。第2パターンPTc2は、糸Wf、Wpによって形成される。S890では、プロセッサ210は、補正処理による処理済のブロック画像を異常検知モデル310に入力して対象織物700の欠陥の有無を判断する。
図12のS170c、S290で説明したように、異常検知モデル310(具体的には、ガウシアンマトリクスGM)は、訓練織物700tを表す複数の訓練画像(ここでは、訓練ブロック画像)を使用して訓練されている。複数の訓練画像は、S170c(
図12)による補正済の複数の訓練画像を含んでいる。S170cによる補正は、
図14(J)に示すように、訓練画像の第2方向Dc2の第2基準方向(ここでは、-Dy方向)に対する第2角度AC2をアフィン変換の剪断によって第2特定角度AC2Zに近づける。
【0143】
この構成によれば、ブロック画像によって表される対象織物700によって示される第2角度AC2が第2特定角度AC2Zからずれている場合であっても、第2角度AC2が第2特定角度AC2Zとなるようにブロック画像は補正される(ブロック画像は、撮影画像の例である)。また、複数の訓練画像は、訓練画像の第2角度AC2が第2特定角度AC2Zに近づくように補正された複数の訓練画像を含んでいる。従って、プロセッサ210は、異常検知モデル310を使用することによって、対象織物700の欠陥の有無を適切に判断できる。
【0144】
D.第4実施例:
D1.訓練処理:
図17は、第4実施例の訓練処理の例を示すフローチャートである。
図9の実施例との差違は、第1角度AC1を変化させるデータオーグメンテーションに加えて、第2角度AC2を変化させるデータオーグメンテーションが行われる点である。
【0145】
S110、S130は、
図9のS110、S130と、それぞれ同じである。プロセッサ210は、撮影画像を複数のブロック画像に分割する。
【0146】
S140cは、
図12のS140cと同じである。プロセッサ210は、各ブロック画像の第1角度AC1を推定する。
【0147】
S142dでは、プロセッサ210は、複数の第1角度AC1の分布を使用して、第1角度範囲AC1Rを決定する。
図18(A)は、第1角度AC1の分布の例を示すヒストグラムである。プロセッサ210は、複数の第1角度AC1のほとんどを含むように、第1角度範囲AC1R(具体的には、下限AC1Lと上限AC1H)を決定する。第1角度範囲AC1Rの決定方法は、
図9のS142bの角度範囲AA1Rの決定方法と同じである。第1角度範囲AC1Rは、第1角度AC1のヒストグラムを近似する近似曲線Cd1を使用して決定されてよい。
【0148】
S144d(
図17)では、プロセッサ210は、第1特定角度AC1Zを決定する。本実施例では、プロセッサ210は、第1角度範囲AC1Rの中心の値(すなわち、下限AC1Lと上限AC1Hとの平均値)を、第1特定角度AC1Zとして採用する。
【0149】
S150cは、
図12のS150cと同じである。プロセッサ210は、第1角度AC1が第1特定角度AC1Zになるように、各ブロック画像の角度を補正する。
【0150】
S160cは、
図12のS160cと同じである。プロセッサ210は、各補正済ブロック画像の第2角度AC2を推定する。
【0151】
S162dでは、プロセッサ210は、複数の第2角度AC2の分布を使用して、第2角度範囲AC2Rを決定する。
図18(B)は、第2角度AC2の分布の例を示すヒストグラムである。プロセッサ210は、複数の第2角度AC2のほとんどを含むように、第2角度範囲AC2R(具体的には、下限AC2Lと上限AC2H)を決定する。第2角度範囲AC2Rの決定方法は、S142dの第1角度範囲AC1Rの決定方法と同じである。第2角度範囲AC2Rは、第2角度AC2のヒストグラムを近似する近似曲線Cd2を使用して決定されてよい。
【0152】
S164d(
図17)では、プロセッサ210は、第2特定角度AC2Zを決定する。本実施例では、プロセッサ210は、第2角度範囲AC2Rの中心の値(すなわち、下限AC2Lと上限AC2Hとの平均値)を、第2特定角度AC2Zとして採用する。
【0153】
S170cは、
図12のS170cと同じである。プロセッサ210は、第2角度AC2が第2特定角度AC2Zになるように、各補正済ブロック画像の角度を補正する。
【0154】
S172dでは、プロセッサ210は、データオーグメンテーションによって、複数の訓練ブロック画像のデータを生成する。本実施例では、プロセッサ210は、S170cで生成される補正済ブロック画像に対する回転と剪断変換との一方、または、両方を行うことによって、複数の訓練ブロック画像のデータを生成する。
【0155】
ここで、プロセッサ210は、最終的に得られる複数の訓練ブロック画像の複数の第1角度AC1が第1角度範囲AC1R内でおおよそ一様に分布し、複数の第2角度AC2が第2角度範囲AC2R内でおおよそ一様に分布するように、複数の訓練ブロック画像のデータを生成する。例えば、プロセッサ210は、回転によって第1特定角度AC1Zから得られる複数の角度(複数の第1角度AC1に相当する)が、第1角度範囲AC1R内でおおよそ一様に分布するように、複数の訓練ブロック画像のそれぞれの回転の角度をランダムに決定する。また、プロセッサ210は、剪断変換によって第2特定角度AC2Zから得られる複数の角度(複数の第2角度AC2に相当する)が、第2角度範囲AC2R内でおおよそ一様に分布するように、複数の訓練ブロック画像のそれぞれの剪断変換による角度の変化量をランダムに決定する。
【0156】
上述したように、S170cでは、複数の補正済ブロック画像のデータが生成される。プロセッサ210は、複数の補正済ブロック画像を使用して、複数の訓練ブロック画像のデータを生成する。回転または剪断変換によって欠落部分(例えば、
図14(J)の部分P5c)が生じる場合、プロセッサ210は、元の撮影画像(S110)を使用して欠落部分を補充してよい。
【0157】
また、プロセッサ210は、
図3の実施例と同様に、N枚の訓練ブロック画像を生成するために、S110で、複数枚の撮影画像のデータを取得してよい。
【0158】
S290は、
図3のS290と同じである。プロセッサ210は、N枚の訓練ブロック画像を使用して、異常検知モデル310(ここでは、ガウシアンマトリクスGM)を訓練する。そして、プロセッサ210は、
図17の処理を終了する。
【0159】
本実施例の検査処理は、
図11の実施例の検査処理と同じである。このように、本実施例では、プロセッサ210は、対象織物700の欠陥の有無を判断するために、以下の処理を実行する。S720、S730(
図11)では、プロセッサ210は、対象織物700の撮影画像を表すブロック画像のデータを取得する。S890bでは、プロセッサ210は、ブロック画像を異常検知モデル310に入力して対象生地の欠陥の有無を判断する。
図17で説明したように、異常検知モデル310は、訓練織物700tを表す複数の訓練ブロック画像を使用して訓練されている。複数の訓練ブロック画像のデータは、S172dのデータオーグメンテーションによって生成される。
【0160】
本実施例では、データオーグメンテーションによって、訓練ブロック画像の第1角度AC1が変化する。
図14(A)、
図14(E)で説明したように、第1角度AC1は、織物700の画像内において、複数の第1パターンPTc1が規則的に並ぶ方向(すなわち、複数の第1パターンPTc1によって形成されるラインPTLc1の延びる第1方向Dc1)を示している。第1パターンPTc1は、糸Wf、Wpによって形成される。S172dで説明したように、複数の訓練ブロック画像は、複数の訓練ブロック画像の複数の第1方向Dc1の基準方向(ここでは、+Dx方向)に対する第1角度AC1の分布範囲が第1角度範囲AC1Rであるように、構成されている。S172d、
図18(A)で説明したように、第1角度範囲AC1Rは、訓練織物700tの撮影画像を使用して推定される第1角度AC1の分布を使用して、決定される。ここで、訓練織物700tは、対象織物700の撮影のために対象織物700を搬送する搬送装置900によって支持される。また、第1角度AC1は、織物700(例えば、訓練織物700t)の回転に基づく第1方向Dc1の角度を示している。
【0161】
この構成によれば、複数の訓練ブロック画像の複数の第1角度AC1の分布範囲が第1角度範囲AC1Rであるように、複数の訓練ブロック画像が構成され、第1角度範囲AC1Rは、撮影画像を使用して推定される第1角度AC1の分布を使用して決定される。従って、撮影画像によって表される対象織物700によって示される第1角度AC1が変化する場合であっても、プロセッサ210は、異常検知モデル310を使用することによって、対象織物700の欠陥の有無を適切に判断できる。また、第1角度AC1の実際の分布の幅よりも広い第1角度範囲AC1Rの使用は、容易に回避できる。この結果、異常検知モデル310の訓練の負担は、低減可能である。
【0162】
また、本実施例では、データオーグメンテーションによって、訓練ブロック画像の第2角度AC2が変化する。
図14(F)、
図14(J)で説明したように、第2角度AC2は、織物700の画像内において、複数の第2パターンPTc2が規則的に並ぶ方向(すなわち、複数の第2パターンPTc2によって形成されるラインPTLc2の延びる第2方向Dc2)を示している。第2パターンPTc2は、糸Wf、Wpによって形成される。S172dで説明したように、複数の訓練ブロック画像は、複数の訓練ブロック画像の複数の第2方向Dc2の基準方向(ここでは、-Dy方向)に対する第2角度AC2の分布範囲が第2角度範囲AC2Rであるように、構成されている。S172d、
図18(B)で説明したように、第2角度範囲AC2Rは、訓練織物700tの撮影画像を使用して推定される第2角度AC2の分布を使用して、決定される。ここで、訓練織物700tは、対象織物700の撮影のために対象織物700を搬送する搬送装置900によって支持される。また、第2角度AC2は、織物700(例えば、訓練織物700t)の斜行に基づく第2方向Dc2の角度を示している。
【0163】
この構成によれば、複数の訓練ブロック画像の複数の第2角度AC2の分布範囲が第2角度範囲AC2Rであるように、複数の訓練ブロック画像が構成され、第2角度範囲AC2Rは、撮影画像を使用して推定される第2角度AC2の分布を使用して決定される。従って、撮影画像によって表される対象織物700によって示される第2角度AC2が変化する場合であっても、プロセッサ210は、異常検知モデル310を使用することによって、対象織物700の欠陥の有無を適切に判断できる。また、第2角度AC2の実際の分布の幅よりも広い第2角度範囲AC2Rの使用は、容易に回避できる。この結果、異常検知モデル310の訓練の負担は、低減可能である。
【0164】
E.第5実施例:
E1.訓練処理:
図19は、第5実施例の訓練処理の例を示すフローチャートである。本実施例では、プロセッサ210は、異常検知モデル310に加えて、歪み補正モデル320が、訓練される。織物700は、柔らかいので、局所的に変形し得る。撮影画像が局所的に変形した織物700を表す場合、その変形は、異常検知モデル310を使用する検査の精度を低下させ得る。そこで、本実施例では、プロセッサ210は、検査処理において、歪み補正モデル320を使用して、撮影画像中の織物700の局所的な変形(すなわち、歪み)を補正する。訓練処理では、異常検知モデル310に加えて、歪み補正モデル320が訓練される。
【0165】
作業者は、搬送装置900に、異常が無く、かつ、歪みの小さい訓練織物700tを取り付ける。作業者は、訓練織物700tを搬送装置900に取り付ける前に、訓練織物700tの歪みをまっすぐにしてよい(地直しとも呼ばれる)。また、作業者は、訓練織物700tを搬送装置900に取り付けた後に、織物700tの歪みをまっすぐにしてよい。いずれの場合も、検査に対する影響が許容できる程度の小さい歪みは、残ってよい。そして、作業者は、データ処理装置200(
図1)の操作部250を操作して、訓練処理の開始指示を入力する。プロセッサ210は、指示に応じて、訓練プログラム232に従って、訓練処理を開始する。
【0166】
S110eでは、プロセッサ210は、デジタルカメラ110に撮影指示を供給する。デジタルカメラ110は、訓練織物700tを撮影する。プロセッサ210は、デジタルカメラ110から、撮影画像データを取得する。
【0167】
S130、S290は、
図3のS130、S290と、それぞれ同じである。これにより、異常検知モデル310が訓練される。本実施例では、回転と斜行とを含む歪みが、歪み補正モデル320によって補正され得る。従って、回転と斜行とのそれぞれの補正は、省略される。
【0168】
S310eでは、プロセッサ210は、S130で得られるブロック画像の一部分に欠陥画像をペーストする(欠陥画像のペーストによって生成されるブロック画像を、第1種画像と呼ぶ)。
図20(A)-
図20(E)は、訓練処理で処理される情報を示す図である。
図20(A)は、ブロック画像の例を示している。このブロック画像Beoは、異常が無く、かつ、歪みの小さい織物700tを表している。
図20(B)は、第1種画像の例を表している。第1種画像Be1のデータは、ブロック画像Beoに欠陥Deの画像をペーストすることによって生成される。第1種画像Be1上には、格子が点線で示されている。複数の格子点CPは、後述する歪み付与処理で使用される。
【0169】
図示を省略するが、本実施例では、互いに異なる欠陥を表す複数の欠陥画像のデータが、不揮発性記憶装置230に予め格納される。S310eでは、プロセッサ210は、以下の処理を実行する。プロセッサ210は、使用可能な複数の欠陥画像から、欠陥画像をランダムに選択する。プロセッサ210は、複数のブロック画像から、処理対象のブロック画像をランダムに選択する。プロセッサ210は、選択したブロック画像内から、位置をランダムに決定する。そして、プロセッサ210は、決定した位置に、選択した欠陥画像をペーストすることによって、第1種画像のデータを生成する。
【0170】
S320e(
図19)では、プロセッサ210は、ランダムに(例えば、乱数を使用して)変位ベクトル場を生成する。
図20(C)は、変位ベクトル場の例を示している。本実施例では、変位ベクトル場VFeは、第1種画像Be1上の複数の格子点CP(制御点CPとも呼ぶ)のそれぞれの変位ベクトルVeを表している。本実施例では、複数の制御点CPは、第1方向Dxと第2方向Dyとに沿って格子状に並んで配置されている。プロセッサ210は、複数の制御点CPの複数の変位ベクトルVeを、ランダムに決定する。第1種画像Be1(ひいては、ブロック画像)上の複数の制御点CPのそれぞれの位置は、予め決められている。また、制御点CPの密度(例えば、単位面積当たりの制御点CPの数)は、変位ベクトル場VFeが対象織物700の実際に生じ得る歪みを適切に表すように、予め実験的に決定される。
【0171】
複数の変位ベクトルVeが独立してランダムに決定される場合、変位ベクトル場VFeは、織物700にとって非現実的な歪みを表し得る。例えば、隣り合う2個の制御点CPの2個の変位ベクトルVeの間の差が、過度に大きくなり得る。そこで、本実施例では、プロセッサ210は、隣り合う2個の制御点CPの2個の変位ベクトルVeの間の差違が基準以下となるように、変位ベクトルVeを調整する。注目する制御点CPの隣の制御点CPとしては、いわゆる4近傍の制御点CPが採用されてよい。
【0172】
図20(D)は、変位ベクトルVeの差違を示している。図中には、隣り合う2個の制御点CPa、CPbと、制御点CPa、CPbの変位ベクトルVea、Vebと、が示されている。差分ベクトルdVeは、Vea-Vebによって算出される。プロセッサ210は、以下の変位条件が満たされるように、複数の変位ベクトルVeを決定する。
(変位条件)隣り合う2個の制御点CPの全ての組み合わせのそれぞれの差分ベクトルdVeの長さが、基準THe以下である。
【0173】
複数の変位ベクトルVeを決定する方法は、種々の方法であってよい。例えば、プロセッサ210は、まず、複数の制御点CPの複数の変位ベクトルVeのそれぞれを、ランダムに決定する。各変位ベクトルVeの長さは、上限値以下に制限される。上限値は、対象織物700の実際の歪みによって形成され得る変位(特に、最大の変位)を上限値が表すように、予め実験的に決定される。次に、プロセッサ210は、隣り合う2個の制御点CPのペアであって、処理対象のペアを選択する(対象ペアと呼ぶ)。プロセッサ210は、対象ペアの差分ベクトルdVeの長さが基準THeを超える場合に、対象ペアの1個の制御点CPの1個の変位ベクトルVeを、差分ベクトルdVeの長さが基準THe以下となるように、調整する。変位ベクトルVeの調整は、変位ベクトルVeの向きの変更と、変位ベクトルVeの長さの変更と、の一方、または、両方を含んでよい。プロセッサ210は、変位条件が満たされるまで、対象ペアを変更しつつ、変位ベクトルVeを調整する。
【0174】
これに代えて、プロセッサ210は、以下の処理を実行してよい。プロセッサ210は、複数の制御点CPから、複数の制御点CPを、低密度で(すなわち、粗く)選択する(対象制御点CPと呼ぶ)。例えば、プロセッサ210は、第1方向Dxに沿って、10個の制御点CPの間隔で1個の制御点CPを選択し、第2方向Dyに沿って、10個の制御点CPの間隔で1個の制御点CPを選択してよい。プロセッサ210は、選択した複数の対象制御点CPのそれぞれの仮の変位ベクトルを、ランダムに決定する。仮の変位ベクトルの長さは、上限値以下に制限される。プロセッサ210は、複数の制御点CPの複数の変位ベクトルVeを、複数の仮の変位ベクトルを使用する補間(例えば、キュービックBスプラインによる補間)によって、決定する。ここで、第1方向Dxの成分と第2方向Dyの成分とが、それぞれ、補間される。粗く選択された複数の対象制御点CPの複数の仮の変位ベクトルを使用する補間によって、過度に大きい長さを有する差分ベクトルdVeが生じる可能性は、低減する。プロセッサ210は、変位条件が満たされるまで、仮の変位ベクトルの長さの上限値の調整と、仮の変位ベクトルの決定と、補間とを、繰り返してよい。
【0175】
S330e(
図19)では、プロセッサ210は、変位ベクトル場VFeを使用して、第1種画像に歪みを付与する(歪みの付与によって生成される画像を、第2種画像と呼ぶ)。
図20(E)は、第2種画像の例を示している。第2種画像Be2のデータは、第1種画像Be1(
図20(B))に歪みを付与することによって、生成される。このように生成される第2種画像Be2は、第1種画像Be1(
図20(B))の欠陥Deと同じ欠陥Deを表している(ただし、第2種画像Be2上では、欠陥Deは、歪み得る)。第2種画像Be2上には、変位ベクトル場VFeに従って移動した制御点CPが示されている。
【0176】
変位ベクトル場VFeを使用する歪みの付与方法は、種々の方法であってよい。プロセッサ210は、変位ベクトル場VFeによって表される複数の変位ベクトルVeを使用する補間(例えば、キュービックBスプラインによる補間)によって、第2種画像Be2の各画素の色値を決定してよい。例えば、プロセッサ210は、第1種画像Be1の複数の画素のそれぞれを、変位ベクトル場VFeに従って変位してよい。そして、プロセッサ210は、第2種画像Be2の注目画素の色値を、注目画素の近傍に位置する複数の変位済画素を使用する補間によって、算出してよい。
【0177】
本実施例では、プロセッサ210は、最終的にM組(Mは2以上の整数)の第1種画像と第2種画像とのペア(訓練ペアと呼ぶ)のデータを生成することとする。訓練ペアの数Mは、歪み補正モデル320の訓練に適する任意の数であってよい(例えば、数百程度、または、数千程度)。プロセッサ210は、M組の訓練ペアを生成するために、M枚のブロック画像に対して、S310e-S330eの処理を実行してよい。また、プロセッサ210は、M枚のブロック画像を取得するために、S110eで、複数枚の撮影画像のデータを取得してよい。そして、S130では、プロセッサ210は、複数枚の撮影画像のそれぞれから、複数のブロック画像を取得してよい。
【0178】
S380e(
図19)では、プロセッサ210は、M組の訓練ペアを使用して、歪み補正モデル320を訓練する。
図21は、歪み補正モデル320の例を示すブロック図である。本実施例では、歪み補正モデル320は、DIRNet(End-to-End Unsupervised Deformable Image Registration with a Convolutional Neural Network)と呼ばれる歪み補正の技術を使用して構成されている。DIRNetは、例えば、論文「Bob D. de Vos, Floris F. Berendsen, Max A. Viergever, Marius Staring, Ivana Isgum, "End-to-end unsupervised deformable image registration with a convolutional neural network", arXiv:1704.06065(2017), https://arxiv.org/abs/1704.06065」に開示されている。
【0179】
DIRNetの技術は、移動画像E2を固定画像E1にワープ(すなわち、変形)させるための変位ベクトル場DVFを生成する。この変位ベクトル場DVFは、固定画像E1に対する移動画像E2の歪みを補正する。本実施例の訓練処理では、移動画像E2として第2種画像(例えば、第2種画像Be2)が使用され、固定画像E1として、第1種画像(例えば、第1種画像Be1)が使用される。
【0180】
歪み補正モデル320は、畳込ネット回帰器320aと、空間変換器320bと、リサンプラ320cと、を含んでいる。
【0181】
畳込ネット回帰器320aは、複数の畳込ネットワークを含んでいる(図示省略)。畳込ネット回帰器320aには、固定画像E1のデータと移動画像E2のデータとが連結されたデータが、入力される。畳込ネット回帰器320aは、固定画像E1からのパッチEP1と移動画像E2からのパッチEP2とのペアであって、空間的に対応する(すなわち、同じ位置の)パッチEP1、EP2のペアを解析する。畳込ネット回帰器320aは、パッチEP1、EP2のペアに対応する位置の制御点の2次元の変位を出力するように、訓練される。畳込ネット回帰器320aは、パッチEP1、EP2の複数のペアの複数の制御点のそれぞれの変位を出力する。複数の制御点の複数の変位のセット320aoは、空間変換器320bによって使用される。
【0182】
空間変換器320bは、変位セット320aoを使用して、リサンプラ320cによる画像のワープを可能にする高密度な変位(例えば、全ての画素の変位)を表す変位ベクトル場DVFを生成する。変位ベクトル場DVFの生成方法は、種々の方法であってよい。本実施例では、空間変換器320bは、キュービックBスプラインによる補間によって、変位ベクトル場DVFを生成する。
【0183】
リサンプラ320cは、変位ベクトル場DVFに従って移動画像E2をワープすることによって、補正済画像E3のデータを生成する。変位ベクトル場DVFを使用する画像のワープ方法は、種々の方法であってよい。例えば、プロセッサ210は、移動画像E2の複数の画素のそれぞれを、変位ベクトル場DVFに従って変位してよい。そして、プロセッサ210は、補正済画像E3の注目画素の色値を、注目画素の近傍に位置する複数の変位済画素を使用する補間によって、算出してよい。
【0184】
歪み補正モデル320の訓練方法は、歪み補正モデル320に適する任意の方法であってよく、例えば、DIRNetの上記の論文に記載の方法であってよい。プロセッサ210は、例えば、以下のように、歪み補正モデル320を訓練してよい。プロセッサ210は、M組の第1種画像と第2種画像との訓練ペアから、複数の訓練ペアで構成されるサブセットを取得する。プロセッサ210は、サブセットに含まれる訓練ペアのデータを使用して歪み補正モデル320の演算を実行することによって、補正済画像E3のデータを生成する。プロセッサ210は、第1種画像(すなわち、固定画像E1)のデータと補正済画像E3のデータを使用して、画像類似度SMを算出する。画像類似度SMは、2枚の画像E1、E3の類似度を示す種々の値であってよい。例えば、画像類似度SMは、正規化相互相関(Normalized Cross Correlation)であってよい。
【0185】
プロセッサ210は、サブセットの複数の訓練ペアを使用して複数の画像類似度SMを算出する。プロセッサ210は、複数の画像類似度SMを使用して、損失を算出する。損失は、画像類似度SMが小さいほど大きい種々の値であってよい。例えば、損失は、画像類似度SMの最大値(ここでは、1)と画像類似度SMとの間の差分の合計値であってよい。
【0186】
プロセッサ210は、損失が小さくなるように、畳込ネット回帰器320aの複数の演算パラメータ(畳込フィルタ、バイアスなど)を調整する。調整には、例えば、誤差逆伝播法と勾配降下法とが使用されてよい。
【0187】
調整の後、プロセッサ210は、訓練終了条件が満たされるか否かを判断する。訓練終了条件は、歪み補正モデル320が適切に訓練されたことを示す任意の条件であってよい。例えば、終了条件は、訓練に使用されていない所定数の訓練ペアを使用して算出される損失が、所定の損失閾値以下であることであってよい。これに代えて、訓練終了条件は、作業者からの終了指示が入力されることであってよい。作業者は、訓練に使用されていない訓練ペアから得られる補正済画像E3と固定画像E1とを比較することによって、訓練の終了指示、または、継続指示を操作部250に入力してよい。
【0188】
プロセッサ210は、訓練終了条件が満たされるまで、新たなサブセットを使用する調整を繰り返す。訓練終了条件が満たされる場合、プロセッサ210は、訓練済の歪み補正モデル320のデータを、記憶装置215(ここでは、不揮発性記憶装置230)に格納する。以上により、歪み補正モデル320の訓練、すなわち、S380e(
図19)が終了する。そして、
図19の処理が、終了する。
【0189】
E2.検査処理:
図22は、第5実施例の検査処理の例を示すフローチャートである。
図7の検査処理との差違は、第1角度AA1の補正(S740、S750)に代えて、歪みの補正(S810e)が行われる点だけである。
【0190】
S710、S720、S730は、
図7のS710、S720、S730と、それぞれ、同じである。プロセッサ210は、撮影画像を複数のブロック画像に分割する。
【0191】
S810eでは、プロセッサ210は、歪み補正モデル320(
図21)を使用して、複数のブロック画像のそれぞれの歪みを補正する。本実施例では、歪みの無い織物700を表す参照ブロック画像のデータが、予め不揮発性記憶装置230に格納される(図示省略)。プロセッサ210は、ブロック画像と参照ブロック画像とのペアを使用して、補正済画像E3のデータを生成する。ブロック画像は、移動画像E2として使用され、参照ブロック画像は、固定画像E1として使用される。歪み補正モデル320は、参照ブロック画像に対するブロック画像の歪みを補正することによって、補正済画像E3のデータを生成する。移動画像E2(ブロック画像)が欠陥を表す場合、補正済画像E3は、同じ欠陥を表している。移動画像E2(ブロック画像)が欠陥を表さない場合、補正済画像E3は、欠陥を表さない。
【0192】
S890は、
図7のS890と同じである。プロセッサ210は、S810eで得られる複数の補正済画像のそれぞれを異常検知モデル310に入力し、対象織物700が異常を有するか否かを判断する。S890の後のS894、S896、S898は、
図7のS894、S896、S898と、それぞれ同じである。S896の判断結果がNoである場合、プロセッサ210は、S710へ移行する。
【0193】
以上のように、本実施例では、プロセッサ210は、対象織物700の欠陥の有無を判断するために、以下の処理を実行する。S720、S730(
図22、
図11)では、プロセッサ210は、対象織物700の撮影画像を表すブロック画像のデータを取得する。S810eでは、プロセッサ210は、ブロック画像の補正処理を行う。S890では、プロセッサ210は、補正処理による処理済の画像を異常検知モデル310に入力して対象織物700の欠陥の有無を判断する。ここで、補正処理(S810e)は、
図21で説明したように、対象織物700を表す画像中の対象織物700の歪みを補正する歪み補正を含んでいる。従って、撮影画像中の対象織物700が歪みを有する場合であっても、プロセッサ210は、異常検知モデル310を使用することによって、対象織物700の欠陥の有無を適切に判断できる。
【0194】
また、本実施例では、歪み補正(S810e)は、歪みを補正する機械学習モデルである歪み補正モデル320(
図21)による歪みの補正を含んでいる。
図19のS330e、S380e、
図21で説明したように、歪み補正モデル320は、訓練織物700tを表す第1種画像Be1に歪みを付与することによって得られる第2種画像Be2から、第1種画像Be1との高い画像類似度SMを有する補正済画像E3を生成するように、訓練されている。すなわち、歪み補正モデル320は、第2種画像Be2から第1種画像Be1を生成するように、訓練されている。従って、歪み補正モデル320は、画像の歪みを適切に補正することができる。
【0195】
また、本実施例では、
図19のS310e、
図20(B)で説明したように、第1種画像Be1は、訓練織物700tを表すブロック画像の一部分に欠陥の画像(例えば、欠陥Deの画像)を追加することによって得られる。
図20(E)で説明したように、第2種画像Be2は、第1種画像Be1によって表される欠陥Deと同じ欠陥Deを表している、従って、歪み補正モデル320は、検査のための撮影画像が、欠陥を有する対象織物700を表す場合であっても、適切に、撮影画像の歪みを補正できる。
【0196】
なお、本実施例では、歪み補正モデル320は、補正済画像E3を直接的に生成するのではなく、移動画像E2を変形することによって補正済画像E3を生成する。従って、移動画像E2が欠陥を表さない場合、欠陥を表さない補正済画像E3が生成される。移動画像E2が欠陥を表す場合、同じ欠陥を表す補正済画像E3が生成される。従って、訓練用の第1種画像Be1に対する欠陥の画像の追加(S310e)は、省略されてよい。
【0197】
また、本実施例では、
図19のS320e、S330eで説明したように、歪みの付与は、第1種画像Be1(
図20(C))内に配置された複数の制御点CPのそれぞれの変位ベクトルVeに従って、行われる。そして、
図20(D)で説明したように、複数の対象制御点CPの複数の変位ベクトルVeは、隣り合う制御点CPの変位ベクトルVeの間の差違が基準以下となるように、構成されている。本実施例では、複数の変位ベクトルVeは、隣り合う2個の制御点CPの差分ベクトルdVeの長さが基準THe以下であるように、構成されている。従って、プロセッサ210は、第1種画像Be1に、織物700に実際に生じ得る歪みを付与することができる。この結果、歪み補正モデル320は、実際に生じ得る歪みを補正するように、訓練される。
【0198】
F.第6実施例:
F1.訓練処理:
図23は、第6実施例の訓練処理の例を示すフローチャートである。本実施例では、歪み補正モデル320は、省略される。プロセッサ210は、後述する検査処理において、歪み補正モデル320を使用せずに、撮影画像中の織物700の歪みを補正する。本実施例の訓練処理は、
図19の訓練処理から、歪み補正モデル320のためのS310e-S380eを省略したものである。プロセッサ210は、S110e、S130、S290によって、異常検知モデル310を訓練する。
【0199】
F2.検査処理:
図24は、第6実施例の検査処理の例を示すフローチャートである。
図22の検査処理との差違は、歪み補正モデル320による歪みの補正処理(S810e)が、キーポイントマッチングによる歪みの補正処理(S810f)に置換されている点だけである。
【0200】
S710、S720、S730は、
図22のS710、S720、S730と、それぞれ、同じである。プロセッサ210は、撮影画像を複数のブロック画像に分割する。
【0201】
S810fでは、プロセッサ210は、キーポイントマッチングを使用して、複数のブロック画像のそれぞれの歪みを補正する。キーポイントマッチングを使用する歪み補正は、種々の処理であってよい。本実施例では、S810fは、S812f、S814f、S816fを含んでいる。
【0202】
S812fでは、プロセッサ210は、キーポイントマッチングによって、ブロック画像と基準ブロック画像との間の複数のマッチングペアを形成する。
図25は、キーポイントマッチングによる歪み補正の例を示す図である。図中には、ブロック画像Bf1と基準ブロック画像Bfsとが示されている。ブロック画像Bf1は、S730(
図24)で生成されるブロック画像であり、対象織物700を表している。ブロック画像Bf1中では、対象織物700は、歪みを有し得る。また、ブロック画像Bf1は、欠陥(例えば、欠陥Df)を表し得る。基準ブロック画像Bfsは、欠陥が無く、かつ、歪みの小さい織物700を表す画像である(例えば、織物700の撮影画像)。本実施例では、基準ブロック画像Bfsのデータは、予め不揮発性記憶装置230に格納されている(図示省略)。なお、基準ブロック画像Bfsは、検査に対する影響が許容できる程度の小さい歪みを含んでよい。
【0203】
プロセッサ210は、ブロック画像Bf1と基準ブロック画像Bfsとのそれぞれから、キーポイントを検出する。キーポイントは、画像内でユニークである可能性が高いと期待される点である。図中には、複数の線RL、RLzが示されている。これらの線RL、RLzの両端が、キーポイントを示している。以下、ブロック画像Bf1から検出されるキーポイントK1を、撮影キーポイントK1と呼ぶ。また、基準ブロック画像Bfsから検出されるキーポイントKsを、基準キーポイントKsと呼ぶ。本実施例では、織物700(
図2)の糸Wf、Wpによって形成されるパターンのコーナーや端などの特徴的な部分を表す点が、キーポイントK1、Ksとして検出される。なお、図示を省略するが、実際には、より多くのキーポイントK1、Ksが検出される(例えば、数十、または、数百程度)。
【0204】
キーポイントの検出方法は、種々の方法であってよい。検出方法は、例えば、DoG(Difference-of-Gaussian)を使用する極値(極大値と極小値)の探索と、Harrisのコーナー検出と、FAST(Features from Accelerated Segment Test)のコーナー検出と、から予め選択されてよい。また、キーポイントの検出のために、キーポイントの検出と特徴量記述子の算出とを行うアルゴリズムが採用されてよい。特徴量記述子は、キーポイントの特徴を記述する情報である。キーポイントの検出と特徴量記述子の算出とを行うアルゴリズムは、例えば、SIFT(Scale Invariant Feature Transform)と、SURF(Speeded Up Robust Features)と、ORB(Oriented FAST and Rotated BRIEF)と、から予め選択されてよい。本実施例では、プロセッサ210は、ORBのアルゴリズムに従って、キーポイントを検出する。ORBのアルゴリズムによるキーポイントの検出には、例えば、OpenCV(Open Source Computer Vision Library)の関数「detect」または関数「detectAndCompute」を使用可能である。
【0205】
プロセッサ210は、撮影キーポイントK1と基準キーポイントKsとの間のマッチングを行う。キーポイントマッチングによって、同じ被写体の同じ部分(例えば、糸Wf、Wpによって形成されるパターンの同じコーナー)を示すキーポイントK1、Ksが対応付けられる。互いに対応付けられるキーポイントK1、Ksのペアを、マッチングペアとも呼ぶ。
【0206】
図中の複数の線RLは、それぞれ、適切なマッチングペアK1、Ksを示している。適切なマッチングペアK1、Ksに関しては、ブロック画像Bf1内の撮影キーポイントK1の位置は、基準ブロック画像Bfs内の基準キーポイントKsの位置に、近い。複数の線RLzは、不適切なマッチングペアK1、Ksを示している。不適切なマッチングペアK1、Ksに関しては、ブロック画像Bf1内の撮影キーポイントK1の位置は、基準ブロック画像Bfs内の基準キーポイントKsの位置から、遠い。
【0207】
キーポイントマッチングの方法は、種々の方法であってよい。例えば、プロセッサ210は、キーポイントの特徴量記述子を使用して、キーポイントマッチングを行ってよい。特徴量記述子は、キーポイントの特徴を記述する種々の情報であってよい。特徴量記述子は、例えば、キーポイントの周辺の複数の画素の色値の分布に応じて変化するように、算出される。特徴量記述子の算出方法は、種々の方法であってよい。特徴量記述子の算出のアルゴリズムは、例えば、BRIEF(Binary Robust Independent Elementary Features)と、BRISK(Binary Robust Invariant Scalable Keypoints)と、SIFTと、SURFと、ORBと、から予め選択されてよい。本実施例では、プロセッサ210は、ORBのアルゴリズムに基づく特徴量記述子を使用する。
【0208】
プロセッサ210は、ブロック画像Bf1のデータを解析することによって、各撮影キーポイントK1の特徴量記述子を算出する。ORBのアルゴリズムに基づく特徴量記述子の算出には、例えば、OpenCVの関数「compute」を使用可能である。なお、プロセッサ210は、OpenCVの関数「detectAndCompute」を実行することによって、複数のキーポイントK1の検出と各キーポイントK1の特徴量記述子の算出とを行ってよい。
【0209】
また、各基準キーポイントKsの特徴量記述子は、予め算出済である。本実施例では、複数の基準キーポイントKsと各基準キーポイントKsの特徴量記述子とを表すデータは、予め不揮発性記憶装置230に格納されている(図示省略)。
【0210】
特徴量記述子を使用するキーポイントマッチングの方法は、種々の方法であってよい。マッチングの方法は、例えば、FLANN(Fast Library for Approximate Nearest Neighbor)ベースのマッチングと、総当たりマッチングと、から予め選択されてよい。FLANNベースのマッチングには、例えば、OpenCVの「cv2.FlannBasedMatcher」によるマッチングを使用可能である。総当たりマッチングには、例えば、OpenCVの「cv2.BFMatcher」によるマッチングを使用可能である。本実施例では、プロセッサ210は、総当たりマッチングを行う。
【0211】
なお、本実施例では、
図2で説明したように、織物700は、糸Wf、Wpによって形成される同じパターンが規則的に並ぶように、構成される。従って、画像Bf1、Bfs内の位置が大きく異なるとともに、パターンの類似する部分を表すキーポイントペアK1、Ksが、対応付けられ得る(例えば、線RLzによって表されるマッチングペア)。このような不適切なマッチングペアが形成される可能性を低減する方法としては、種々の方法を採用可能である。例えば、プロセッサ210は、複数のマッチングペアを使用してホモグラフィ行列を算出し、ホモグラフィ行列に基づいて外れ値に分類されるマッチングペアを取り除いてよい。この処理には、例えば、OpenCVの関数「cv2.findHomography」を使用可能である。この関数では、RANSAC、または、LEAST_MEDIANと呼ばれるアルゴリズムを使用可能である。いずれのアルゴリズムも、複数のマッチングペアを、良いペア(inliers)と外れ値(outliers)とに分類する。
図25において、線RLによって表されるような適切なマッチングペアK1、Ksは、良いペアに分類される可能性が高い。線RLzによって表されるような不適切なマッチングペアK1、Ksは、外れ値に分類される可能性が高い。プロセッサ210は、良いペアに分類される複数のキーポイントペアを、最終的なマッチングペアとして採用してよい。
【0212】
また、キーポイントマッチングの方法は、以下の方法であってよい。本実施例では、織物700の歪みは、織物700の局所的な変形によって生じる。従って、対象織物700の実際の歪みによって形成され得る変位(例えば、撮影キーポイントK1の変位)には、限界がある。そこで、プロセッサ210は、対象撮影キーポイントK1と、対象撮影キーポイントK1を含む検索領域に含まれる基準キーポイントKsと、を使用して、キーポイントマッチング(例えば、特徴量記述子に基づくキーポイントマッチング)を行ってよい。検索領域は、例えば、対象撮影キーポイントK1の位置を中心とする円形状の領域であってよい。半径は、対象織物700の実際の歪みによって形成され得る変位(特に、最大の変位)を半径が表すように、予め実験的に決定される。プロセッサ210は、複数の撮影キーポイントK1に対して、このようなキーポイントマッチングを行うことによって、適切なマッチングペアを形成できる。なお、このキーポイントマッチングの後に、プロセッサ210は、ホモグラフィ行列に基づいて外れ値に分類されるマッチングペアを取り除いてよい。
【0213】
S814f(
図24)では、プロセッサ210は、複数のマッチングペアを使用して変位ベクトル場を生成する。
図25には、変位ベクトル場VFfの例が示されている。本実施例では、プロセッサ210は、マッチングペアK1、Ksの撮影キーポイントK1を、制御点CPfとして採用する。プロセッサ210は、マッチングペアK1、Ksの撮影キーポイントK1の座標から基準キーポイントKsの座標へ至るベクトルを、変位ベクトルVfとして採用する。図示するように、変位ベクトル場VFfは、ブロック画像Bf1上に配置された複数の制御点CPfのそれぞれの変位ベクトルVfを表している。
【0214】
S816f(
図24)では、プロセッサ210は、変位ベクトル場VFfを使用して、ブロック画像Bf1の歪みを補正する。補正方法は、S330e(
図19)での変位ベクトル場VFeを使用する歪みの付与方法と同じである。変位ベクトル場VFfに基づく歪みの付与は、ブロック画像Bf1に含まれる歪みを低減する。
図25には、補正済ブロック画像Bf2の例が示されている。補正済ブロック画像Bf2中では、ブロック画像Bf1中と比べて、歪みが低減されている。ブロック画像Bf1が欠陥(例えば、欠陥Df)を表す場合、補正済ブロック画像Bf2は、同じ欠陥を表している(ただし、欠陥は、ブロック画像Bf1上の欠陥から変形し得る)。
【0215】
S890(
図24)は、
図22のS890と同じである。プロセッサ210は、S810fで得られる複数の補正済ブロック画像のそれぞれを異常検知モデル310に入力し、対象織物700が異常を有するか否かを判断する。S890の後のS894、S896、S898は、
図7のS894、S896、S898と、それぞれ同じである。S896の判断結果がNoである場合、プロセッサ210は、S710へ移行する。
【0216】
以上のように、本実施例では、歪み補正は、基準画像(ここでは、基準ブロック画像Bfs)を使用するキーポイントマッチングの結果を使用する歪みの補正を含んでいる。従って、撮影画像中の対象織物700が歪みを有する場合であっても、プロセッサ210は、異常検知モデル310を使用することによって、対象織物700の欠陥の有無を適切に判断できる。
【0217】
G.第7実施例:
G1.訓練処理:
図26は、第7実施例の訓練処理の例を示すフローチャートである。
図19の訓練処理との差違は、異常検知モデル310の訓練のための訓練ブロック画像に、歪みが付与される点である。本実施例では、歪み補正モデル320は、省略される。
【0218】
S110e、S130は、
図19のS110e、S130と、それぞれ同じである。プロセッサ210は、正常、かつ、歪みの小さい訓練織物700tを表す複数のブロック画像のデータを取得する。
【0219】
S310gは、
図19のS310eと同じである。プロセッサ210は、S130で得られるブロック画像の一部分に欠陥画像をペーストする。S310gは、異常検知モデル310の訓練に欠陥を有する訓練画像が使用される場合に、実行される。本実施例では、S310gは、省略される。
【0220】
S320g、S330gは、
図19のS320e、S330eと、それぞれ同じである。プロセッサ210は、ランダムに変位ベクトル場を生成し、変位ベクトル場を使用してブロック画像に歪みを付与する。これにより、プロセッサ210は、歪みを有する訓練ブロック画像のデータを生成する。プロセッサ210は、N枚の訓練ブロック画像を生成するために、N枚のブロック画像に対して、S320g、S330gの処理を実行してよい。また、プロセッサ210は、N枚のブロック画像を取得するために、S110eで、複数枚の撮影画像のデータを取得してよい。そして、S130では、プロセッサ210は、複数枚の撮影画像のそれぞれから、複数のブロック画像を取得してよい。
【0221】
S340gでは、プロセッサ210は、N枚の訓練ブロック画像を使用して、異常検知モデル310を訓練する。訓練方法は、
図19等のS290での訓練方法と同じである。S340gの後、プロセッサ210は、
図26の処理を終了する。
【0222】
本実施例の検査処理は、
図11の検査処理と同じである。このように、本実施例では、異常検知モデル310は、歪みを有する複数の訓練ブロック画像を使用して訓練されている。従って、撮影画像によって表される対象織物700が歪みを有する場合であっても、プロセッサ210は、異常検知モデル310を使用することによって、対象織物700の欠陥の有無を適切に判断できる。
【0223】
H.第8実施例:
H1.訓練処理:
図27は、第8実施例の訓練処理の例を示すフローチャートである。本実施例の訓練処理は、
図19のS110e、S130と、
図12のS140c-S290の処理SC1と、
図19のS310e-S380eの処理SE1と、を含んでいる。このように、異常検知モデル310の訓練方法は、
図12の実施例の訓練方法と同じである。歪み補正モデル320の訓練方法は、
図19の実施例の訓練方法と同じである。
【0224】
H2.検査処理:
図28は、第8実施例の検査処理の例を示すフローチャートである。本実施例の検査処理は、
図16のS710、S720、S730と、S740c-S770cの処理SC2と、
図22のS810e-S890の処理SE2と、を含んでいる。処理SE2では、処理SC2による処理済のブロック画像が、処理される。このように、プロセッサ210は、対象織物700の撮影画像を表すブロック画像に対して、第1角度AC1の補正(S750c)と、第2角度AC2の補正(S770c)と、歪みの補正(S810e)とを、行う。S890では、プロセッサ210は、処理SC2、SE2によって生成される複数の補正済ブロック画像のそれぞれを異常検知モデル310に入力し、対象織物700が異常を有するか否かを判断する。
【0225】
以上のように、本実施例では、プロセッサ210は、対象織物700の欠陥の有無を判断するために、以下の処理を実行する。S720、S730(
図28)では、プロセッサ210は、対象織物700の撮影画像を表すブロック画像のデータを取得する。S750c、S770c、S810eでは、プロセッサ210は、ブロック画像の補正処理を行う。S890では、プロセッサ210は、補正処理による処理済の画像を異常検知モデル310に入力して対象織物700の欠陥の有無を判断する。ここで、補正処理(S750c、S770c、S810e)は、対象織物700を表す画像中の対象織物700の歪みを補正する歪み補正(S810e)を含んでいる。従って、撮影画像中の対象織物700が歪みを有する場合であっても、プロセッサ210は、異常検知モデル310を使用することによって、対象織物700の欠陥の有無を適切に判断できる。
【0226】
また、本実施例では、補正処理(S750c、S770c、S810e)は、さらに、角度補正(S750c、S770c)を含む。
図14(E)に示すように、S750cの補正は、画像の回転(アフィン変換の一種)による第1角度AC1の補正である(第1補正と呼ぶ)。具体的には、第1補正は、基準方向Dxに対する第1方向Dc1の第1角度AC1をアフィン変換の回転によって、第1特定角度AC1Zに近づける。
図14(A)で説明したように、第1角度AC1は、対象織物700を表す画像中の複数のパターンPTc1が規則的に並ぶ方向である第1方向Dc1を示している。第1パターンPTc1は、糸Wf、Wpによって形成される。
図14(J)に示すように、S770cの補正は、画像の剪断変換による第2角度AC2の補正である。具体的には、第2補正は、第2基準方向(ここでは、-Dy方向)に対する第2方向Dc2の第2角度AC2を、アフィン変換の剪断によって、第2特定角度AC2Zに近づける。
図14(F)で説明したように、第2角度AC2は、対象織物700を表す画像中の複数の第2パターンPTc2が規則的に並ぶ方向である第2方向Dc2を示している。第2パターンPTc2は、糸Wf、Wpによって形成される。そして、S810eによる歪み補正は、角度補正(S750c、S770c)による処理済の画像中の対象織物700の歪みを補正する。
【0227】
この構成によれば、ブロック画像(すなわち、撮影画像)中の対象織物700の歪みのうち、角度のズレは、角度補正(ここでは、S750c、S770c)によって、適切に補正される。S810eの歪み補正は、角度が補正されたブロック画像に対して、行われる。従って、S810eの歪み補正に対する角度のズレの影響は、緩和される。以上により、プロセッサ210は、異常検知モデル310を使用することによって、対象織物700の欠陥の有無を適切に判断できる。
【0228】
また、S810eの歪み補正に機械学習モデル(例えば、歪み補正モデル320)が使用される場合、機械学習モデルは、角度のズレを想定せずに、訓練可能である。従って、機械学習モデルの訓練の負担を軽減できる(例えば、互いに異なる角度に対応する複数の訓練画像は、省略可能である)。
【0229】
なお、検査処理(
図28)からは、第1補正(S750c)と第2補正(S770c)とのいずれかの角度補正は、省略されてよい。訓練処理(
図27)からは、省略された角度補正に対応する補正(S150c、または、S170c)は、省略されてよい。また、S810eの歪み補正に代えて、S810f(
図24)の歪み補正が実行されてよい。この場合、歪み補正モデル320は、省略されてよい。訓練処理(
図27)からは、処理SE1は、省略されてよい。
【0230】
I.第9実施例:
I1.訓練処理:
図29は、第9実施例の訓練処理の例を示すフローチャートである。本実施例の訓練処理は、
図26のS110e、S130と、
図17のS140c-S172dの処理SD1と、
図26のS310g-S340gの処理SG1と、を含んでいる。処理SG1では、処理SD1による処理済のブロック画像が、処理される。このように、プロセッサ210は、種々の第1角度AC1と、種々の第2角度AC2と、種々の歪みと、を有する複数の訓練ブロック画像を使用して、異常検知モデル310を訓練する。なお、本実施例では、歪み補正モデル320は、省略される。
【0231】
本実施例の検査処理は、
図11の検査処理と同じである。このように、本実施例では、プロセッサ210は、対象織物700の欠陥の有無を判断するために、以下の処理を実行する。S720、S730(
図11)では、プロセッサ210は、対象織物700の撮影画像を表すブロック画像のデータを取得する。S890bでは、プロセッサ210は、ブロック画像を異常検知モデル310に入力して対象生地の欠陥の有無を判断する。
図29のS320g-S340gに示すように、異常検知モデル310は、訓練織物700tを表す第1種画像(ここでは、S130で得られるブロック画像)に、歪みの付与(S330g)を含む画像処理SD1、SG1を実行することによって得られる第2種画像(ここでは、訓練ブロック画像)を使用して訓練されている。従って、撮影画像中の対象織物700が歪みを有する場合であっても、プロセッサ210は、異常検知モデル310を使用することによって、対象織物700の欠陥の有無を適切に判断できる。
【0232】
また、本実施例では、訓練ブロック画像を生成するための画像処理SD1、SG1は、角度を変更する処理(S172d)を含んでいる。角度変更処理(S172d)は、第1角度AC1を変更する第1変更処理と、第2角度AC2を変更する第2変更処理と、を含んでいる。第1変更処理は、処理対象の画像の第1方向Dc1(
図14(E))の第1基準方向(ここでは、+Dx方向)に対する第1角度AC1をアフィン変換(ここでは、回転)によって変更する。第2変更処理は、処理対象の画像の第2方向Dc2(
図14(J))の第2基準方向(ここでは、-Dy方向)に対する第2角度AC2をアフィン変換の剪断によって変更する。歪みの付与(S330g)は、角度変更処理(S172d)による処理済の画像に歪みを付与する。このような画像処理によって得られる訓練ブロック画像は、実際の織物700を適切に表すことができる。従って、プロセッサ210は、このような訓練ブロック画像を使用して訓練された異常検知モデル310を使用することによって、対象織物700の欠陥の有無を適切に判断できる。
【0233】
なお、角度変更処理(S172d)からは、第1角度AC1の第1変更処理、または、第2角度AC2の第2変更処理が、省略されてよい。
【0234】
J.第10実施例:
検査対象の生地は、織物(例えば、織物700(
図2))に代えて、編物であってよい。
図30は、編物のパターンの例を示す図である。編物700Jは、糸Wjを使用して、編まれている。編物700Jの編み方は、種々の編み方であってよい。いずれの場合も、編物700Jは、編み方に対応付けられるパターンが規則的に並ぶように、構成される。デジタルカメラ110によって生成される編物700Jの撮影画像は、編物700Jの細かいパターンを表している。パターンの並ぶ方向の特定方法は、種々の方法であってよい。例えば、糸Wjに囲まれる隙間PJ1は、第1部分Pa1、Pc1(
図4(B)、
図14(A))と同様に、島状の部分を形成する。従って、上記の各実施例と同様に、プロセッサ210は、二値化された画像を使用することによって、複数の隙間PJ1で構成されるパターンの並ぶ方向(例えば、複数のパターンPTj1の並ぶ方向)を推定できる。また、パターンとしては、パターンPTj2のように、糸Wjの形状(例えば、ループ、結び目など)が使用されてよい。この場合、プロセッサ210は、パターンPTj2のテンプレート画像を使用するテンプレートマッチングによって、撮影画像から複数のパターンPTj2を検出してよい。そして、プロセッサ210は、検出された複数のパターンPTj2を使用して、パターンPTj2の並ぶ方向を推定してよい。このように、撮影画像によって表される編物700J、織物700などの生地の方向(すなわち、糸によって形成されるパターンが規則的に並ぶ方向)は、テンプレートマッチングによって決定されてよい。
【0235】
K.変形例:
(1)
図3、
図7の実施例において、異常検知モデル310の訓練には、さらに、種々の第2角度AC2を示す複数の訓練ブロック画像が使用されてよい。例えば、プロセッサ210は、
図3のS150で生成される複数の訓練ブロック画像を使用して、
図17のS160cS162d、S164d、S170cと、修正されたS172dと、を実行してよい。修正されたS172では、第1角度AC1の変化は省略され、プロセッサ210は、第2角度AC2を変化させる。S290では、この修正されたS172dで生成される複数の訓練ブロック画像が使用される。この変形例では、複数の訓練ブロック画像は、複数の訓練ブロック画像の複数の第2方向Dc2(
図14(J))の基準方向(ここでは、-Dy方向)に対する第2角度AC2の分布範囲が第2角度範囲AC2Rであるように、構成されている。そして、
図18(B)で説明したように、第2角度範囲AC2Rは、訓練織物700tの撮影画像を使用して推定される第2角度AC2の分布を使用して、決定される。ここで、訓練織物700tは、対象織物700の撮影のために対象織物700を搬送する搬送装置900によって支持される。また、第2角度AC2は、織物700(例えば、訓練織物700t)の斜行に基づく第2方向Dc2の角度を示している。この構成によれば、
図17、
図18の実施例と同様に、撮影画像によって表される対象織物700によって示される第2角度AC2が変化する場合であっても、プロセッサ210は、異常検知モデル310を使用することによって、対象織物700の欠陥の有無を適切に判断できる。
【0236】
また、
図12、
図16の実施例において、異常検知モデル310の訓練には、さらに、種々の第2角度AC2を示す複数の訓練ブロック画像が使用されてよい。例えば、プロセッサ210は、
図12のS170cで生成される複数の訓練ブロック画像を使用して、
図17のS160cS162d、S164d、S170cと、修正されたS172dと、を実行してよい。修正されたS172では、第1角度AC1の変化は省略され、プロセッサ210は、第2角度AC2を変化させる。S290では、この修正されたS172dで生成される複数の訓練ブロック画像が使用される。
図16の検査処理では、S760c、S770cは省略される。この場合も、
図17、
図18の実施例と同様に、撮影画像によって表される対象織物700によって示される第2角度AC2が変化する場合であっても、プロセッサ210は、異常検知モデル310を使用することによって、対象織物700の欠陥の有無を適切に判断できる。
【0237】
(2)
図3、
図7の実施例において、プロセッサ210は、織物700の複数の撮影画像を使用して、第1特定角度AA1Zを決定してよい。例えば、プロセッサ210は、S140とS150との間に、
図9のS142b、S144bを実行してよい。この変形例では、第1特定角度AA1Zは、訓練織物700tのブロック画像(すなわち、撮影画像)を使用して推定される第1角度AA1の分布(
図10)を使用して、決定される。ここで、訓練織物700tは、対象織物700の撮影のために対象織物700を搬送する搬送装置900によって支持される。また、第1角度AA1は、
図4(F)等で説明したように、織物700(例えば、訓練織物700t)の回転に基づく角度を示している。この構成によれば、第1特定角度AA1Zと、検査処理で使用されるブロック画像によって示される第1角度AA1と、の間の差違が低減する。従って、第1角度AA1の補正(S150(
図3)、S750(
図7))による補正量(例えば、回転角度)は低減する。この結果、欠陥の有無の判断に対する第1角度AA1の補正のマイナスの影響は、緩和される。
【0238】
また、
図12、
図16の実施例において、プロセッサ210は、織物700の複数の撮影画像を使用して、第1特定角度AC1Zと第2特定角度AC2Zとの一方、または、両方を決定してよい。例えば、プロセッサ210は、
図12のS140cとS150cとの間に、
図17のS142d、S144dを実行してよい。また、プロセッサ210は
図12のS160cとS170cとの間に、
図17のS162d、S164dを実行してよい。第1特定角度AC1Zが上記のように決定される場合、第1角度AC1の補正(S150c(
図12)、S750c(
図16))による補正量(例えば、回転角度)が低減する。従って、第1角度AC1の補正に起因する欠陥の誤検知の可能性を、低減できる。第2特定角度AC2Zが上記のように決定される場合、第2角度AC2の補正(S170c(
図12)、S770c(
図16))による補正量(例えば、剪断変換による角度の変化量)が低減する。従って、欠陥の有無の判断に対する第2角度AC2の補正のマイナスの影響は、緩和される。
【0239】
(3)上記実施例と変形例とでは、第1特定角度AA1Z、AC1Zと、それらの角度の範囲AA1A、AA1R、AC1Rとの決定(例えば、S152(
図3)、S142b、S144b(
図9)、S142d、S144d(
図17))では、複数枚のブロック画像から得られる複数の第1角度AA1、AC1の分布が使用される。
図4(D)、
図4(C)、
図14(A)
図14(C)で説明したように、1枚のブロック画像からは、第1角度AA1、AC1に相当する角度AA1v、AC1vを示す複数のベクトルVa、Vc1が、取得される。このような角度AA1v、AC1vも、織物700の方向Da、Dc1を示している。プロセッサ210は、1枚の画像から得られる複数のベクトルVa、Vc1の複数の角度AA1v、AC1vの分布を使用して、第1特定角度AA1Z、AC1Zと範囲AA1A、AA1R、AC1Rとを決定してよい。
【0240】
上記実施例と変形例とでは、第2特定角度AC2Zと第2角度範囲AC2Rとの決定(例えば、S162d、S164d(
図17))では、複数枚のブロック画像から得られる複数の第2角度AC2の分布が使用される。
図14(F)、
図14(H)で説明したように、1枚のブロック画像からは、第2角度AC2に相当する角度AC2vを示す複数のベクトルVc2が、取得される。このような角度AC2vも、織物700の方向Dc2を示している。プロセッサ210は、1枚の画像から得られる複数のベクトルVc2の複数の角度AC2vの分布を使用して、第2特定角度AC2Zと第2角度範囲AC2Rとを決定してよい。
【0241】
(4)上記実施例と変形例とにおいて、第1角度AA1、AC1は、生地(例えば、織物700、または、編物700J)の斜行に基づく第1方向Da、Dc1の角度を示してよい。この場合、第1角度AA1、AC1の補正(例えば、S150(
図3)、S750(
図7)、S150c(
図12、
図17、
図27)、S750c(
図16、
図28))は、第1方向Da、Dc1に交差する方向(例えば、第2方向Dy)の剪断変換によって、行われてよい。データオーグメンテーションによる第1角度AA1、AC1の変化(例えば、S154(
図3)、S154b(
図9)、S172d(
図17、
図29))は、剪断変換によって、行われてよい。
【0242】
上記実施例と変形例とにおいて、第1角度AA1、AC1は、生地の回転と斜行との両方に基づく角度であってよい。例えば、第1角度AA1、AC1は、回転と剪断変換との足し合わせによって、定められてよい。
【0243】
上記実施例と変形例とにおいて、第2角度AC2は、生地(例えば、織物700、または、編物700J)の回転に基づく第2方向Dc2の角度を示してよい。この場合、第2角度AC2の補正(例えば、S170c(
図12、
図17、
図27)、S770c(
図16、
図28))は、回転によって、行われてよい。データオーグメンテーションによる第2角度AC2の変化(例えば、S172d(
図17、
図29))は、回転によって、行われてよい。
【0244】
上記実施例と変形例とにおいて、第2角度AC2は、生地の回転と斜行との両方に基づく角度であってよい。例えば、第2角度AC2は、回転と剪断変換との足し合わせによって、定められてよい。
【0245】
(5)上記実施例と変形例とにおいて、異常検知モデルは、
図6の異常検知モデル310に代えて、異常を検知する種々のモデルであってよい。例えば、異常検知モデルは、
図6のモデル310に加えて、欠陥を有する対象物(ここでは、生地)の画像から欠陥の無い同じ対象物の画像を生成するように訓練された画像生成モデル(例えば、オートエンコーダなど)を含んでよい。検査処理では、プロセッサ210は、生地の撮影画像を表すブロック画像を画像生成モデルに入力することによって、欠陥の無いブロック画像である中間ブロック画像を生成する。プロセッサ210は、ブロック画像と中間ブロック画像との間の差分画像を生成する。プロセッサ210は、差分画像をモデル310に入力することによって、生地が異常(すなわち、欠陥)を有するか否かを判断する。
【0246】
また、異常検知モデルは、FastFlow(FastFlow: Unsupervised Anomaly Detection and Localization via 2D Normalizing Flows)と呼ばれる技術を使用して構成されてよい。FastFlowは、例えば、以下の論文に開示されている。
Jiawei Yu, Ye Zheng, Xiang Wang, Wei Li, Yushuang Wu, Rui Zhao, Liwei Wu, “Fastflow: Unsupervised Anomaly Detection and Localization via 2d Normalizing Flows.” arXiv:2111.07677, http://arxiv.org/abs/2111.07677
【0247】
また、異常検知モデルは、欠陥を有する画像から欠陥の無い画像を生成するように訓練された画像生成モデルであってよい(例えば、オートエンコーダなど)。撮影画像と、撮影画像から得られる生成画像と、の間の差分画像は、欠陥を示す画像として使用可能である。
【0248】
異常検知モデルの訓練方法は、異常検知モデルに適する任意の方法であってよい。いずれの場合も、異常検知モデルの訓練には、上記実施例と変形例とで説明した種々の訓練ブロック画像が使用されてよい。
【0249】
(6)上記実施例と変形例とにおいて、歪み補正モデルは、
図21の歪み補正モデル320に代えて、歪みを補正する種々のモデルであってよい。例えば、複数の制御点の複数の変位のセット320ao(
図21)は、
図20(C)の変位ベクトル場VFeと同様に、マトリクス状に配置された複数の制御点のそれぞれの変位ベクトルを示している。ここで、プロセッサ210は、最小矩形を形成する4個の制御点の4個の変位ベクトルを使用するホモグラフィ変換によって、最小矩形の画像を変換してよい。プロセッサ210は、このようなホモグラフィ変換を、ブロック画像を形成する複数の最小矩形のそれぞれに対して、行う。
【0250】
また、歪み補正モデルは、歪みを有する対象物(ここでは、生地)の画像から歪みが低減された同じ対象物の画像を生成するように訓練された画像生成モデルであってよい(例えば、オートエンコーダなど)。この場合、欠陥を有する対象物の画像から、同じ欠陥を有する対象物の画像を生成するように、歪み補正モデルが訓練されることが好ましい。このような歪み補正モデルの訓練処理は、
図19のS310eのように、訓練画像に欠陥を付与する処理を含むことが好ましい。
【0251】
(6)上記実施例と変形例との訓練処理において、
図3のS152、S154のように、角度の分布範囲よりも狭い範囲でのデータオーグメンテーションは、第1角度AC1と第2角度AC2との一方、または、両方に適用されてよい。
【0252】
(7)上記実施例と変形例とにおいて、生地を光学的に読み取る装置は、デジタルカメラ110のような携帯型の読取装置に代えて、据え置き型の読取装置(例えば、スキャナ)であってよい。このように、光学的に読み取られた生地の画像は、カメラによって撮影された撮影画像に限らず、スキャナによって読み取られたスキャン画像など、種々の読取画像であってよい。
【0253】
(8)上記実施例と変形例とにおいて、プロセッサ210は、種々の演算を、GPU260に実行させてよい。例えば、プロセッサ210は、機械学習モデル(例えば、異常検知モデル310、または、歪み補正モデル320)による演算の一部、または、全部を、GPU260に実行させてよい。
【0254】
(9)上記実施例と変形例とにおいて、訓練処理は、生地の欠陥の有無を判断する判断装置(例えば、データ処理装置200)とは異なる装置(例えば、コンピュータ)によって実行されてよい。また、判断装置は、パーソナルコンピュータとは異なる種類の装置(例えば、デジタルカメラ、スキャナ、スマートフォン、タブレットコンピュータ)であってもよい。また、ネットワークを介して互いに通信可能な複数の装置(例えば、コンピュータ)が、判断装置による検査処理の機能を一部ずつ分担して、全体として、検査処理の機能を提供してもよい(これらの装置を備えるシステムが判断装置に対応する)。
【0255】
上記各実施例において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部あるいは全部をハードウェアに置き換えるようにしてもよい。例えば、異常検知モデル310(
図6)の機能を、専用のハードウェア回路によって実現してもよい。
【0256】
また、本開示の機能の一部または全部がコンピュータプログラムで実現される場合には、そのプログラムは、コンピュータ読み取り可能な記録媒体(例えば、一時的ではない記録媒体)に格納された形で提供することができる。プログラムは、提供時と同一または異なる記録媒体(コンピュータ読み取り可能な記録媒体)に格納された状態で、使用され得る。「コンピュータ読み取り可能な記録媒体」は、メモリーカードやCD-ROMのような携帯型の記録媒体に限らず、各種ROM等のコンピュータ内の内部記憶装置や、ハードディスクドライブ等のコンピュータに接続されている外部記憶装置も含み得る。
【0257】
上記の実施例と変形例とは、適宜に組み合わせることができる。また、上記の実施例と変形例とは、本開示の理解を容易にするためのものであり、本発明を限定するものではない。本発明は、その趣旨を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物が含まれる。
【符号の説明】
【0258】
110…デジタルカメラ、120…光源、200…データ処理装置、210…プロセッサ、215…記憶装置、220…揮発性記憶装置、230…不揮発性記憶装置、232…訓練プログラム、233…検査プログラム、240…表示部、250…操作部、260…グラフィックスプロセッシングユニット、270…通信インタフェース、310…異常検知モデル、310a…特徴抽出モデル、310t…画像分類モデル、320…歪み補正モデル、320a…畳込ネット回帰器、320b…空間変換器、320c…リサンプラ、320ao…変位セット、700…織物、700a…対象織物、700b…対象織物、700c…対象織物、700d…対象織物、700t…訓練織物、700J…編物、900…搬送装置、910…第1ローラ、912…ロータリーエンコーダ、920…第2ローラ、922…駆動モーター