(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-18
(45)【発行日】2024-09-27
(54)【発明の名称】方法、システム、および、コンピュータプログラム
(51)【国際特許分類】
G06T 7/00 20170101AFI20240919BHJP
【FI】
G06T7/00 350B
(21)【出願番号】P 2020203996
(22)【出願日】2020-12-09
【審査請求日】2023-11-17
(73)【特許権者】
【識別番号】000005267
【氏名又は名称】ブラザー工業株式会社
(74)【代理人】
【識別番号】110001058
【氏名又は名称】鳳国際弁理士法人
(72)【発明者】
【氏名】近藤 真樹
【審査官】松永 隆志
(56)【参考文献】
【文献】特開2018-169672(JP,A)
【文献】特開2020-166397(JP,A)
【文献】特開2020-87165(JP,A)
【文献】JO,HyunJun,et al.,Data Augmentation using Synthesized Images for Object Detection,2017 17th International Conference on Control, Automation, and Systems (ICCAS 2017),,2017年10月21日,pp.1035-1038,[令和6年7月26日検索],インターネット <URL:https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=8204369>
【文献】SHIN,Hyeon-Cheol, et al.,Data Augmentation Method of Object Detection for Deep Learning in Maritime Image,2020 IEEE International Conference on Big Data and Smart Computing (BigComp),2020年02月22日,pp.463-466,[令和6年7月26日検索],インターネット <URL:https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9070663>
(58)【調査した分野】(Int.Cl.,DB名)
G06T 7/00
(57)【特許請求の範囲】
【請求項1】
画像中の対象物を検出するための機械学習モデルのトレーニングに用いられる複数の学習画像データを生成する方法であって、
対象物の画像である対象物画像の対象物画像データを取得する取得工程と、
前記対象物画像の色の分布範囲を分割して得られるT個(Tは2以上の整数)の部分色範囲にそれぞれ対応するT種類の部分領域に前記対象物画像を分割する分割工程と、
1種類以上の部分領域のそれぞれの色を元の色とは異なる色に変更する処理を含む調整処理を実行することによって、前記対象物の複数の色変更対象物画像の複数の色変更対象物画像データを生成する色変更画像生成工程であって、前記複数の色変更対象物画像は、互いに異なる色の同じ種類の部分領域を有する、前記色変更画像生成工程と、
1以上の背景画像データと、前記複数の色変更対象物画像データと、を用いることによって、複数の学習画像の複数の学習画像データを生成する学習画像生成工程であって、前記学習画像は、前記1以上の背景画像データのいずれかによって示される背景画像と、前記背景画像上に配置された1以上の色変更対象物画像とを含み、前記複数の学習画像は、前記複数の色変更対象物画像のうちの互いに異なる色変更対象物画像を含む、前記学習画像生成工程と、
を備える生成方法。
【請求項2】
請求項1に記載の生成方法であって、
前記1以上の背景画像データは、写真の背景画像の背景画像データを含む、
生成方法。
【請求項3】
請求項1または2に記載の生成方法であって、
前記1以上の背景画像データは、単色のベタ画像の背景画像データを含む、
生成方法。
【請求項4】
請求項1から3のいずれかに記載の生成方法であって、
前記調整処理は、
前記色変更対象物画像のサイズを変更する処理と、
前記色変更対象物画像の縦横比を変更する処理と、
のうちのいずれか1つ、または、両方を含む、
生成方法。
【請求項5】
請求項1から4のいずれかに記載の生成方法であって、
前記学習画像生成工程は、前記背景画像と、前記背景画像上に配置された複数の色変更対象物画像と、を含む学習画像の学習画像データを生成する工程を含む、
生成方法。
【請求項6】
請求項1から5のいずれかに記載の生成方法であって、
前記学習画像生成工程は、前記背景画像と、前記背景画像上に配置された1以上の色変更対象物画像と、前記対象物とは異なる他の対象物の画像であって前記背景画像上に配置された前記他の対象物の前記画像と、を含む学習画像の学習画像データを生成する工程を含む、
生成方法。
【請求項7】
請求項5または請求項6に記載の生成方法であって、
1個の学習画像上では、それぞれが対象物を示す複数の画像は、互いに重ならないように配置されている、
生成方法。
【請求項8】
請求項1から7のいずれかに記載の生成方法であって、さらに、
前記学習画像生成工程は、前記背景画像と前記背景画像上に配置された前記1以上の色変更対象物画像とを含む候補画像の候補画像データに画像処理を行うことによって前記学習画像データを生成する工程を含み、
前記画像処理は、
前記候補画像の上下を反転させる処理と、
前記候補画像の左右を反転させる処理と、
前記候補画像を回転させる処理と、
前記候補画像内の前記色変更対象物画像を示す領域を変更せずに、前記色変更対象物画像のうちの前記領域内に示される部分を平行移動させるシフト処理と、
前記候補画像をぼかす処理と、
前記候補画像にノイズを付加する処理と、および、
前記候補画像の色を調整する処理と、
からなる群から選択される1以上の処理を含む、
生成方法。
【請求項9】
画像中の対象物を検出するための機械学習モデルのトレーニングに用いられる複数の学習画像データを生成するシステムであって、
対象物の画像である対象物画像の対象物画像データを取得する取得部と、
前記対象物画像の色の分布範囲を分割して得られるT個(Tは2以上の整数)の部分色範囲にそれぞれ対応するT種類の部分領域に前記対象物画像を分割する分割部と、
1種類以上の部分領域のそれぞれの色を元の色とは異なる色に変更する処理を含む調整処理を実行することによって、前記対象物の複数の色変更対象物画像の複数の色変更対象物画像データを生成する色変更画像生成部であって、前記複数の色変更対象物画像は、互いに異なる色の同じ種類の部分領域を有する、前記色変更画像生成部と、
1以上の背景画像データと、前記複数の色変更対象物画像データと、を用いることによって、複数の学習画像の複数の学習画像データを生成する学習画像生成部であって、前記学習画像は、前記1以上の背景画像データのいずれかによって示される背景画像と、前記背景画像上に配置された1以上の色変更対象物画像とを含み、前記複数の学習画像は、前記複数の色変更対象物画像のうちの互いに異なる色変更対象物画像を含む、前記学習画像生成部と、
を備えるシステム。
【請求項10】
画像中の対象物を検出するための機械学習モデルのトレーニングに用いられる複数の学習画像データを生成するコンピュータのためのコンピュータプログラムであって、
対象物の画像である対象物画像の対象物画像データを取得する取得機能と、
前記対象物画像の色の分布範囲を分割して得られるT個(Tは2以上の整数)の部分色範囲にそれぞれ対応するT種類の部分領域に前記対象物画像を分割する分割機能と、
1種類以上の部分領域のそれぞれの色を元の色とは異なる色に変更する処理を含む調整処理を実行することによって、前記対象物の複数の色変更対象物画像の複数の色変更対象物画像データを生成する色変更画像生成機能であって、前記複数の色変更対象物画像は、互いに異なる色の同じ種類の部分領域を有する、前記色変更画像生成機能と、
1以上の背景画像データと、前記複数の色変更対象物画像データと、を用いることによって、複数の学習画像の複数の学習画像データを生成する学習画像生成機能であって、前記学習画像は、前記1以上の背景画像データのいずれかによって示される背景画像と、前記背景画像上に配置された1以上の色変更対象物画像とを含み、前記複数の学習画像は、前記複数の色変更対象物画像のうちの互いに異なる色変更対象物画像を含む、前記学習画像生成機能と、
をコンピュータに実現させる、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本明細書は、複数の学習画像データを生成する技術に関する。
【背景技術】
【0002】
従来から、画像を処理する機械学習モデルが、用いられている。機械学習モデルをトレーニングするために、学習データが用いられる。特許文献1には、以下の技術が提案されている。自動車に、対象物認識装置が搭載される。対象物認識装置は、学習データを用いて学習された認識モデルを用いて、撮影画像に含まれる対象物を検出する。学習データを生成するために、3次元のコンピュータグラフィックデータが用いられる。3次元のコンピュータグラフィックデータからカメラモデルに写し出される光景に含まれる物体モデルの変化を示すアニメーション情報を含むシーンデータが生成される。ここで、特定物体モデル以外のモデルがシーンデータから削除され、特定色にされた特定物体モデルのみを含む学習データ生成用シーンデータが生成される。シーンデータから、カメラモデルに写し出される光景の画像が生成される。この画像上において、対象モデルの領域に外接する矩形等の多角形のアノテーション枠が設定される。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
対象物を検出するように機械学習モデルをトレーニングするためには、対象物を示す種々の画像データが用いられる。ところが、多数の画像データを生成することは、容易ではなく、工夫の余地があった。
【0005】
本明細書は、トレーニング用の複数の学習画像データを生成できる技術を開示する。
【課題を解決するための手段】
【0006】
本明細書に開示された技術は、以下の適用例として実現することが可能である。
【0007】
[適用例1]画像中の対象物を検出するための機械学習モデルのトレーニングに用いられる複数の学習画像データを生成する方法であって、対象物の画像である対象物画像の対象物画像データを取得する取得工程と、前記対象物画像の色の分布範囲を分割して得られるT個(Tは2以上の整数)の部分色範囲にそれぞれ対応するT種類の部分領域に前記対象物画像を分割する分割工程と、1種類以上の部分領域のそれぞれの色を元の色とは異なる色に変更する処理を含む調整処理を実行することによって、前記対象物の複数の色変更対象物画像の複数の色変更対象物画像データを生成する色変更画像生成工程であって、前記複数の色変更対象物画像は、互いに異なる色の同じ種類の部分領域を有する、前記色変更画像生成工程と、1以上の背景画像データと、前記複数の色変更対象物画像データと、を用いることによって、複数の学習画像の複数の学習画像データを生成する学習画像生成工程であって、前記学習画像は、前記1以上の背景画像データのいずれかによって示される背景画像と、前記背景画像上に配置された1以上の色変更対象物画像とを含み、前記複数の学習画像は、前記複数の色変更対象物画像のうちの互いに異なる色変更対象物画像を含む、前記学習画像生成工程と、を備える生成方法。
【0008】
この構成によれば、種々の色で表現される対象物の画像を示す複数の学習画像データを生成できる。
【0009】
なお、本明細書に開示の技術は、種々の態様で実現することが可能であり、例えば、画像データに関連付けるべき情報を特定する方法および特定装置、画像データに情報を関連付ける関連付け方法および関連付け装置、学習画像データの生成方法および生成装置、それらの方法または装置の機能を実現するためのコンピュータプログラム、そのコンピュータプログラムを記録した記録媒体(例えば、一時的ではない記録媒体)、等の形態で実現することができる。
【図面の簡単な説明】
【0010】
【
図1】一実施例としての情報処理装置を示す説明図である。
【
図2】(A)、(B)は、撮影画像の例を示す概略図である。
【
図3】(A)は、ロゴ検出モデルNN1の構成の例を示す概略図である。(B)は、ロゴ検出モデルNN1の動作の概要を示す概略図である。
【
図4】第1種データセットDS1の生成処理の例を示すフローチャートである。
【
図5】(A)は、ロゴ画像の例を示す説明図である。(B)は、色値の分布範囲の例を示すヒストグラムである。(C)は、分割された部分領域を示す説明図である。(D)は、追加調整処理によって生成される色変更ロゴ画像の例を示す説明図である。
【
図6】(A)-(H)は、候補画像の例を示す概略図である。
【
図7】ロゴ検出モデルNN1のトレーニング処理の例を示すフローチャートである。
【
図8】(A)は、シート検出モデルNN2の構成の例を示す概略図である。(B)は、シート検出モデルNN2の動作の概要を示す説明図である。
【
図9】第2種データセットDS2の生成処理の例を示すフローチャートである。
【
図10】(A)は、対象画像の例を示す説明図である。(B)は、ロゴ領域の例を示す説明図である。(C)は、複数のブロックの例を示す説明図である。(D)は、均一ブロックの例を示す説明図である。(E)は、拡張領域の候補の例を示す説明図である。
【
図11】拡張領域の候補を決定する処理の例を示すフローチャートである。
【
図12】(A)は、UI画面の例を示す説明図である。(B)は、変更された輪郭LAeoの例を示す説明図である。(C)は、UI画面の例を示す説明図である。
【
図13】シート検出モデルNN2のトレーニング処理の例を示すフローチャートである。
【発明を実施するための形態】
【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と、ロゴ検出モデルNN1と、ロゴ検出モデルNN1のトレーニングのための第1種データセットDS1と、シート検出モデルNN2と、シート検出モデルNN2のトレーニングのための第2種データセットDS2と、を格納している。モデルNN1、NN2は、いわゆる機械学習モデルであり、本実施例では、プログラムモジュールである。プログラム231-234と、モデルNN1、NN2と、データセットDS1、DS2と、の詳細については、後述する。
【0013】
表示部240は、液晶ディスプレイ、有機ELディスプレイなどの、画像を表示するように構成された装置である。操作部250は、ボタン、レバー、表示部240上に重ねて配置されたタッチパネルなどの、ユーザによる操作を受け取るように構成された装置である。ユーザは、操作部250を操作することによって、種々の要求と指示を情報処理装置200に入力可能である。通信インタフェース270は、他の装置と通信するためのインタフェースである(例えば、USBインタフェース、有線LANインタフェース、IEEE802.11の無線インタフェース)。通信インタフェース270には、デジタルカメラ100が接続されている。デジタルカメラ100は、検査の対象物DVを撮影することによって、撮影画像の画像データを生成する。以下、対象物DVがプリンタであることとする(対象物DVを、プリンタDVとも呼ぶ)。
【0014】
A2.撮影画像:
図2(A)、
図2(B)は、撮影画像の例を示す概略図である。
図2(A)の第1撮影画像700xは、不具合の無い第1プリンタDVxを示している。第1プリンタDVxには、ラベルシート910L(単に、シート910Lとも呼ぶ)が貼られている。第1撮影画像700xは、シート910Lの画像を含んでいる。
図2(B)の第2撮影画像700yは、不具合を有する第2プリンタDVyを示している。第2プリンタDVyには、シート910Lが貼られておらず、第2撮影画像700yは、シート910Lの画像を含んでいない。以下、適切なラベルシートがプリンタに貼られているか否かが、検査されることとする。
【0015】
本実施例では、シート910Lは、ロゴ画像910を含んでいる。ロゴ画像910は、文字列「SAMPLE」を示している。また、シート910Lは、ロゴ画像910の領域に加えて、他の領域(例えば、他の文字列の画像を示す領域)を含んでいる。なお、ロゴは、文字列に限らず、図形、マーク、シンボルなど、種々の画像であってよい。また、シート910Lは、文字列に限らず、種々の種類の要素(例えば、図形、模様、写真など)を用いて構成されてよい。
【0016】
シート検出モデルNN2(
図1)は、撮影画像を示す画像データである撮影画像データを用いてプリンタの撮影画像からラベルシート(例えば、シート910L)の画像を検出する機械学習モデルである。ラベルシートの画像が検出される場合、プリンタの検査結果は合格である。ラベルシートの画像が検出されない場合、プリンタの検査結果は不合格である。
【0017】
シート検出モデルNN2のトレーニングには、シートの画像を含む種々の画像の画像データが用いられる。トレーニングに用いられるデータ(ここでは、画像データ)には、種々の情報が関連付けられる。データに情報を関連付ける処理は、アノテーション、または、ラベリングとも呼ばれる。以下、アノテーションによって関連付けられる情報を、アノテーション情報とも呼ぶ。本実施例では、アノテーション情報は、検出すべきシートを示す領域を特定する領域情報を含んでいる。例えば、
図2(A)の第1撮影画像700xの画像データがトレーニングに用いられる場合、アノテーション情報は、シート910Lを囲む枠Fxを示す領域情報を含んでいる。
【0018】
アノテーション情報は、通常は、作業者によって決定される。例えば、作業者は、第1撮影画像700xを観察することによって、シート910Lを囲む枠Fxを決定する。また、トレーニングには、種々の画像データが用いられる。例えば、複数の画像データの間で、シートの位置やシートの色やシートの大きさなど、シートの表示態様が異なり得る。種々の画像データのそれぞれの適切なアノテーション情報を決定することは、作業者にとって容易ではない。例えば、作業者は、シート910Lの一部分のみを囲む不適切な枠を決定し得る。そこで、本実施例では、情報処理装置200(
図1)は、ロゴ検出モデルNN1を用いて、トレーニング用の画像からロゴ画像(例えば、ロゴ画像910)を検出する。そして、情報処理装置200は、ロゴ画像を示す領域であるロゴ領域と、ロゴ領域の外側の部分と、を含む拡張領域を決定する。拡張領域は、シート(例えば、シート910L)を適切に示し得る。そして、情報処理装置200は、拡張領域を示す領域情報を含むアノテーション情報を、画像データに関連付ける。以下、ロゴ検出モデルNN1、シート検出モデルNN2の順に、説明を行う。
【0019】
A3.ロゴ検出モデルNN1の構成:
図3(A)は、ロゴ検出モデルNN1の構成の例を示す概略図である。本実施例では、ロゴ検出モデルNN1は、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モデルは、畳込ニューラルネットワークを用いて、バウンディングボックスと呼ばれるオブジェクトを含む枠と、ボックスがオブジェクトを含むことの確信度と、ボックスがオブジェクトを含む場合のオブジェクトの種類毎の確率(クラス確率とも呼ぶ)と、を予測する。
【0020】
図3(A)に示すように、ロゴ検出モデルNN1は、m個(mは1以上の整数)の畳込層CV11-CV1mと、畳込層CV11-CV1mに続くn個(nは1以上の整数)の全結合層CN11-CN1nと、を有している(mは、例えば、24。nは、例えば、2)。m個の畳込層CV11-CV1mのうちの1以上の畳込層の直後には、プーリング層が設けられる。
【0021】
畳込層CV11-CV1mは、入力されるデータに対して、畳込処理とバイアスの加算処理とを含む処理を実行する。畳込処理は、入力されたデータに対して、(p×q×r)次元のs個のフィルタを順次に適用し、入力されたデータとフィルタとの相関を示す相関値を算出する処理である(p、q、r、sは、1以上の整数)。各フィルタを適用する処理では、フィルタをスライドさせながら複数個の相関値が順次に算出される。1個のフィルタは、(p×q×r)個の重みを含んでいる。バイアスの加算処理は、算出された相関値に、バイアスを加算する処理である。バイアスは、1個のフィルタに対して1個ずつ準備されている。フィルタの次元(p×q×r)とフィルタの数sとは、通常は、m個の畳込層CV11-CV1mの間で異なっている。畳込層CV11-CV1mは、複数のフィルタの複数の重みと複数のバイアスとを含むパラメータセットを、それぞれ有している。
【0022】
プーリング層は、直前の畳込層から入力されたデータに対して、データの次元数を削減する処理を実行する。プーリングの処理としては、平均プーリング、最大プーリングなど、種々の処理を利用可能である。本実施例では、プーリング層は、最大プーリングを行う。最大プーリングは、所定サイズ(例えば、2×2)のウィンドウを所定のストライド(例えば、2)でスライドさせつつ、ウィンドウ内の最大値を選択することによって次元数を削減する。
【0023】
全結合層CN11-CN1nは、直前の層から入力されたf次元のデータ(すなわち、f個の値。fは2以上の整数)を用いて、g次元のデータ(すなわち、g個の値。gは2以上の整数)を出力する。出力されるg個の値のそれぞれは、入力されるf個の値で構成されるベクトルとf個の重みで構成されるベクトルとの内積に、バイアスを加えた値(内積+バイアス)である。畳込層CV11-CV1mは、(f×g)個の重みとg個のバイアスとを用いて、g次元のデータを出力する。なお、入力データの次元数fと出力データの次元数gとは、通常は、n個の全結合層CN11-CN1nの間で異なっている。全結合層CN11-CN1nは、複数の重みと複数のバイアスとを含むパラメータセットを、それぞれ有している。
【0024】
なお、畳込層CV11-CV1mと全結合層CN11-CN1nとのそれぞれによって生成されるデータは、活性化関数に入力されて変換される。活性化関数としては、種々の関数を利用可能である。本実施例では、最後の層(ここでは、全結合層CN1n)には、線形活性化関数(linear activation function)が用いられ、他の層には、漏洩正規化線形ユニット(Leaky Rectified Linear Unit:LReLU)が用いられる。
【0025】
図3(B)は、ロゴ検出モデルNN1の動作の概要を示す概略図である。画像800は、ロゴ検出モデルNN1に入力される入力画像の例である。入力画像800は、第1方向Dxと、第1方向Dxに垂直な第2方向Dyと、に沿ってマトリクス状に並ぶ複数の画素のそれぞれの色値によって、表されている。本実施例では、色値は、R(赤)、G(緑)、B(青)の3個の成分値で表されている。
図3(B)の例では、入力画像800は、2種類のロゴ画像910、920を示している。本実施例では、第1ロゴ画像910は、「SAMPLE」の文字列の画像である。第2ロゴ画像920は、第1ロゴ画像910とは異なる別のロゴ画像であり、「SAMPLE2」の文字列の画像である。
【0026】
ロゴ検出モデルNN1は、入力画像800を、S×Sのグリッドセル801(単にセル801とも呼ぶ)に分割する(Sは2以上の整数。Sは、例えば、5)。ロゴ画像910、920のそれぞれの中心は、いずれかのセル801に含まれる。ロゴ画像910、920(より一般的には、オブジェクト)の検出結果は、オブジェクト領域の中心を含むセル801に対応付けられた予測値によって、示される(詳細は、後述)。
【0027】
各セル801には、Bn個の矩形のバウンディングボックスが対応付けられる(Bnは1以上の整数。Bnは、例えば、2)。
図3(B)の中段の右部は、バウンディングボックスの例として、第1ロゴ画像910に関連する複数の第1種バウンディングボックスBB1cと、第2ロゴ画像920に関連する複数の第2種バウンディングボックスBB2cと、を示している。各バウンディングボックスには、以下の5個の予測値が対応付けられる。すなわち、セル801に対する第1方向Dxの中心位置x、セル801に対する第2方向Dyの中心位置y、第1方向Dxの幅w、第2方向Dyの高さh、確信度。セル801にオブジェクト領域の中心が含まれない場合には、そのセル801に対応付けられたバウンディングボックスの確信度は、ゼロであることが期待される。セル801にオブジェクト領域の中心が含まれる場合、そのセル801に対応付けられたバウンディングボックスの確信度が高いことが期待される。具体的には、確信度は、バウンディングボックスの領域とオブジェクト領域との間のIOU(Intersection over Union)と同じであることが期待される。ここで、IOUは、2個の領域の共通部分の面積を、2個の領域の和集合の領域の面積で除算して得られる比率である。このような確信度は、バウンディングボックスとオブジェクト領域との間の一致の程度を示している。なお、確信度は、オブジェクトの種類とは独立に算出される。
【0028】
ここで、ロゴ検出モデルNN1は、C種類のロゴ画像を検出することとする(Cは1以上の整数。Cは、例えば、3)。ロゴ画像の種類を、クラス、または、ロゴクラスとも呼ぶ。各セル801には、さらに、C個のクラス確率が対応付けられる。C個のクラス確率は、オブジェクト(ここでは、ロゴ画像)のC個の種類にそれぞれ対応している。クラス確率は、セル801にオブジェクト領域の中心が含まれるという条件下での確率であり、オブジェクトの種類毎の確率を示している。1個のセル801に対応付けられるバウンディングボックスの総数Bnに拘らず、1個のセル801にはC個のクラス確率が対応付けられる。
図3(B)の中段の左部は、クラス確率マップを示している。クラス確率マップは、セル801毎に特定されるクラス識別子であって、最高クラス確率に対応するクラス識別子を示している。図示するように、第1ロゴ画像910に近いセル801では、第1ロゴ画像910の種類である「1」のクラス識別子の確率が高い。第2ロゴ画像920に近いセル801では、第2ロゴ画像920の種類である「2」のクラス識別子の確率が高い。図中の右部の複数の第1種バウンディングボックスBB1cは、クラス確率マップ上で「1」のクラス識別子を示すセル801に対応付けられたバウンディングボックスである。複数の第2種バウンディングボックスBB2cは、クラス確率マップ上で「2」のクラス識別子を示すセル801に対応付けられたバウンディングボックスである。
【0029】
ロゴ検出モデルNN1(
図3(A))は、S×S×(Bn×5+C)個の予測値を示す出力データ830を出力する。S×S×Bn個のバウンディングボックスのうち、閾値以上の確信度を有するバウンディングボックスが、検出されたオブジェクト(ここでは、ロゴ画像)を示すボックス(オブジェクトボックスと呼ぶ)として採用される。また、オブジェクトボックスに対応するC個のクラス確率のうちの最高クラス確率に対応するクラス識別子が、オブジェクトボックスに対応付けられたクラス識別子として採用される。なお、
図3(B)の中段の右部に示されるように、1個のロゴ画像に重なる複数のバウンディングボックスが、オブジェクトボックスの候補であり得る。互いに重なる複数のバウンディングボックスから1個のバウンディングボックスを選択するために、「Non-maximal suppression」と呼ばれる処理が行われてよい。この処理は、2個のボックスの間のIOUが基準以上である場合に、1個のボックス(例えば、より低い確信度を有するボックス)を削除する処理である。この処理を繰り返すことにより、1個のロゴ画像に対応する1個のオブジェクトボックスが検出される。例えば、
図3(B)の下段に示すように、第1ロゴ画像910を示す第1オブジェクトボックスBB1(クラス識別子CL1=1)と、第2ロゴ画像920を示す第2オブジェクトボックスBB2(クラス識別子CL2=2)と、が検出される。
【0030】
A4.第1種データセットDS1の生成処理:
図4は、ロゴ検出モデルNN1のトレーニング用の第1種データセットDS1の生成処理の例を示すフローチャートである。プロセッサ210(
図1)は、第1プログラム231に従って、
図4の処理を実行する。
【0031】
S110では、プロセッサ210は、ロゴ画像の画像データであるロゴ画像データを取得する。本実施例では、ロゴ画像データは、RGBのビットマップデータであり、不揮発性記憶装置230に予め格納されている(図示省略)。
図5(A)は、ロゴ画像の例を示す説明図である。図中には、第1ロゴ画像910が示されている。第1ロゴ画像910は、文字領域911と、背景領域912と、を含んでいる。文字領域911の複数の画素は、おおよそ同じ色を有し、背景領域912の複数の画素は、おおよそ同じ色を有している。なお、ロゴ画像データは、画像編集アプリケーションプログラムを用いて生成されたデータであってよい。これに代えて、ロゴ画像データは、ロゴの見本をスキャナ(図示せず)によって読み取ることによって生成されたデータであってよい。なお、本実施例では、プロセッサ210は、第1ロゴ画像910のデータと、第2ロゴ画像920(
図3(B))のデータと、図示しない第3ロゴ画像のデータと、を含む複数のロゴ画像のデータを取得する。図示を省略するが、第2ロゴ画像920と第3ロゴ画像とも、第1ロゴ画像910と同様に、複数の文字を示す文字領域と、背景領域と、を含んでいる。
【0032】
S115(
図4)では、プロセッサ210は、ロゴ画像の複数の画素の色値をクラスタリングする。これにより、ロゴ画像の色値の分布範囲は、T個(Tは2以上の整数)の部分色範囲に区分される。
【0033】
図5(B)は、色値の分布範囲の例を示すヒストグラムである。横軸は、輝度値Bvを示している。輝度値Bvの範囲は、複数の区間に区分されている。縦軸は各区間の画素数を示している。このヒストグラムは、第1ロゴ画像910(
図5(A))の輝度値Bvの分布を示している。明るい第1部分色範囲R1は、文字領域911における輝度値Bvの分布範囲を示し、暗い第2部分色範囲R2は、背景領域912における輝度値Bvの分布範囲を示している。プロセッサ210は、複数の画素のそれぞれのRGBの色値から輝度値Bvを算出し、輝度値Bvのヒストグラムを生成する。そして、プロセッサ210は、1以上の画素数を有する複数の区間が連続する場合に、連続する複数の区間によって示される範囲を1個のクラスタ(すなわち、部分色範囲)として特定する。
図5(B)の例では、2個の部分色範囲R1、R2が特定される。
【0034】
S120(
図4)では、プロセッサ210は、ロゴ画像を、T個の部分色範囲に対応するT種類の部分領域に分割する。
図5(C)は、分割された部分領域を示す説明図である。
図5(C)の左部に示されるように、ロゴ画像910は、第1種領域A1と第2種領域A2に分割される。第1種領域A1は、第1部分色範囲R1、すなわち、文字領域911に対応し、第2種領域A2は、第2部分色範囲R2、すなわち、背景領域912に対応している。なお、1個の部分色範囲に対応する1種類の部分領域は、第1種領域A1のように、互いに離れた複数の領域を含んでよい。図示を省略するが、他のロゴ画像も、同様に、S115、S120によって、複数の領域に分割される。
【0035】
S115、S120により、ロゴ画像は、似た色を有するT種類の部分領域に分割される。色値の分布範囲をT個の部分色範囲に区分する方法は、似た色を有する複数の画素を1つの部分色範囲に対応付ける種々の方法であってよい。例えば、ヒストグラムの谷に対応する輝度値Bvで、輝度値Bvの範囲が分割されてよい。また、輝度値Bvに限らず、種々の色成分(例えば、色相、彩度など)を用いて、色値の分布範囲がT個の部分色範囲に区分されてよい。また、k平均法など、種々のクラスタリングのアルゴリズムが用いられてよい。なお、部分色範囲の総数T(すなわち、部分領域の種類数T)は、ロゴ画像毎に決定される。これに代えて、Tは、予め決められてもよい。
【0036】
S125では、プロセッサ210は、1種類以上の部分領域の色をランダムに変更する調整処理を行うことによって、K個(Kは、1以上の整数)の色変更ロゴ画像データを生成する。
図5(C)の右部には、第1ロゴ画像910から生成される色変更ロゴ画像の例として、3個の色変更ロゴ画像910a、910b、910cが示されている。色変更ロゴ画像910a、910b、910cと元のロゴ画像910との間では、第1種領域A1と第2種領域A2とのうちのいずれか1つの色、または、両方の色が、異なっている。図示を省略するが、プロセッサ210は、他のロゴ画像からも、色変更ロゴ画像を生成する。
【0037】
なお、本実施例では、プロセッサ210は、1種類の部分領域の全体の色を、ランダムに決定された同じ色に変更する。例えば、第1種領域A1の色が変更される場合、第1種領域A1に含まれる複数の文字の全ての色が、同じ色に変更される。
【0038】
変更後の色は、変更前の色に近い色であってよい。例えば、RGBのそれぞれの色値が、ゼロ以上、255以下の範囲の値で表される場合に、色変更の処理は、各色成分の色値に、-100以上、+100以下の範囲の乱数値を加算する処理であってよい。
【0039】
また、プロセッサ210は、生成すべき色変更ロゴ画像データの総数を、ロゴ画像毎にランダムに決定する。これに代えて、生成すべき色変更ロゴ画像データの総数は、ロゴ画像毎に予め決められてよい。
【0040】
S130では、プロセッサ210は、色変更ロゴ画像データの追加調整処理を実行する。追加調整処理は、サイズ変更処理と、縦横比変更処理と、のうちのいずれか1つ、または、両方を含んでいる。サイズ変更処理は、拡大処理と縮小処理とのいずれかであってよい。
図5(D)は、追加調整処理によって生成される色変更ロゴ画像の例を示す説明図である。図中には、色変更ロゴ画像910aから生成された2個の色変更ロゴ画像910a1、910a2が示されている。第1色変更ロゴ画像910a1は、サイズ変更処理(ここでは、縮小処理)によって生成された画像である。第2色変更ロゴ画像910a2は、縦横比変更処理によって生成された画像である。なお、プロセッサ210は、他のロゴ画像から生成された色変更ロゴ画像にも、追加調整処理を行う。なお、プロセッサ210は、追加調整処理を実行するか否かと、追加調整処理の対象の色変更ロゴ画像と、追加調整処理の内容とを、ランダムに決定する。
【0041】
S135では、プロセッサ210は、背景画像データを取得する。背景画像データは、ロゴ画像を配置すべき背景画像を示す画像データである。本実施例では、プロセッサ210は、予め準備された複数の背景画像データ(図示省略)から、ランダムに、処理対象の背景画像データを取得する。複数の背景画像データは、記憶装置215(例えば、不揮発性記憶装置230)に予め格納されている(図示省略)。複数の背景画像データは、単色のベタ画像を示す背景画像のデータと、写真の背景画像のデータと、を含んでいる。単色のベタ画像は、同じ色を有する複数の画素で構成される画像である。本実施例では、いずれの背景画像も、第1方向Dxに平行な2辺と第2方向Dyに平行な2辺とで囲まれる矩形状の画像である。
【0042】
S140では、プロセッサ210は、背景画像上にL個(Lは1以上の整数)のロゴ画像を配置することによって、候補画像データを生成する。プロセッサ210は、S110で取得されたロゴ画像と、S125で生成された色変更ロゴ画像と、S130で生成された色変更ロゴ画像と、を含む複数のロゴ画像から、L個のロゴ画像を選択する。プロセッサ210は、各ロゴ画像の背景画像上の位置を、ランダムに決定する。これに代えて、プロセッサ210は、背景画像上の予め決められた位置にロゴ画像を配置してよい。いずれの場合も、プロセッサ210は、複数のロゴ画像が互いに重ならないように、各ロゴ画像の位置を決定する。ロゴ画像の総数Lは、1以上、背景画像上に配置可能なロゴ画像の最大数以下、の範囲内の値に決定される。例えば、プロセッサ210は、ランダムにLを決定し、ランダムにL個のロゴ画像を選択する。
【0043】
図6(A)-
図6(H)は、候補画像の例を示す概略図である。
図6(A)-
図6(C)の3個の候補画像800a-800cは、背景画像800az、800bz、800czと、背景画像800az、800bz、800cz上に配置された4個のロゴ画像と、を含んでいる。これらの候補画像800a-800cの主な特徴は、以下の通りである。
(I1)候補画像800a:背景画像800azが、単色のベタ画像である。
(I2)候補画像800b:背景画像800bzが、写真の画像である。
(I3)候補画像800c:第1ロゴ画像910から得られるロゴ画像910、910cと、第2ロゴ画像920から得られるロゴ画像920a、920bと、を含んでいる。
なお、
図6(C)のロゴ画像920a、920bが示すように、第2ロゴ画像920は、第1種領域A21と第2種領域A22とに分割されている。ロゴ画像920aは、第2ロゴ画像920の色変更によって生成された画像である。ロゴ画像920bは、第2ロゴ画像920の色変更と縮小処理とによって生成された画像である。
【0044】
S145(
図4)では、プロセッサ210は、候補画像データの画像処理を行うことによって、新たな候補画像データを生成する。この画像処理は、以下の7個の処理P1-P7からなる群から選択される1以上の処理を含んでいる。
(P1)候補画像の上下を反転させる上下反転処理
(P2)候補画像の左右を反転させる左右反転処理
(P3)候補画像を回転させる回転処理
(P4)候補画像内の色変更対象物画像を示す領域を変更せずに、色変更対象物画像のうちの領域内に示される部分を平行移動させるシフト処理
(P5)候補画像をぼかすぼかし処理
(P6)候補画像にノイズを付加するノイズ付加処理
(P7)候補画像の色を調整する色調整処理
【0045】
図6(D)-
図6(H)の5個の候補画像800d-800hは、S145の画像処理によって生成される候補画像の例である。
図6(F)の候補画像800fは、背景画像800fzと、背景画像800fz上に配置された2個のロゴ画像910、910bと、を含んでいる。他の候補画像800d、800e、800g、800hは、背景画像800dz、800ez、800gz、800hzと、背景画像上に配置された4個のロゴ画像と、を含んでいる。これらの候補画像800d-800hの主な特徴は、以下の通りである。
(I4)候補画像800d:背景画像800dzが単色のベタ画像であり、左右反転処理が行われており、ロゴ画像910sはシフト処理によって生成されている。
(I5)候補画像800e:背景画像800ezが写真の画像であり、上下反転処理が行われている。
(I6)候補画像800f:回転処理と、ノイズNZを付加するノイズ付加処理と、が行われている。
(I7)候補画像800g:ぼかし処理が行われている。
(I8)候補画像800h:色調整処理が行われている。
【0046】
本実施例では、第1方向Dx(
図6(D))が右方向を示している。従って、左右反転処理は、第1方向Dxの位置を反転させる。また、第2方向Dy(
図6(E))が下方向を示している。従って、上下反転処理は、第2方向Dyの位置を反転させる。
【0047】
シフト処理(
図6(D))は、ロゴ画像910sの元の領域内で、元のロゴ画像を左に平行移動させている。移動後のロゴ画像のうちロゴ画像910sの元の領域の外にはみ出た部分は、削除されている。例えば、第1種領域A1の左側の一部は、削除されている。また、ロゴ画像910sの元の領域のうち、元のロゴ画像の平行移動により生じる空白部分910vの色は、背景領域を示す第2種領域A2の色と同じ色に設定されている。なお、プロセッサ210は、シフト処理による移動方向と移動量とを、ランダムに決定する。
【0048】
回転処理(
図6(F))は、候補画像800fの元の領域内で、元の候補画像を反時計回りに回転させている。回転後の候補画像のうち候補画像800fの元の領域の外にはみ出た部分は、削除されている。また、候補画像800fの元の領域のうち、元の候補画像の回転により生じる空白部分800fvには、背景画像800fzの一部のコピーが割り当てられている。なお、プロセッサ210は、回転の中心と回転方向と回転角度とを、ランダムに決定する。
【0049】
ノイズ付加処理(
図6(F))は、候補画像800fの複数の画素からランダムに複数の対象画素を選択し、複数の対象画素のそれぞれの色値に乱数値を加算する。なお、ノイズ付加処理は、他の種々の処理であってよい。例えば、候補画像の全ての画素に、乱数値が加算されてよい。また、予め準備されたノイズ画像が、候補画像に重ねられてよい。
【0050】
ぼかし処理(
図6(G))は、平滑化処理とも呼ばれる。本実施例では、ぼかし処理は、平均値フィルタを用いる処理であり、候補画像800gの全体が、処理される。なお、ぼかし処理は、色値を平滑化する種々の処理であってよい(例えば、中央値フィルタ、ガウシアンフィルタなどの他の平滑化フィルタが用いられてよい)。
【0051】
色調整処理(
図6(H))は、本実施例では、輝度値を低下させるガンマ補正処理であり、候補画像800hの全体が、処理される。なお、色調整処理は、候補画像の色を調整する任意の処理であってよい(例えば、輝度値を高めるガンマ補正処理、コントラスト強調処理、彩度調整処理、ホワイトバランス調整処理、など)。
【0052】
なお、プロセッサ210は、S145の画像処理を実行するか否かと、画像処理の対象の候補画像と、画像処理の内容とを、ランダムに決定する。例えば、実行すべき処理は、7個の処理P1-P7からランダムに選択される。
【0053】
S150(
図4)では、プロセッサ210は、S140で生成された候補画像データと、S145で生成された候補画像データと、を含む複数の候補画像データから、第1種データセットDS1(
図1)に含まれるべきZ個(Zは、1以上の整数)の第1種学習画像データD11をランダムに選択する(数Zもランダムに決定される)。そして、プロセッサ210は、Z個の第1種学習画像データD11に対応するZ個のラベルデータD12を生成する。本実施例では、ラベルデータD12は、ロゴ検出モデルNN1(
図3(A))の出力データ830の目標値(すなわち、正解)を定めるデータである。このようなラベルデータD12は、教師データとも呼ばれる。具体的には、ラベルデータD12は、候補画像中のロゴ画像の領域を示す領域情報D121と、ロゴ画像の種類を示すロゴクラスD122と、を示している。領域情報D121は、候補画像内の領域の中心位置(具体的には、第1方向Dxの位置と第2方向Dyの位置)と、第1方向Dxの幅と、第2方向Dyの高さと、を示している。また、本実施例では、ロゴ画像は、C個のクラスに分類される。ロゴクラスD122は、C個のクラスのうちのいずれか1つを示している。
【0054】
プロセッサ210は、S125-S145の処理の内容に基づいて、候補画像内のL個のロゴ画像のそれぞれの領域情報D121とロゴクラスD122との組み合わせを特定する。領域情報D121は、ロゴ画像の全体を含む最小矩形を示すように、決定される。そして、プロセッサ210は、候補画像がL個のロゴ画像を含む場合に、領域情報D121とロゴクラスD122とのL個の組み合わせを示すラベルデータD12を生成する。
【0055】
S155では、プロセッサ210は、第1種学習画像データD11(
図1)とラベルデータD12とを関連付けて、記憶装置215(例えば、不揮発性記憶装置230)に格納する。以下、互いに関連付けられた第1種学習画像データD11とラベルデータD12との全体を、第1種ラベル付データLD1とも呼ぶ。第1種データセットDS1は、複数の第1種ラベル付データLD1を含んでいる。なお、プロセッサ210は、ラベル付データLD1を、情報処理装置200に接続された外部記憶装置(図示せず)に格納してもよい。
【0056】
S160では、プロセッサ210は、予め決められた数の第1種学習画像データD11(すなわち、第1種ラベル付データLD1)を生成したか否かを判断する。ロゴ検出モデルNN1の適切なトレーニングのためには、第1種データセットDS1に含まれるC個のラベル画像のそれぞれの総数が、大きい基準値(例えば、1000)以上に設定される。C個のラベル画像のいずれかの総数が基準値未満である場合(S160:No)、プロセッサ210は、S125へ移行し、新たなラベル付データLD1を生成する。C個のラベル画像のそれぞれの総数が基準値以上である場合(S160:Yes)、プロセッサ210は、
図4の処理を終了する。生成された複数のラベル付データLD1は、
図6(A)-
図6(H)で説明したような種々の画像を示している。第1種データセットDS1は、このような複数の第1種ラベル付データLD1を含んでいる。なお、情報処理装置200は、複数の第1種学習画像データD11を生成するシステムの例である。
【0057】
A5.ロゴ検出モデルNN1のトレーニング処理:
図7は、ロゴ検出モデルNN1(
図3(A))のトレーニング処理の例を示すフローチャートである。ロゴ検出モデルNN1は、出力データ830が入力画像800中のロゴ画像の適切な領域情報と適切なロゴクラスとを示すように、トレーニングされる。トレーニングによって、ロゴ検出モデルNN1の演算に用いられる複数の演算パラメータ(複数の層CV11-CV1m、CN11-CN1nのそれぞれの演算に用いられる複数の演算パラメータを含む)が、調整される。なお、プロセッサ210は、第2プログラム232に従って、
図7の処理を行う。
【0058】
S210では、プロセッサ210は、不揮発性記憶装置230から第1種データセットDS1を取得する。S220では、プロセッサ210は、第1種データセットDS1の複数のラベル付データLD1を、学習用データセットと確認用データセットとに分割する。例えば、プロセッサ210は、ランダムに選択した70%のラベル付データLD1を、学習用データセットとして採用し、残りの30%のラベル付データLD1を、確認用データセットとして採用する。以下、学習用データセットのラベル付データLD1の総数がNt個であり、確認用データセットのラベル付データLD1の総数がNv個であることとする(Nt、Nvは、いずれも、2以上の整数)。
【0059】
S230では、プロセッサ210は、ロゴ検出モデルNN1の複数の演算パラメータを初期化する。例えば、各演算パラメータは、乱数値に設定される。
【0060】
S240では、プロセッサ210は、学習用データセットを用いて、学習ロスを算出する。具体的には、プロセッサ210は、Nt個の第1種学習画像データD11をロゴ検出モデルNN1に入力し、Nt個の出力データ830を生成する。そして、プロセッサ210は、Nt個の出力データ830と、Nt個の第1種学習画像データD11に対応付けられたNt個のラベルデータD12と、を用いて、学習ロスを算出する。
【0061】
学習ロスの算出には、損失関数が用いられる。損失関数は、出力データ830とラベルデータD12との間の差の評価値を算出する種々の関数であってよい。本実施例では、YOLOの上記の論文に開示されている損失関数が用いられる。この損失関数は、以下の5個の成分を含んでいる。すなわち、損失関数は、領域情報D121の領域を示すべきバウンディングボックスに関して、中心位置の差と、大きさ(すなわち、幅と高さ)の差と、確信度の差と、のそれぞれに対応する3個の成分を含んでいる。領域情報D121の領域を示すべきバウンディングボックスは、領域情報D121の中心位置を含むセル801(
図3(B))に対応付けられたBn個のバウンディングボックスのうち、領域情報D121の領域とバウンディングボックスの領域との間の最も高いIOUを有するバウンディングボックスである。また、この損失関数は、領域情報D121の領域に対応すべきでないバウンディングボックスに関して、バウンディングボックスの確信度と、理想の確信度(具体的には、ゼロ)と、の間の差に対応する成分を含んでいる。また、この損失関数は、領域情報D121の中心位置を含むセルに関して、C個のクラス確率とC個の正解のクラス確率との間の差に対応する成分を含んでいる。プロセッサ210は、損失関数を用いて算出されるNt個の損失の合計値を、学習ロスとして算出する。なお、学習ロスは、Nt個の損失の平均値や中央値など、Nt個の損失と相関を有する種々の値であってよい。
【0062】
S250では、プロセッサ210は、学習ロスを用いて、ロゴ検出モデルNN1の複数の演算パラメータを更新する。具体的には、プロセッサ210は、学習ロスが小さくなるように、所定のアルゴリズムに従って演算パラメータを調整する。所定のアルゴリズムとしては、例えば、誤差逆伝播法と勾配降下法とを用いたアルゴリズムが用いられる。
【0063】
S260では、プロセッサ210は、確認用データセットを用いて、確認ロスを算出する。確認ロスの算出方法は、学習用データセットの代わりに確認用データセットを用いる点を除いて、S240で説明した学習ロスの算出方法と同じである。具体的には、プロセッサ210は、確認用データセットのNv個の第1種学習画像データD11を、S250で更新された演算パラメータを有するロゴ検出モデルNN1に入力し、Nv個の出力データ830を生成する。そして、プロセッサ210は、Nv個の出力データ830と、Nv個の第1種学習画像データD11に対応付けられたNv個のラベルデータD12と、を用いて、確認ロスを算出する。
【0064】
S270では、プロセッサ210は、トレーニングが完了したか否かを判断する。トレーニング完了の条件は、種々の条件であってよい。本実施例では、トレーニング完了の条件は、学習ロスと確認ロスとの両方が、所定の基準値以下であることである。なお、トレーニング完了の条件は、学習ロスと確認ロスとの両方が小さいことを示す種々の条件であってよい。例えば、学習ロスの基準値は、確認ロスの基準と異なっていてよい。
【0065】
トレーニングが完了していない場合(S270:No)、プロセッサ210は、S240へ移行して、トレーニングを継続する。トレーニングが完了した場合(S270:Yes)、S280で、プロセッサ210は、調整済の演算パラメータを含むロゴ検出モデルNN1を、トレーニング済モデルとして、記憶装置215(ここでは、不揮発性記憶装置230)に格納する。そして、プロセッサ210は、
図7の処理を終了する。なお、プロセッサ210は、ロゴ検出モデルNN1を、情報処理装置200に接続された外部記憶装置(図示せず)に格納してもよい。
【0066】
トレーニングされたロゴ検出モデルNN1からの出力データ830は、以下の特徴を有している。ロゴ画像の中心を含むセルは、ロゴ画像の領域を適切に示すとともに高い確信度と適切なクラス確率とを有するバウンディングボックスを示すことができる。また、出力データ830によって示される複数のバウンディングボックスは、ロゴ画像の領域を示していない不適切なバウンディングボックスを含み得る。不適切なバウンディングボックスには、低い確信度が対応付けられる。従って、高い確信度を有するバウンディングボックスを用いることによって、適切に、ロゴ画像を特定できる。
【0067】
以上のように、
図4の生成処理では、プロセッサ210は、対象物の例であるロゴを検出するためのロゴ検出モデルNN1のトレーニングに用いられる複数の第1種学習画像データD11を生成する。具体的には、S110では、プロセッサ210は、ロゴの画像であるロゴ画像のロゴ画像データを取得する。S115、S120では、プロセッサ210は、ロゴ画像の色の分布範囲を分割して得られるT個(Tは2以上の整数)の部分色範囲にそれぞれ対応するT種類の部分領域にロゴ画像を分割する。プロセッサ210は、1種類以上の部分領域のそれぞれの色を元の色とは異なる色に変更する処理(S125)を含む調整処理を実行する。これにより、プロセッサ210は、複数の色変更ロゴ画像の複数の色変更ロゴ画像データを生成する。ここで、複数の色変更ロゴ画像は、それぞれ、ロゴの画像である。また、複数の色変更ロゴ画像は、互いに異なる色の同じ種類の部分領域を有する。例えば、
図5(C)の色変更ロゴ画像910a、910bは、互いに異なる色の同じ第1種領域A1を有する。そして、プロセッサ210は、S135、S140で、候補画像の候補画像データを生成する。ここで、候補画像データは、学習画像データD11に対応しており、候補画像は、学習画像データD11の学習画像に対応している。また、プロセッサ210は、S125-S140の処理を複数回に亘って実行する。具体的には、プロセッサ210は、複数の色変更ロゴ画像データを生成する。そして、プロセッサ210は、1以上の背景画像データと、複数の色変更ロゴ画像データと、を用いることによって、複数の候補画像の複数の候補画像データを生成する。ここで、候補画像は、1以上の背景画像データのいずれかによって示される背景画像と、背景画像上に配置された1以上の色変更ロゴ画像とを含んでいる(
図6(A)-
図6(H))。複数の候補画像は、生成された複数の色変更ロゴ画像のうちの互いに異なる色変更ロゴ画像を含んでいる。例えば、候補画像800c(
図6(C))は、候補画像800f(
図6(F))には含まれない色変更ロゴ画像910cを含んでいる。一方、候補画像800fは、候補画像800cには含まれない色変更ロゴ画像910bを含んでいる。このように、プロセッサ210は、種々の色で表現されるロゴの画像を示す複数の学習画像データD11を生成できる。このような複数の学習画像データD11は、ロゴの画像を処理する機械学習モデル(例えば、ロゴ検出モデルNN1)を、適切にトレーニングできる。
【0068】
S135(
図4)、
図6(B)等で説明したように、1以上の背景画像データは、写真の背景画像800bzの背景画像データを含んでいる。従って、プロセッサ210は、写真の背景画像上のロゴの画像を示す複数の学習画像データD11を生成できる。このような複数の学習画像データD11は、写真の背景画像上のロゴの画像を適切に処理するように、機械学習モデル(例えば、ロゴ検出モデルNN1)をトレーニングできる。利用可能な複数の背景画像データは、互いに異なる写真を示す複数の背景画像データを含んでよい。複数の背景画像は、風景、人物、家具、文房具など、種々の写真を含んでよい。このような複数の学習画像データD11は、背景画像の内容に拘らずにロゴの画像を適切に処理するように、機械学習モデル(例えば、ロゴ検出モデルNN1)をトレーニングできる。
【0069】
S135(
図4)、
図6(A)等で説明したように、1以上の背景画像データは、単色のベタ画像を示す背景画像800azの背景画像データを含んでいる。従って、プロセッサ210は、単色のベタ画像を示す背景画像上のロゴの画像を示す複数の学習画像データを生成できる。このような複数の学習画像データD11は、単色のベタ画像を示す背景画像上のロゴの画像を適切に処理するように、機械学習モデル(例えば、ロゴ検出モデルNN1)をトレーニングできる。利用可能な複数の背景画像データは、互いに異なる色のベタ画像を示す複数の背景画像データを含んでよい。このような複数の学習画像データD11は、背景画像の色に拘らずにロゴの画像を適切に処理するように、機械学習モデル(例えば、ロゴ検出モデルNN1)をトレーニングできる。
【0070】
なお、写真の背景画像と単色のベタ画像を示す背景画像とのように、互いに異なる内容を示す複数種類の背景画像を有する複数種類の学習画像データD11が生成されることが好ましい。このような複数種類の学習画像データD11は、種々の背景画像上のロゴの画像を適切に処理するように、機械学習モデル(例えば、ロゴ検出モデルNN1)をトレーニングできる。
【0071】
また、プロセッサ210は、複数の色変更ロゴ画像データを生成するために、S125
(
図4)を含む画像の調整処理を実行する。
図4の実施例では、調整処理は、さらに、S130を含んでいる。S130は、色変更対象物画像のサイズを変更する処理と、色変更対象物画像の縦横比を変更する処理と、のうちのいずれか1つ、または、両方を含んでいる。従って、プロセッサ210は、サイズと縦横比のうちのいずれか1つ、または、両方が変更されたロゴの画像を示す学習画像データD11を生成できる。このような学習画像データD11は、サイズと縦横比のうちのいずれか1つ、または、両方が変更されたロゴの画像を適切に処理するように、機械学習モデル(例えば、ロゴ検出モデルNN1)をトレーニングできる。
【0072】
また、S140(
図4)、
図6(A)-
図6(H)で説明したように、学習画像データD11を生成する処理は、背景画像800azと、背景画像800az上に配置された複数の色変更ロゴ画像910b、910a2、910cと、を含む学習画像800aの学習画像データD11を生成する処理を含んでいる。1個の学習画像データD11が複数の色変更ロゴ画像を示す場合、1個の学習画像データD11が1個の色変更ロゴ画像を示す場合と比べて、ロゴ画像を検出する機械学習モデル(例えば、ロゴ検出モデルNN1)を、効率的にトレーニングできる。
【0073】
また、S140(
図4)、
図6(C)等で説明したように、学習画像データD11を生成する処理は、背景画像800czと、背景画像800cz上に配置された1以上の色変更ロゴ画像910cと、背景画像800cz上に配置された他のロゴの画像920a、920bと、を含む画像800cの学習画像データD11を生成する処理を含んでいる。1個の学習画像データD11がロゴの画像と他のロゴの画像とを示す場合、1個の学習画像データD11が同じロゴの画像のみを示す場合と比べて、ロゴ画像を検出する機械学習モデル(例えば、ロゴ検出モデルNN1)を、効率的にトレーニングできる。
【0074】
また、S140(
図4)、
図6(A)-
図6(H)で説明したように、プロセッサ210は、1個の学習画像上では、複数のロゴ画像を、互いに重ならないように配置する。従って、学習画像データD11は、ロゴ画像を検出する機械学習モデル(例えば、ロゴ検出モデルNN1)を、適切にトレーニングできる。
【0075】
また、S145(
図4)で説明したように、学習画像データD11を生成する処理は、背景画像と背景画像上に配置された1以上の色変更ロゴ画像とを含む候補画像の候補画像データに画像処理を行うことによって学習画像データD11を生成する処理を含んでいる。ここで、画像処理は、上記の7個の処理P1-P7からなる群から選択される1以上の処理を含んでいる。従って、プロセッサ210は、種々の形式で表現されるロゴを示す学習画像データD11を生成できる。このような学習画像データD11は、種々の形式で表現されるロゴの画像を適切に処理するように、機械学習モデル(例えば、ロゴ検出モデルNN1)をトレーニングできる。
【0076】
A6.シート検出モデルNN2の構成:
図8(A)は、シート検出モデルNN2の構成の例を示す概略図である。本実施例では、シート検出モデルNN2は、YOLOモデルであり、その構成は、ロゴ検出モデルNN1(
図3(A))の構成と同じである。シート検出モデルNN2は、p個(pは1以上の整数)の畳込層CV21-CV2pと、畳込層CV21-CV2pに続くq個(qは1以上の整数)の全結合層CN21-CN2qと、を有している(pは、例えば、24。qは、例えば、2)。p個の畳込層CV21-CV2pのうちの1以上の畳込層の直後には、プーリング層(例えば、マックスプーリングを行う層)が設けられる。なお、pは、
図3(A)のmと異なってよい。また、qは、
図3(A)のnと異なってよい。
【0077】
図8(B)は、シート検出モデルNN2の動作の概要を示す説明図である。画像700は、シート検出モデルNN2に入力される入力画像の例である。入力画像700は、
図2(A)、
図2(B)の撮影画像700x、700yと同様に、撮影されたプリンタDVの画像である。入力画像700は、第1方向Dxと、第1方向Dxに垂直な第2方向Dyと、に沿ってマトリクス状に並ぶ複数の画素のそれぞれの色値によって、表されている。本実施例では、色値は、R(赤)、G(緑)、B(青)の3個の成分値で表されている。
図8(B)の例では、入力画像700は、第1ロゴ画像910を含むシート910Lの画像を含んでいる。
【0078】
シート検出モデルNN2は、
図3(A)、
図3(B)のロゴ検出モデルNN1と同様に、オブジェクトの画像の領域を検出する。ロゴ検出モデルNN1との差異は、ロゴ画像に代えて、ラベルシートの画像を検出するようにシート検出モデルNN2がトレーニングされる点である。また、本実施例では、C種類のロゴ画像に対応するC種類のラベルシートが利用可能である。ラベルシートの種類とロゴ画像の種類とは、一対一に対応付けられている。そして、シート検出モデルNN2は、C種類のラベルシートの画像を検出する。以下、ラベルシートの種類を、シートクラスとも呼ぶ。
【0079】
図示を省略するが、シート検出モデルNN2は、
図3(B)のロゴ検出モデルNN1のアルゴリズムと同じアルゴリズムに従って、ラベルシートの画像を示すバウンディングボックスを検出する。
図8(B)の例では、シート910Lを示すバウンディングボックスBBLが検出されている。バウンディングボックスBBLには、クラス識別子CLLが対応付けられている。クラス識別子CLLは、C個のクラス確率のうちの最高クラス確率に対応するクラス識別子である。「1」のクラス識別子は、第1シート910Lを示している。
【0080】
シート検出モデルNN2は、S×S×(Bn×5+C)個の予測値を示す出力データ730を出力する。
図3(A)の出力データ830と同様に、出力データ730は、閾値以上の確信度を有するバウンディングボックスによって、オブジェクト(ここでは、ラベルシート)の画像の領域を示している。また、バウンディングボックスに対応するC個のクラス確率のうちの最高クラス確率に対応するクラス識別子が、バウンディングボックスに対応付けられたクラス識別子として採用される。
【0081】
A7.アノテーション処理(第2種データセットDS2の生成処理):
図9は、シート検出モデルNN2のトレーニングのための第2種データセットDS2(
図1)の生成処理の例を示すフローチャートである。第2種データセットDS2は、複数の第2種ラベル付データLD2を含んでいる。第2種ラベル付データLD2は、ラベルシートの画像を含む第2種学習画像データD21と、第2種学習画像データD21に関連付けられたラベルデータD22と、を含んでいる。ラベルデータD22は、
図4のS150、S155で説明したラベルデータD12と同様に、画像中のシート画像の領域を示す領域情報D221と、シート画像の種類を示すシートクラス情報D222と、を示している。後述するように、
図9の処理では、プロセッサ210は、領域情報D221とラベルデータD22とを示すラベルデータD22を第2種学習画像データD21に関連付ける処理を実行する(この処理は、アノテーション処理の例である)。プロセッサ210は、第3プログラム233に従って、
図9の処理を実行する。
【0082】
S310では、プロセッサ210は、処理対象の画像データである対象画像データを取得する。本実施例では、プロセッサ210は、予め準備された複数のシート画像データから、未処理のシート画像データを対象画像データとして取得する。複数のシート画像データは、予め記憶装置215(例えば、不揮発性記憶装置230)に格納されている(図示省略)。複数のシート画像データのそれぞれは、ラベルシートを含む画像を示している。上述したように、本実施例では、C種類のロゴ画像に対応するC種類のラベルシートが利用可能である。複数のシート画像データは、C種類のラベルシートを示すC種類のシート画像データを含んでいる。
図10(A)は、対象画像の例を示す説明図である。対象画像700aは、第1シート910Lの画像の領域と、背景領域700azと、を含んでいる。第1シート910Lの画像は、第1ロゴ画像910を含んでいる。
【0083】
本実施例では、シート画像データは、背景画像データによって示される単色のベタ画像を示す背景画像上にシートの画像を配置することによって生成されている。プリンタの実際の撮影画像上では、背景領域は、プリンタの外面を示している。本実施例では、プリンタの外面の色は、位置によらず同じである。従って、実際の撮影画像上においても、背景領域の画像は、おおよそ単色のベタ画像である。なお、背景画像は、単色のベタ画像に限らず、プリンタの外面の撮影画像など、種々の画像であってよい。また、複数のシート画像データは、ラベルシートを有するプリンタをデジタルカメラで撮影することによって、生成されてよい。
【0084】
S315(
図9)では、プロセッサ210は、ロゴ検出モデルNN1(
図3(A))を用いて対象画像データを分析することにより、ロゴ領域を特定する。具体的には、プロセッサ210は、ロゴ検出モデルNN1に対象画像データを入力することによって、出力データ830を生成する。そして、プロセッサ210は、出力データ830によって示されるバウンディングボックス(具体的には、予め決められた閾値以上の確信度を有するバウンディングボックス)に囲まれる矩形領域を、ロゴ領域として採用する。
図10(B)は、ロゴ領域の例を示す説明図である。バウンディングボックスBBtは、対象画像700a上の第1ロゴ画像910を示している。プロセッサ210は、バウンディングボックスBBtによって囲まれる領域を、ロゴ領域LAとして特定する。また、プロセッサ210は、バウンディングボックスBBtに対応付けられたC個のクラス確率のうちの最高のクラス確率に対応付けられたクラス識別子を、ロゴ領域LAの種類を示すロゴクラスCLtとして特定する(
図10(B)の例では、CLt=1)。
【0085】
S320(
図9)では、プロセッサ210は、ロゴ領域が検出されたか否かを判断する。ロゴ領域が検出された場合(S320:Yes)、S325で、プロセッサ210は、ロゴ領域を含む拡張領域を決定する。
【0086】
図11は、拡張領域の候補を決定する処理の例を示すフローチャートである。S410では、プロセッサ210は、対象画像を複数のブロックに分割する。
図10(C)は、複数のブロックの例を示す説明図である。対象画像700aは、予め決められた形状の複数のブロックBLに分割されている。対象画像700a内の複数のブロックBLの配置は、予め決められている。
【0087】
S420(
図11)では、プロセッサ210は、複数のブロックBLのそれぞれのエッジ強度値を算出する。エッジ強度値は、対象画像上の位置の変化に対する色の変化の割合の評価値である。本実施例では、プロセッサ210は、いわゆるラプラシアンフィルタを用いて各画素のエッジ量(例えば、フィルタによる計算結果の絶対値)を算出する。エッジ量の算出には、予め決められた色成分(例えば、輝度値)が用いられる。そして、プロセッサ210は、ブロックBL内の複数の画素のエッジ量の平均値を、ブロックBLのエッジ強度値として算出する。なお、エッジ強度値の算出方法は、他の種々の方法であってよい。例えば、フィルタは、ラプラシアンフィルタに代えて、エッジ量を算出するための任意のフィルタであってよい(ソーベルフィルタ、プレウィットフィルタなど)。また、ブロックBLのエッジ強度値は、複数の画素のエッジ量の平均値に代えて、中央値、最頻値、など、複数の画素のエッジ量と相関を有する種々の値であってよい。
【0088】
S430では、プロセッサ210は、予め決められた基準以下のエッジ強度値を有するブロックBLを、均一ブロックとして特定する。以下、複数のブロックBLのうち、均一ブロックとは異なるブロックBLを、非均一ブロックとも呼ぶ。
【0089】
図10(D)は、均一ブロックの例を示す説明図である。対象画像700a中の複数のブロックBLのうち、ハッチングが付されたブロックBL1が、均一ブロックBL1であり、ハッチングの無いブロックBL2が、非均一ブロックBL2である。図示するように、第1シート910Lの外側の背景領域700azの複数のブロックBLは、均一ブロックBL1である。第1シート910Lを示す複数のブロックBLのうち多数のブロックBLは、非均一ブロックBL2である。なお、第1シート910Lを示す複数のブロックBLのうちの一部の複数のブロックBLは、均一ブロックBL1である。一般的に、ラベルシートは、ロゴ画像に加えて、文字、図形、マーク、シンボルなど、他の要素を含み得る。従って、ラベルシート910Lを示す複数のブロックBLのうち均一ブロックBL1の割合は、小さい。また、ラベルシート910Lの輪郭910Loを示す画素は、大きなエッジ量を有している。従って、ラベルシート910Lの輪郭910Loを示すブロックBLは、非均一ブロックBL2である可能性が高い。
【0090】
S440(
図11)では、プロセッサ210は、ロゴ領域と同じ領域を拡張領域の初期領域として採用する。そして、プロセッサ210は、拡張領域の輪郭をロゴ領域の外側に向かって移動させることによって、ロゴ領域を含む拡張領域の候補を決定する。プロセッサ210は、輪郭の全体が均一ブロックBL1に含まれるように、輪郭を移動させる。
図10(E)は、拡張領域の候補の例を示す説明図である。対象画像700a上の候補拡張領域LAeは、ロゴ領域LAと、ロゴ領域LAの外側の部分と、を含んでいる。候補拡張領域LAeの輪郭LAeoの全体は、均一ブロックBL1に含まれている。上述したように、ラベルシート910Lの輪郭910Loを示すブロックBLは、非均一ブロックBL2である可能性が高い。従って、プロセッサ210は、ラベルシート910Lの輪郭910Loを外側から囲む輪郭LAeoを有する候補拡張領域LAeを、決定できる。このような候補拡張領域LAeは、ラベルシート910Lの全体を含んでいる。
【0091】
輪郭を移動させる処理は、種々の処理であってよい。本実施例では、ロゴ領域LAの輪郭LAoは、矩形を形成する4本の辺(すなわち、上辺、下辺、左辺、右辺)で構成されている。プロセッサ210は、4本の辺を所定量ずつ順番に外側に移動させる処理を、4本の辺の全体が均一ブロックBL1に含まれるまで、繰り返す。これにより、プロセッサ210は、ラベルシート910Lの全体を含むとともに、対象画像700aよりも小さい候補拡張領域LAeを決定できる。
【0092】
プロセッサ210は、S440の完了に応じて、
図11の処理、すなわち、
図9のS325を終了する。
【0093】
S330では、プロセッサ210は、S315で特定されたロゴクラスに基づいて、C個のシートクラス情報からシートクラス情報の候補である候補シートクラス情報を選択する。本実施例では、S315で特定されたロゴクラスが2個のロゴ画像910、920のいずれかに対応する場合、プロセッサ210は、2個のロゴ画像910、920に対応する2個のシートクラス情報を、候補として採用する。また、本実施例では、利用可能なC種類のロゴ画像は、図示しない第3ロゴ画像を含むこととする。そして、S315で特定されたロゴクラスが第3ロゴ画像に対応する場合、プロセッサ210は、第3ロゴ画像に対応する1個のシートクラス情報を、候補として採用する。S315で特定されたロゴクラスと、候補シートクラス情報と、の対応関係は、予め決められている。候補シートクラス情報としては、S315で特定されたロゴクラスに照らして適切であり得るシートクラス情報が、採用される。プロセッサ210は、ロゴクラスに対応付けられた候補を選択する。
【0094】
S335では、プロセッサ210は、ユーザインタフェース画面(UI画面とも呼ぶ)を表示部240(
図1)に表示する。
図12(A)は、UI画面の例を示す説明図である。このUI画面600は、第1ユーザインタフェース画像610と、第2ユーザインタフェース画像620と、を含んでいる。このUI画面600は、S330(
図9)で選択された候補シートクラス情報の数が2以上である場合の例を示している。
【0095】
第1ユーザインタフェース画像610は、候補拡張領域LAeの輪郭LAeoの位置をユーザに変更させるためのユーザインタフェース画像である。第1ユーザインタフェース画像610は、第1シート910Lを含む対象画像700aと、候補拡張領域LAeの輪郭LAeoと、を示している。ユーザは、操作部250(
図1)を操作することによって、輪郭LAeoを移動させることができる。
【0096】
第2ユーザインタフェース画像620は、候補拡張領域LAeの分類(すなわち、ラベルシートの分類)を示すシートクラス情報をユーザに特定させるためのユーザインタフェース画像である。第2ユーザインタフェース画像620は、ユーザによって選択可能なシートクラス情報の1以上の候補を示す候補領域621と、1以上の候補から選択された1つの候補を示すチェックボックス622と、を示している。実線のチェックボックス622は、選択可能な候補を示し、破線のチェックボックス622は、選択不可能な候補を示している。選択可能な候補は、S330で選択された候補である。
【0097】
図12(A)の例では、第2ユーザインタフェース画像620は、4個のシートクラス情報CC1、CC2、CC3、CC4を示している。第1シートクラス情報CC1は、第1ロゴ画像910(
図3(B))に対応し、第2シートクラス情報CC2は、第2ロゴ画像920に対応し、第3シートクラス情報CC3は、図示しない第3ロゴ画像に対応し、第4シートクラス情報CC4は、バーコードを示している。そして、2個のシートクラス情報CC1、CC2が選択可能であり、他のシートクラス情報CC3、CC4は、選択不可能である。ユーザは、操作部250(
図1)を操作することによって、選択可能な1以上の候補のうちの1つをチェック(すなわち、選択)できる。なお、S335(
図9)では、プロセッサ210は、S315で特定されたロゴクラスに対応するシートクラス情報を、デフォルトのシートクラス情報として採用する。そして、プロセッサ210は、デフォルトのシートクラス情報が選択された状態の第2ユーザインタフェース画像620を表示する。
【0098】
図12(C)は、S330(
図9)で選択された候補シートクラス情報の数が1である場合のUI画面の例を示している。第1ユーザインタフェース画像610は、ラベルシート930Lの画像を含む対象画像700cを示している。ラベルシート930Lは、第3ロゴ画像930を含んでいる。第2ユーザインタフェース画像620は、第3シートクラス情報CC3が選択可能であり、他のシートクラス情報CC1、CC2、CC4は選択不可能であることを示している。
【0099】
なお、第2ユーザインタフェース画像620において、選択不可能な候補の表示は、省略されてよい。
【0100】
S340(
図9)では、プロセッサ210は、ユーザによる輪郭LAeoの位置の変更を受け付ける。
図12(B)は、変更された輪郭LAeoの例を示す説明図である。
図12(B)の例では、ユーザは、輪郭LAeoの4個の辺のそれぞれを、ラベルシート910Lの輪郭910Loに近づけている。これにより、候補拡張領域LAeは、ラベルシート910Lの領域を適切に示すことができる。輪郭LAeoの位置がユーザによって変更された場合、プロセッサ210は、変更済の位置の輪郭を有する領域を、最終的な拡張領域として決定する。なお、ユーザは、輪郭LAeoの位置を変更せずに受け入れる指示を、操作部250を操作することによって入力できる。この場合、プロセッサ210は、S325で決定された候補拡張領域LAeを、最終的な拡張領域として決定する。
【0101】
S345(
図9)では、プロセッサ210は、シートクラス情報の選択可能な候補の総数が1であるか否かを判断する。選択可能な候補の数が1よりも大きい場合(S345:No)、S355で、プロセッサ210は、ユーザによるシートクラス情報の指定を受け付ける。
図12(A)、
図12(B)の例では、ユーザは、操作部250(
図1)を操作することにより、2個のシートクラス情報CC1、CC2から1つを選択できる。例えば、S315(
図9)で特定されたロゴクラスは、誤りであり得る。すなわち、S335で採用されたデフォルトのシートクラス情報は、誤りであり得る。ユーザは、第1ユーザインタフェース画像610に表示されたラベルシートを観察することによって、適切なシートクラス情報を確認できる。そして、ユーザは、操作部250を操作することによって、適切なシートクラス情報を指定できる。また、デフォルトのシートクラス情報が正しい場合、ユーザは、デフォルトのシートクラス情報を受け入れる指示を、操作部250を操作することによって入力できる。S355の後、プロセッサ210は、S360へ移行する。
【0102】
シートクラス情報の選択可能な候補の総数が1である場合(S345:Yes)、S350で、プロセッサ210は、シートクラス情報を、S330で特定された候補シートクラスに決定する。そして、プロセッサ210は、S360へ移行する。
【0103】
S360では、プロセッサ210は、候補拡張領域LAeを示す領域情報と、S350またはS355で決定されたシートクラス情報と、を含むアノテーション情報を示すアノテーションデータを生成する。S365では、プロセッサ210は、対象画像データとアノテーションデータとを関連付けて、記憶装置215(例えば、不揮発性記憶装置230)に格納する。互いに関連付けられた対象画像データとアノテーションデータとの全体は、第2種ラベル付データLD2(
図1)を形成する。対象画像データは、第2種学習画像データD21に対応し、アノテーションデータは、ラベルデータD22に対応する。なお、プロセッサ210は、ラベル付データLD2を、情報処理装置200に接続された外部記憶装置(図示せず)に格納してもよい。
【0104】
S365の後、プロセッサ210は、S370へ移行する。S315でロゴ領域が検出されない場合(S320:No)、プロセッサ210は、S325-S365をスキップして、S370へ移行する。S370では、プロセッサ210は、全てのシート画像データの処理が完了したか否かを判断する。未処理のシート画像データが残っている場合(S370:No)、プロセッサ210は、S310へ移行して、新たな対象画像データの処理を行う。全てのシート画像データの処理が完了した場合(S370:Yes)、プロセッサ210は、
図9の処理を終了する。これにより、第2種データセットDS2が生成される。なお、情報処理装置200は、第2種学習画像データD21にラベルデータD22を関連付けるシステムの例である。
【0105】
A8.シート検出モデルNN2のトレーニング処理:
図13は、シート検出モデルNN2(
図8(A))のトレーニング処理の例を示すフローチャートである。シート検出モデルNN2は、出力データ730が入力画像700中のラベルシートの画像の適切な領域情報と適切なシートクラス情報とを示すように、トレーニングされる。トレーニングによって、シート検出モデルNN2の演算に用いられる複数の演算パラメータ(複数の層CV21-CV2p、CN21-CN2qのそれぞれの演算に用いられる複数の演算パラメータを含む)が、調整される。なお、プロセッサ210は、第4プログラム234に従って、
図13の処理を行う。
【0106】
図13のトレーニング処理は、トレーニングの対象のモデルがシート検出モデルNN2である点と、トレーニングに用いられるデータセットが第2種データセットDS2である点と、を除いて、
図7のトレーニング処理と同じである。
図13のS510-S580は、
図7のS210-S280と、それぞれ同じである(詳細な説明を省略する)。トレーニングされたシート検出モデルNN2からの出力データ730は、ラベルシートの画像の領域を適切に示すとともに高い確信度と適切なクラス確率とを有するバウンディングボックスを示すことができる。なお、プロセッサ210は、S580で、シート検出モデルNN2を、記憶装置215に格納してよく、これに代えて、情報処理装置200に接続された外部記憶装置(図示せず)に格納してもよい。
【0107】
トレーニングされたシート検出モデルNN2(
図8(A))は、プリンタの検査に利用できる。プロセッサ210は、シート検出モデルNN2にプリンタの撮影画像データ(例えば、
図2(A)、
図2(B)で説明した撮影画像)を入力する。シート検出モデルNN2から出力される出力データ730は、撮影画像から検出されたラベルシートの領域を示している。ラベルシートが検出された場合、プリンタの検査結果は合格である。ラベルシートが検出されない場合、プリンタの検査結果は不合格である。
【0108】
以上のように、
図9の処理では、プロセッサ210は、機械学習モデルの例であるシート検出モデルNN2のトレーニングに用いられる第2種学習画像データD21に情報を関連付ける処理を実行する。具体的には、S310では、プロセッサ210は、処理対象の画像である対象画像(例えば、対象画像700a(
図10(A)))の対象画像データ(すなわち、第2種学習画像データD21)を取得する。S315では、プロセッサ210は、対象画像データを分析することによって、対象画像内から、注目対象物の例であるロゴの画像を示すロゴ領域(例えば、ロゴ領域LA)を検出する。S325、S340では、プロセッサ210は、ロゴ領域とロゴ領域の外側の部分とを含む候補拡張領域LAeを決定する。S360、S365では、プロセッサ210は、拡張領域LAeを示す領域情報を含むアノテーション情報を示すアノテーションデータ(すなわち、ラベルデータD22)を対象画像データに関連付けて記憶装置215に格納する。このように、プロセッサ210は、ロゴを示す領域LAに加えて他の領域を含む候補拡張領域LAeを示す領域情報を、第2種学習画像データD21に関連付けることができる。例えば、
図12(A)、
図12(B)で説明したように、プロセッサ210は、ロゴ画像910と他の画像とを含むラベルシート910Lの領域を示す領域情報D221を、第2種学習画像データD21に対応付けることができる。このような領域情報D221は、ロゴを示す領域に加えて他の領域を含む領域(例えば、ラベルシートの領域)を処理する機械学習モデル(例えば、シート検出モデルNN2)のトレーニングに、適している。
【0109】
また、S310(
図9)、
図10(A)等で説明したように、注目対象物の画像は、ロゴ画像である。従って、プロセッサ210は、ロゴ画像を示す領域に加えて他の領域を含む拡張領域を示す領域情報D221を、第2種学習画像データD21に関連付けることができる。
【0110】
また、
図10(B)等に示すように、S315(
図9)で検出される領域は、矩形状の領域である。注目対象物の画像(例えば、ロゴ画像)を示す矩形状の領域の検出には、YOLOに限らず、種々のオブジェクト検出モデルを利用できる(例えば、SSD(Single Shot MultiBox Detector)、R-CNN(Region Based Convolutional Neural Networks)など)。従って、プロセッサ210は、領域を適切に検出できる。
【0111】
また、拡張領域を決定する処理は、S325(
図9)を含んでいる。S325、すなわち、
図11の処理は、
図10(E)等で説明したように、対象画像データを分析することによって、ロゴ領域LAと同じ領域から拡張領域をロゴ領域LAの外側に向かって拡張する処理を含む。本実施例では、この処理は、プロセッサ210によって行われる。また、この処理によって、拡張領域LAeの候補が決定される。このように、プロセッサ210(すなわち、情報処理装置200)が拡張領域LAeを拡張するので、情報処理装置200は、ユーザの負担を軽減できる。
【0112】
また、S325、すなわち、
図11の処理は、S410-S430の処理と、S440の処理と、を含んでいる。
図10(D)等で説明したように、S410-S430の処理では、プロセッサ210は、対象画像データを分析することによって、基準以下のエッジ強度値を有するブロックBLを、均一ブロックBL1として特定する。エッジ強度値は、対象画像上の位置の変化に対する色の変化の割合の評価値である。ブロックBLを均一ブロックBL1として選択するための条件(均一条件とも呼ぶ)は、エッジ強度値が基準以下であること示している。また、
図10(E)等で説明したように、S440では、プロセッサ210は、拡張領域LAeの輪郭LAeoの全体が均一ブロックBL1に含まれるように、拡張領域をロゴ領域LAの外側に向かって拡張する。このように、プロセッサ210は、均一ブロックBL1を用いて、適切に拡張領域LAeを拡張できる。例えば、注目対象物(ここでは、ロゴ画像910)と他の要素とを含む大きなオブジェクト(例えば、ラベルシート910L)の領域と、背景領域と、の境界まで、拡張領域LAeを拡張できる。このように拡張された領域LAeは、ロゴを示す領域に加えて他の領域を含む大きなオブジェクトの領域を処理する機械学習モデル(例えば、シート検出モデルNN2)のトレーニングに、適している。
【0113】
また、拡張領域LAeを決定する処理は、S335、S340(
図9)を含んでいる。S335では、
図12(A)、
図12(B)等で説明したように、プロセッサ210は、候補拡張領域LAeの輪郭LAeoの位置をユーザに変更させるための第1ユーザインタフェース画像610を表示部240に表示する。S340では、プロセッサ210は、ユーザによる変更済の位置の輪郭を有する領域を、拡張領域として決定する。従って、プロセッサ210は、ユーザによって変更された輪郭を用いて、適切な拡張領域を決定できる。
【0114】
また、S355(
図9)が実行される場合には、S335で、
図12(A)等で説明したように、プロセッサ210は、拡張領域LAeの分類(すなわちラベルシートの分類)を示すシートクラス情報をユーザに特定させるための第2ユーザインタフェース画像620を表示部240に表示する。S360、S365では、プロセッサ210は、ユーザによって特定されたシートクラス情報を含むアノテーション情報を示すアノテーションデータを対象画像データに関連付けて記憶装置215に格納する。従って、プロセッサ210は、適切なシートクラス情報を対象画像データに関連付けることができる。
【0115】
また、
図12(A)、
図12(C)等で説明したように、第2ユーザインタフェース画像620は、ユーザによって選択可能なシートクラス情報の1以上の候補を示す候補領域621を含んでいる。そして、S330で説明したように、候補領域621は、予め決められたC個のシートクラス情報のうち、S315で検出されたロゴ領域に含まれるロゴに予め対応付けられた1以上のシートクラス情報を、1以上の候補として示している。例えば、第1ロゴ画像910(
図12(A))が検出された場合には、第1ロゴ画像910に対応付けられたシートクラス情報CC1、CC2が候補である。従って、ユーザは、適切なシートクラス情報を、容易に選択できる。
【0116】
また、S350(
図9)が実行される場合には、S350で、プロセッサ210は、予め決められたC個のシートクラス情報のうち、S315で検出されたロゴ領域に含まれるロゴに予め対応付けられた候補シートクラス情報を、アノテーション情報に含めるべきシートクラス情報として決定する。例えば、第3ロゴ画像930(
図12(C))が検出された場合には、S330で、プロセッサ210は、第3ロゴ画像930に対応付けられた第3シートクラス情報CC3を、候補として選択する。S350では、プロセッサ210は、アノテーション情報に含めるべきシートクラス情報を、第3シートクラス情報CC3に決定する。そして、S360、S365では、プロセッサ210は、決定したシートクラス情報を含むアノテーション情報を示すアノテーションデータを対象画像データに関連付けて記憶装置215に格納する。従って、プロセッサ210は、適切なシートクラス情報を対象画像データに関連付けることができる。
【0117】
B.変形例:
(1)オブジェクト検出モデルのトレーニングのための学習画像データを生成する処理は、
図4の処理に代えて、他の種々の処理であってよい。例えば、ロゴ画像をT種類の部分領域に分割する処理(S115-S120)は、ロゴ画像データの色分布を分析せずに、予め決められた領域パターン(例えば、第1種領域A1と第2種領域A2とを示す領域パターン)に従ってロゴ画像を分割する処理であってよい。
【0118】
S125では、変更後の色は、種々の色であってよい。例えば、変更後の色は、元の色とは異なる予め決められた色であってよい。また、ロゴ画像の色が、網点を用いて表現されている場合に、変更後の色は、元の網点とは異なる網点(例えば、元の線数とは異なる線数)で表現された色であってよい。
【0119】
S135-S140で利用可能な背景画像は、単色のベタ画像と、写真と、に限らず、図形、模様など、種々の画像であってよい。また、利用可能な背景画像からは、写真と、単色のベタ画像と、のうちのいずれか1つ、または、両方が、省略されてよい。
【0120】
S130では、サイズ変更処理と、縦横比変更処理と、のうちのいずれか1つが省略されてよい。また、S130が省略されてよい。
【0121】
S125、S130、S135、S140、S145のうちの1以上の処理のそれぞれにおいて、プロセッサ210は、処理内容をランダムに決定するのではなく、予め決められた計画に従って、処理内容を決定してよい。
【0122】
ロゴ画像の種類の数C(すなわち、分類(クラス)の数C)は、3に限らず、1、2、4など、1以上の種々の数であってよい。
【0123】
S140では、複数のロゴ画像が互いに一部分が重なるように配置されてもよい。また、ロゴ画像の一部が削除されてもよい。
【0124】
S145では、上記の7個の処理P1-P7から任意に選択された1以上の処理が、利用可能な処理から省略されてよい。また、S145が省略されてよい。
【0125】
ロゴ画像を検出する機械学習モデルは、
図3(A)で説明したYOLOモデルに限らず、「YOLO v3」などの改良されたYOLOモデルであってよい。また、SSD、R-CNN、Fast R-CNN, Faster R-CNN、Mask R-CNNなどの、他のモデルが用いられてよい。
【0126】
オブジェクト検出モデルによって検出されるべき対象物は、ロゴの画像に限らず、任意の対象物(例えば、プリンタに装着される部品、バーコードなど)であってよい。そして、
図4の処理(または、その変形例の処理)で生成される第1種データセットDS1は、種々のオブジェクト検出モデルのトレーニングに用いられてよい。
【0127】
(2)機械学習モデルのトレーニングに用いられる画像データに情報を関連付ける処理は、
図9の処理に代えて、他の種々の処理であってよい。例えば、ロゴ領域を検出する処理(S315)は、ロゴ検出モデルNN1を用いる処理に代えて、他の種々の処理であってよい。例えば、プロセッサ210は、基準のロゴ画像を示す基準ロゴ画像データを用いるパターンマッチングによって、ロゴ領域を検出してもよい。
【0128】
拡張領域を決定する処理は、S325、S340の処理に代えて、他の種々の処理であってよい。例えば、プロセッサ210は、ロゴ領域と、ロゴ領域に対応付けられた拡張領域と、を示す1枚のテンプレート画像を用いて、拡張領域を決定してよい。具体的には、プロセッサ210は、対象画像中のロゴ領域と、テンプレート画像のロゴ領域と、が一致するように、対象画像に対するテンプレート画像の位置を決定する。そして、プロセッサ210は、決定された位置のテンプレート画像によって示される拡張領域を、対象画像に適用すべき拡張領域として決定する。
【0129】
拡張領域の決定に用いられる注目対象物は、ロゴ画像に限らず、バーコードなど、任意の対象物であってよい。また、注目対象物の画像を示す対象物領域(例えば、ロゴ領域)の形状は、矩形状に代えて、他の任意の形状であってよい。例えば、対象物領域の形状は、三角形、五角形、六角形などの多角形でもよく、円、楕円などの曲線部分を含む輪郭によって定められる形状であってよい。また、対象物領域の形状は、対象物の輪郭によって定められる形状であってよい。
【0130】
対象画像上の均一領域を特定する処理は、
図11のS410-S430の処理に代えて、他の種々の処理であってよい。ここで、均一領域は、均一条件を満たす領域である。均一条件は、対象画像上の位置の変化に対する色の変化の割合が基準以下であることを示す条件である。例えば、ブロックBLのエッジ強度値は、位置の変化に対する色の変化の割合を示す種々の値であってよい。エッジ強度値は、例えば、ブロックBL内の最高輝度値と最低輝度値との間の差分であってよい。また、プロセッサ210は、対象画像の複数の画素の色値(例えば、輝度値)のヒストグラムを用いて、均一領域を特定してよい。具体的には、プロセッサ210は、ヒストグラムの1つの区間に含まれる複数の画素によって形成される連続な1つの領域を、1つの均一領域として特定してよい。この場合、色値が1つの区間に含まれることが、均一条件である。
【0131】
図12(A)-
図12(C)の実施例では、1個のUI画面600が、第1ユーザインタフェース画像610と第2ユーザインタフェース画像620とを示している。すなわち、UI画面600を表示部240に表示する処理は、第1ユーザインタフェース画像610を表示する処理と、第2ユーザインタフェース画像620を表示する処理と、を含んでいる。これに代えて、プロセッサ210は、第1ユーザインタフェース画像610を、第2ユーザインタフェース画像620を示す画面とは異なる画面で表示してよい。
【0132】
図9のS340は、省略されてよい。この場合、プロセッサ210は、S325で決定された候補拡張領域を、そのまま、最終的な拡張領域として決定してよい。また、UI画面(
図12(A)-
図12(C))からは、第1ユーザインタフェース画像610は省略されてよい。
【0133】
図9のS350は省略されてよい。例えば、プロセッサ210は、S315で特定されたロゴクラスに拘わらずに、S330で複数の候補シートクラス情報を選択し、S355で、ユーザによるシートクラス情報の指定を受け付けてよい。また、S355は省略されてよい。例えば、プロセッサ210は、S315で特定されたロゴクラスに拘わらずに、S330でロゴクラスに対応付けられた1個の候補シートクラス情報を選択し、S350で、シートクラス情報を、S330で特定された候補シートクラスに決定してよい。なお、シートクラス情報は、アノテーション情報から省略されてよい。例えば、ラベルシートの種類の数Cが1である場合、シートクラス情報が省略されても、第2種データセットDS2を用いる適切なトレーニングが可能である。
【0134】
ラベルシートの画像を検出する機械学習モデルは、
図8(A)で説明したYOLOモデルに限らず、YOLO v3、SSD、R-CNN、Fast R-CNN, Faster R-CNN、Mask R-CNNなどの、他のモデルであってよい。
【0135】
(3)機械学習モデルを用いる検査対象は、プリンタに限らず、スキャナ、複合機、デジタルカメラ、カッティングマシン、携帯端末、などの任意の製品であってよい。また、製品を収容するケースが検査対象であってよい。また、機械学習モデルは、ラベルシートに限らず、他の種々の対象物を検出するようにトレーニングされてよい。例えば、機械学習モデルは、プリンタの撮影画像から、プリンタに装着すべき部品を検出してよい。いずれの場合も、検出対象物(例えば、ラベルシート)の画像が、小さい特徴部分(例えば、ロゴ)の画像を含む場合、特徴部分を含む拡張領域は、検出対象物を示す領域として利用可能である。このような拡張領域を示す領域情報を含むアノテーション情報が、トレーニング用の画像データに関連付けられてよい。このような画像データとアノテーション情報とは、オブジェクト検出モデルに限らず、分類モデルなどの種々の機械学習モデルのトレーニングに、利用されてよい。
【0136】
(4)機械学習モデルに入力される入力画像データの色空間は、RGBに代えて、CMYK色空間などの他の色空間であってよい。また、入力画像データは、輝度値によって画像を表現してよい。また、入力画像データは、解像度変換処理、トリミング処理などの種々の画像処理を実行することによって、生成されてよい。
【0137】
(5)画像データとラベルデータと関連付ける方法は、任意の方法であってよい。例えば、ラベルデータは、ラベルデータに関連付けられた画像データを識別する識別データを含んでよい。また、プロセッサ210は、画像データとラベルデータとの対応関係を示すテーブルデータを生成してよい。また、プロセッサ210は、互いに関連付けられた画像データとラベルデータとを、1個のデータファイルに格納してよい。
【0138】
(6)機械学習モデルのトレーニング処理は、
図7、
図13の処理に代えて、機械学習モデルに適する種々の方法であってよい。例えば、
図7、
図13の実施例において、ロスの算出に用いられる損失関数は、交差エントロピー誤差など、出力データ730、830とラベルデータとの間の差の評価値を算出する種々の関数であってよい。例えば、オブジェクト検出モデルが用いられる場合には、損失関数は、オブジェクトを示す領域の誤差と、オブジェクトの種類毎の確率の誤差と、に相関を有する損失を算出する種々の関数であってよい。
【0139】
また、機械学習モデルに含まれる演算パラメータを調整する方法は、誤差逆伝播法に代えて、目標値を伝播させる方法(Target Propagationとも呼ばれる)など、他の種々の方法であってよい。また、トレーニング完了の条件は、機械学習モデルから出力されるデータと、ラベルデータと、の間の差が小さいことを示す種々の条件であってよい。例えば、確認ロスは、トレーニング完了の条件から省略されてよい。この場合、
図7、
図13の処理において、全てのラベル付データが、学習用データセットとして用いられてよい。また、プロセッサ210は、作業者から完了指示が入力された場合にトレーニングが完了したと判断し、トレーニングの継続指示が入力された場合にトレーニングが完了していないと判断してもよい。作業者は、例えば、確認用データセットを用いて出力される出力データを参照して、トレーニングを終了するか否かを判断してよい。これに代えて、トレーニング完了の条件は、学習ロスの算出と演算パラメータの更新(例えば、S240-S250(
図7)、S540-S550(
図13))が、所定回数、繰り返されたことであってよい。
【0140】
(7)
図4のデータセットの生成処理と、
図7のトレーニング処理と、
図9のアノテーション処理(データセットの生成処理)と、
図13のトレーニング処理と、図示しない検査処理とは、それぞれ、互いに異なる情報処理装置によって実行されてよい。これらの処理から任意に選択された処理が、ネットワークを介して互いに通信可能な複数の装置(例えば、コンピュータなどの情報処理装置)によって分担されてよい。
【0141】
上記各実施例において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部あるいは全部をハードウェアに置き換えるようにしてもよい。例えば、
図1のモデルNN1、NN2のそれぞれの機能を、専用のハードウェア回路によって実現してもよい。
【0142】
また、本発明の機能の一部または全部がコンピュータプログラムで実現される場合には、そのプログラムは、コンピュータ読み取り可能な記録媒体(例えば、一時的ではない記録媒体)に格納された形で提供することができる。プログラムは、提供時と同一または異なる記録媒体(コンピュータ読み取り可能な記録媒体)に格納された状態で、使用され得る。「コンピュータ読み取り可能な記録媒体」は、メモリーカードやCD-ROMのような携帯型の記録媒体に限らず、各種ROM等のコンピュータ内の内部記憶装置や、ハードディスクドライブ等のコンピュータに接続されている外部記憶装置も含み得る。
【0143】
以上、実施例、変形例に基づき本発明について説明してきたが、上記した発明の実施の形態は、本発明の理解を容易にするためのものであり、本発明を限定するものではない。本発明は、その趣旨を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物が含まれる。
【符号の説明】
【0144】
100…デジタルカメラ、200…情報処理装置、210…プロセッサ、215…記憶装置、220…揮発性記憶装置、230…不揮発性記憶装置、231…第1プログラム、232…第2プログラム、233…第3プログラム、234…第4プログラム、240…表示部、250…操作部、270…通信インタフェース、610…第1ユーザインタフェース画像、620…第2ユーザインタフェース画像、621…候補領域、622…チェックボックス、DV…対象物(プリンタ)、DVx…第1プリンタ、DVy…第2プリンタ、Dx…第1方向、Dy…第2方向