(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024173032
(43)【公開日】2024-12-12
(54)【発明の名称】方法、および、コンピュータプログラム
(51)【国際特許分類】
G06T 7/00 20170101AFI20241205BHJP
【FI】
G06T7/00 610B
G06T7/00 350B
【審査請求】未請求
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2023091147
(22)【出願日】2023-06-01
(71)【出願人】
【識別番号】000005267
【氏名又は名称】ブラザー工業株式会社
(74)【代理人】
【識別番号】110001058
【氏名又は名称】鳳国際弁理士法人
(72)【発明者】
【氏名】櫻井 孝一
【テーマコード(参考)】
5L096
【Fターム(参考)】
5L096AA02
5L096AA06
5L096BA03
5L096EA03
5L096EA06
5L096EA33
5L096FA32
5L096FA33
5L096FA54
5L096FA64
5L096FA66
5L096FA69
5L096GA40
5L096GA51
5L096HA11
5L096KA04
5L096MA07
(57)【要約】
【課題】物体検出モデルによる物体の検出精度を向上する。
【解決手段】複数個の訓練画像のそれぞれは、正解オブジェクトと不正解オブジェクトとを含む1枚の画像であり、正解オブジェクトは物体検出モデルで検出すべき物品を示すオブジェクトであり、不正解オブジェクトは検出すべき物品と同種かつ物体検出モデルで検出すべでない物品を示すオブジェクトである。複数個の訓練画像を用いて、訓練画像が物体検出モデルに入力される場合に訓練画像内の正解オブジェクトを検出するように、物体検出モデルを訓練する。正解オブジェクトと不正解オブジェクトとの差異は、差異(1)~差異(4)のうちの少なくとも1つを含む。差異(1)は大きさ、差異(2)は定の文字、差異(3)はキズおよび汚れ、差異(4)は特定色、に関することである。
【選択図】
図3
【特許請求の範囲】
【請求項1】
複数個の訓練画像を取得する取得工程であって、前記複数個の訓練画像のそれぞれは、正解オブジェクトと不正解オブジェクトとを含む1枚の画像であり、前記正解オブジェクトは物体検出モデルで検出すべき物品を示すオブジェクトであり、前記不正解オブジェクトは前記検出すべき物品と同種かつ前記物体検出モデルで検出すべきでない物品を示すオブジェクトである、前記取得工程と、
前記複数個の訓練画像を用いて、前記訓練画像が前記物体検出モデルに入力される場合に前記訓練画像内の前記正解オブジェクトを検出するように、前記物体検出モデルを訓練する訓練工程と、
を備え、
前記正解オブジェクトと前記不正解オブジェクトとの差異は、差異(1)~差異(4)のうちの少なくとも1つを含み、
差異(1)は、前記正解オブジェクトの大きさは特定範囲内であり、前記不正解オブジェクトの大きさは前記特定範囲外であることであり、
差異(2)は、前記正解オブジェクトは特定の文字を含み、前記不正解オブジェクトは前記特定の文字とは異なる文字を含むことであり、
差異(3)は、前記正解オブジェクトはキズおよび汚れを含まず、前記不正解オブジェクトはキズまたは汚れを含むことであり、
差異(4)は、前記正解オブジェクトは特定色を有し、前記不正解オブジェクトは前記特定色とは異なる色を有することである、方法。
【請求項2】
請求項1に記載の方法であって、
前記検出すべき物品および前記検出すべきでないの物品は、文字と記号との少なくとも一方を含むラベルまたは銘板である、方法。
【請求項3】
請求項1に記載の方法であって
前記差異(1)は、前記正解オブジェクトの大きさは特定範囲内であり、前記不正解オブジェクトの大きさは前記特定範囲の上限よりも所定割合以上大きいこと、または、前記正解オブジェクトの大きさは特定範囲内であり、前記不正解オブジェクトの大きさは前記特定範囲の下限よりも所定割合以上小さいことである、方法。
【請求項4】
請求項1に記載の方法であって、
1つの前記不正解オブジェクトと前記正解オブジェクトとの間の差異は、前記差異(1)~(4)のうちの1つの差異を含み、前記差異(1)~(4)のうちの1つとは異なる差異を含まない、方法。
【請求項5】
請求項1に記載の方法であって、
前記複数個の訓練画像は、第1の物品を示す第1オブジェクトと、前記第1の物品と同種の第2の物品を示す第2オブジェクトと、を含み、
前記第1オブジェクトと前記第2オブジェクトとの差異は、前記差異(1)~前記差異(4)のうちの少なくとも1つを含み、
前記訓練工程は、
前記第1オブジェクトを前記正解オブジェクトとし、前記第2オブジェクトを前記不正解オブジェクトとして用いて、前記訓練画像が前記物体検出モデルに入力される場合に前記訓練画像内の前記第1オブジェクトを検出するように、前記物体検出モデルを訓練し、
前記第2オブジェクトを前記正解オブジェクトとし、前記第1オブジェクトを前記不正解オブジェクトとして用いて、前記訓練画像が前記物体検出モデルに入力される場合に前記訓練画像内の前記第2オブジェクトを検出するように、前記物体検出モデルを訓練する、方法。
【請求項6】
請求項1に記載の方法であって、
前記複数個の訓練画像のそれぞれは、前記検出すべき物品の全体を示す前記正解オブジェクトと、前記検出すべきでない物品の全体を示す前記不正解オブジェクトと、を含む、方法。
【請求項7】
請求項1に記載の方法であって、
前記取得工程は、
背景画像と、前記正解オブジェクトを示す正解画像と、を取得する画像取得工程と、
前記背景画像を背景とし前記正解画像を前景として、前記背景画像内の特定領域に前記正解画像を合成する合成工程と、
前記合成工程において前記正解画像が合成される前記特定領域を示す領域情報を保存する工程と、
を含み、
前記訓練工程は、前記領域情報を教師データとして用いて、前記物体検出モデルを訓練する工程である、方法。
【請求項8】
請求項1に記載の方法であって、
前記取得工程は、
背景画像と、前記正解オブジェクトを示す正解画像と、を取得する画像取得工程と、
前記正解画像に対して特定の画像処理を実行して、前記不正解オブジェクトを示す不正解画像を生成する画像生成工程と、
前記背景画像を背景とし前記正解画像と前記不正解画像を前景として、前記背景画像内の第1領域に前記正解画像を合成し、前記背景画像内の第2領域に前記不正解画像を合成することによって前記訓練画像を生成する合成工程と、
を含む、方法。
【請求項9】
物品の検査を行う方法であって、
文字を含む検査対象の物品の撮影画像を取得する工程と、
請求項1に記載の方法を用いて前記検査対象の物品を検出するように訓練された前記物体検出モデルを用いて、前記撮影画像内の前記検査対象の物品を検出する検出工程と、
検出された前記検査対象の物品に含まれる文字が、特定の文字であるか否かを判断する判断工程と、
を含む、方法。
【請求項10】
複数個の訓練画像を取得する取得機能であって、前記複数個の訓練画像のそれぞれは、正解オブジェクトと不正解オブジェクトとを含む1枚の画像であり、前記正解オブジェクトは物体検出モデルで検出すべき物品を示すオブジェクトであり、前記不正解オブジェクトは前記検出すべき物品と同種かつ前記物体検出モデルで検出すべきでない物品を示すオブジェクトである、前記取得機能と、
前記複数個の訓練画像を用いて、前記訓練画像が前記物体検出モデルに入力される場合に前記訓練画像内の前記正解オブジェクトを検出するように、前記物体検出モデルを訓練する訓練機能と、
をコンピュータに実現させ、
前記正解オブジェクトと前記不正解オブジェクトとの差異は、差異(1)~差異(4)のうちの少なくとも1つを含み、
差異(1)は、前記正解オブジェクトの大きさは特定範囲内であり、前記不正解オブジェクトの大きさは前記特定範囲外であることであり、
差異(2)は、前記正解オブジェクトは特定の文字を含み、前記不正解オブジェクトは前記特定の文字とは異なる文字を含むことであり、
差異(3)は、前記正解オブジェクトはキズおよび汚れを含まず、前記不正解オブジェクトはキズまたは汚れを含むことであり、
差異(4)は、前記正解オブジェクトは特定色を有し、前記不正解オブジェクトは前記特定色とは異なる色を有することである、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本明細書は、物体検出モデルを訓練する技術に関する。
【背景技術】
【0002】
非特許文献1には、画像内のオブジェクトが配置されたオブジェクト領域と、オブジェクトの種類と、を検出する機械学習モデルである物体検出モデルが開示されている。一般的に物体検出モデルは、大量の訓練用の画像(以下、訓練画像とも呼ぶ)を用いて訓練される。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】Joseph Redmon, Santosh Divvala, Ross Girshick, Ali Farhadi, "You Only Look Once: Unified, Real-Time Object Detection", Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2016, pp. 779-788
【発明の概要】
【発明が解決しようとする課題】
【0004】
物体検出モデルによる物体の検出精度を向上する技術が求められている。
【0005】
本明細書は、物体検出モデルによる物体の検出精度を向上し得る物体検出モデルの訓練技術を開示する。
【課題を解決するための手段】
【0006】
本明細書に開示された技術は、上述の課題の少なくとも一部を解決するためになされたものであり、以下の適用例として実現することが可能である。
【0007】
[適用例1]複数個の訓練画像を取得する取得工程であって、前記複数個の訓練画像のそれぞれは、正解オブジェクトと不正解オブジェクトとを含む1枚の画像であり、前記正解オブジェクトは物体検出モデルで検出すべき物品を示すオブジェクトであり、前記不正解オブジェクトは前記検出すべき物品と同種かつ前記物体検出モデルで検出すべでない物品を示すオブジェクトである、前記取得工程と、前記複数個の訓練画像を用いて、前記訓練画像が前記物体検出モデルに入力される場合に前記訓練画像内の前記正解オブジェクトを検出するように、前記物体検出モデルを訓練する訓練工程と、を備え、前記正解オブジェクトと前記不正解オブジェクトとの差異は、差異(1)~差異(4)のうちの少なくとも1つを含み、差異(1)は、前記正解オブジェクトの大きさは特定範囲内であり、前記不正解オブジェクトの大きさは前記特定範囲外であることであり、差異(2)は、前記正解オブジェクトは特定の文字を含み、前記不正解オブジェクトは前記特定の文字とは異なる文字を含むことであり、差異(3)は、前記正解オブジェクトはキズおよび汚れを含まず、前記不正解オブジェクトはキズまたは汚れを含むことであり、差異(4)は、前記正解オブジェクトは特定色を有し、前記不正解オブジェクトは前記特定色とは異なる色を有することである、方法。
【0008】
上記構成によれば、オブジェクトの大きさ、特定の文字の有無、キズや汚れの有無、特定色を有するか否か等の差異を考慮して、物体を検出するように、物体検出モデルを訓練できる。この結果、物体検出モデルによる物体の検出精度を向上し得る。
【0009】
なお、本明細書に開示される技術は、他の種々の形態で実現することが可能であり、例えば、物体検出モデルの訓練装置、物体検出モデルを用いた検査装置、物体検出モデル、これらの装置および方法を実現するためのコンピュータプログラム、そのコンピュータプログラムを記録した記録媒体、等の形態で実現することができる。
【図面の簡単な説明】
【0010】
【
図1】本実施例の検査システム1000の構成を示すブロック図。
【
図5】背景画像OIと訓練画像MIとの一例を示す図。
【0011】
A.実施例
A-1.検査装置の構成
次に、実施の形態を実施例に基づき説明する。
図1は、本実施例の検査システム1000の構成を示すブロック図である。検査システム1000は、処理装置100と、撮影装置400と、を含んでいる。処理装置100と撮影装置400とは、通信可能に接続されている。
【0012】
処理装置100は、例えば、パーソナルコンピュータなどの計算機である。処理装置100は、処理装置100のコントローラとしてのCPU110と、GPU115と、RAMなどの揮発性記憶装置120と、ハードディスクドライブなどの不揮発性記憶装置130と、マウスやキーボードなどの操作部150と、液晶ディスプレイなどの表示部140と、通信部170と、を備えている。通信部170は、外部機器、例えば、撮影装置400と通信可能に接続するための有線または無線のインタフェースを含む。
【0013】
GPU(Graphics Processing Unit)115は、CPU110の制御に従って、3次元グラフィックスなどの画像処理のための計算処理を行うプロセッサである。本実施例では、後述する物体検出モデルANの演算処理を実行するために利用される。
【0014】
揮発性記憶装置120は、CPU110が処理を行う際に生成される種々の中間データを一時的に格納するバッファ領域を提供する。不揮発性記憶装置130には、コンピュータプログラムPGと背景画像群OGと版下画像RIとのデータが格納されている。背景画像群OGは、複数個の背景画像OIを含んでいる。背景画像群OGは、後述する訓練画像MIを生成するために用いられる。
【0015】
コンピュータプログラムPGは、後述する物体検出モデルANの機能をCPU110とGPU115とが協働して実現させるコンピュータプログラムをモジュールとして含んでいる。コンピュータプログラムPGは、例えば、処理装置100の製造者によって提供される。コンピュータプログラムPGは、例えば、サーバからダウンロードされる形態で提供されても良く、DVD-ROMなどに格納される形態で提供されてもよい。CPU110は、コンピュータプログラムPGを実行することにより、後述する検査処理や訓練処理を実行する。
【0016】
撮影装置400は、二次元イメージセンサを用いて被写体を撮影することによって被写体を表す画像データ(撮影画像データとも呼ぶ)を生成するデジタルカメラである。撮影画像データは、複数個の画素を含む画像を示すビットマップデータであり、具体的には、RGB値によって画素ごとの色を表すRGB画像データである。RGB値は、3個の色成分の階調値(以下、成分値とも呼ぶ)、すなわち、R値、G値、B値を含むRGB表色系の色値である。R値、G値、B値は、例えば、所定の階調数(例えば、256)の階調値である。撮影画像データは、画素ごとの輝度を表す輝度画像データであっても良い。
【0017】
撮影装置400は、処理装置100の制御に従って、撮影画像データを生成し、処理装置100に送信する。本実施例では、撮影装置400は、検査処理の検査対象であるラベルLが貼付された製品300を撮影して、検査用の撮影画像FIのデータを生成するために用いられる。撮影装置400は、背景画像OIのデータを生成するために用いられても良い。
【0018】
図2は、製品300の説明図である。
図2(A)には、製品300の斜視図が示されている。製品300は、本実施例では、略直方体の筐体30を有するプリンタである。製造工程において、筐体30の前面31(+Y側の面)には、矩形のラベルLが所定の貼付位置に貼付される。
【0019】
図2(B)には、ラベルLが示されている。ラベルLは、例えば、背景Bと、製造者や製品のブランドロゴ、型番、ロット番号等の各種の情報を示す文字TXやマークMKと、を含んでいる。
【0020】
A-2.訓練処理
訓練処理は、ラベルLを検査する検査処理(後述)に先立って実行される。訓練処理は、訓練画像MIを生成し、該訓練画像MIを用いて、検査処理にて用いられる物体検出モデルANを訓練する処理である。
図3は、訓練処理のフローチャートである。
【0021】
S10では、CPU110は、不揮発性記憶装置130から版下画像RI(
図1)のデータを取得する。
図4は、訓練処理で用いられる画像の一例を示す図である。
図4(A)の版下画像RIは、ラベルLを示す画像である。版下画像RIに示されるラベルLは、実物のラベルLを表現したCG(コンピュータグラフィックス)画像である。版下画像RIのデータは、撮影画像データと同様のビットマップデータ、本実施例では、RGB画像データである。版下画像RIのデータは、ラベルLの作成に用いられる。例えば、ラベルLは、ラベル用のシートに版下画像RIを印刷することによって作成される。
【0022】
S12では、CPU110は、不揮発性記憶装置130から一つの背景画像OIのデータを取得する。具体的には、
図1の背景画像群OGから一つずつ順次に処理対象の背景画像OIが取得される。
図5は、背景画像OIと訓練画像MIとの一例を示す図である。本実施例では、バッチサイズが64、イテレーションの数が3000で訓練が行われるので、背景画像群OGは、(64×3000)個の背景画像OIを含んでいる。複数個の背景画像OIは、デジタルカメラ(例えば、撮影装置400)を用いて、所定の被写体を撮影することによって生成される撮影画像である。背景画像OIのデータは、複数個の画素を含む画像を示すビットマップデータであり、具体的には、RGB値によって画素ごとの色を表すRGB画像データである。背景画像OIは、様々な被写体(例えば、人物、人工物、風景、動植物、あるいは、これらの組み合わせ)を示す画像である。
【0023】
図5(A)の背景画像OIは、人物を示す画像である。背景画像OIのサイズ(縦方向および横方向の画素数)は、生成すべき訓練画像MIのサイズ、すなわち、物体検出モデルANに入力される入力画像の予め定められたサイズである。背景画像OIが生成すべき訓練画像MIのサイズとは異なる場合には、CPU110は、背景画像OIにサイズ調整処理(公知の拡大処理また縮小処理)を実行して、背景画像OIのサイズを訓練画像MIのサイズに調整する。
【0024】
S15では、CPU110は、正解画像生成処理を実行する。正解画像生成処理は、版下画像RIを用いて、物体検出モデルANが検出すべきラベルLを示す正解画像GIを生成する処理である。
図6は、正解画像生成処理のフローチャートである。
【0025】
S105では、CPU110は、開始された正解画像生成処理が初回の処理であるか否かを判断する。
図3のフローチャートから解るように、
図3のS15の正解画像生成処理は、複数回に亘って繰り返し実行される。開始された正解画像生成処理が初回の処理である場合には(S105:YES)、CPU110は、S140にて、生成すべき正解画像GIの横幅W1(横方向の画素数)を所定の横幅範囲の下限値に決定する。
【0026】
所定の横幅範囲は、生成すべき訓練画像MIの横幅(横方向の画素数)を基準に予め定められている。所定の横幅範囲は、後述する検査処理にて、正常なラベルLを撮影して得られる撮影画像に含まれるラベルLの横幅として想定される範囲である。所定の横幅範囲の下限値は、例えば、生成すべき訓練画像MIの横幅の20%~40%の値であり、所定の横幅範囲の上限値は、例えば、生成すべき訓練画像MIの横幅の60%~80%の値である。本実施例では、生成すべき訓練画像MIの横幅は、600画素であり、正解画像GIの所定の横幅範囲は、200画素(下限値)~400画素(上限値)の範囲である。このために、S140では、CPU110は、生成すべき正解画像GIの横幅W1を所定の横幅範囲の下限値である200画素に決定する。
【0027】
S110では、CPU110は、訓練の進捗度αを取得する。進捗度αは、訓練の進捗の度合いを示す指標値であり、0~1の値を取る。進捗度αは、訓練の開始時には0であり、訓練の完了時には1である。本実施例では、上述した3000イテレーションの訓練を100回実行するので、訓練のエポック数は、100である。このために、本実施例では、進捗度αは、実行済みのエポック数Aを100で除した値で表される(α=A/100)。
【0028】
S120では、CPU110は、前回の横幅W(n-1)に、進捗度αに応じた値を加算して、今回、生成すべき正解画像GIの横幅Wnを算出する。ここで横幅Wnは、n回目(nは1以上の整数)の正解画像生成処理にて、生成すべき正解画像GIの横幅Wnを意味する。横幅Wnは、例えば、所定画素数PV(本実施例では50)に(1-α)を乗じた値PV×(1-α)を前回の横幅W(n-1)に加算した値である(Wn=W(n-1)+PV×(1-α))。
【0029】
S130では、CPU110は、S120にて算出された横幅Wnが、上述した予定の横幅範囲の上限値(本実施例では400画素)よりも大きいか否かを判断する。横幅Wnが横幅範囲の上限値より大きい場合には(S130:YES)、CPU110は、S140にて、生成すべき正解画像GIの横幅Wnを所定の横幅範囲の下限値(本実施例では200画素)に変更する。
【0030】
このように、S130またはS140にて、生成すべき正解画像GIの横幅Wnは、所定の横幅範囲内の値に決定される。S150では、CPU110は、版下画像RIに対してサイズ調整処理(拡大処理また縮小処理)を実行して、背景画像OIの横幅を決定された横幅Wnに調整する。これによって、正解画像GIが生成される。サイズ調整処理は、版下画像RIの縦横比が変化しないように、公知の補間方法、例えば、バイリニア法やバイキュービック法を用いて実行される。
図4(B)には、
図4(A)の版下画像RIを用いて生成される正解画像GIが示されている。正解画像GIと版下画像RIとが異なる点は、サイズだけである。
【0031】
S160では、CPU110は、S12にて取得された背景画像OIに対して正解画像GIを合成されるべき合成位置を決定し、該合成位置に基づいて正解画像GIが合成される領域を示す合成領域情報を生成、保存する。
図5(A)には、背景画像OIに対して正解画像GIが合成されるべき合成領域MAが示されている。CPU110は、正解画像GIの全体が背景画像OIに含まれるように、合成位置CPをランダムに決定する。CPU110は、例えば、背景画像OIにおける合成位置CPの座標と、合成すべき正解画像GIの横幅Wnと高さHn(縦方向の画素数)と、を示す情報を、合成領域MAを示す合成領域情報として生成する。合成領域情報は、不揮発性記憶装置130に保存される。合成領域情報が生成されると、正解画像生成処理は終了される。
【0032】
図3のS20では、CPU110は、不正解画像生成処理を実行する。不正解画像生成処理は、S15の正解画像生成処理にて生成された正解画像GIを用いて、物体検出モデルANが検出すべきでないラベルを示す不正解画像BIを生成する処理である。
図7は、不正解画像生成処理のフローチャートである。
【0033】
本実施例では、不正解画像BIは、正解画像GIに一つの差異を付与することによって生成される。S210では、CPU110は、正解画像GIに付与すべき差異を選択する。本実施例では、付与すべき差異は、(1)大きさの差異、(2)文字の差異、(3)キズや汚れの差異、(4)色の差異のいずれかである。本実施例では、(1)-(4)の差異の中から一つの差異が付与される差異としてランダムに選択される。
【0034】
S220では、CPU110は、正解画像GIに、S210にて選択された差異を付与して、不正解画像BIを生成する。
図4(C)には、大きさの差異が付与されて得られる不正解画像BIsが示されている。不正解画像BIsのサイズは、後述する検査処理にて、正常なラベルを撮影して得られる撮影画像に含まれるラベルのサイズとしては想定されないサイズに決定される。具体的には、不正解画像BIsの横幅は、上述した正解画像GIの横幅範囲の上限値(400画素)よりも所定割合以上大きな横幅と、正解画像GIの横幅範囲の下限値(200画素)よりも所定割合以上小さな横幅と、のいずれかに決定される。
【0035】
本実施例では、CPU110は、予め定められた過大横幅範囲と、過小横幅範囲と、のいずれかの範囲内で、ランダムに不正解画像BIsの横幅を決定する。過大横幅範囲の下限値は、例えば、正解画像GIの上限値(400画素)よりも20%大きな値(480画素)であり、過大横幅範囲の上限値は、例えば、訓練画像MIの横幅よりも僅かに(例えば、50画素)小さな値である。過小横幅範囲の上限値は、例えば、正解画像GIの下限値(200画素)よりも20%小さな値(160画素)であり、過小横幅範囲の下限値は、過小横幅範囲の上限値よりも十分に小さな所定値(例えば、80画素)である。CPU110は、正解画像GIに対してサイズ調整処理(拡大処理または縮小処理)を実行して、決定された横幅を有する不正解画像BIsを生成する。
図4(C)に示すように、不正解画像BIsのアスペクト比は、正解画像GIのアスペクト比と同じである。不正解画像BIsのサイズ以外の要素は、正解画像GIと同じである。このように、大きさの差異は、正解画像GIの大きさは特定範囲(上記の横幅範囲)内であり、不正解画像BIsの大きさは特定範囲外であることである、と言うことができる。
【0036】
図4(D)には、文字の差異が付与されて得られる不正解画像BItが示されている。不正解画像BItに含まれる文字の少なくとも一部は、正解画像GIに含まれる文字とは異なる。本実施例では、CPU110は、正解画像GIに対して、文字認識処理を実行して、正解画像GI内の特定の文字列、具体的には、モデル名TXa(
図4(B))を検出する。文字認識処理には、公知のOCR(Optical Character Recognition)技術や、AI(人工知能)技術を活用したいわゆるAI-OCR技術を利用した処理が用いられる。CPU110は、正解画像GI内のモデル名TXaを示す領域内の画像を、別の文字列TXbを示す画像に置換することによって、不正解画像BItを生成する。別の文字列TXbは、ランダムに選択された文字列であっても良いし、予め用意された複数個の文字列から選択されても良い。不正解画像BItのモデル名以外の要素(サイズ含む)は、正解画像GIと同じである。このように、文字の差異は、正解画像GIは、特定の文字(モデル名TXa)を含み、不正解画像BItは、特定も文字とは異なる文字(文字列TXb)を含むことである、と言うことができる。
【0037】
図4(E)には、キズや汚れの差異が付与されて得られる不正解画像BIが示されている。不正解画像BIdには、正解画像GIには含まれない疑似的な汚れDTが含まれる。本実施例では、CPU110は、正解画像GIに対して、疑似的な複数個の汚れDTを合成することによって、不正解画像BIdを生成する。汚れDTは、本実施例では、単色に塗りつぶされた矩形の画像である。汚れDTの個数は、例えば、所定の範囲(本実施例では1-6個)からランダムに選択される。汚れDTのサイズは、例えば、所定の横幅および縦幅の範囲(本実施例では、正解画像GIの縦幅および横幅の3%-15%)からランダムに選択される。汚れDTの色は、例えば、所定の選択肢(本実施例では、10色の選択肢)からランダムに選択される。汚れDTが配置される位置は、配置すべき汚れDTが過度に近づきすぎないように、正解画像GI内にランダムに決定される。なお、矩形の汚れDTに代えて、あるいは、矩形の汚れDTとともに、線状のキズや円形や楕円形の汚れが正解画像GIに合成されても良い。不正解画像BIdの汚れDT以外の要素(サイズ含む)は、正解画像GIと同じである。このように、キズや汚れの差異は、正解画像GIはキズおよび汚れを含まず、不正解画像BIdは、キズまたは汚れ(例えば、汚れDT)を含むことである、と言うことができる。
【0038】
図4(F)には、色の差異が付与されて得られる不正解画像BIcが示されている。不正解画像BIcの背景Bcの色は、正解画像GIの背景Bの色とは異なっている。例えば、版下画像RIの背景の色(すなわち、正解画像GIの背景の色)は、予め版下画像RIに対応付けて不揮発性記憶装置130に記録されている。CPU110は、正解画像GIのうち、当該背景の色を有する画素の色値を、別の色を示す色値に置換することによって、不正解画像BIcを生成する。別の色は、例えば、所定の選択肢(本実施例では、10-20色の選択肢)からランダムに選択される。なお、CPU110は、背景の色とともに、あるいは、背景の色に代えて、正解画像GIの文字やマークの全部または一部の色を変更しても良い。また、CPU110は、多数回に亘って行われる不正解画像生成処理のうちの一部では、正解画像GIの文字やマークの色と背景の色との輝度を反転させることによって不正解画像BIcを生成して良い。あるいは、CPU110は、文字やマークの色と背景の色との輝度を反転させて得られる画像の色をさらに調整して不正解画像BIcを生成して良い。不正解画像BIcの色以外の要素(サイズ含む)は、正解画像GIと同じである。このように、色の差異は、正解画像GIは特定色を有し、不正解画像BIcは特定色とは異なる色を有することである、と言うことができる。
【0039】
S230では、CPU110は、1個の訓練画像MIを生成するために必要な個数の不正解画像BIを生成したか否かを判断する。不正解画像BIの必要数は、例えば、訓練画像MIを生成する度に所定の範囲(本実施例では、1個-3個)でランダムに決定される。
【0040】
必要数の不正解画像BIが生成済みである場合には(S230:YES)、CPU110は、不正解画像生成処理を終了する。必要数の不正解画像BIが未生成である場合には(S230:NO)、CPU110は、S210に戻る。
【0041】
不正解画像生成処理後の
図3のS25では、CPU110は、背景画像OI(
図5(A))に、正解画像GIと不正解画像BIとを合成する合成処理を実行して、訓練画像MIを生成する。
図5(B)には、
図5(A)の背景画像OIに、
図4(B)の正解画像GIと、
図5(C)、(E)の不正解画像BIs、BIdを合成して得られる訓練画像MIが示されている。
【0042】
CPU110は、背景画像OIに対して、
図4のS160にて決定済みの合成領域に正解画像GIを合成する。具体的には、背景画像OIのうち、S160にて保存された合成領域情報によって示される合成領域MA内の画像を、正解画像GIに置換する。これによって、背景画像OIを背景とし、正解画像GIを前景として、背景画像OIと正解画像GIとが合成される。
【0043】
さらに、CPU110は、正解画像GIの合成領域MAとは重ならないように、不正解画像BIの合成領域を背景画像OI内に決定する。また、不正解画像BIの合成領域は、不正解画像BIの全体が背景画像OIに含まれるように決定される。さらに、複数個の不正解画像BI(例えば、不正解画像BIs、BIdを合成)を合成する場合には、複数個の不正解画像BIが互いに重ならないように、複数個の不正解画像BIの合成領域が決定される。
【0044】
CPU110は、正解画像GIが合成済みの背景画像OIに対して、決定済みの合成領域に不正解画像BIを合成する。不正解画像BIは、正解画像GIと同様に、背景画像OIを背景とし、不正解画像BIを前景として合成される。これによって、訓練画像MI(
図5(B))が生成される。
図5(B)の訓練画像MIは、正解画像GIと、不正解画像BI(BIs、BId)と、をオブジェクトとして含んでいる。
【0045】
S30では、CPU110は、生成された訓練画像MIに対して、調整処理を実行する。調整処理は、CG画像である版下画像RIを用いて生成された訓練画像MIに、撮影された画像のようなバラツキを付与する処理である。調整処理は、例えば、コントラスト補正処理、明度補正処理、ノイズ付与処理を含む。コントラスト補正処理と明度補正処理とは、コントラストや明度を補正するための公知のトーンカーブを用いて、訓練画像MIの複数個の画素値を補正することによって行われる。コントラストや明度の補正レベルは、所定の調整範囲内でランダムに決定される。ノイズ付加処理は、画像に対して、例えば、正規分布に従うノイズを付加する処理、例えば、全ての画素に対して平均0、分散10のパラメータによって生成される正規分布乱数によるノイズを付加する処理である。なお、調整処理は、コントラスト補正処理、明度補正処理、ノイズ付与処理のうちの一部の処理であっても良いし、他の処理(例えば、平滑化処理)を含んでも良い。
【0046】
S35では、CPU110は、バッチサイズ分(本実施例では64個)の訓練画像MIを生成したか否かを判断する。バッチサイズ分の訓練画像MIが未生成である場合には(S35:NO)、CPU110は、S12に戻る。バッチサイズ分の訓練画像MIが生成済みである場合には(S35:YES)、CPU110は、S40に処理を進める。
【0047】
S40では、CPU110は、バッチサイズ分の訓練画像MIを用いて、訓練画像MI内の正解画像GIを検出するように、物体検出モデルANの訓練を実行する。以下では、物体検出モデルANの概要と訓理とを説明する。
【0048】
図8は、物体検出モデルANの説明図である。
図8(A)は、物体検出モデルANの構成の例を示す概略図である。物体検出モデルANとしては、種々のオブジェクト検出モデルを採用可能である。本実施例では、物体検出モデルANは、YOLO(You only look once)と呼ばれるオブジェクト検出モデルである。YOLOは、例えば、論文「Joseph Redmon, Santosh Divvala, Ross Girshick, Ali Farhadi, "You Only Look Once: Unified, Real-Time Object Detection", Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2016, pp. 779-788」に開示されている。YOLOモデルは、畳込ニューラルネットワークを用いて、画像内のオブジェクトが位置する領域と、該領域に位置するオブジェクトの種別と、を予測する。
【0049】
図8(A)に示すように、物体検出モデルANは、m個(mは1以上の整数)の畳込層CV11-CV1mと、畳込層CV11-CV1mに続くn個(nは1以上の整数)の全結合層CN11-CN1nと、を有している(mは、例えば、24。nは、例えば、2)。m個の畳込層CV11-CV1mのうちの1以上の畳込層の直後には、プーリング層が設けられる。
【0050】
畳込層CV11-CV1mは、それぞれ、入力されるデータ(入力画像IIまたは上流側の層から出力される特徴マップのデータ)に対して、畳込処理とバイアスの加算処理とを含む処理を実行する。畳込処理は、入力されたデータに対して、t個のフィルタを順次に適用し、入力されたデータとフィルタとの相関を示す相関値を算出する処理である(tは、1以上の整数)。フィルタを適用する処理では、フィルタをスライドさせながら複数個の相関値が順次に算出される。バイアスの加算処理は、算出された相関値に、バイアスを加算する処理である。バイアスは、1個のフィルタに対して1個ずつ準備されている。フィルタの次元とフィルタの数tとは、通常は、m個の畳込層CV11-CV1mの間で異なっている。畳込層CV11-CV1mは、複数のフィルタの複数の重みと複数のバイアスとを含む演算パラメータを、それぞれ有している。
【0051】
プーリング層は、直前の畳込層から入力されたデータに対して、データの次元数を削減する処理を実行する。プーリングの処理としては、平均プーリング、最大プーリングなど、種々の処理を利用可能である。本実施例では、プーリング層は、最大プーリングを行う。最大プーリングは、所定サイズ(例えば、2×2)のウィンドウを所定のストライド(例えば、2)でスライドさせつつ、ウィンドウ内の最大値を選択することによって次元数を削減する。
【0052】
全結合層CN11-CN1nは、直前の層から入力されたf次元のデータ(すなわち、f個の値。fは2以上の整数)を用いて、g次元のデータ(すなわち、g個の値。gは2以上の整数)を出力する。出力されるg個の値のそれぞれは、入力されるf個の値で構成されるベクトルとf個の重みで構成されるベクトルとの内積に、バイアスを加えた値である。入力データの次元数fと出力データの次元数gとは、通常は、n個の全結合層CN11-CN1nの間で異なっている。全結合層CN11-CN1nは、複数の重みと複数のバイアスとを含む演算パラメータを、それぞれ有している。
【0053】
なお、畳込層CV11-CV1mと全結合層CN11-CN1nとのそれぞれによって生成されるデータは、活性化関数に入力されて変換される。活性化関数としては、種々の関数を利用可能である。本実施例では、最後の層(ここでは、全結合層CN1n)には、線形活性化関数(linear activation function)が用いられ、他の層には、漏洩正規化線形ユニット(Leaky Rectified Linear Unit:LReLU)が用いられる。
【0054】
物体検出モデルANの動作の概要を説明する。物体検出モデルANには、入力画像IIが入力される。本実施例では、訓練処理において、入力画像IIとして訓練画像MI(
図5(B))が用いられる。
【0055】
物体検出モデルANは、入力画像IIが入力されると、入力画像IIのデータに対して上述した演算パラメータを用いた演算処理を実行して、出力データODを生成する。出力データODは、S×S×(Bn×5+C)個の予測値を含むデータである。各予測値は、オブジェクト(本実施例ではラベルL)が位置すると予測される予測領域(バウンディングボックスとも呼ばれる)を示す予測領域情報と、該予測領域に存在するオブジェクトの種別(クラスとも呼ばれる)を示すクラス情報と、を含む。
【0056】
予測領域情報は、入力画像II(例えば、訓練画像MI)をS×S(Sは2以上の整数。Sは、例えば、7)に分割して得られる(S×S)個のセルに対して、Bn(Bnは1以上の整数、例えば、2)個ずつ設定される。そして、各予測領域情報は、セルに対する予測領域の中心座標(Xp、Yp)と幅Wpと高さHpと、確信度Vcと、の5個の値を含む。確信度Vcは、予測領域にオブジェクトが存在する確率を示す情報である。クラス情報は、セルに存在するオブジェクトの種別を種別ごとの確率で示す情報である。クラス情報は、オブジェクトの種別をC種(Cは1以上の整数)に分類する場合に、C個の確率を示す値を含む。本実施例では、C=1であり、オブジェクトがラベルLであるか否かを識別する。このために、出力データODは、上述のように、S×S×(Bn×5+C)個の予測値を含む。
【0057】
上述した
図5のS160にて生成される合成領域情報は、物体検出モデルANを訓練する際の教師データの一部として利用される。教師データは、出力データODと対応している。具体的には、教師データは、対応する訓練画像MIが物体検出モデルANに入力される場合に、出力されるべき理想的な出力データODを示す。すなわち、教師データは、S×S×(Bn×5+C)個の予測値のうち、訓練画像MI(
図5(B))におけるラベルL(正解画像GI)の中心CPが位置するセルに対応する理想的な予測値として、上述した合成領域情報と、最大の確信度Vc(例えば、1)と、ラベルLであることを示す上述したクラス情報と、を含む。また、教師データは、ラベルLの中心CPが位置しないセルに対応する予測値として、最小の確信度Vc(例えば、0)を含む。
【0058】
次に、物体検出モデルANの訓練(
図3のS40)について説明する。
図8(B)は、物体検出モデルANの訓練のフローチャートである。
図8(B)の訓練は、バッチサイズ分の訓練画像MIを用いて実行される1回の訓練(1イテレーション)を示す。物体検出モデルANは、出力データODが訓練画像MI内の正解画像GIの領域を示すように、訓練される。訓練によって、物体検出モデルANの演算に用いられる複数の演算パラメータ(複数の層CV11-CV1m、CN11-CN1nのそれぞれの演算に用いられる複数の演算パラメータを含む)が、調整される。初回の
図3のS40が実行される時点では、複数の演算パラメータは、乱数値などの初期値に設定されている。
【0059】
S420では、CPU110は、バッチサイズ分の訓練画像MI(本実施例では64個の訓練画像MI)を物体検出モデルANに入力し、バッチサイズ分の複数個の訓練画像MIに対応する複数個の出力データODを生成する。
【0060】
S430では、複数個の出力データODと、複数個の出力データODに対応する複数個の教師データと、を用いて、損失値を算出する。ここで、出力データODに対応する教師データは、
図6のS160にて正解画像GIごと(すなわち、訓練画像MIごと)に生成された合成領域情報を用いて生成される。損失値は、訓練画像MIごとに算出される。
【0061】
損失値の算出には、損失関数が用いられる。損失関数は、出力データODと教師データとの間の差分に応じた損失値を算出する種々の関数であってよい。本実施例では、YOLOの上記の論文に開示されている損失関数が用いられる。この損失関数は、例えば、領域損失項と、オブジェクト損失項と、クラス損失項と、を含む。領域損失項は、教師データに含まれるラベル領域と、出力データODに含まれる対応する予測領域と、の差分が小さいほど小さな損失値を算出する項である。ラベル領域に対応する予測領域は、出力データODにて示される複数個の予測領域のうち、ラベル領域が対応付けられたセルに対応付けられた予測領域である。オブジェクト損失項は、各予測領域の確信度Vcについて、教師データの値(0または1)と出力データODの値との差分が小さいほど小さな値を算出する項である。クラス損失項は、教師データに含まれるクラス情報と、出力データODに含まれる対応するクラス情報と、の差分が小さいほど小さな損失値を算出する項である。出力データODに含まれる対応するクラス情報は、出力データODに含まれる複数個のクラス情報のうち、教師データのクラス情報が対応付けられたセルに対応付けられたクラス情報である。各項の具体的な損失関数には、差分に応じた損失値を算出するための公知の損失関数、例えば、二乗誤差、クロスエントロピー誤差、絶対誤差が用いられる。
【0062】
S440では、CPU110は、算出された損失値を用いて、物体検出モデルANの複数の演算パラメータを調整する。具体的には、CPU110は、訓練画像データごとに算出される損失値の合計が小さくなるように、所定のアルゴリズムに従って演算パラメータを調整する。所定のアルゴリズムとしては、例えば、誤差逆伝播法と勾配降下法とを用いたアルゴリズムが用いられる。
【0063】
物体検出モデルANの訓練(
図3のS40)が終了すると、S42では、CPU110は、物体検出モデルANの訓練の上述した進捗度αを更新する。上述のように、本実施例では、1エポック分の訓練が完了するごとに1%(0.01)だけ進捗度αに加算される。
【0064】
S45では、CPU110は、訓練終了条件が満たされたか否かを判断する。本実施例では、訓練終了条件は、100エポック分の訓練が完了することである。例えば、CPU110は、進捗度αが1になった場合に、訓練終了条件が満たされたと判断し、進捗度αが1未満である場合に、訓練終了条件は満たされないと判断する。
【0065】
訓練終了条件が満たされない場合には(S45:NO)、CPU110は、S12に戻って、訓練を継続する。訓練終了条件が満たされた場合には(S45:YES)、CPU110は、S50にて、調整済の演算パラメータを含む訓練済みの物体検出モデルANのデータを、不揮発性記憶装置130に格納して、訓練処理を終了する。
【0066】
訓練画像MIが入力される場合に訓練済みの物体検出モデルANによって生成される出力データODは、以下の特徴を有している。出力データODにおいて、訓練画像MI内の正解画像GI(ラベルL)の中心CPを含むセルに対応付けられた予測領域情報の1つは、訓練画像MI内の正解画像GIの領域を適切に示す情報と、高い確信度Vc(1に近い確信度Vc)と、を含む。また、出力データODにおいて、訓練画像MI内の正解画像GIの中心CPを含むセルに対応付けられたクラス情報は、ラベルLであることを示す。出力データODに含まれる他の予測領域情報は、ラベルLとは異なる領域を示す情報と、低い確信度Vc(0に近い確信度Vc)と、を含む。従って、高い確信度Vcを含む予測領域情報を用いて、訓練画像MI内の正解画像GIの領域を特定できる。換言すれば、訓練済みの物体検出モデルANは、正解画像GIに示されるラベルLを含む入力画像(例えば、後述する撮影画像FI)が入力される場合に、該入力画像内のラベルLの領域を特定できる。
【0067】
以上の説明から解るように、物体検出モデルANは、正解画像GIと不正解画像BIとをオブジェクトとして含む訓練画像MIを用いて訓練される。そして、物体検出モデルANは、訓練画像MI内の正解画像GIを検出し、かつ、訓練画像MI内の不正解画像BIを検出しないように訓練される。このために、訓練画像MIにおいて、正解画像GIは、物体検出モデルANにて検出すべきラベルLを示すオブジェクトである、と言うことができる。また、訓練画像MIにおいて、不正解画像BIは、物体検出モデルANにて検出すべきでないラベルを示すオブジェクトである、と言うことができる。正解画像GIと不正解画像BIとは、ともにラベルを示すので、互いに同種の物品を示している、と言うことができる。
【0068】
A-3.検査処理
図9は、検査処理のフローチャートである。
図10は、撮影画像FIの一例を示す図である。検査処理は、製品300に貼付された検査対象のラベルLを検査する処理である。検査は、貼付されたラベルLが正しいラベルであるか否か(貼り間違えはないか)の検査と、貼付されたラベルLが欠陥等を含むか否かの検査と、を含む。検査処理は、ユーザ(例えば、検査の作業者)が処理の開始指示を、操作部150を介して処理装置100に入力した場合に、開始される。例えば、ユーザは、検査すべきラベルLが貼り付けられた製品300を、撮影装置400を用いて撮影するための所定の位置に配置した状態で、検査処理の開始指示を入力する。
【0069】
S510では、CPU110は、検査すべきラベルLを含む撮影画像FIを取得する。例えば、CPU110は、撮影装置400に撮影指示を送信して、撮影装置400に撮影画像FIのデータを生成させ、撮影装置400から撮影画像FIのデータを取得する。この結果、例えば、
図10の撮影画像FIが取得される。撮影画像FIは、製品の前面31と、前面31上に貼付されたラベルLとを示す画像である。ラベルLは、キズなどの欠陥を含む場合もある。
【0070】
S515では、CPU110は、撮影画像FIを物体検出モデルANに入力して、物体検出モデルANに対応する出力データODを物体検出モデルANに生成させる。出力データODは、上述のように、複数個の予測領域情報を含む。
【0071】
S520では、CPU110は、複数個の予測領域情報のうち、所定の閾値Vth以上の確信度Vcを含む予測領域情報を特定する。
【0072】
S525では、CPU110は、撮影画像FIにおいて、検査すべきラベルLの領域が全て特定されたか否かを判断する。本実施例では、検査すべきラベルLは、1種類の1個のラベルLであるので、所定の閾値Vth以上の確信度Vcを含む1個の予測領域情報が特定された場合に、検査すべきラベルLの領域が全て特定されたと判断される。検査すべきラベルLがK個(Kは1以上の整数)存在する場合には、所定の閾値Vth以上の確信度Vcを含むK個の予測領域情報が特定された場合に、検査すべきラベルLの領域が全て特定されたと判断される。
【0073】
検査すべきラベルLの領域が全て特定されない場合には(S525:NO)、CPU110は、S540にて、検査結果を異常有りとする。この場合には、ラベルの貼り忘れや貼り間違い、あるいは、ラベルに大きなキズや汚れなどの明らかな異常があると考えられるので、後述する詳細検査処理(S545)を実行することなく、検査結果を異常有りとすることができる。
【0074】
検査すべきラベルLの領域が全て特定された場合には(S525:YES)、CPU110は、S530にて、撮影画像FIにて特定されたラベルLの領域(
図10のラベル領域LA)内の画像に対して文字列確認処理を実行する。具体的には、CPU110は、ラベル領域LA内の画像に対して、文字認識処理を実行して、ラベル領域LA内に含まれる文字列を検出する。CPU110は、文字認識処理によって検出された文字列が、版下画像RIに示されるラベルLの特定の文字列(例えば、メーカ名やモデル名)を含むか否かを確認する。
【0075】
S530では、CPU110は、S530の文字列確認処理の結果に基づいて、ラベル領域LAが特定の文字列を含むか否かを判断する。ラベル領域LAが特定の文字列を含まない場合には(S535:NO)、CPU110は、S540にて、検査結果を異常有りとする。この場合には、ラベルの貼り間違いが生じていると考えられるので、後述する詳細検査処理(S545)を実行することなく、検査結果を異常有りとすることができる。
【0076】
ラベル領域LAが特定の文字列を含む場合には(S535:YES)、CPU110は、S545にて、ラベル領域LA内の画像(ラベルLの画像)を用いて、詳細検査処理を実行する。詳細検査処理は、ラベル領域LA内のラベルLにキズや汚れなどの異常があるか否かを検査する処理である。詳細検査処理には、例えば、機械学習モデルを利用した公知の方法が用いられる。
【0077】
本実施例では、PaDiMと呼ばれる手法を用いて、詳細検査処理が実行される。PaDiMの手法では、例えば、CPU110は、図示しないエンコーダにラベル領域LA内のラベルLの画像を入力して、ラベルLの画像の特徴データを生成する。そして、CPU110は、ラベルの画像の特徴データと、複数個の正常なラベルLの画像データの特徴データと、の間のマハラノビス距離を算出することで、ラベルの検査を実行する。複数個の正常なラベルの画像データの特徴データは、例えば、エンコーダに複数個の正常なラベルの画像データを入力することで、予め生成される。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」に開示されている。
【0078】
S550では、CPU110は、検査結果を表示部140に表示して検査処理を終了する。検査結果は、S590にて異常有りと判定されたことやS545の詳細検査処理の結果を含み得る。
【0079】
以上説明した本実施例によれば、訓練処理(
図3)にて生成される複数個の訓練画像MI(
図5(B))のそれぞれは、正解画像GIと不正解画像BIとをオブジェクトとして含む1枚の画像である。正解画像GIは、物体検出モデルANにて検出すべきラベルLを示し、不正解画像BIは、物体検出モデルANにて検出すべきでないラベルを示す。正解画像GIと不正解画像BIとは互いに同種の物品(本実施例ではラベル)を示す。CPU110は、複数個の訓練画像MIを取得し(
図3のS10~S30)、該複数個の訓練画像MIを用いて、訓練画像MIが物体検出モデルANに入力される場合に訓練画像MI内の正解画像GIを検出するように、物体検出モデルANを訓練する(
図3のS40)。正解画像GIと不正解画像BIとの差異は、差異(1)~差異(4)のうちの1つを含む(
図7のS210、S220、
図4)。上述のように差異(1)は大きさの差異であり、差異(2)は文字の差異であり、差異(3)はキズや汚れの差異であり、差異(4)は色の差異である。この結果、検出対象のラベルLの大きさ、特定の文字の有無、キズや汚れの有無、特定色を有するか否か等の差異を考慮して、物体を検出するように、物体検出モデルANを訓練できる。この結果、物体検出モデルによるラベルLの検出精度を向上し得る。
【0080】
例えば、検出すべきラベルLと、ラベルとは全く異なるオブジェクト(人、他種の物品等)と、を含む訓練画像のみを用いて物体検出モデルANを訓練すると、大きさ、文字、キズや汚れ、色などの細かい差異を考慮したラベルLの検出が可能なように物体検出モデルANを訓練することは困難である。本実施例によれば、例えば、想定外の大きさを有するラベルは、該ラベルの他の要素が検出すべきラベルLと同じであっても検出されないように、物体検出モデルANを訓練し得る。また、例えば、特定の文字を含んでいないラベルは、該ラベルの他の要素が検出すべきラベルLと同じであっても検出されないように、物体検出モデルANを訓練し得る。また、例えば、キズや汚れを含んでいるラベルは、該ラベルの他の要素が検出すべきラベルLと同じであっても検出されないように、物体検出モデルANを訓練し得る。また、例えば、背景や文字の色が異なるラベルは、該ラベルの他の要素が検出すべきラベルLと同じであっても検出されないように、物体検出モデルANを訓練し得る。したがって、例えば、
図9に示すように、詳細検査処理を行うことなく、検査結果を得ることができるので、検査処理の効率を向上することができる。
【0081】
さらに、本実施例では、正解画像GIが示す物品は、文字TXを含むラベルLである(
図4、
図5)。この結果、物体検出モデルANによってラベルLを検出する精度を向上し得る。ラベルLの検査では、撮影画像FIに含まれるラベルLの大きさは、ある程度想定範囲内に収まるので、想定外の大きさのラベルを検出する必要がない。むしろ、想定外の大きさのラベルを検出しないことで、その時点で、ラベルに異常があることを判断できるので、検査処理を効率化できる(
図9のS525、S540)。文字、キズや汚れ、色が想定されるラベルと異なる場合についても同様である。本実施例によれば、物体検出モデルANによるラベルの検出精度を向上することで、検査処理を効率化できる。
【0082】
さらに本実施例によれば、大きさの差異は、(A)正解画像GIの大きさが特定範囲内(例えば、横幅が200画素以上400画素未満の範囲内)であり、不正解画像BIの大きさが特定範囲の上限よりも所定割合以上大きいこと(例えば、横幅が上限400画素よりも20%以上大きいこと)、または、(B)正解画像GIの大きさが特定範囲内(例えば、横幅が200画素以上400画素未満の範囲内)であり、不正解画像BIの大きさは特定範囲の下限よりも所定割合以上小さいこと(例えば、横幅が下限200画素よりも20%以上小さいこと)である。この結果、正解画像GIと、大きさの差異が付与された不正解画像BIsと、を含む訓練画像MI(
図5(B))において、正解画像GIと不正解画像BIsとの大きさの差異を、明確に有意の差異とすることができる。したがって、物体検出モデルANが特定範囲内の大きさのラベルLを検出し、特定範囲外の過度に大きなラベルや過度に小さなラベルを検出しないように、物体検出モデルANを訓練できる。
【0083】
さらに、本実施例によれば、1つの不正解画像BIと正解画像GIとの間の差異は、差異(1)~(4)のうちの1つの差異を含み、差異(1)~(4)のうちの1つとは異なる差異を含まない。すなわち、1つの不正解画像BIに付与される差異は、大きさの差異と、文字の差異と、キズや汚れの差異と、色の差異と、のうちの1つだけである(
図7のS210、
図4)。検査処理において異常であると判断されるラベルは、検出すべきラベルとの差異として差異(1)~(4)のうちの1つだけを含む場合が多い。このために、検査処理において用いられる物体検出モデルANは、検出すべきラベルとの差異が1つだけであるラベルを検出しないように訓練することが好ましい。本実施例によれば、1つの不正解画像BIと正解画像GIとの間の差異は、差異(1)~(4)のうちの1つだけであるので、検出すべきラベルとの差異が1つだけであるラベルを検出しないように物体検出モデルANを訓練することができる。
【0084】
さらに、本実施例によれば、訓練画像MIは、正解画像GIの全体と、不正解画像BIの全体と、を含む(
図5(B))。すなわち、訓練画像MIは、検出すべきラベルLの全体を示すオブジェクトと、検出すべきでないラベルの全体を示すオブジェクトと、を含む。この結果、訓練画像MIを用いて物体検出モデルANを訓練することで、検出すべきラベルLの全体を含む撮影画像FIから、当該ラベルLの領域を検出するように物体検出モデルANを訓練できる。検査処理では、検査対象のラベルの全体を含むように撮影画像FIの撮影が行われるのが通常である。このために、撮影画像FIに含まれているラベルが欠けている場合には、何らかの異常が発生していると考えられるので、欠けたラベルを検出する必要はない。むしろ、欠けたラベルを検出しないことで、その時点で、ラベルの撮影位置や撮影条件などに異常があることを判断できるので、検査処理を効率化できる(
図9のS525、S540)。
【0085】
さらに、本実施例によれば、CPU110は、背景画像OIを背景とし正解画像GIを前景として、背景画像OI内の合成領域MAに正解画像GIを合成する(
図3のS25)。CPU110は、合成領域MAを示す合成領域情報を保存する(
図6のS160)。CPU110は、合成領域情報を教師データとして用いて、物体検出モデルを訓練する(
図3のS40、
図8(B)のS430)。この結果、教師データを生成する負担を軽減できるので、物体検出モデルANの訓練の負担を軽減できる。例えば、仮に、正解画像GIを背景画像OIに合成することに代えて、正常なラベルLを撮影することによって、訓練画像MIを生成する場合には、例えば、オペレータが訓練画像内のラベルLを確認して、ラベルの領域を指定することによって、教師データが生成される。この場合には、オペレータによる作業が必要になるので、物体検出モデルANを訓練するための負担が増大し得る。また、本実施例では、オペレータがラベルの領域を指定する場合よりも、精度良くラベル領域情報を生成し得るので、物体検出モデルANが精度良くラベルの領域を特定できるように、物体検出モデルANを訓練し得る。
【0086】
さらに、本実施例によれば、CPU110は、背景画像OIと、正解画像GIと、を取得し(
図3のS12、S15)、正解画像GIに対して特定の画像処理を実行して、不正解画像BIを生成する(
図3のS20、
図7)。CPU110は、背景画像OIを背景とし正解画像GIと不正解画像BIを前景として、背景画像OIの合成領域MAに正解画像GIを合成し、背景画像OIの別の領域に不正解画像BIを合成することによって訓練画像MIを生成する(
図3のS25、
図5(B))。この結果、背景画像OIと正解画像GIとを用いて、不正解画像BIを含む訓練画像MIが生成されるので、訓練画像MIを準備する負担を軽減できる。仮に、大きさ、文字、キズや汚れ、色などの差異が生じているラベルを実際に撮影することによって、不正解画像を取得するとすると、不正解画像を準備するための負担が過度に大きくなり得るが、本実施例では、このような負担を軽減できる。
【0087】
さらに、本実施例によれば、正解画像GIは、版下画像RIを用いて生成される。この結果、例えば、実物のラベルLを撮影することで、正解画像GIを準備する場合よりも正解画像GIを準備する負担を軽減できる。
【0088】
さらに、本実施例によれば、本実施例の検査処理は、検査対象のラベルLの撮影画像FIを取得し(
図9のS510)、物体検出モデルANを用いて、撮影画像FI内のラベルLの領域を検出し、検出されたラベルLに含まれる文字が、特定の文字であるか否かを判断する処理(
図9のS530、S535)を含む。文字の差異が付与されて不正解画像BItを含む訓練画像MIを用いて物体検出モデルANを訓練したとしても、細かな文字が異なるラベルを検出することを完全に抑制することは困難である。このために、本実施例では、検出されたラベルLに含まれる文字を確認し、ラベルに特定の文字列がある場合に、詳細検査処理を行っている。この結果、無駄な詳細検査処理が行われることを抑制して、検査処理の効率を向上できる。
【0089】
以上の説明から解るように、本実施例の正解画像GIは、正解オブジェクトの例であり、不正解画像BIは、不正解オブジェクトの例である。
【0090】
B.第2実施例
第2実施例では、訓練処理の内容が第1実施例とは異なる。
図11は、第2実施例の訓練処理のフローチャートである。
図12は、第2実施例の説明図である。第2実施例では、2種類のラベル、すなわち、
図12(A)の第1ラベルL1と、
図12(B)の第2ラベルL2と、が検査対象とされる。第1ラベルL1は、第1実施例のラベルLと同一のラベルであり、背景Bと、文字TXと、マークMKと、を含む。第2ラベルL2は、第1ラベルL1と異なるラベルであり、背景B2と、文字TX2と、マークMK2と、を含む。、第2ラベルL2の背景B2の色は、第1ラベルL1の背景Bの色とは異なっている。第2ラベルL2の文字TX2の一部は、第1ラベルL1の文字TXの一部と異なっている。第2ラベルL2のマークMK2の形状は、第1ラベルL1のマークMKの形状と異なっている。
【0091】
第2実施例の訓練処理では、物体検出モデルANが第1ラベルL1と第2ラベルL2との両方を検出できるように訓練する。
図11のS10Bでは、CPU110は、第1ラベルL1の版下画像RI1と、第2ラベルL2の版下画像RI2と、を不揮発性記憶装置130から取得する。
図12(A)、(B)は、版下画像RI1と版下画像RI2とを示す画像とも言うことができる。
【0092】
S12Bでは、CPU110は、
図3のS12と同様に、不揮発性記憶装置130から一つの背景画像OIのデータを取得する。
【0093】
S15Bでは、CPU110は、第1ラベル画像生成処理を実行する。第1ラベル画像生成処理は、版下画像RI1を用いて、第1実施例の正解画像生成処理(
図6)と同一の処理を実行することによって、第1ラベル画像GI1(
図12(C))を生成する処理である。
【0094】
S20Bでは、CPU110は、第2ラベル画像生成処理を実行する。第2ラベル画像生成処理は、版下画像RI2を用いて、第1実施例の正解画像生成処理(
図6)と同一の処理を実行することによって、第2ラベル画像GI2(
図12(C))を生成する処理である。
【0095】
S25Bでは、CPU110は、背景画像OI(
図5(A))に、第1ラベル画像GI1と第2ラベル画像GI2とを前景として合成する合成処理を実行して、訓練画像MI2を生成する。
図12(C)には、訓練画像MI2の一例が示されている。
【0096】
S30Bでは、CPU110は、
図3のS30と同様に、訓練画像MI2に対して、調整処理を実行する。調整処理は、上述したように、例えば、コントラスト補正処理、明度補正処理、ノイズ付与処理を含む。
【0097】
S35Bでは、CPU110は、
図3のS35と同様に、バッチサイズ分の訓練画像MI2を生成したか否かを判断する。バッチサイズ分の訓練画像MI2が未生成である場合には(S35B:NO)、CPU110は、S12Bに戻る。バッチサイズ分の訓練画像MI2が生成済みである場合には(S35B:YES)、CPU110は、S40Bに処理を進める。
【0098】
S40Bでは、CPU110は、バッチサイズ分の訓練画像MIを用いて、訓練画像MI2内の第1ラベル画像GI1を検出するように、物体検出モデルANの訓練を実行する。すなわち、CPU110は、第1ラベル画像GI1の合成領域MA1を検出すべきラベルの領域として示す教師データを用いて、
図8(B)の訓練を実行する。換言すれば、訓練画像MI2内の第1ラベル画像GI1(第1ラベルL1)を検出すべきラベルとし、第2ラベル画像GI2(第2ラベルL2)を検出すべきでないラベルとして訓練を行う。
【0099】
S41Bでは、CPU110は、バッチサイズ分の訓練画像MIを用いて、訓練画像MI2内の第2ラベル画像GI2を検出するように、物体検出モデルANの訓練を実行する。すなわち、CPU110は、第2ラベル画像GI2の合成領域MA2を検出すべきラベルの領域として示す教師データを用いて、
図8(B)の訓練を実行する。換言すれば、訓練画像MI2内の第1ラベル画像GI1(第1ラベルL1)を検出すべきでないラベルとし、第2ラベル画像GI2(第2ラベルL2)を検出すべきラベルとして訓練を行う。
【0100】
S42Bでは、CPU110は、
図3のS42と同様に、物体検出モデルANの訓練の上述した進捗度αを更新する。上述のように、本実施例では、1エポック分の訓練が完了するごとに1%(0.01)だけ進捗度αに加算される。
【0101】
S45Bでは、CPU110は、
図3のS45と同様に、訓練終了条件が満たされたか否かを判断する。本実施例では、訓練終了条件は、100エポック分の訓練が完了することである。例えば、CPU110は、進捗度αが1になった場合に、訓練終了条件が満たされたと判断し、進捗度αが1未満である場合に、訓練終了条件は満たされないと判断する。
【0102】
訓練終了条件が満たされない場合には(S45B:NO)、CPU110は、S12Bに戻って、訓練を継続する。訓練終了条件が満たされた場合には(S45B:YES)、CPU110は、S50Bにて、調整済の演算パラメータを含む訓練済みの物体検出モデルANのデータを、不揮発性記憶装置130に格納して、訓練処理を終了する。
【0103】
これによって、物体検出モデルANは、第1ラベルL1と第2ラベルL2とをそれぞれ検出可能に訓練される。
【0104】
以上説明した第2実施例によれば、複数個の訓練画像MI2は、第1ラベルL1を示す第1ラベル画像GI1と、第2ラベルL2を示す第2ラベル画像GI2と、をオブジェクトとして含む(
図12(B))。訓練処理では、CPU110は、第1ラベル画像GI1を検出すべきラベルを示すオブジェクトとし、第2ラベル画像GI2を検出すべきでないラベルを示すオブジェクトとして用いて、訓練画像MI内の第1ラベル画像GI1を検出するように、物体検出モデルANを訓練する(
図11のS40B)。CPU110は、さらに、第1ラベル画像GI1を検出すべきでないラベルを示すオブジェクトとし、第2ラベル画像GI2を検出すべきラベルを示すオブジェクトとして用いて、訓練画像MI内の第2ラベル画像GI2を検出するように、物体検出モデルANを訓練する(
図11のS41B)。この結果、第1ラベルL1と第2ラベルL2とを区別して検出できるように、物体検出モデルANを訓練することできる。また、複数個の訓練画像MI2を用いて、第1ラベルL1を第2ラベルL2と区別して検出できるようにする訓練と、第2ラベルL2を第1ラベルL1と区別して検出できるようにする訓練と、の両方を行うことができるので、物体検出モデルANを訓練するための負担を軽減することができる。
【0105】
以上の説明から解るように、本実施例の第1ラベルL1は、第1の物品の例であり、第2ラベルL2は、第2の物品の例であり、第1ラベル画像GI1は、第1オブジェクトの例であり、第2ラベル画像GI2は、第2オブジェクトの例である。
【0106】
C.変形例
(1)検査の対象となる物品は、ラベルL(
図2(B))に限らず、他の任意の物品であってよい。対象となる物品は、製品(例えば、複合機)に設けられる銘板、例えば、ロゴや品番やモデル名やメーカ名を示す文字や記号を含む立体的な銘板であっても良い。また、ラベルや銘板が設けられる製品は、複合機に限らず、ミシン、カッティングマシン、携帯端末などの他の製品であっても良い。
【0107】
(2)上記実施例の1つの不正解画像BIは、正解画像GIとの差異として、大きさ、特定の文字、キズや汚れ、色のうちの1つだけを含んでいる。これに代えて、不正解画像BIは、正解画像GIとの差異として、大きさ、特定の文字、キズや汚れ、色のうちの複数個の差異を含んでも良い。例えば、不正解画像BIは、正解画像GIよりも大きく、かつ、正解画像GIとは異なる色を有しても良い。
【0108】
(3)上記第2実施例の訓練処理では、
図11のS40BとS41Bとの両方で、1つの物体検出モデルANの訓練を行っている。これに代えて、
図11のS40BとS41Bとで、互いに異なる物体検出モデルANを訓練しても良い。すなわち、S40Bでは、訓練画像MI2が入力される場合に、訓練画像MI2内の第1ラベル画像GI1を検出し、第2ラベル画像GI2を検出しないように、第1の物体検出モデルを訓練し、S40Bでは、訓練画像MI2が入力される場合に、訓練画像MI2内の第2ラベル画像GI2を検出し、第1ラベル画像GI1を検出しないように、第1の物体検出モデルとは異なる第2の物体検出モデルを訓練しても良い。この場合には、第1ラベル画像GI1を検出するための第1の物体検出モデルと、第2ラベル画像GI2を検出するための第2の物体検出モデルと、を同じ訓練画像MI2を用いて、効率良く訓練することができる。
【0109】
(4)なお、上記実施例の訓練画像の生成方法は、一例であり、これに限られない。例えば、第1実施例の訓練画像MIは、実際に、正常なラベルLと、キズや汚れを付したラベルLと、を準備し、正常なラベルLと、キズや汚れを付したラベルLと、が1つの画像に収まるように、該2つのラベルLを撮影することによって生成されても良い。第2実施例の訓練画像MI2は、実際に、2種類のラベル、すなわち、第1ラベルL1と第2ラベルL2とを準備し、該2種類のラベルが1つの画像に収まるように、該2つのラベルLを撮影することによって生成されても良い。
【0110】
(5)上記実施例の検査処理(
図9)は、一例であり、これに限られない。例えば、S530、S535のラベル内の文字列が特定の文字列を含むか否かを確認する処理は省略されても良い。
【0111】
また、S545の詳細検査処理は、省略されても良いし、詳細検査処理には上述したPaDiMと呼ばれる手法とは異なる手法が採用されても良い。例えば、VAE(Variational AutoEncoder)や通常のAE(AutoEncoder)などのオートエンコーダを用いて、工業製品の異常検知を行う技術が知られている。この技術では、検査対象の工業製品を撮影して得られる入力画像をオートエンコーダに入力し、出力画像が生成される。そして、入力画像と出力画像とを比較することで異常検知が行われる。詳細検査処理として、このようなオートエンコーダを用いる手法が採用されても良い。この手法は、例えば、文献「立花 亮介, 松原 崇, 上原 邦昭, “深層生成モデルによる非正則化異常度を用いた工業製品の異常検知”, 人工知能学会全国大会論文集, 第32回 (2018), p.2A103, 公開日 2018/07/30, https://doi.org/10.11517/pjsai.JSAI2018.0_2A103」に開示されている。
【0112】
(6)上記実施例では、訓練処理と検査処理とは、
図1の処理装置100によって実行されている。これに代えて、訓練処理と検査処理とは、それぞれ、別の装置によって実行されても良い。この場合には、例えば、訓練処理によって訓練された物体検出モデルANは、検査処理を実行する装置の記憶装置に格納される。また、訓練処理と検査処理との全部または一部は、ネットワークを介して互いに通信可能な複数個の計算機(例えば、いわゆるクラウドサーバ)によって実行されても良い。また、検査処理を行うコンピュータプログラムと、訓練処理を行うコンピュータプログラムとは、異なるコンピュータプログラムであっても良い。
【0113】
(7)上記各実施例において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部あるいは全部をハードウェアに置き換えるようにしてもよい。例えば、訓練処理と検査処理との全部または一部、例えば、物体検出モデルANの演算処理は、ASIC(Application Specific Integrated Circuit)等のハードウェア回路によって実行されてよい。
【0114】
以上、実施例、変形例に基づき本発明について説明してきたが、上記した発明の実施の形態は、本発明の理解を容易にするためのものであり、本発明を限定するものではない。本発明は、その趣旨並びに特許請求の範囲を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物が含まれる。
【符号の説明】
【0115】
1000…検査システム,100…処理装置,110…CPU,120…揮発性記憶装置,130…不揮発性記憶装置,140…表示部,150…操作部,170…通信部,30…筐体,300…製品,400…撮影装置,AN…物体検出モデル,BI…不正解画像,FI…撮影画像,GI…正解画像,L…ラベル,MI,MI2…訓練画像,OD…出力データ,OI…背景画像,PG…コンピュータプログラム,RI…版下画像