(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022098842
(43)【公開日】2022-07-04
(54)【発明の名称】データを処理する処理装置、コンピュータプログラム、方法
(51)【国際特許分類】
G06T 7/00 20170101AFI20220627BHJP
G06N 3/04 20060101ALI20220627BHJP
G06N 3/08 20060101ALI20220627BHJP
G06N 20/00 20190101ALI20220627BHJP
【FI】
G06T7/00 350B
G06N3/04
G06N3/08
G06N20/00
【審査請求】未請求
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2020212473
(22)【出願日】2020-12-22
(71)【出願人】
【識別番号】000005267
【氏名又は名称】ブラザー工業株式会社
(74)【代理人】
【識別番号】110001058
【氏名又は名称】特許業務法人鳳国際特許事務所
(72)【発明者】
【氏名】尾野藤 祥司
【テーマコード(参考)】
5L096
【Fターム(参考)】
5L096CA05
5L096DA03
5L096EA14
5L096FA66
5L096GA51
5L096KA04
(57)【要約】 (修正有)
【課題】機械学習モデルのトレーニングのための画像データの準備の負担を軽減する処理装置、処理方法およびコンピュータプログラムを提供する。
【解決手段】データ処理装置は、第1外面が第1カメラの方向を向いた状態で注目対象物が回転する場合の注目対象物の回転方向の回転位置のズレ量を特定する。注目ズレ量の大きさが第1閾値以下である場合には、第2撮影画像データをトレーニングされた機械学習モデルに入力することによって、注目認識データを取得する。注目ズレ量の大きさが第1閾値より大きい特定範囲内である場合には、第2撮影画像上の第2外面の形状を、注目ズレ量の大きさが第1閾値以下である場合の第2外面の形状に近づける幾何変換を第2撮影画像データに対して実行することによって、変換済撮影画像データを生成し、変換済撮影画像データをトレーニングされた機械学習モデルに入力することによって、注目認識データを取得する。
【選択図】
図9
【特許請求の範囲】
【請求項1】
データを処理する処理装置であって、
第1方向側の第1外面と、前記第1方向に垂直な第2方向側の第2外面と、を含む複数の外面を有する注目対象物の撮影画像を示す撮影画像データを取得する撮影画像データ取得部であって、前記第1外面に対向する第1カメラによって撮影された前記第1外面の第1撮影画像を示す第1撮影画像データと、前記第2外面に対向する第2カメラによって撮影された前記第2外面の第2撮影画像を示す第2撮影画像データと、を取得する前記撮影画像データ取得部と、
前記第1外面が前記第1カメラの方向を向いた状態で前記注目対象物が回転する場合の前記注目対象物の回転方向の回転位置のズレ量を特定するズレ量特定部であって、前記第2カメラの撮影方向と所定の位置関係にある注目基準回転位置に対するズレ量である注目ズレ量を、前記第1撮影画像データを分析することによって特定する前記ズレ量特定部と、
対象物の第2外面の撮影画像を示す撮影画像データと画像認識の結果を示す認識データとの関係を示すようにトレーニングされた機械学習モデルと、前記第2撮影画像データと、を用いて、前記注目対象物の前記第2外面に関する前記画像認識の結果を示す注目認識データを取得する認識データ取得部と、
を備え、
前記機械学習モデルは、トレーニング用の対象物の第2外面の複数の撮影画像を示す複数のトレーニング用撮影画像データを用いてトレーニングされており、
前記トレーニング用の前記対象物の前記第2外面の撮影は、前記トレーニング用の前記対象物の前記第2外面の撮影に用いられるカメラの撮影方向と前記所定の位置関係にあるトレーニング基準回転位置に対する前記トレーニング用の前記対象物の前記回転方向の回転位置のズレ量であるトレーニングズレ量の大きさが予め決められた第1閾値以下である状態で行われており、
前記認識データ取得部は、
前記注目ズレ量の大きさが前記第1閾値以下である場合には、前記第2撮影画像データを前記トレーニングされた機械学習モデルに入力することによって、前記注目認識データを取得し、
前記注目ズレ量の大きさが前記第1閾値より大きい特定範囲内である場合には、
前記第2撮影画像上の前記第2外面の形状を、前記注目ズレ量の大きさが前記第1閾値以下である場合の前記第2外面の形状に近づける幾何変換を前記第2撮影画像データに対して実行することによって、変換済撮影画像データを生成し、
前記変換済撮影画像データを前記トレーニングされた機械学習モデルに入力することによって、前記注目認識データを取得する、
処理装置。
【請求項2】
請求項1に記載の処理装置であって、
前記複数のトレーニング用撮影画像データは、前記第1閾値以下の大きさの範囲内に分布する複数のトレーニングズレ量に対応する複数のトレーニング用撮影画像データを含む、
処理装置。
【請求項3】
請求項1または2に記載の処理装置であって、
前記注目ズレ量の大きさの前記特定範囲は、前記第1閾値より大きく、第2閾値以下の範囲であり、
前記認識データ取得部は、前記注目ズレ量の大きさが前記第2閾値よりも大きい場合には、前記注目認識データを取得せずに、前記注目ズレ量の大きさが前記第2閾値よりも大きいことをユーザに通知する、
処理装置。
【請求項4】
請求項1から3のいずれかに記載の処理装置であって、
前記認識データ取得部は、
前記第2撮影画像データを分析することによって前記幾何変換のパラメータを決定し、
前記パラメータを用いて前記幾何変換を実行する、
処理装置。
【請求項5】
請求項1から3のいずれかに記載の処理装置であって、
前記認識データ取得部は、
前記注目ズレ量を用いて前記幾何変換のパラメータを決定し、
前記パラメータを用いて前記幾何変換を実行する、
処理装置。
【請求項6】
請求項1から5のいずれかに記載の処理装置であって、
前記第1カメラと前記第2カメラとによる前記注目対象物の撮影時には、前記注目対象物が支持装置によって支持されており、
前記支持装置は、前記注目対象物の複数の外面のうち前記第1外面とは反対側の反対外面を支持する平らな支持面と、前記注目対象物の前記第1外面が前記第1カメラの方向を向いた状態で前記注目対象物の回転を許容する回転装置と、のいずれか一方、または、両方を備え、
前記支持装置に対する前記第1カメラの位置と向きと、前記支持装置に対する前記第2カメラの位置と向きとは、予め決められている、
処理装置。
【請求項7】
データを処理するコンピュータのためのコンピュータプログラムであって、
第1方向側の第1外面と、前記第1方向に垂直な第2方向側の第2外面と、を含む複数の外面を有する注目対象物の撮影画像を示す撮影画像データを取得する撮影画像データ取得機能であって、前記第1外面に対向する第1カメラによって撮影された前記第1外面の第1撮影画像を示す第1撮影画像データと、前記第2外面に対向する第2カメラによって撮影された前記第2外面の第2撮影画像を示す第2撮影画像データと、を取得する前記撮影画像データ取得機能と、
前記第1外面が前記第1カメラの方向を向いた状態で前記注目対象物が回転する場合の前記注目対象物の回転方向の回転位置のズレ量を特定するズレ量特定機能であって、前記第2カメラの撮影方向と所定の位置関係にある注目基準回転位置に対するズレ量である注目ズレ量を、前記第1撮影画像データを分析することによって特定する前記ズレ量特定機能と、
対象物の第2外面の撮影画像を示す撮影画像データと画像認識の結果を示す認識データとの関係を示すようにトレーニングされた機械学習モデルと、前記第2撮影画像データと、を用いて、前記注目対象物の前記第2外面に関する前記画像認識の結果を示す注目認識データを取得する認識データ取得機能と、
をコンピュータに実現させ、
前記機械学習モデルは、トレーニング用の対象物の第2外面の複数の撮影画像を示す複数のトレーニング用撮影画像データを用いてトレーニングされており、
前記トレーニング用の前記対象物の前記第2外面の撮影は、前記トレーニング用の前記対象物の前記第2外面の撮影に用いられるカメラの撮影方向と前記所定の位置関係にあるトレーニング基準回転位置に対する前記トレーニング用の前記対象物の前記回転方向の回転位置のズレ量であるトレーニングズレ量の大きさが予め決められた第1閾値以下である状態で行われており、
前記認識データ取得機能は、
前記注目ズレ量の大きさが前記第1閾値以下である場合には、前記第2撮影画像データを前記トレーニングされた機械学習モデルに入力することによって、前記注目認識データを取得し、
前記注目ズレ量の大きさが前記第1閾値より大きい特定範囲内である場合には、
前記第2撮影画像上の前記第2外面の形状を、前記注目ズレ量の大きさが前記第1閾値以下である場合の前記第2外面の形状に近づける幾何変換を前記第2撮影画像データに対して実行することによって、変換済撮影画像データを生成し、
前記変換済撮影画像データを前記トレーニングされた機械学習モデルに入力することによって、前記注目認識データを取得する、
コンピュータプログラム。
【請求項8】
データを処理する処理方法であって、
第1方向側の第1外面と、前記第1方向に垂直な第2方向側の第2外面と、を含む複数の外面を有する注目対象物の撮影画像を示す撮影画像データを取得する撮影画像データ取得工程であって、前記第1外面に対向する第1カメラによって撮影された前記第1外面の第1撮影画像を示す第1撮影画像データと、前記第2外面に対向する第2カメラによって撮影された前記第2外面の第2撮影画像を示す第2撮影画像データと、を取得する前記撮影画像データ取得工程と、
前記第1外面が前記第1カメラの方向を向いた状態で前記注目対象物が回転する場合の前記注目対象物の回転方向の回転位置のズレ量を特定するズレ量特定工程であって、前記第2カメラの撮影方向と所定の位置関係にある注目基準回転位置に対するズレ量である注目ズレ量を、前記第1撮影画像データを分析することによって特定する前記ズレ量特定工程と、
対象物の第2外面の撮影画像を示す撮影画像データと画像認識の結果を示す認識データとの関係を示すようにトレーニングされた機械学習モデルと、前記第2撮影画像データと、を用いて、前記注目対象物の前記第2外面に関する前記画像認識の結果を示す注目認識データを取得する認識データ取得工程と、
を備え、
前記機械学習モデルは、トレーニング用の対象物の第2外面の複数の撮影画像を示す複数のトレーニング用撮影画像データを用いてトレーニングされており、
前記トレーニング用の前記対象物の前記第2外面の撮影は、前記トレーニング用の前記対象物の前記第2外面の撮影に用いられるカメラの撮影方向と前記所定の位置関係にあるトレーニング基準回転位置に対する前記トレーニング用の前記対象物の前記回転方向の回転位置のズレ量であるトレーニングズレ量の大きさが予め決められた第1閾値以下である状態で行われており、
前記認識データ取得工程は、
前記注目ズレ量の大きさが前記第1閾値以下である場合には、前記第2撮影画像データを前記トレーニングされた機械学習モデルに入力することによって、前記注目認識データを取得し、
前記注目ズレ量の大きさが前記第1閾値より大きい特定範囲内である場合には、
前記第2撮影画像上の前記第2外面の形状を、前記注目ズレ量の大きさが前記第1閾値以下である場合の前記第2外面の形状に近づける幾何変換を前記第2撮影画像データに対して実行することによって、変換済撮影画像データを生成し、
前記変換済撮影画像データを前記トレーニングされた機械学習モデルに入力することによって、前記注目認識データを取得する、
処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本明細書は、機械学習モデルを用いてデータを処理する技術に関する。
【背景技術】
【0002】
従来から、機械学習モデルを用いて種々の処理が行われている。例えば、生け簀の水面に向けられた魚眼レンズを備えるカメラにより撮影された魚眼画像に対して歪み補正処理を行って矩形画像を生成し、矩形画像に対して機械学習により生成された識別モデルを適用することで、死魚と瀕死魚を検出する技術が提案されている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
ところで、機械学習モデルには、種々の画像データが入力される。機械学習モデルによる予測の精度を向上するためには、モデルに入力され得る種々の画像データが、機械学習モデルのトレーニングに用いられることが好ましい。ところが、トレーニングのための種々の画像データの準備は、大きな負担であった。
【0005】
本明細書は、トレーニングのための画像データの準備の負担を軽減する技術を開示する。
【課題を解決するための手段】
【0006】
本明細書に開示された技術は、以下の適用例として実現することが可能である。
【0007】
[適用例1]データを処理する処理装置であって、第1方向側の第1外面と、前記第1方向に垂直な第2方向側の第2外面と、を含む複数の外面を有する注目対象物の撮影画像を示す撮影画像データを取得する撮影画像データ取得部であって、前記第1外面に対向する第1カメラによって撮影された前記第1外面の第1撮影画像を示す第1撮影画像データと、前記第2外面に対向する第2カメラによって撮影された前記第2外面の第2撮影画像を示す第2撮影画像データと、を取得する前記撮影画像データ取得部と、前記第1外面が前記第1カメラの方向を向いた状態で前記注目対象物が回転する場合の前記注目対象物の回転方向の回転位置のズレ量を特定するズレ量特定部であって、前記第2カメラの撮影方向と所定の位置関係にある注目基準回転位置に対するズレ量である注目ズレ量を、前記第1撮影画像データを分析することによって特定する前記ズレ量特定部と、対象物の第2外面の撮影画像を示す撮影画像データと画像認識の結果を示す認識データとの関係を示すようにトレーニングされた機械学習モデルと、前記第2撮影画像データと、を用いて、前記注目対象物の前記第2外面に関する前記画像認識の結果を示す注目認識データを取得する認識データ取得部と、を備え、前記機械学習モデルは、トレーニング用の対象物の第2外面の複数の撮影画像を示す複数のトレーニング用撮影画像データを用いてトレーニングされており、前記トレーニング用の前記対象物の前記第2外面の撮影は、前記トレーニング用の前記対象物の前記第2外面の撮影に用いられるカメラの撮影方向と前記所定の位置関係にあるトレーニング基準回転位置に対する前記トレーニング用の前記対象物の前記回転方向の回転位置のズレ量であるトレーニングズレ量の大きさが予め決められた第1閾値以下である状態で行われており、前記認識データ取得部は、前記注目ズレ量の大きさが前記第1閾値以下である場合には、前記第2撮影画像データを前記トレーニングされた機械学習モデルに入力することによって、前記注目認識データを取得し、前記注目ズレ量の大きさが前記第1閾値より大きい特定範囲内である場合には、前記第2撮影画像上の前記第2外面の形状を、前記注目ズレ量の大きさが前記第1閾値以下である場合の前記第2外面の形状に近づける幾何変換を前記第2撮影画像データに対して実行することによって、変換済撮影画像データを生成し、前記変換済撮影画像データを前記トレーニングされた機械学習モデルに入力することによって、前記注目認識データを取得する、処理装置。
【0008】
この構成によれば、注目ズレ量の大きさが第1閾値よりも大きい特定範囲内である場合には、幾何変換が行われ、変換済撮影画像データをトレーニングされた機械学習モデルに入力することによって注目認識データが取得されるので、第1閾値よりも大きいズレ量に対応するトレーニング用撮影画像データを省略できる。従って、トレーニングのための画像データの準備の負担を軽減できる。
【0009】
なお、本明細書に開示の技術は、種々の態様で実現することが可能であり、例えば、機械学習モデルのトレーニングのための画像データの取得方法および取得装置、機械学習モデルのトレーニング方法およびトレーニング装置、機械学習モデルを用いるデータ処理方法およびデータ処理装置、それらの方法または装置の機能を実現するためのコンピュータプログラム、そのコンピュータプログラムを記録した記録媒体(例えば、一時的ではない記録媒体)、トレーニングされた機械学習モデル、等の形態で実現することができる。
【図面の簡単な説明】
【0010】
【
図1】一実施例としてのデータ処理装置を示す説明図である。
【
図2】デジタルカメラと支持装置とプリンタとの斜視図である。
【
図3】(A)、(B)は、撮影画像の例を示している。(C)、(D)は、ラベルデータの例を示している。
【
図4】(A)は、撮影画像の例を示している。(B)は、変換済第2撮影画像データの画像の例を示している。(C)は、画像820bxから検出される第2ラベルシート920を示している。
【
図5】(A)は、シート検出モデルNNの構成の例を示す概略図である。(B)は、シート検出モデルNNの動作の概要を示す概略図である。
【
図6】データセットDSの生成処理の例を示すフローチャートである。
【
図7】シート検出モデルNNのトレーニング処理の例を示すフローチャートである。
【
図8】対象物の検査処理の例を示すフローチャートである。
【
図9】認識データの取得処理の例を示すフローチャートである。
【
図10】認識データの取得処理の第2実施例のフローチャートである。
【発明を実施するための形態】
【0011】
A.第1実施例:
A1.装置構成:
図1は、一実施例としてのデータ処理装置を示す説明図である。本実施例では、データ処理装置200は、例えば、パーソナルコンピュータである。データ処理装置200は、対象物(例えば、プリンタなどの製品)の検査のための種々の処理を実行する。データ処理装置200は、プロセッサ210と、記憶装置215と、表示部240と、操作部250と、通信インタフェース270と、を備えている。これらの要素は、バスを介して互いに接続されている。記憶装置215は、揮発性記憶装置220と、不揮発性記憶装置230と、を含んでいる。
【0012】
プロセッサ210は、データ処理を行うように構成された装置であり、例えば、CPUである。揮発性記憶装置220は、例えば、DRAMであり、不揮発性記憶装置230は、例えば、フラッシュメモリである。不揮発性記憶装置230は、プログラム231、232、233、234と、シート検出モデルNNと、シート検出モデルNNのトレーニングのためのデータセットDSと、を格納している。シート検出モデルNNは、いわゆる機械学習モデルであり、本実施例では、プログラムモジュールである。プログラム231-234と、シート検出モデルNNと、データセットDSと、の詳細については、後述する。
【0013】
表示部240は、液晶ディスプレイ、有機ELディスプレイなどの、画像を表示するように構成された装置である。操作部250は、ボタン、レバー、表示部240上に重ねて配置されたタッチパネルなどの、ユーザによる操作を受け取るように構成された装置である。ユーザは、操作部250を操作することによって、種々の要求と指示をデータ処理装置200に入力可能である。通信インタフェース270は、他の装置と通信するためのインタフェースである(例えば、USBインタフェース、有線LANインタフェース、IEEE802.11の無線インタフェース)。通信インタフェース270には、デジタルカメラ110、120が接続されている。これらのデジタルカメラ110、120は、検査の対象物900を撮影することによって、撮影画像の画像データを生成する。以下、対象物900がプリンタであることとする(対象物900を、プリンタ900とも呼ぶ)。
【0014】
図2は、デジタルカメラ110、120と支持装置700とプリンタ900との斜視図である。支持装置700は、検査のためにプリンタ900を支持する装置である。本実施例では、支持装置700は、平らな上面711を有する上板710と、上板710の下方に配置された下板720と、上板710と下板720とを接続する複数のベアリング721と、を備えている。複数のベアリング721は、下板720に対する上板710の回転を許容する。上板710の回転軸700xは、上面711に垂直であり、上面711のおおよそ中心に位置している。本実施例では、プリンタ900の検査時には、回転軸700xが鉛直方向におおよそ平行であるように、支持装置700が配置される。検査対象のプリンタ900は、上面711上に載せられる(以下、上面711を、支持面711とも呼ぶ)。本実施例では、プリンタ900の底面909が、支持面711上に載せられる。また、プリンタ900の形状は、おおよそ直方体である。
【0015】
第1デジタルカメラ110(以下、単に第1カメラ110とも呼ぶ)は、プリンタ900の第1外面901(本実施例では、上面)を撮影するためのカメラである。第1カメラ110は、支持装置700の上方の予め決められた位置に、予め決められた第1撮影方向110xを向くように、配置されている。第1撮影方向110xは、下方向であり、回転軸700xにおおよそ平行である。第1カメラ110は、第1カメラ110の第1撮影方向110x側に位置する対象物を撮影可能である。
【0016】
第2デジタルカメラ120(以下、単に第2カメラ120とも呼ぶ)は、プリンタ900の第2外面902(本実施例では、正面)を撮影するためのカメラである。第2カメラ120は、支持装置700と第1カメラ110との間の高さの、支持装置700から離れた予め決められた位置に、予め決められた第2撮影方向120xを向くように、配置されている。第2撮影方向120xは、おおよそ水平に、第2カメラ120から回転軸700xに向かう方向である。第2撮影方向120xは、回転軸700xにおおよそ垂直である。第2カメラ120は、第2カメラ120の第2撮影方向120x側に位置する対象物を撮影可能である。
【0017】
プリンタ900の検査時には、作業者は、プリンタ900の第2外面902が第2カメラ120の方を向くように、上板710(ひいては、プリンタ900)を回転させる。下板720と複数のベアリング721との全体は、プリンタ900の第1外面901が第1カメラ110の方向を向いた状態で上板710(ひいては、プリンタ900)の回転を許容する回転装置725を形成している。なお、図中には、プリンタ900に対応付けられた2つの方向D1、D2が示されている(第2方向D2は、第1方向D1に垂直である)。第1外面901は、第1方向D1側の外面であり、第2外面902は、第2方向D2側の外面である。
図2の状態では、第1方向D1は、鉛直上方向とおおよそ同じである。
【0018】
A2.撮影画像:
図3(A)は、第1カメラ110による撮影画像である第1撮影画像の例を示している。第1撮影画像810aは、Dx1方向に平行な2辺と、Dx1方向に垂直なDy1方向に平行な2辺と、を有する矩形状の画像である。第1撮影画像810aは、Dx1方向とDy1方向とに沿ってマトリクス状に並ぶ複数の画素のそれぞれの色値(本実施例では、R(赤)、G(緑)、B(青)の成分値)によって、表されている。第1撮影画像810a中では、第2カメラ120(
図2)の第2撮影方向120xは、Dy1方向のおおよそ反対方向である。第1撮影画像810aは、プリンタ900の第1外面901を示している。第1外面901には、第1ラベルシート910が貼られている。第1撮影画像810aは、第1外面901に第1ラベルシート910が貼られているか否かの検査に用いられる。
【0019】
図中には、対象物直線Lxが示されている。対象物直線Lxは、第1外面901の矩形状の輪郭を形成する4本の辺のうち、Dy1方向におおよそ平行な左側の辺に重なる直線である。また、図中の撮影直線120xLは、第2撮影方向120xに平行な直線である。角度dAGは、対象物直線Lxと撮影直線120xLとがなす角度である。角度dAGは、
図2の上板710(すなわち、プリンタ900)が回転する場合の回転方向の回転位置を示している。本実施例では、第2カメラ120による撮影時には、角度dAGがゼロとなるように、プリンタ900の回転位置が調整される。角度dAGがゼロである場合の回転位置を、基準回転位置とも呼ぶ。角度dAGは、基準回転位置に対する回転位置のズレ量を示している(ズレ角dAGとも呼ぶ)。本実施例では、角度dAGがゼロである場合に第2外面902が第2撮影方向120xにおおよそ垂直である。
【0020】
第2カメラ120による撮影時には、予め決められた第1閾値dTH1以下の小さいズレは、許容される(dTH1>ゼロ。例えば、dTH1=10度)。
図3(A)の第1撮影画像810aは、角度dAGの大きさ(すなわち、絶対値)が、第1閾値dTH1以下である場合を示している。第1撮影画像810a中では、プリンタ900の回転位置は、dAG=ゼロの回転位置よりも反時計回り方向に回転した位置である。以下、dAG>ゼロは、基準回転位置から反時計回り方向に回転した回転位置を示し、dAG<ゼロは、基準回転位置から時計回り方向に回転した回転位置を示すこととする(ここで、角度dAGの大きさは、90度以下であることとする)。
【0021】
図3(B)は、第2カメラ120による撮影画像である第2撮影画像の例を示している。第2撮影画像820aは、Dx2方向に平行な2辺と、Dx2方向に垂直なDy2方向に平行な2辺と、を有する矩形状の画像である。第2撮影画像820aは、Dx2方向とDy2方向とに沿ってマトリクス状に並ぶ複数の画素のそれぞれの色値(本実施例では、RGBの成分値)によって、表されている。第2撮影画像820aは、第1撮影画像810a(
図3(A))の角度dAGと同じ角度dAGの回転位置のプリンタ900を示している。第2撮影画像820aは、プリンタ900の第2外面902と第3外面903とを示している。第3外面903は、左側の側面である。ズレ角dAGの大きさが小さい場合、第2外面902は、第2撮影方向120xにおおよそ垂直であり、第3外面903は、第2撮影方向120xにおおよそ平行である。従って、第2撮影画像820a中では、第2外面902の歪みは小さく、第3外面903の歪みは大きい。また、第2外面902には、第1ラベルシート910とは異なる第2ラベルシート920が貼られている。第2撮影画像820aは、第2外面902に第2ラベルシート920が貼られているか否かの検査に用いられる。
【0022】
図4(A)は、第2カメラ120による別の第2撮影画像の例を示している。第2撮影画像820bは、角度dAGの大きさが第1閾値dTH1よりも大きい場合を示している。第2撮影画像820b中の第2外面902は、
図3(B)の第2撮影画像820a中の第2外面902と比べて、大きく変形している。第2ラベルシート920の形状も、同様に、大きく変形している。
【0023】
後述するように、シート検出モデルNN(
図1)は、撮影画像中のラベルシートを検出するように、トレーニングされる。ここで、角度dAGの大きさが第1閾値dTH1よりも大きい場合には、シート検出モデルNNは、撮影画像中で大きく変形したラベルシートを検出できない可能性がある。本実施例では、角度dAGの大きさが第1閾値dTH1よりも大きい場合には、第2撮影画像の補正、または、角度dAGの調整が、行われる(詳細は、後述)。
【0024】
A3.シート検出モデルNNの構成:
図5(A)は、シート検出モデルNNの構成の例を示す概略図である。シート検出モデルNNとしては、種々のオブジェクト検出モデルを採用可能である。本実施例では、シート検出モデルNNは、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モデルは、畳込ニューラルネットワークを用いて、バウンディングボックスと呼ばれるオブジェクトを含む枠と、ボックスがオブジェクトを含むことの確信度と、ボックスがオブジェクトを含む場合のオブジェクトの種類毎の確率(クラス確率とも呼ぶ)と、を予測する。
【0025】
図5(A)に示すように、シート検出モデルNNは、m個(mは1以上の整数)の畳込層CV11-CV1mと、畳込層CV11-CV1mに続くn個(nは1以上の整数)の全結合層CN11-CN1nと、を有している(mは、例えば、24。nは、例えば、2)。m個の畳込層CV11-CV1mのうちの1以上の畳込層の直後には、プーリング層が設けられる。
【0026】
畳込層CV11-CV1mは、入力されるデータに対して、畳込処理とバイアスの加算処理とを含む処理を実行する。畳込処理は、入力されたデータに対して、t個のフィルタを順次に適用し、入力されたデータとフィルタとの相関を示す相関値を算出する処理である(tは、1以上の整数)。フィルタを適用する処理では、フィルタをスライドさせながら複数個の相関値が順次に算出される。バイアスの加算処理は、算出された相関値に、バイアスを加算する処理である。バイアスは、1個のフィルタに対して1個ずつ準備されている。フィルタの次元とフィルタの数tとは、通常は、m個の畳込層CV11-CV1mの間で異なっている。畳込層CV11-CV1mは、複数のフィルタの複数の重みと複数のバイアスとを含むパラメータセットを、それぞれ有している。
【0027】
プーリング層は、直前の畳込層から入力されたデータに対して、データの次元数を削減する処理を実行する。プーリングの処理としては、平均プーリング、最大プーリングなど、種々の処理を利用可能である。本実施例では、プーリング層は、最大プーリングを行う。最大プーリングは、所定サイズ(例えば、2×2)のウィンドウを所定のストライド(例えば、2)でスライドさせつつ、ウィンドウ内の最大値を選択することによって次元数を削減する。
【0028】
全結合層CN11-CN1nは、直前の層から入力されたf次元のデータ(すなわち、f個の値。fは2以上の整数)を用いて、g次元のデータ(すなわち、g個の値。gは2以上の整数)を出力する。出力されるg個の値のそれぞれは、入力されるf個の値で構成されるベクトルとf個の重みで構成されるベクトルとの内積に、バイアスを加えた値である。入力データの次元数fと出力データの次元数gとは、通常は、n個の全結合層CN11-CN1nの間で異なっている。全結合層CN11-CN1nは、複数の重みと複数のバイアスとを含むパラメータセットを、それぞれ有している。
【0029】
なお、畳込層CV11-CV1mと全結合層CN11-CN1nとのそれぞれによって生成されるデータは、活性化関数に入力されて変換される。活性化関数としては、種々の関数を利用可能である。本実施例では、最後の層(ここでは、全結合層CN1n)には、線形活性化関数(linear activation function)が用いられ、他の層には、漏洩正規化線形ユニット(Leaky Rectified Linear Unit:LReLU)が用いられる。
【0030】
図5(B)は、シート検出モデルNNの動作の概要を示す概略図である。画像800は、シート検出モデルNNに入力される入力画像であり、シート検出モデルNNの動作の説明のための参考画像である。入力画像800は、Dx方向に平行な2辺と、Dx方向に垂直なDy方向に平行な2辺と、を有する矩形状の画像である。入力画像800は、第1方向Dxと第2方向Dyとに沿ってマトリクス状に並ぶ複数の画素のそれぞれの色値(本実施例では、RGBの成分値)によって、表されている。後述するように、シート検出モデルNNには、第1撮影画像810a(
図3(A))と第2撮影画像820a(
図3(B))とのような撮影画像を示す画像データが入力される。この場合、撮影画像のDx1、Dx2は、第1方向Dxに対応し、撮影画像のDy1、Dy2は、第2方向Dyに対応する。また、1枚の撮影画像は、1個のラベルシートを含み得る(具体的には、1個の第1ラベルシート910、または、1個の第2ラベルシート920)。一方、本実施例のシート検出モデルNNは、YOLOモデルであり、種々の1枚の画像から複数のラベルシートを検出可能である(例えば、1個の第1ラベルシート910と1個の第2ラベルシート920)。以下、シート検出モデルNNの動作の説明を、2種類のラベルシート910、920を示す説明用の入力画像800を用いて、行う。
【0031】
シート検出モデルNNによるラベルシートの検出の概要は、以下の通りである。図示を省略するが、シート検出モデルNNは、入力画像800を、S×Sのグリッドセル(単にセルとも呼ぶ)に分割する(Sは2以上の整数。Sは、例えば、7)。ラベルシート910、920のそれぞれの中心は、いずれかのセルに含まれる。ラベルシート910、920(より一般的には、オブジェクト)の検出結果は、オブジェクトの領域の中心を含むセルに対応付けられた予測値によって、示される。各セルには、Bn個の矩形のバウンディングボックスが対応付けられる(Bnは1以上の整数。Bnは、例えば、2)。各バウンディングボックスには、以下の5個の予測値が対応付けられる。すなわち、セルに対する第1方向Dxの中心位置x、セルに対する第2方向Dyの中心位置y、第1方向Dxの大きさ、第2方向Dyの大きさ、確信度。セルにオブジェクト領域の中心が含まれない場合には、そのセルに対応付けられたバウンディングボックスの確信度は、ゼロであることが期待される。セルにオブジェクト領域の中心が含まれる場合、そのセルに対応付けられたバウンディングボックスの確信度が高いことが期待される。具体的には、確信度は、バウンディングボックスの領域とオブジェクト領域との間のIOU(Intersection over Union)と同じであることが期待される。ここで、IOUは、2個の領域の共通部分の面積を、2個の領域の和集合の領域の面積で除算して得られる比率である。このような確信度は、バウンディングボックスとオブジェクト領域との間の一致の程度を示している。なお、確信度は、オブジェクトの種類とは独立に算出される。
【0032】
ここで、シート検出モデルNNは、C種類のラベルシートを検出することとする(Cは1以上の整数。本実施例では、Cは、2)。ラベルシートの種類を、クラス、または、シートクラスとも呼ぶ。各セルには、さらに、C個のクラス確率が対応付けられる。C個のクラス確率は、ラベルシートのC個の種類にそれぞれ対応している。クラス確率は、セルにオブジェクト領域の中心が含まれるという条件下での確率であり、ラベルシートの種類毎の確率を示している。1個のセルに対応付けられるバウンディングボックスの総数Bnに拘らず、1個のセルにはC個のクラス確率が対応付けられる。
【0033】
シート検出モデルNNは、S×S×(Bn×5+C)個の予測値を示す出力データ830を出力する。S×S×Bn個のバウンディングボックスのうち、閾値以上の確信度を有するバウンディングボックスが、検出されたオブジェクト(ここでは、ラベルシート)を示すボックス(オブジェクトボックスと呼ぶ)として採用される。また、オブジェクトボックスに対応するC個のクラス確率のうちの最高クラス確率に対応するクラス識別子が、オブジェクトボックスに対応付けられたクラス識別子として採用される。例えば、
図5(B)の下段に示すように、第1ラベルシート910を示す第1オブジェクトボックスBBaと、第2ラベルシート920を示す第2オブジェクトボックスBBbと、が検出される。第1オブジェクトボックスBBaには、第1ラベルシート910を示す「1」のクラス識別子CLaが対応付けられる。第2オブジェクトボックスBBbには、第2ラベルシート920を示す「2」のクラス識別子CLbが対応付けられる。
【0034】
なお、1個のラベルシートに重なる複数のバウンディングボックスが、オブジェクトボックスの候補であり得る。互いに重なる複数のバウンディングボックスから1個のバウンディングボックスを選択するために、「Non-maximal suppression」と呼ばれる処理が行われてよい。この処理は、2個のボックスの間のIOUが基準以上である場合に、1個のボックス(例えば、より低い確信度を有するボックス)を削除する処理である。この処理を繰り返すことにより、1個のラベルシートに対応する1個のオブジェクトボックスが検出される。
【0035】
A4.データセットDSの生成処理:
図6は、シート検出モデルNNのトレーニング用のデータセットDSの生成処理の例を示すフローチャートである。本実施例では、
図2の支持装置700とデジタルカメラ110、120とトレーニング用のプリンタとを用いて、データセットDSが生成される。本実施例では、データセットDSの生成に用いられるプリンタ(すなわち、トレーニング用のプリンタ)のモデルは、検査対象のプリンタ900のモデルと同じである。以下、トレーニング用のプリンタの要素を、
図2に示すプリンタ900の要素と同じ符号を用いて、参照する。プロセッサ210(
図1)は、第1プログラム231に従って、
図6の処理を実行する。
【0036】
S110では、プリンタ900の角度dAG(
図3(A))が、第1閾値dTH1以下の範囲内で調整される。本実施例では、データセットDSの生成用の複数の角度dAGが、予め決められている(トレーニング角度とも呼ぶ)。例えば、複数のトレーニング角度は、-dTH1以上、dTH1以下の範囲内に等間隔(例えば、1度間隔)で分布するように、予め決定される。S110では、未処理のトレーニング角度が、対象トレーニング角度として選択される。そして、実際の角度dAGが対象トレーニング角度になるように、プリンタ900が回転される。本実施例では、作業者が、対象トレーニング角度の選択と、角度dAGの調整(すなわち、プリンタ900の回転)と、を行う。例えば、作業者は、撮影直線120xLを示す装置(例えば、棒)と、プリンタ900と、を用いて、実際の角度dAGを測定する。そして、作業者は、測定された角度dAGが対象トレーニング角度になるように、プリンタ900を回転させる。角度dAGの調整の後、作業者は、処理進行の指示をデータ処理装置200(
図1)に入力する。
【0037】
S120では、プロセッサ210は、デジタルカメラ110、120に撮影指示を供給する。デジタルカメラ110、120は、それぞれ、プリンタ900を撮影し、撮影画像を示す画像データを生成する。S130では、プロセッサ210は、デジタルカメラ110、120から、S120で生成された画像データを取得する。以下、第1カメラ110によって撮影された撮影画像を示す画像データを、第1撮影画像データ、または、上面撮影画像データと呼ぶ。第2カメラ120によって撮影された撮影画像を示す画像データを、第2撮影画像データ、または、側面撮影画像データと呼ぶ。後述するように、本実施例では、第1撮影画像データと第2撮影画像データとのそれぞれが、データセットDS(
図1)の画像データD11として用いられる。
【0038】
S140では、プロセッサ210は、第1撮影画像データと第2撮影画像データとのそれぞれに対応つけるべきラベルデータを生成する。ラベルデータは、シート検出モデルNN(
図5(A))の出力データ830の目標値(すなわち、正解)を定めるデータである。このようなラベルデータは、教師データとも呼ばれる。具体的には、ラベルデータD12(
図1)は、画像中のラベルシートの領域を示す領域情報D121と、ラベルシートの種類を示すシートクラスD122と、を示している。
図3(C)は、第1撮影画像810a(
図3(A))がトレーニングに用いられる場合のラベルデータの例を示している。ラベルデータは、第1ラベルシート910を示す矩形領域BB1と、第1ラベルシート910の種類を示す「1」のクラス識別子CL1と、を示している。
図3(D)は、第2撮影画像820a(
図3(B))がトレーニングに用いられる場合のラベルデータの例を示している。ラベルデータは、第2ラベルシート920を示す矩形領域BB2と、第2ラベルシート920の種類を示す「2」のクラス識別子CL2と、を示している。領域情報D121は、ラベルシートを示す領域の中心位置(具体的には、Dx1、Dx2方向の位置とDy1、Dy2方向の位置)と、Dx1、Dx2方向の大きさと、Dy1、Dy2方向の大きさと、を示している。また、本実施例では、ラベルシートは、C個のクラスに分類される。シートクラスD122は、C個のクラスのうちのいずれか1つを示している。
【0039】
本実施例では、プロセッサ210は、第1撮影画像と第2撮影画像とを、表示部240(
図1)に表示する。作業者は、撮影画像を観察することによって、領域情報D121とシートクラスD122とを決定する。作業者は、ラベルシートの全体を含む最小矩形を示すように、領域情報D121を決定する。また、本実施例では、トレーニング用のプリンタ900に関しては、第1外面901には第1ラベルシート910が貼られており、第2外面902には第2ラベルシート920が貼られている。従って、作業者は、第1撮影画像データには、第1ラベルシート910のシートクラスD122を対応付け、第2撮影画像データには、第2ラベルシート920のシートクラスD122を対応付ける。作業者は、操作部250(
図1)を操作することによって、領域情報D121とシートクラスD122とを、データ処理装置200に入力する。プロセッサ210は、入力された情報を用いて、ラベルデータを生成する。なお、プロセッサ210は、画像データを分析することによって、領域情報D121とシートクラスD122とを決定してよい。
【0040】
S150(
図6)では、プロセッサ210は、画像データD11とラベルデータD12とを関連付けて、記憶装置215(例えば、不揮発性記憶装置230)に格納する。以下、互いに関連付けられた画像データD11とラベルデータD12との全体を、ラベル付データLDと呼ぶ。また、ラベル付データLDの画像データD11を、学習画像データD11とも呼ぶ。データセットDSは、複数のラベル付データLDを含んでいる。なお、プロセッサ210は、ラベル付データLDを、データ処理装置200に接続された外部記憶装置(図示せず)に格納してもよい。
【0041】
S160では、プロセッサ210は、終了条件が満たされるか否かを判断する。終了条件は、複数のトレーニング角度のそれぞれのラベル付データLDが生成されることを含んでいる。また、シート検出モデルNNの適切なトレーニングのためには、データセットDSに含まれるC個(ここでは、2個)のラベルシートのそれぞれのラベル付データLDの総数が、大きいことが好ましい。本実施例では、終了条件は、複数のトレーニング角度のそれぞれに関して、第1ラベルシート910のラベル付データLDの総数と第2ラベルシート920のラベル付データLDの総数とのそれぞれが、予め決められた大きいデータ数基準値(例えば、500)以上であることである。少なくとも1つのトレーニング角度で、少なくとも1種類のラベルシートのラベル付データの総数がデータ数基準値未満である場合、終了条件が満たされない(S160:No)。この場合、プロセッサ210は、S110へ移行し、新たなラベル付データを生成する。終了条件が満たされる場合(S160:Yes)、プロセッサ210は、
図6の処理を終了する。生成されたデータセットDSは、互いに異なる角度dAGに対応付けられた複数のラベル付データLDを含んでいる。なお、プロセッサ210は、いわゆるデータオーグメンテーションによって、複数のラベル付データを生成してもよい。
【0042】
A5.シート検出モデルNNのトレーニング処理:
図7は、シート検出モデルNN(
図5(A))のトレーニング処理の例を示すフローチャートである。シート検出モデルNNは、出力データ830が入力画像800中のラベルシートの適切な領域情報と適切なシートクラスとを示すように、トレーニングされる。トレーニングによって、シート検出モデルNNの演算に用いられる複数の演算パラメータ(複数の層CV11-CV1m、CN11-CN1nのそれぞれの演算に用いられる複数の演算パラメータを含む)が、調整される。なお、プロセッサ210は、第2プログラム232に従って、
図7の処理を行う。
【0043】
S210では、プロセッサ210は、不揮発性記憶装置230からデータセットDSを取得する。S220では、プロセッサ210は、データセットDSの複数のラベル付データLDを、学習用データセットと確認用データセットとに分割する。例えば、プロセッサ210は、ランダムに選択した70%のラベル付データLDを、学習用データセットとして採用し、残りの30%のラベル付データLDを、確認用データセットとして採用する。以下、学習用データセットのラベル付データLDの総数がNt個であり、確認用データセットのラベル付データLDの総数がNv個であることとする(Nt、Nvは、いずれも、2以上の整数)。
【0044】
S230では、プロセッサ210は、シート検出モデルNNの複数の演算パラメータを初期化する。例えば、各演算パラメータは、乱数値に設定される。
【0045】
S240では、プロセッサ210は、学習用データセットを用いて、学習ロスを算出する。具体的には、プロセッサ210は、Nt個の学習画像データD11をシート検出モデルNNに入力し、Nt個の出力データ830を生成する。そして、プロセッサ210は、Nt個の出力データ830と、Nt個の学習画像データD11に対応付けられたNt個のラベルデータD12と、を用いて、学習ロスを算出する。
【0046】
学習ロスの算出には、損失関数が用いられる。損失関数は、出力データ830とラベルデータD12との間の差の評価値を算出する種々の関数であってよい。本実施例では、YOLOの上記の論文に開示されている損失関数が用いられる。この損失関数は、以下の5個の成分を含んでいる。すなわち、損失関数は、ラベルデータD12の領域情報D121の領域を示すべきバウンディングボックスに関して、中心位置の差と、大きさの差と、確信度の差と、のそれぞれに対応する3個の成分を含んでいる。領域情報D121の領域を示すべきバウンディングボックスは、領域情報D121の中心位置を含むセルに対応付けられたBn個のバウンディングボックスのうち、領域情報D121の領域とバウンディングボックスの領域との間の最も高いIOUを有するバウンディングボックスである。また、この損失関数は、領域情報D121の領域に対応すべきでないバウンディングボックスに関して、バウンディングボックスの確信度と、理想の確信度(具体的には、ゼロ)と、の間の差に対応する成分を含んでいる。また、この損失関数は、領域情報D121の中心位置を含むセルに関して、C個のクラス確率とC個の正解のクラス確率との間の差に対応する成分を含んでいる。プロセッサ210は、正解のクラス確率を、例えば、以下のように決定する。シートクラスD122に対応するクラス確率は、大きい値に設定される(例えば、1)。他のクラスに対応するクラス確率は、小さい値に設定される(例えば、ゼロ)。プロセッサ210は、損失関数を用いて算出されるNt個の損失の合計値を、学習ロスとして算出する。なお、学習ロスは、合計値に限らず、Nt個の損失を用いて算出される種々の代表値(例えば、平均値、中央値、積算値などNt個の損失と相関を有する値)であってよい。代表値は、予め決められた算出式に従って算出されてよい。
【0047】
S250では、プロセッサ210は、学習ロスを用いて、シート検出モデルNNの複数の演算パラメータを更新する。具体的には、プロセッサ210は、学習ロスが小さくなるように、所定のアルゴリズムに従って演算パラメータを調整する。所定のアルゴリズムとしては、例えば、誤差逆伝播法と勾配降下法とを用いたアルゴリズムが用いられる。
【0048】
S260では、プロセッサ210は、確認用データセットを用いて、確認ロスを算出する。確認ロスの算出方法は、学習用データセットの代わりに確認用データセットを用いる点を除いて、S240で説明した学習ロスの算出方法と同じである。具体的には、プロセッサ210は、確認用データセットのNv個の学習画像データD11を、S250で更新された演算パラメータを有するシート検出モデルNNに入力し、Nv個の出力データ830を生成する。そして、プロセッサ210は、Nv個の出力データ830と、Nv個の学習画像データD11に対応付けられたNv個のラベルデータD12と、を用いて、確認ロスを算出する。
【0049】
S270では、プロセッサ210は、トレーニングが完了したか否かを判断する。トレーニング完了の条件は、種々の条件であってよい。本実施例では、トレーニング完了の条件は、学習ロスと確認ロスとの両方が、所定のロス基準値以下であることである。なお、トレーニング完了の条件は、学習ロスと確認ロスとの両方が小さいことを示す種々の条件であってよい。例えば、学習ロスのロス基準値は、確認ロスのロス基準値と異なっていてよい。
【0050】
トレーニングが完了していない場合(S270:No)、プロセッサ210は、S240へ移行して、トレーニングを継続する。トレーニングが完了した場合(S270:Yes)、S280で、プロセッサ210は、調整済の演算パラメータを含むシート検出モデルNNを、トレーニング済モデルとして、記憶装置215(ここでは、不揮発性記憶装置230)に格納する。そして、プロセッサ210は、
図7の処理を終了する。なお、プロセッサ210は、シート検出モデルNNを、データ処理装置200に接続された外部記憶装置(図示せず)に格納してもよい。
【0051】
トレーニングされたシート検出モデルNNによって出力される出力データ830は、以下の特徴を有している。ラベルシートの中心を含むセルは、ラベルシートの領域を適切に示すとともに高い確信度と適切なクラス確率とを有するバウンディングボックスを示すことができる。また、出力データ830によって示される複数のバウンディングボックスは、ラベルシートの領域を示していない不適切なバウンディングボックスを含み得る。不適切なバウンディングボックスには、低い確信度が対応付けられる。従って、高い確信度を有するバウンディングボックスを用いることによって、適切に、ラベルシートを特定できる。
【0052】
A6.検査処理:
図8は、対象物の検査処理の例を示すフローチャートである。本実施例では、支持装置700(
図2)上に配置されたプリンタ900に、適切なラベルシート910、920が貼られているか否かが検査される。なお、プロセッサ210は、
図8の処理のうちS330以外の処理を、第3プログラム233に従って実行する。
【0053】
S310では、プロセッサ210は、デジタルカメラ110、120に撮影指示を供給する。デジタルカメラ110、120は、それぞれ、プリンタ900を撮影し、撮影画像を示す画像データを生成する。S320では、プロセッサ210は、デジタルカメラ110、120から、S310で生成された画像データを取得し、取得した画像データを、記憶装置215(例えば、不揮発性記憶装置230)に格納する。
【0054】
S330では、プロセッサ210は、認識データの取得処理を実行する。
図9は、認識データの取得処理の例を示すフローチャートである。認識データは、画像認識の結果を示すデータである。本実施例では、認識データは、シート検出モデルNN(
図5)によって出力される出力データであり、ラベルシートの検出結果を示している。なお、プロセッサ210は、第4プログラム234に従って、
図9の処理を行う。
【0055】
S410では、プロセッサ210は、第1撮影画像データと第2撮影画像データとを、記憶装置215から取得する。取得されるデータは、S320(
図8)で取得されたデータである。
【0056】
S420では、プロセッサ210は、プリンタ900(
図2)の第1外面901にラベルシートが要求されるか否かを判断する。この判断結果は、プリンタの機種に応じて、異なり得る。本実施例では、プリンタ900の第1外面901には、第1ラベルシート910が要求されるので、S420の判断結果はYesである。
【0057】
S420の判断結果がYesである場合、S430で、プロセッサ210は、第1撮影画像データを、トレーニングされたシート検出モデルNN(
図5(A))に入力することによって、シート検出モデルNNから出力データを取得する。以下、S430で取得される出力データを、第1出力データと呼ぶ。第1外面901(
図2)に第1ラベルシート910が貼られている場合、第1出力データは、
図3(C)の矩形領域BB1とクラス識別子CL1とのように、第1ラベルシート910を示すバウンディングボックスとクラス識別子とを示すことができる。第1外面901に第1ラベルシート910が貼られていない場合、シート検出モデルNNにとって、第1ラベルシート910の情報を示す第1出力データを出力することは困難である。S430の後、プロセッサ210は、S440へ移行する。
【0058】
S420の判断結果がNoである場合、プロセッサ210は、S430をスキップして、S440へ移行する。
【0059】
S440では、プロセッサ210は、第1撮影画像データを分析することによって、対象物直線を特定する。本実施例では、プロセッサ210は、
図3(A)で説明した対象物直線Lxを特定する。対象物直線Lxの特定方法は、任意の方法であってよい。本実施例では、プロセッサ210は、エッジ検出フィルタ(例えば、ソーベルフィルタ)を用いて第1撮影画像中の複数のエッジ画素を検出し、複数のエッジ画素を用いるハフ変換によって、第1外面901の矩形状の輪郭を形成する4本の辺を検出する。プロセッサ210は、4本の辺のうち、Dy1方向におおよそ平行な左側の辺を延長して得られる直線を、対象物直線Lxとして採用する。
【0060】
S450(
図9)では、プロセッサ210は、S440で特定された対象物直線Lxと、第2撮影方向120xに平行な撮影直線120xLと、を用いて、ズレ角dAGを算出する。
【0061】
S460では、プロセッサ210は、ズレ角dAGの絶対値が第1閾値dTH1より大きいか否かを判断する。ズレ角dAGの絶対値が第1閾値dTH1以下である場合(S460:No)、S500で、プロセッサ210は、第2撮影画像データを、トレーニングされたシート検出モデルNN(
図5(A))に入力することによって、シート検出モデルNNから出力データを取得する。以下、S500で取得される出力データを、第2出力データと呼ぶ。第2外面902(
図2)に第2ラベルシート920が貼られている場合、第2出力データは、
図3(D)の矩形領域BB2とクラス識別子CL2とのように、第2ラベルシート920を示すバウンディングボックスとクラス識別子とを示すことができる。第2外面902に適切な第2ラベルシート920が貼られていない場合、シート検出モデルNNにとって、第2ラベルシート920の情報を示す第2出力データを出力することは困難である。S500の後、プロセッサ210は、
図9の処理、すなわち、
図8のS330の処理を終了する。
【0062】
ズレ角dAGの絶対値が第1閾値dTH1より大きい場合(S460:Yes)、第2撮影画像は、
図4(A)の第2撮影画像820bのように、大きく変形した第2外面902を示している。第2外面902に第2ラベルシート920が貼られている場合、第2撮影画像は、大きく変形した第2ラベルシート920を示している。シート検出モデルNNは、大きく変形した第2ラベルシート920を検出できない場合がある。
【0063】
S470(
図9)では、プロセッサ210は、ズレ角dAGの絶対値が第2閾値dTH2以下であるか否かを判断する。第2閾値dTH2は、第1閾値dTH1よりも大きい予め決められた値である(例えば、dTH2=20度)。
【0064】
ズレ角dAGの絶対値が第2閾値dTH2以下である場合(S470:Yes)、S480で、プロセッサ210は、第2撮影画像データを分析して、射影変換の複数のパラメータを決定する。射影変換は、幾何変換の一種であり、任意の四角形を任意の四角形に変換可能である。台形を矩形に変換する台形変換は、射影変換の一種である。射影変換は、第1視点から見た物体の画像を、第2視点から見た物体の画像に変換する処理として、利用可能である。座標(x、y)を座標(X、Y)に変換する射影変換の変換式は、例えば、以下の式1、2で表される。
(式1)X=(Ax+By+C)/(Gx+Hy+1)
(式2)Y=(Dx+Ey+F)/(Gx+Hy+1)
以上のように、射影変換は、AからHの8個のパラメータで表される。8個のパラメータは、変換前の四角形の4個の頂点の座標と、変換後の四角形の4個の頂点の座標と、を用いることによって、決定可能である。本実施例では、これらのパラメータは、第2外面902の形状が、ズレ角dAGがゼロである場合の形状(本実施例では、矩形状)に近づくように、決定される。
【0065】
射影変換の複数のパラメータの決定方法は、任意の方法であってよい。例えば、プリンタ900の第2外面902上には、基準の位置を示す4個の目印P1-P4が予め形成されてよい(
図4(A))。目印P1-P4の構成は、画像分析によって検出可能な任意の構成であってよい。本実施例では、目印P1-P4は、三角形である。また、本実施例では、4個の目印P1-P4は、第2外面902上で矩形の頂点を形成する。
図4(A)に示すように、第2撮影画像中では、4個の目印P1-P4は、変形した四角形の頂点を示し得る。プロセッサ210は、パターンマッチングによって、4個の目印P1-P4を検出する。そして、プロセッサ210は、変換後の4個の目印P1-P4が矩形の4個の頂点(例えば、予め決められた4個の頂点)を示すように、射影変換の複数のパラメータを決定する。
【0066】
S490(
図9)では、プロセッサ210は、S480で決定された複数のパラメータを用いて、第2撮影画像データの射影変換を行い、変換済第2撮影画像データを生成する。
図4(B)は、変換済第2撮影画像データの画像の例を示している。この画像820bxは、
図4(A)の第2撮影画像820bに対して射影変換を行って得られる画像を示している。図示するように、4個の目印P1-P4は、矩形の4個の頂点を形成している。そして、第2外面902の形状は、おおよそ矩形状である。射影変換によって、第2外面902の形状は、ズレ角dAGの大きさが第1閾値dTH1以下である場合の第2外面902の形状(ここでは、矩形状)に、近づいている。また、第2外面902上の第2ラベルシート920の形状も、ズレ角dAGの大きさが第1閾値dTH1以下である場合の形状に、近づいている。
【0067】
S490(
図9)の後、プロセッサ210は、S500へ移行する。S490が実行された場合、プロセッサ210は、変換済第2撮影画像データを、トレーニングされたシート検出モデルNN(
図5(A))に入力することによって、シート検出モデルNNから第2出力データを取得する。
図4(C)は、射影変換された画像820bx(
図4(B))から検出される第2ラベルシート920を示している。第2出力データは、第2ラベルシート920を示すバウンディングボックスBB3とクラス識別子CL3とを適切に示すことができる。
【0068】
なお、ズレ角dAGの大きさが大きい場合、第2撮影画像中の第2ラベルシート920の変形が大きいので、射影変換された画像を用いても、第2ラベルシート920の検出が困難であり得る。本実施例では、ズレ角dAGの絶対値が第2閾値dTH2よりも大きい場合(S470:No)、プロセッサ210は、認識データの取得(S500)を行わずに、S510へ移行する。第2閾値dTH2は、ズレ角dAGの大きさが第2閾値dTH2以下である場合に、射影変換された画像から第2ラベルシート920を適切に検出できるように、予め実験的に決定される。
【0069】
S510では、プロセッサ210は、ズレ角dAGのエラー(すなわち、ズレ角dAGの大きさが第2閾値dTH2よりも大きいこと)を作業者に通知し、
図9の処理を終了する。エラーを通知する処理は、作業者によって認識され得る任意の処理であってよい。例えば、プロセッサ210は、表示部240(
図1)に、エラーを示す画像を表示する。これに代えて、プロセッサ210は、警告音を図示しないスピーカから鳴動させてよい。
【0070】
図9の処理の後、すなわち、
図8のS330の処理の後、S340で、プロセッサ210は、ズレ角dAGのエラーがS330で発生したか否かを判断する。エラーが発生した場合(S340:Yes)、S350で、ズレ角dAGの大きさが第2閾値dTH2以下となるように、プリンタ900が回転される。本実施例では、作業者が、プリンタ900を回転させることによって、角度dAGを調整する。そして、作業者は、処理進行の指示をデータ処理装置200(
図1)に入力する。これにより、プロセッサ210は、S310へ移行する。
【0071】
ズレ角dAGのエラーが発生していない場合(S340:No)、S360で、プロセッサ210は、撮影画像が適切なラベルシートの画像を含むか否かを、認識データを用いて判断する。本実施例では、認識データに含まれる第1出力データが、第1ラベルシート910が検出されたことを示し、かつ、認識データに含まれる第2出力データが、第2ラベルシート920が検出されたことを示す場合に、S360の判断結果がYesである。Yesの判断結果は、プリンタ900が検査に合格したことを示している。Noの判断結果は、プリンタ900が検査に不合格であったことを示している。
【0072】
S360の判断結果がYesである場合、S370で、プロセッサ210は、合格処理を実行する。合格処理は、検査結果が合格である場合のための任意の処理であってよい。例えば、プロセッサ210は、合格を示す検査結果データを、記憶装置215(例えば、不揮発性記憶装置230)に格納する。そして、プロセッサ210は、
図8の処理を終了する。S360の判断結果がNoである場合、S380で、プロセッサ210は、不合格処理を実行する。不合格処理は、検査結果が不合格である場合のための任意の処理であってよい。例えば、プロセッサ210は、不合格を示す検査結果データを、記憶装置215(例えば、不揮発性記憶装置230)に格納する。そして、プロセッサ210は、
図8の処理を終了する。
【0073】
以上のように、データ処理装置200のプロセッサ210は、
図9の認識データの取得処理を実行する。認識データは、画像認識の結果を示すデータである。本実施例では、
図5(A)、
図5(B)、
図9のS430、S500等で説明したように、画像認識は、シート検出モデルNNによる撮影画像からのシートの画像の検出である。認識データは、シート検出モデルNNからの出力データであり、シート検出の結果を示している。また、
図2等で説明したように、本実施例では、撮影画像の対象物は、プリンタ900である。プリンタ900は、第1方向D1側の第1外面901と、第1方向D1に垂直な第2方向D2側の第2外面902と、を含む複数の外面を有している。
図9のS410では、プロセッサ210は、第1撮影画像データと第2撮影画像データとを取得する。第1撮影画像データは、第1外面901に対向する第1カメラ110によって撮影された第1外面901の第1撮影画像を示すデータである。第2撮影画像データは、第2外面902に対向する第2カメラ120によって撮影された第2外面902の第2撮影画像を示すデータである。
【0074】
S440、S450(
図9)では、プロセッサ210は、第1撮影画像データを分析することによってズレ角dAGを特定する。ズレ角dAGは、
図2、
図3(A)に示すように、第1外面901が第1カメラ110の方向を向いた状態でプリンタ900が回転する場合のプリンタ900の回転方向の回転位置のズレ量を示している。具体的には、ズレ角dAGは、第2カメラ120の第2撮影方向120xに平行な撮影直線120xLと、プリンタ900の対象物直線Lxと、がなす角度である。このようなズレ角dAGは、対象物直線Lxが撮影直線120xLに平行であるような回転位置(注目基準回転位置と呼ぶ)に対するズレ量を示している。以下、注目基準回転位置に対するズレ量を、注目ズレ量とも呼ぶ。
図9のS450で算出されるズレ角dAGは、注目ズレ量の例である。また、注目基準回転位置は、第2カメラ120の第2撮影方向120xと所定の位置関係にある回転位置の例である。
【0075】
S500(
図9)では、プロセッサ210は、シート検出モデルNNと第2撮影画像データとを用いて、プリンタ900の第2外面902に関する画像認識の結果を示す認識データ(第2出力データ)を取得する。
図6、
図7で説明したように、シート検出モデルNNは、プリンタ900の第2外面902の撮影画像を示す撮影画像データと、画像認識の結果を示す認識データと、の関係を示すようにトレーニングされている。
【0076】
図6で説明したように、シート検出モデルNNのトレーニングには、トレーニング用のプリンタ900の第2外面902の複数の撮影画像を示す複数のトレーニング用撮影画像データ(本実施例では、学習画像データD11)が用いられる。
図6のS110で説明したように、トレーニング用のプリンタ900の第2外面902の撮影は、ズレ角dAGの大きさが予め決められた第1閾値dTH1以下である状態で行われる。本実施例では、トレーニング用の撮影時に用いられるズレ角dAGの意味は、認識データの取得処理(
図9)で用いられるズレ角dAGの意味と同じである。すなわち、トレーニング用のズレ角dAGは、トレーニング用のプリンタ900の第2外面902の撮影に用いられる第2カメラ120の第2撮影方向120xに平行な撮影直線120xLと、プリンタ900の対象物直線Lxと、がなす角度である(以下、トレーニング用のズレ角dAGを、トレーニングズレ量とも呼ぶ)。トレーニングズレ量は、対象物直線Lxが撮影直線120xLに平行であるような基準回転位置(トレーニング基準回転位置とも呼ぶ)に対するトレーニング用のプリンタ900の回転方向の回転位置のズレ量を示している。トレーニング基準回転位置は、第2カメラ120の第2撮影方向120xと所定の位置関係にある回転位置の例である。
【0077】
図9の処理では、注目ズレ量(ここでは、ズレ角dAG)の大きさが第1閾値dTH1以下である場合には(S460:No)、プロセッサ210は、S500で、第2撮影画像データをトレーニングされたシート検出モデルNNに入力することによって、認識データ(第2出力データ)を取得する。注目ズレ量の大きさが、第1閾値dTH1より大きく(S460:Yes)、かつ、第2閾値dTH2以下である場合(S470:Yes)、プロセッサ210は、以下の処理を実行する。すなわち、S490で、プロセッサ210は、射影変換を第2撮影画像データに対して実行することによって、変換済撮影画像データを生成する。この射影変換は、第2撮影画像上の第2外面902の形状を、注目ズレ量(ズレ角dAG)の大きさが第1閾値dTH1以下である場合の第2外面902の形状に近づける処理である。S500では、プロセッサ210は、変換済第2撮影画像データをトレーニングされたシート検出モデルNNに入力することによって、認識データ(第2出力データ)を取得する。なお、本実施例では、射影変換を行うための注目ズレ量の大きさの範囲(特定範囲と呼ぶ)は、第1閾値dTH1より大きく、かつ、第2閾値dTH2以下の範囲である。
【0078】
このように、注目ズレ量の大きさが第1閾値dTH1よりも大きい特定範囲内である場合には、プロセッサ210は、射影変換を行い、変換済第2撮影画像データをトレーニングされたシート検出モデルNNに入力することによって認識データを取得する。従って、シート検出モデルNNをトレーニングする処理において、第1閾値dTH1よりも大きい大きさを有するズレ量に対応するトレーニング用撮影画像データを省略できる。この結果、トレーニングのための画像データの準備の負担を軽減できる。
【0079】
また、認識データの取得のためのプリンタ900の撮影時(
図8:S310)、プリンタ900の回転位置の調整には、第1閾値dTH1以下のズレが許容されている。従って、作業者の負担を軽減できる。また、支持装置700の構成を簡素化できる。例えば、本実施例では、プリンタ900の回転位置を厳密に調整する自動調整装置は、省略されている。
【0080】
また、
図6のS110、S160で説明したように、複数のトレーニング用撮影画像データ(本実施例では、学習画像データD11)は、第1閾値dTH1以下の大きさの範囲内に分布する複数のトレーニングズレ量に対応する複数のトレーニング用撮影画像データを含んでいる。従って、第1閾値dTH1以下の種々の大きさのズレ量に関して、シート検出モデルNNによる画像認識の精度低下を抑制できる。
【0081】
また、
図9のS460、S470で説明したように、射影変換が行われるための注目ズレ量の大きさの特定範囲は、第1閾値dTH1より大きく、第2閾値dTH2以下の範囲である。プロセッサ210は、注目ズレ量の大きさが第2閾値dTH2よりも大きい場合には(S470:No)、S500(注目認識データの取得)を実行せずに、注目ズレ量の大きさが第2閾値dTH2よりも大きいことをユーザ(ここでは、作業者)に通知する(S510)。従って、注目ズレ量の大きさが第2閾値dTH2よりも大きい場合に、不適切な認識データの取得は抑制される。
【0082】
図9のS480では、プロセッサ210は、第2撮影画像データを分析することによって、射影変換の複数のパラメータを決定する。S490では、プロセッサ210は、S480で決定した複数のパラメータを用いて射影変換を実行する。従って、プロセッサ210は、第2撮影画像データの適切な射影変換を実行できる。
【0083】
また、認識データの取得(
図9)のために、S310(
図8)で、プリンタ900(
図2)は、第1カメラ110と第2カメラ120とによって撮影される。この撮影時には、プリンタ900は、支持装置700によって支持されている。
図2で説明したように、支持装置700は、平らな支持面711と回転装置725とを備えている。支持面711は、プリンタ900の第1外面901とは反対側の外面である底面909を支持する。回転装置725は、プリンタ900の第1外面901が第1カメラ110の方向を向いた状態でプリンタ900の回転を許容する。そして、支持装置700に対する第1カメラ110の位置と向きと、支持装置700に対する第2カメラ120の位置と向きとは、予め決められている。従って、複数の撮影画像の間で、ラベルシート910、920の画像の形状のばらつきと大きさのばらつきとは抑制される。この結果、画像認識の精度低下を抑制できる。
【0084】
B.第2実施例:
図10は、認識データの取得処理の第2実施例のフローチャートである。
図9の第1実施例との差異は、S480が、S480aに置換されている点だけである。認識データの取得処理の他の部分の処理は、
図9の対応する部分の処理と同じである(同じ部分については、図示と説明を省略する)。取得処理を実行するデータ処理装置の構成は、
図1のデータ処理装置200の構成と同じである。
【0085】
S480aでは、プロセッサ210は、S450(
図9)で算出されたズレ角dAGを用いて、射影変換の複数のパラメータを決定する。ズレ角dAGと複数のパラメータとの間の対応関係は、予め実験的に決定される。本実施例では、対応関係を示すルックアップテーブルが、不揮発性記憶装置230に予め格納される(図示省略)。プロセッサ210は、ルックアップテーブルを参照して、ズレ角dAGに対応付けられた複数のパラメータを、特定する。なお、本実施例では、目印P1-P4(
図4(A))は、省略されてよい。
【0086】
以上のように、本実施例では、S480a(
図10)では、プロセッサ210は、注目ズレ量(ここでは、ズレ角dAG)を用いて射影変換の複数のパラメータを決定する。S490(
図9)では、プロセッサ210は、S480aで決定した複数のパラメータを用いて射影変換を実行する。従って、プロセッサ210は、注目ズレ量を用いて、第2撮影画像データの適切な射影変換を実行できる。
【0087】
C.変形例:
(1)機械学習モデル(例えば、シート検出モデルNN(
図5(A))のトレーニングと認識データの取得などに用いられる撮影画像データは、プリンタ900などの対象物の撮影画像を示す種々の画像データであってよい。例えば、撮影画像データの色空間は、RGBに代えて、CMYK色空間などの他の色空間であってよい。また、プロセッサ210は、デジタルカメラ110、120によって生成された画像データに対して、解像度変換処理、トリミング処理などの種々の画像処理を実行することによって、撮影画像データを取得してよい。
【0088】
(2)認識データの取得処理は、
図9、
図10の処理に代えて、他の種々の処理であってよい。認識データの取得処理は、機械学習モデル(例えば、シート検出モデルNN)と、撮影画像データと、を用いて認識データを取得する種々の処理であってよい。ここで、機械学習モデルとしては、撮影画像データと、画像認識の結果を示す認識データと、の関係を示すようにトレーニングされたモデルが利用されてよい。
図9の処理において、例えば、S420、S430は、省略されてよい。すなわち、第1撮影画像データに基づく認識データの取得は、省略されてよい。この場合も、プロセッサ210は、第1撮影画像データを用いて、ズレ角dAGを特定してよい。また、S510では、エラーに関する作業者への通知が省略されてよい。この場合、プロセッサ210は、S510で、エラーの発生を記録することが好ましい(例えば、プロセッサ210は、エラーを示すデータを記憶装置215に格納する)。
【0089】
角度dAGを特定する処理は、S440-S450の処理に代えて、他の種々の処理であってよい。例えば、第1外面901上に、対象物ラインLxを示す2個の目印が予め形成されてよい。S440では、プロセッサ210は、パターンマッチングによって、2個の目印を検出し、2個の目印を通る直線を、対象物ラインLxとして特定してよい。
【0090】
射影変換を行うためのズレ角dAGの大きさの特定範囲は、第1閾値dTH1より大きい種々の範囲であってよい。例えば、S470が省略されてよい。すなわち、特定範囲は、第1閾値dTH1より大きい全範囲であってよい。この場合、ズレ角dAGの大きさが過度に大きくならないように、支持装置700(
図2)は、上板710の回転可能範囲を予め決められた範囲に制限する制限装置を備えることが好ましい。制限装置は、例えば、上板710に接触して上板710の回転を止めるストッパを含んでよい。
【0091】
(3)S490(
図9)で実行される画像変換は、上記の式1、式2で表される射影変換に代えて、第2撮影画像上の第2外面902の形状を、ズレ角dAGの大きさが第1閾値dTH1以下である場合の第2外面902の形状に近づける種々の幾何変換であってよい。例えば、台形を矩形に変換する台形変換が行われてよい。
【0092】
(4)射影変換などの幾何変換の複数のパラメータを決定する方法は、S480(
図9)、S480a(
図10)で説明した方法に代えて、他の種々の方法であってよい。例えば、
図9の実施例において、目印P1-P4(
図4(A))は、省略されてよい。プロセッサ210は、第2撮影画像データを解析することによって、第2外面902のうちの特徴的な部分(例えば、第2外面902の輪郭を示す四角形の4個の角や4本の辺)を検出し、検出された部分を用いて複数のパラメータを決定してよい。特徴的な部分の検出方法は、任意の方法であってよい。例えば、プロセッサ210は、パターンマッチングによって特徴的な部分を検出してよい。また、プロセッサ210は、エッジ検出フィルタ(例えば、ソーベルフィルタ)を用いて第2撮影画像中の複数のエッジ画素を検出し、複数のエッジ画素を用いて特徴的な部分を特定してよい。プロセッサ210は、例えば、複数のエッジ画素を用いるハフ変換によって、第2外面902の輪郭を示す4本の辺を検出できる。
【0093】
(5)上記実施例では、角度dAG(
図3(A))の基準となる基準回転位置は、第2外面902が第2カメラ120の第2撮影方向120xにおおよそ垂直であるような回転位置である。基準回転位置は、このような回転位置に代えて、他の任意の回転位置であってよい。例えば、基準回転位置では、第2外面902が、第2撮影方向120xに対して傾斜してよい。この場合も、データセットDSの生成処理(
図6)と、認識データの取得処理(
図9)と、のそれぞれにおいて、第2外面902の撮影に用いられるカメラの撮影方向と同じ位置関係にある基準回転位置に基づいて角度dAGが特定される。そして、
図7の処理では、プロセッサ210は、変形した第2ラベルシート920を示す画像データを用いてシート検出モデルNNをトレーニングする。
図9のS500では、プロセッサ210は、同様に変形した第2ラベルシート920を示す第2撮影画像データをシート検出モデルNNに入力することによって、第2出力データを取得する。従って、プロセッサ210は、適切な第2出力データを取得できる。
【0094】
データセットDSの生成のための第2外面902の撮影は、検査のための撮影の環境(
図2)とは異なる環境で行われてよい。例えば、データセットDSの生成のための撮影時には、プリンタ900に対するカメラの位置と向きとを変更することによって、角度dAG(すなわち、トレーニングズレ量)が調整されてよい。トレーニングズレ量の基準となるトレーニング基準回転位置としては、第2外面902を撮影するカメラの撮影方向と所定の位置関係にある回転位置が用いられる。所定の位置関係は、認識データの取得処理(
図9)における、第2カメラ120の第2撮影方向120xと基準回転位置との位置関係と同じである。
【0095】
なお、基準回転位置に対する回転位置のズレ量は、角度dAGに代えて、角度dAGと相関を有する他のパラメータによって表されてよい。
【0096】
(6)データセットDSの生成処理(
図6)では、複数のトレーニング角度に代えて、1個のトレーニング角度が用いられてよい。すなわち、データセットDSに含まれる複数の学習画像データD11は、いずれも、1個のトレーニング角度の撮影画像を示してよい。この場合も、トレーニング角度の大きさは、第1閾値dTH1以下に設定される(例えば、dAG=ゼロ)。シート検出モデルNNなどの機械学習モデルが1個のトレーニング角度に基づいてトレーニングされる場合であっても、機械学習モデルは、他の角度dAGに対応する撮影画像を用いて、適切な出力データを出力し得る。第1閾値dTH1は、ズレ角dAGの大きさが第1閾値dTH1以下である場合に、シート検出モデルNNが適切な出力データを出力するように、予め実験的に決定される。
【0097】
(7)第1カメラ110によって撮影される外面は、プリンタ900の上面に代えて、他の任意の外面であってよい。また、第2カメラ120によって撮影される外面は、プリンタ900の正面に代えて、他の任意の外面であってよい。一般的には、第2カメラ120は、プリンタ900の複数の外面のうち、ラベルシートの検出のような画像認識の対象の外面である対象外面を撮影することが好ましい。そして、対象外面がプリンタ900の第2方向側の外面である場合に、第1カメラ110は、第2方向に垂直な第1方向側の外面を撮影することが好ましい。この構成によれば、プロセッサ210は、第1カメラ110による撮影画像を分析することによって、第2カメラ120の第2撮影方向120xに対する対象外面の向きの基準からのズレ量、すなわち、プリンタ900の回転位置のズレ量(例えば、ズレ角dAG(
図3(A))を、特定できる。
【0098】
(8)認識データの取得処理の対象物は、プリンタに限らず、スキャナ、複合機、デジタルカメラ、カッティングマシン、携帯端末、などの任意の製品であってよい。また、製品を収容するケースが対象物であってよい。
【0099】
(9)シート検出モデルNNの構成は、
図5(A)で説明した構成に代えて、ラベルシートなどの対象物を検出する任意の構成であってよい。例えば、シート検出モデルNNは、「YOLOv3」などの改良されたYOLOモデルであってよい。「YOLOv3」は、プーリング層に代えて、1より大きいストライド(例えば、2)を用いる畳込層によって、データの次元数を削減する。また、「YOLOv3」は、特徴ピラミッドネットワークと同様のネットワークを用いて、3つの異なるスケールでバウンディングボックスを予測する。また、SSD(Single Shot Detector)、R-CNN (Regions with Convolutional Neural Network)、Fast R-CNN, Faster R-CNN、Mask R-CNNなどの、他のモデルが用いられてよい。
【0100】
オブジェクト検出モデルによって検出されるべき対象物は、ラベルシートの画像に限らず、撮影画像の対象物に付属する任意の付属物(例えば、プリンタに装着される部品、バーコードなど)であってよい。
【0101】
(10)機械学習モデルは、オブジェクト検出モデルに限らず、種々の画像認識処理を行うモデルであってよい。例えば、機械学習モデルは、撮影画像を、適切な対象物のクラスと、不適切な対象物のクラスと、に分類する分類モデルであってよい。対象物の適切さは、例えば、対象物が適切な付属物(ラベルシートなど)を有することであってよく、また、対象物に傷が無いことであってよい。分類モデルとしては、例えば、複数の全結合層によって構成されたモデル、CNN、ランダムフォレスト、サポートベクターマシンなどの、種々のモデルを採用可能である。このように、画像認識を行う機械学習モデルは、オブジェクト検出モデル、分類モデルなど、種々の画像認識処理を行うモデルであってよい。
【0102】
いずれの場合も、機械学習モデルは、第1閾値dTH1以下のズレ量に対応する画像データを用いて、トレーニングされることが好ましい。トレーニング方法は、モデルに適した任意の方法であってよい。例えば、
図7のS240、S260で用いられる損失関数は、2乗和誤差、交差エントロピー誤差など、機械学習モデルから出力されるデータと教師データとの間の差の評価値を算出する種々の関数であってよい。機械学習モデルに含まれる演算パラメータを調整する方法は、誤差逆伝播法に代えて、目標値を伝播させる方法(Target Propagationとも呼ばれる)など、他の種々の方法であってよい。トレーニング完了の条件は、機械学習モデルから出力されるデータと、教師データと、の間の差が小さいことを示す種々の条件であってよい。
【0103】
(11)検査処理(
図8)における合格の条件は、機械学習モデルを用いて得られる認識データに基づく種々の条件であってよい。例えば、合格の条件は、対象物の傷が検出されないことであってよい。
【0104】
(12)支持装置700の構成は、
図2の構成に代えて、他の種々の構成であってよい。例えば、支持面711は、平らでなく対象物(例えば、プリンタ900)の一部を嵌め込むための凹部を有してよい。この場合も、支持面711、ひいては、凹部に嵌め込まれた対象物は、回転装置725によって回転できる。また、回転装置725(すなわち、ベアリング721と下板720)が省略されてよい。例えば、支持装置は、平らな支持面711を有する板であってよい。この場合、支持面711が平らであるので、作業者は、支持面711上で対象物を容易に回転させることができる。このように、支持装置は、対象物の複数の外面のうち第1外面とは反対側の反対外面を支持する平らな支持面と、対象物の第1外面が第1カメラの方向を向いた状態で対象物の回転を許容する回転装置と、のいずれか一方、または、両方を備えることが好ましい。ただし、支持装置は、これら2つの要素の両方を備えなくてもよい。例えば、支持装置は、凹部を有する板であってよい。作業者は、板と、凹部に嵌め込まれた対象物と、の全体を回転させてよい。
【0105】
(13)データセットの生成処理(例えば、
図6)と、機械学習モデルのトレーニング処理(例えば、
図7)と、検査処理(例えば、
図8)と、認識データの取得処理(例えば、
図8、
図9)とは、それぞれ、互いに異なるデータ処理装置によって実行されてよい。これらの処理から任意に選択された処理が、ネットワークを介して互いに通信可能な複数の装置(例えば、コンピュータなどのデータ処理装置)によって分担されてよい。例えば、認識データの取得処理は、複数のデータ処理装置を含むデータ処理システムによって、実行されてよい。
【0106】
上記各実施例において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部あるいは全部をハードウェアに置き換えるようにしてもよい。例えば、
図1のシート検出モデルNNの機能を、専用のハードウェア回路によって実現してもよい。
【0107】
また、本発明の機能の一部または全部がコンピュータプログラムで実現される場合には、そのプログラムは、コンピュータ読み取り可能な記録媒体(例えば、一時的ではない記録媒体)に格納された形で提供することができる。プログラムは、提供時と同一または異なる記録媒体(コンピュータ読み取り可能な記録媒体)に格納された状態で、使用され得る。「コンピュータ読み取り可能な記録媒体」は、メモリーカードやCD-ROMのような携帯型の記録媒体に限らず、各種ROM等のコンピュータ内の内部記憶装置や、ハードディスクドライブ等のコンピュータに接続されている外部記憶装置も含み得る。
【0108】
以上、実施例、変形例に基づき本発明について説明してきたが、上記した発明の実施の形態は、本発明の理解を容易にするためのものであり、本発明を限定するものではない。本発明は、その趣旨を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物が含まれる。
【符号の説明】
【0109】
110…第1デジタルカメラ(第1カメラ)、110x…第1撮影方向、120…第2デジタルカメラ(第2カメラ)、120x…第2撮影方向、120xL…撮影直線、200…データ処理装置、210…プロセッサ、215…記憶装置、220…揮発性記憶装置、230…不揮発性記憶装置、231…第1プログラム、232…第2プログラム、233…第3プログラム、234…第4プログラム、240…表示部、250…操作部、270…通信インタフェース、700…支持装置、700x…回転軸、710…上板、711…上面(支持面)、720…下板、721…ベアリング、725…回転装置、800…入力画像、810a…第1撮影画像、820a、820b…第2撮影画像、820bx…画像、830…出力データ、900…プリンタ、901…第1外面、902…第2外面、903…第3外面、909…底面、910…第1ラベルシート、920…第2ラベルシート、D1…第1方向、D2…第2方向、DS…データセット、LD…ラベル付データ、D11…学習画像データ、D12…ラベルデータ、D121…領域情報、D122…シートクラス、NN…シート検出モデル、Lx…対象物直線、Dx…第1方向、Dy…第2方向、dAG…角度(ズレ角)