IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ブラザー工業株式会社の特許一覧

特開2022-174516画像処理方法、コンピュータプログラム、画像処理装置、および、訓練方法
<>
  • 特開-画像処理方法、コンピュータプログラム、画像処理装置、および、訓練方法 図1
  • 特開-画像処理方法、コンピュータプログラム、画像処理装置、および、訓練方法 図2
  • 特開-画像処理方法、コンピュータプログラム、画像処理装置、および、訓練方法 図3
  • 特開-画像処理方法、コンピュータプログラム、画像処理装置、および、訓練方法 図4
  • 特開-画像処理方法、コンピュータプログラム、画像処理装置、および、訓練方法 図5
  • 特開-画像処理方法、コンピュータプログラム、画像処理装置、および、訓練方法 図6
  • 特開-画像処理方法、コンピュータプログラム、画像処理装置、および、訓練方法 図7
  • 特開-画像処理方法、コンピュータプログラム、画像処理装置、および、訓練方法 図8
  • 特開-画像処理方法、コンピュータプログラム、画像処理装置、および、訓練方法 図9
  • 特開-画像処理方法、コンピュータプログラム、画像処理装置、および、訓練方法 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022174516
(43)【公開日】2022-11-24
(54)【発明の名称】画像処理方法、コンピュータプログラム、画像処理装置、および、訓練方法
(51)【国際特許分類】
   G06T 7/00 20170101AFI20221116BHJP
【FI】
G06T7/00 350C
【審査請求】未請求
【請求項の数】11
【出願形態】OL
(21)【出願番号】P 2021080357
(22)【出願日】2021-05-11
(71)【出願人】
【識別番号】000005267
【氏名又は名称】ブラザー工業株式会社
(74)【代理人】
【識別番号】110001058
【氏名又は名称】鳳国際弁理士法人
(72)【発明者】
【氏名】渡邉 航平
【テーマコード(参考)】
5L096
【Fターム(参考)】
5L096AA02
5L096AA06
5L096BA03
5L096CA02
5L096DA01
5L096DA02
5L096FA02
5L096GA08
5L096GA55
5L096HA11
5L096JA01
5L096JA11
5L096JA16
5L096KA04
5L096KA15
5L096MA03
(57)【要約】      (修正有)
【課題】注目対象物の不具合を表す画像を生成するために用いる生成モデルを適切に構成する画像処理方法、コンピュータプログラム、画像処理装置及び訓練方法を提供する。
【解決手段】画像処理方法は、光学的に読み取られた注目対象物を表す注目入力画像データを第1生成モデル510に入力することによって、注目入力画像データに対応する第1注目生成画像データを生成する。第1生成モデル510は、対象物の画像を表す画像データを第1生成モデルに入力することによって生成される画像データの画像が対象物のコンピュータグラフィックス画像に近づくように訓練された生成モデルである。第1注目生成画像データを第2生成モデル600に入力することによって、不具合の無い注目対象物の画像を表す第2注目生成画像データを生成する。第1注目生成画像データの画像と第2注目生成画像データの画像との間の差分を示す差分画像の差分画像データを生成する。
【選択図】図1
【特許請求の範囲】
【請求項1】
画像データを処理する画像処理方法であって、
光学的に読み取られた注目対象物を表す注目入力画像データを第1生成モデルに入力することによって、前記注目入力画像データに対応する第1注目生成画像データを生成する第1生成工程であって、前記第1生成モデルは、光学的に読み取られた対象物の画像を表す画像データを前記第1生成モデルに入力することによって生成される画像データの画像が前記対象物のコンピュータグラフィックス画像に近づくように訓練された生成モデルである、前記第1生成工程と、
前記第1注目生成画像データを第2生成モデルに入力することによって、不具合の無い注目対象物の画像を表す第2注目生成画像データを生成する第2生成工程であって、前記第2生成モデルは、対象物の画像を表す画像データを前記第2生成モデルに入力することによって不具合の無い対象物の画像を表す画像データを生成するように訓練された生成モデルである、前記第2生成工程と、
前記第1注目生成画像データの画像と前記第2注目生成画像データの画像との間の差分を示す差分画像の差分画像データを生成する第3生成工程と、
を備え、
前記第1生成モデルは、生成ネットワークと識別ネットワークとを有する敵対的生成ネットワークの訓練によって生成された前記生成ネットワークであり、
前記識別ネットワークは、訓練用の入力画像データを前記生成ネットワークに入力することによって生成された画像データの画像である第1画像中の第1部分領域の画像の少なくとも一部を示す第1部分画像を表す第1部分画像データと、訓練用のコンピュータグラフィックス画像である第2画像中の第2部分領域の画像の少なくとも一部を示す第2部分画像を表す第2部分画像データと、を前記識別ネットワークに入力することによって、訓練されている、
画像処理方法。
【請求項2】
請求項1に記載の画像処理方法であって、さらに、
前記差分画像データの次元削減処理を実行することによって、前記注目入力画像データによって表される前記注目対象物の異常度を算出する算出工程を備える、
画像処理方法。
【請求項3】
請求項1または2に記載の画像処理方法であって、
前記第1画像上の前記第1部分領域の位置は、ランダムに決定されており、
前記第2画像上の前記第2部分領域の位置は、ランダムに決定されている、
画像処理方法。
【請求項4】
請求項1から3のいずれかに記載の画像処理方法であって、
前記第1画像上の前記第1部分領域の形状は、ランダムに決定されており、
前記第2画像上の前記第2部分領域の形状は、ランダムに決定されている、
画像処理方法。
【請求項5】
請求項1から4のいずれかに記載の画像処理方法であって、
前記第1画像上の前記第1部分領域の大きさは、ランダムに決定されており、
前記第2画像上の前記第2部分領域の大きさは、ランダムに決定されている、
画像処理方法。
【請求項6】
請求項1から5のいずれかに記載の画像処理方法であって、
前記第1画像から取得される前記第1部分画像の数は、ランダムに決定されており、
前記第2画像から取得される前記第2部分画像の数は、ランダムに決定されている、
画像処理方法。
【請求項7】
請求項1から6のいずれかに記載の画像処理方法であって、
前記第1部分画像データは、ランダムに決定された角度による画像の回転を含む処理を実行することによって、取得されており、
前記第2部分画像データは、ランダムに決定された角度による画像の回転を含む処理を実行することによって、取得されている、
画像処理方法。
【請求項8】
請求項1から7のいずれかに記載の画像処理方法であって、
前記第1部分画像データは、ランダムに決定されたスケーリング比率による画像のスケーリングを含む処理を実行することによって、取得されており、
前記第2部分画像データは、ランダムに決定されたスケーリング比率による画像のスケーリングを含む処理を実行することによって、取得されている、
画像処理方法。
【請求項9】
画像データを処理するコンピュータのためのコンピュータプログラムであって、
光学的に読み取られた注目対象物を表す注目入力画像データを第1生成モデルに入力することによって、前記注目入力画像データに対応する第1注目生成画像データを生成する第1生成機能であって、前記第1生成モデルは、光学的に読み取られた対象物の画像を表す画像データを前記第1生成モデルに入力することによって生成される画像データの画像が前記対象物のコンピュータグラフィックス画像に近づくように訓練された生成モデルである、前記第1生成機能と、
前記第1注目生成画像データを第2生成モデルに入力することによって、不具合の無い注目対象物の画像を表す第2注目生成画像データを生成する第2生成機能であって、前記第2生成モデルは、対象物の画像を表す画像データを前記第2生成モデルに入力することによって不具合の無い対象物の画像を表す画像データを生成するように訓練された生成モデルである、前記第2生成機能と、
前記第1注目生成画像データの画像と前記第2注目生成画像データの画像との間の差分を示す差分画像の差分画像データを生成する第3生成機能と、
をコンピュータに実現させ、
前記第1生成モデルは、生成ネットワークと識別ネットワークとを有する敵対的生成ネットワークの訓練によって生成された前記生成ネットワークであり、
前記識別ネットワークは、訓練用の入力画像データを前記生成ネットワークに入力することによって生成された画像データの画像である第1画像中の第1部分領域の画像の少なくとも一部を示す第1部分画像を表す第1部分画像データと、訓練用のコンピュータグラフィックス画像である第2画像中の第2部分領域の画像の少なくとも一部を示す第2部分画像を表す第2部分画像データと、を前記識別ネットワークに入力することによって、訓練されている、
コンピュータプログラム。
【請求項10】
画像データを処理する画像処理装置であって、
光学的に読み取られた注目対象物を表す注目入力画像データを第1生成モデルに入力することによって、前記注目入力画像データに対応する第1注目生成画像データを生成する第1生成部であって、前記第1生成モデルは、光学的に読み取られた対象物の画像を表す画像データを前記第1生成モデルに入力することによって生成される画像データの画像が前記対象物のコンピュータグラフィックス画像に近づくように訓練された生成モデルである、前記第1生成部と、
前記第1注目生成画像データを第2生成モデルに入力することによって、不具合の無い注目対象物の画像を表す第2注目生成画像データを生成する第2生成部であって、前記第2生成モデルは、対象物の画像を表す画像データを前記第2生成モデルに入力することによって不具合の無い対象物の画像を表す画像データを生成するように訓練された生成モデルである、前記第2生成部と、
前記第1注目生成画像データの画像と前記第2注目生成画像データの画像との間の差分を示す差分画像の差分画像データを生成する第3生成部と、
を備え、
前記第1生成モデルは、生成ネットワークと識別ネットワークとを有する敵対的生成ネットワークの訓練によって生成された前記生成ネットワークであり、
前記識別ネットワークは、訓練用の入力画像データを前記生成ネットワークに入力することによって生成された画像データの画像である第1画像中の第1部分領域の画像の少なくとも一部を示す第1部分画像を表す第1部分画像データと、訓練用のコンピュータグラフィックス画像である第2画像中の第2部分領域の画像の少なくとも一部を示す第2部分画像を表す第2部分画像データと、を前記識別ネットワークに入力することによって、訓練されている、
画像処理装置。
【請求項11】
生成ネットワークと識別ネットワークとを有する敵対的生成ネットワークの訓練方法であって、
訓練用の入力画像データを生成ネットワークに入力することによって、第1画像の第1画像データを生成する工程と、
前記第1画像中の第1部分領域をランダムに決定する工程と、
前記第1画像中の前記第1部分領域の画像の少なくとも一部を示す第1部分画像を表す第1部分画像データを、前記第1画像データと前記第1部分領域とを使用して取得する工程と、
前記第1部分画像データを識別ネットワークに入力することによって、第1識別データを取得する工程と、
前記入力画像データに対応付けられた第2画像データの第2画像中の第2部分領域をランダムに決定する工程と、
前記第2画像中の前記第2部分領域の画像の少なくとも一部を示す第2部分画像を表す第2部分画像データを、前記第2画像データと前記第2部分領域とを使用して取得する工程と、
前記第2部分画像データを前記識別ネットワークに入力することによって、第2識別データを取得する工程と、
前記第1識別データと前記第2識別データとを使用することによって、前記識別ネットワークのパラメータを調整する工程と、
を備える、訓練方法。
【発明の詳細な説明】
【技術分野】
【0001】
本明細書は、生成モデルを使用する画像処理に関する。
【背景技術】
【0002】
従来から、ニューラルネットワークとも呼ばれる機械学習モデルが画像処理に使用されている。例えば、特許文献1は、ニューラルネットワークを使用して顕微鏡画像を分類する技術を提案している。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特許第6767966号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
機械学習モデルとしては、画像データを生成する生成モデルが使用され得る。生成モデルは、例えば、入力された画像データを使用して、入力された画像データに対応する画像データを生成する。適切な画像データを生成するように生成モデルを構成する点については、工夫の余地があった。
【0005】
本明細書は、生成モデルを適切に構成する技術を開示する。
【課題を解決するための手段】
【0006】
本明細書に開示された技術は、以下の適用例として実現することが可能である。
【0007】
[適用例1]画像データを処理する画像処理方法であって、光学的に読み取られた注目対象物を表す注目入力画像データを第1生成モデルに入力することによって、前記注目入力画像データに対応する第1注目生成画像データを生成する第1生成工程であって、前記第1生成モデルは、光学的に読み取られた対象物の画像を表す画像データを前記第1生成モデルに入力することによって生成される画像データの画像が前記対象物のコンピュータグラフィックス画像に近づくように訓練された生成モデルである、前記第1生成工程と、前記第1注目生成画像データを第2生成モデルに入力することによって、不具合の無い注目対象物の画像を表す第2注目生成画像データを生成する第2生成工程であって、前記第2生成モデルは、対象物の画像を表す画像データを前記第2生成モデルに入力することによって不具合の無い対象物の画像を表す画像データを生成するように訓練された生成モデルである、前記第2生成工程と、前記第1注目生成画像データの画像と前記第2注目生成画像データの画像との間の差分を示す差分画像の差分画像データを生成する第3生成工程と、を備え、前記第1生成モデルは、生成ネットワークと識別ネットワークとを有する敵対的生成ネットワークの訓練によって生成された前記生成ネットワークであり、前記識別ネットワークは、訓練用の入力画像データを前記生成ネットワークに入力することによって生成された画像データの画像である第1画像中の第1部分領域の画像の少なくとも一部を示す第1部分画像を表す第1部分画像データと、訓練用のコンピュータグラフィックス画像である第2画像中の第2部分領域の画像の少なくとも一部を示す第2部分画像を表す第2部分画像データと、を前記識別ネットワークに入力することによって、訓練されている、画像処理方法。
【0008】
この構成によれば、識別ネットワークへ入力される画像データの多様性が増加し、識別ネットワークの訓練の速度が抑制されるので、生成ネットワークの訓練と識別ネットワークの訓練とのバランスをとることができる。従って、第1生成モデルは、光学的に読み取られた対象物の画像を表す画像データを第1生成モデルに入力することによって生成される画像データの画像が対象物のコンピュータグラフィックス画像に近づくように適切に訓練される。このような第1生成モデルによって生成される第1注目生成画像データが第2生成モデルに入力されるので、第2生成モデルは、不具合の無い注目対象物の画像を表す第2注目生成画像データを適切に生成できる。従って、第1注目生成画像データの画像と第2注目生成画像データの画像との間の差分を示す差分画像の差分画像データは、注目対象物の読取りの条件に拘わらずに、注目入力画像データによって表される注目対象物の不具合を、適切に表すことができる。
【0009】
[適用例2]生成ネットワークと識別ネットワークとを有する敵対的生成ネットワークの訓練方法であって、訓練用の入力画像データを生成ネットワークに入力することによって、第1画像の第1画像データを生成する工程と、前記第1画像中の第1部分領域をランダムに決定する工程と、前記第1画像中の前記第1部分領域の画像の少なくとも一部を示す第1部分画像を表す第1部分画像データを、前記第1画像データと前記第1部分領域とを使用して取得する工程と、前記第1部分画像データを識別ネットワークに入力することによって、第1識別データを取得する工程と、前記入力画像データに対応付けられた第2画像データの第2画像中の第2部分領域をランダムに決定する工程と、前記第2画像中の前記第2部分領域の画像の少なくとも一部を示す第2部分画像を表す第2部分画像データを、前記第2画像データと前記第2部分領域とを使用して取得する工程と、前記第2部分画像データを前記識別ネットワークに入力することによって、第2識別データを取得する工程と、前記第1識別データと前記第2識別データとを使用することによって、前記識別ネットワークのパラメータを調整する工程と、を備える、訓練方法。
【0010】
この構成によれば、敵対的生成ネットワークの訓練のために識別ネットワークに入力される画像の多様性が向上するので、識別ネットワーク、ひいては、識別ネットワークと生成ネットワークを有する敵対的生成ネットワークを、適切に訓練できる。
【0011】
なお、本明細書に開示の技術は、種々の態様で実現することが可能であり、例えば、画像処理方法および画像処理装置、敵対的生成ネットワークの訓練方法および訓練装置、それらの方法または装置の機能を実現するためのコンピュータプログラム、そのコンピュータプログラムを記録した記録媒体(例えば、一時的ではない記録媒体)、等の形態で実現することができる。
【図面の簡単な説明】
【0012】
図1】一実施例としての画像処理装置を示す説明図である。
図2】第1モデル500の例を示すブロック図である。
図3】(A)は、第2生成モデル600の例を示すブロック図である。(B)は、第2生成モデル600の訓練の概要を示すブロック図である。
図4】第1モデル500の第1訓練処理の例を示すフローチャートである。
図5】第1モデル500の第1訓練処理の例を示すフローチャートである。
図6】第2生成モデル600の第2訓練処理の例を示すフローチャートである。
図7】検査処理の例を示すフローチャートである。
図8】検査処理の概略図である。
図9】(A)、(B)は、表示部240に表示される画像の例を示す概略図である。
図10】検査処理の概略図である。
【発明を実施するための形態】
【0013】
A.第1実施例:
A1.装置構成:
図1は、一実施例としての画像処理装置を示す説明図である。本実施例では、画像処理装置200は、例えば、パーソナルコンピュータである。画像処理装置200は、対象物(本実施例では、プリンタDVに貼られたラベルシートLB)の撮影画像の画像データを処理する。画像処理装置200は、プロセッサ210と、記憶装置215と、表示部240と、操作部250と、通信インタフェース270と、を備えている。これらの要素は、バスを介して互いに接続されている。記憶装置215は、揮発性記憶装置220と、不揮発性記憶装置230と、を含んでいる。
【0014】
表示部240は、液晶ディスプレイ、有機ELディスプレイなどの、画像を表示するように構成された装置である。操作部250は、ボタン、レバー、表示部240上に重ねて配置されたタッチパネルなどの、ユーザによる操作を受け取るように構成された装置である。ユーザは、操作部250を操作することによって、種々の指示を画像処理装置200に入力可能である。通信インタフェース270は、他の装置と通信するためのインタフェースである(例えば、USBインタフェース、有線LANインタフェース、IEEE802.11の無線インタフェース)。通信インタフェース270には、デジタルカメラ100が接続されている。デジタルカメラ100は、プリンタDVに貼られたラベルシートLBを光学的に読み取ることによって、読み取られたラベルシートLBを表す画像データを生成する。本実施例では、ラベルシートLBは、矩形状のシートであり、文字列を含む種々のオブジェクトを表している。適切な文字列は、予めプリンタDVのモデルに対応付けられている。なお、製造時のエラーは、ラベルシートLBの文字列の不具合を引き起こし得る。例えば、ラベルシートLBは、誤った文字列を表し得る。また、適切な文字列の一部または全部が、欠ける場合がある。本実施例では、画像処理装置200は、ラベルシートの不具合に関する検査を行う。
【0015】
プロセッサ210は、データ処理を行うように構成された装置であり、例えば、CPUである。揮発性記憶装置220は、例えば、DRAMであり、不揮発性記憶装置230は、例えば、フラッシュメモリである。不揮発性記憶装置230は、プログラム231、232、233と、第1モデル500と、第1種訓練データ590と、第2生成モデル600と、第2種訓練データ690と、を格納している。モデル500、600は、それぞれ、人工ニューラルネットワークを有する予測モデルである。第1モデル500は、第1生成モデル510と第1識別モデル520とを含んでいる。
【0016】
第1モデル500の第1生成モデル510は、デジタルカメラ100によって光学的に読み取られたラベルシートLBを表す画像データを使用して、同じラベルシートLBのコンピュータグラフィックス画像(詳細は、後述)のような画像データを生成する。第1生成モデル510は、画像に含まれるノイズと読取条件との影響を緩和するように、訓練される。第1識別モデル520は、第1生成モデル510の訓練のために、使用される。本実施例では、第1モデル500は、プログラムモジュールである。第1種訓練データ590は、第1モデル500の訓練のための画像データである。
【0017】
第2生成モデル600は、第1生成モデル510によって生成された画像データを使用して、不具合の無いラベルシートを表す画像データを生成する。第2生成モデル600は、第2生成モデル600に入力される画像データによって表されるラベルシートが不具合を有する場合であっても、不具合の無いラベルシートを表す画像データを生成するように、訓練される。本実施例では、第2生成モデル600は、プログラムモジュールである。第2種訓練データ690は、第2生成モデル600の訓練のための画像データである。
【0018】
第1プログラム231は、第1モデル500の訓練のためのプログラムである。
第2プログラム232は、第2生成モデル600の訓練のためのプログラムである。第3プログラム233は、ラベルシートの検査処理のためのプログラムである。プロセッサ210は、プログラム231、232、233の実行に使用される種々の中間データを、記憶装置215(例えば、揮発性記憶装置220、不揮発性記憶装置230のいずれか)に、一時的に格納する。プログラム231、232、233と、モデル500、600と、の詳細については、後述する。
【0019】
A2.第1モデル500の構成:
図2は、第1モデル500の例を示すブロック図である。第1モデル500は、いわゆる敵対的生成ネットワーク(GAN : Generative Adversarial Networks)を使用して構成されている。第1モデル500は、第1生成モデル510(すなわち、生成ネットワーク)と第1識別モデル520(すなわち、識別ネットワーク)とを有している。
【0020】
第1モデル500の第1生成モデル510には、デジタルカメラ100によって読み取られたラベルシートLBiを表す画像I5iの画像データI5idが入力される。第1生成モデル510は、入力された画像データI5idによって表されるラベルシートLBiと同じラベルシートLBiの画像I51を表す画像データI51dを生成する。生成される画像I51内のラベルシートLBiの位置と大きさとは、入力される画像I5i内のラベルシートLBiの位置と大きさと、それぞれ同じである。第1生成モデル510は、第1生成モデル510によって生成される画像データI51dの画像I51がコンピュータグラフィックス画像に近づくように、訓練される。コンピュータグラフィックス画像は、コンピュータによって生成される画像である。コンピュータグラフィックス画像は、例えば、オブジェクトを描画するための描画コマンドを含むベクタデータのレンダリング(ラスタライズとも呼ばれる)によって、生成される。デジタルカメラ100などの読取装置によって読み取られた対象物を表す画像(読取画像とも呼ぶ)は、読取装置で生じる種々のノイズを含み得る。また、読取画像は、読取時の光源の明るさ、光源の色、対象物と読取装置との間の位置関係、などの読取りの条件に応じて、種々に変化し得る。読取画像中の対象物の色は、光源の明るさと光源の色とに応じて、種々に変化し得る。読取画像中の対象物の形状は、対象物と読取装置との間の位置関係に応じて、幾何学的に歪み得る(例えば、矩形の対象物は、読取画像中では、台形または平行四辺形で表され得る)。コンピュータグラフィックス画像は、読取装置で生じるノイズと読取りの条件との影響を受けずに生成される。訓練済の第1生成モデル510は、ラベルシートの画像に含まれるノイズと読取りの条件との影響を緩和する。
【0021】
以下、第1モデル500に入力される画像データI5idを、入力画像データI5idとも呼び、入力画像データI5idの画像I5iを、入力画像I5iとも呼ぶ。また、第1モデル500によって生成される画像データI51dを、第1生成画像データI51dとも呼び、第1生成画像データI51dの画像I51を、第1生成画像I51とも呼ぶ。なお、本実施例では、画像I5i、I51は、それぞれ、矩形状の画像である(高さは256画素、幅は512画素)。画像I5i、I51の形状は、ラベルシートの形状と同じである。また、画像データI5id、I51dは、それぞれ、R(赤)G(緑)B(青)の3チャンネルで各画素の色を示すカラービットマップデータである。入力画像データI5idの要素数(ここでは、高さ*幅*チャンネル数)は、256*512*3である。RGBのそれぞれの色値は、ゼロから255までの256階調で表される。
【0022】
なお、入力画像I5iのラベルシートLBiは、文字列の欠損や、誤記などの、不具合を有し得る。後述するように、入力画像I5iのラベルシートLBiが不具合を有する場合、第1生成画像I51は、同じ不具合を有するラベルシートLBiを表す。
【0023】
第1生成モデル510は、いわゆるオートエンコーダを使用して構成されている。第1生成モデル510は、第1エンコーダ512と、第1デコーダ517と、を有している。第1エンコーダ512は、入力された画像データに対して次元削減処理を実行して、入力された画像の特徴を示す第1特徴データ515を生成する。本実施例では、第1エンコーダ512の構成は、以下の通りである。第1エンコーダ512は、上流側から順に並ぶ、5個の畳込層を有している。各畳込層は、2のストライドを使用して、高さに相当する要素数と幅に相当する要素数とを削減する(チャンネル数に相当する要素数は、増大する)。2番目から5番目までの各畳込層には、バッチノーマライゼーションが適用されている。各層の活性化関数は、LeakyReLUである。5個の畳込層は、データの要素数を、「256*512*3」から、「128*256*64」、「64*128*128」、「32*64*256」、「16*32*512」、「8*16*512」の順に、変化させる。第1特徴データ515の要素数は、8*16*512である。
【0024】
第1デコーダ517は、第1特徴データ515に対して次元復元処理を実行して、第1生成画像データI51dを生成する。本実施例では、第1デコーダ517の構成は、以下の通りである。第1デコーダ517は、上流側から順に並ぶ、5個の転置畳込層を有している。各転置畳込層は、2以上のストライド(本実施例では、2)を使用して、高さに相当する要素数と幅に相当する要素数とを増大する(チャンネル数に相当する要素数は、低減する)。1番目から4番目までの4個の転置畳込層には、バッチノーマライゼーションが適用されている。また、訓練時に、1番目から2番目までの2個の転置畳込層には、ドロップアウトが適用される。各層の活性化関数は、ReLUである。なお、最後の転置畳込層の活性化関数としては、画像データI51dの生成に適した関数(例えば、Tanh関数、または、シグモイド関数)が使用される。第1生成画像データI51dの要素数は、入力画像データI5idの要素数と同じである。
【0025】
また、本実施例では、第1生成モデル510は、いわゆるU-Netと同様のアーキテクチャを有している。第1エンコーダ512と第1デコーダ517との間には、複数のコネクション519が設けられている。具体的には、1番目の畳込層の活性化関数からの出力データが、4番目の転置畳込層の活性化関数からの出力データに連結される。同様に、2番目の畳込層と3番目の転置畳込層のペアと、3番目の畳込層と2番目の転置畳込層とのペアと、4番目の畳込層と1番目の転置畳込層とのペアと、のそれぞれに関して、畳込層の活性化関数からの出力データが、転置畳込層の活性化関数からの出力データに連結される。2個の出力データの連結は、連結された出力データが2個の出力データのそれぞれのチャンネルを示すように、行われる。例えば、64*128*256の要素を有する出力データと、64*128*128の要素を有する出力データと、が連結される場合、64*128*384の要素を有するデータが生成される。5個の転置畳込層による転置畳込と4個のコネクション519による連結とによって、データの要素数は、「8*16*512」から、「16*32*512(転置畳込)」、「16*32*1024(連結)」、「32*64*256(転置畳込)」、「32*64*512(連結)」、「64*128*256(転置畳込)」、「64*128*384(連結)」、「128*256*128(転置畳込)」、「128*256*192(連結)」、「256*512*3(転置畳込)」の順に変化する。複数のコネクション519は、位置に関する情報を、第1エンコーダ512から第1デコーダ517へ伝達する。これにより、第1デコーダ517は、詳細な形状を表す画像I51の画像データI51dを生成できる。このようなコネクション519は、スキップコネクションとも呼ばれる。
【0026】
第1識別モデル520は、実画像データと偽画像データとを識別するように、訓練される。具体的には、第1識別モデル520は、第1生成モデル510によって生成された第1生成画像データI51dを偽データと識別し、ラベルシートを表すコンピュータグラフィックス画像Ioの画像データIodを実データと識別するように、訓練される。一方、第1生成モデル510は、訓練された第1識別モデル520が第1生成画像データI51dを実データと誤って識別するように、訓練される。このような訓練により、第1生成モデル510は、コンピュータグラフィックス画像Ioに近い第1生成画像I51の第1生成画像データI51dを生成できる。
【0027】
第1識別モデル520は、入力された画像データに対して次元削減処理を実行して、1個の値を示す識別データ529を生成する。本実施例では、第1識別モデル520の構成は、以下の通りである。第1識別モデル520は、上流側から順に並ぶ、畳込層群522と、グローバル平均プーリング層525と、全結合層群527と、を有している。後述するように、第1識別モデル520には、画像I51、Ioの一部分である部分画像PA1、PA2を表す部分画像データPA1d、PA2dが、入力される。部分画像PA1、PA2の要素数は、64*64*3である。
【0028】
畳込層群522は、上流側から順に並ぶ3個の畳込層を有している。各畳込層は、2のストライドを使用して、高さに相当する要素数と幅に相当する要素数とを、削減する(チャンネル数に相当する要素数は、増大する)。3個の畳込層には、バッチノーマライゼーションが適用されている。各畳込層の活性化関数は、LeakyReLUである。3個の畳込層は、データの要素数を、「64*64*3」から、「32*32*64」、「16*16*128」、「8*8*128」の順に、変化させる。
【0029】
グローバル平均プーリング層525は、チャンネル毎の平均値を算出する。本実施例では、グローバル平均プーリング層525から出力されるデータの要素数は、128である。
【0030】
全結合層群527は、上流側から順に並ぶ3個の全結合層を有している。全結合層群527は、要素数を増大させた後、要素数を1まで低減させる。本実施例では、3個の全結合層は、要素数を、128から、512、256、1の順に変化させる。なお、要素数は、単調に減少してもよい。また、訓練時に、2番目の全結合層に、ドロップアウトが適用される。1番目から2番目までの2個の全結合層の活性化関数は、ReLUである。最後の全結合層の活性化関数としては、識別データ529の生成に適した関数(例えば、シグモイド関数、または、Tanh関数)が使用される。
【0031】
本実施例では、識別データ529は、ゼロ以上、1以下の値を示している。「1」は、「実」を示し、「0」は、「偽」を示している。識別データ529は、入力された画像データがコンピュータグラフィックス画像の画像データであることの確信の度合いを示している。
【0032】
A3.第2生成モデル600の構成:
図3(A)は、第2生成モデル600の例を示すブロック図である。図中の画像データI61dは、第2生成モデル600に入力される画像データである。本実施例では、画像データI61dは、第1生成モデル510(図2)によって生成される第1生成画像データである(第1生成画像データI61dとも呼ぶ)。第1生成画像データI61dは、ラベルシートLBjの画像I61を表している。第2生成モデル600は、第1生成画像データI61dを使用して、不具合の無いラベルシートLBjxを表す画像データI62dを生成する。上述したように、第1生成画像データI61dの画像I61のラベルシートLBjは、種々の不具合を有し得る。訓練済の第2生成モデル600は、ラベルシートLBjが不具合を有する場合であっても、不具合の無いラベルシートLBjxの画像I62を表す画像データI62dを生成する。生成される画像I62内のラベルシートLBjxの位置と大きさとは、入力される画像I61内のラベルシートLBjの位置と大きさと、それぞれ同じである。以下、第2生成モデル600によって生成される画像データI62dを、第2生成画像データI62dとも呼び、第2生成画像データI62dの画像I62を、第2生成画像I62とも呼ぶ。なお、本実施例では、第2生成画像データI62dは、第1生成画像データI61dと同じカラービットマップデータである。第2生成画像データI62dの要素数(ここでは、高さ*幅*チャンネル数)は、256*512*3である。
【0033】
第2生成モデル600は、いわゆるオートエンコーダを使用して構成されている。本実施例では、第2生成モデル600の構成は、第1生成モデル510(図2)の構成と、同じである。第2生成モデル600は、第2エンコーダ602と、第2デコーダ607と、を有している。第2エンコーダ602の構成は、第1エンコーダ512(図2)の構成と同じであり、第2デコーダ607の構成は、第1デコーダ517(図2)の構成と同じである。第2エンコーダ602と第2デコーダ607との間には、複数のコネクション609が設けられている。第2エンコーダ602は、入力された画像データに対して次元削減処理を実行して、入力された画像の特徴を示す特徴データ605を生成する。
【0034】
A4.第1訓練処理:
図4図5は、第1モデル500の第1訓練処理の例を示すフローチャートである。図5は、図4の続きの処理を示している。プロセッサ210(図1)は、第1プログラム231に従って、図4図5の処理を実行する。
【0035】
S210では、プロセッサ210は、デジタルカメラ100によって読み取られたラベルシートの画像を表す入力画像データを生成する。本実施例では、作業者は、ラベルシート(例えば、ラベルシートLB(図1))がデジタルカメラ100の撮影範囲内に位置するように、プリンタ(例えば、プリンタDV)を配置する。ここで、不具合の無いラベルシートが使用される。プロセッサ210は、デジタルカメラ100にラベルシートを撮影させ、撮影画像データをデジタルカメラ100から取得する。撮影画像は、デジタルカメラ100によって読み取られたラベルシートの画像である。プロセッサ210は、撮影画像からラベルシートの領域を抽出するクロッピング処理を行う。本実施例では、プロセッサ210は、撮影画像を表示部240に表示し、作業者が、撮影画像のうちラベルシートを示すラベル領域を指定する。プロセッサ210は、撮影画像データのうちのラベル領域に対応する部分を使用して、ラベル領域の画像を表す入力画像データを生成する(基準入力画像データとも呼ぶ)。プロセッサ210は、基準入力画像データによって表される入力画像の高さと幅とを、第1モデル500によって受け入れられる画像の高さと幅とに調整する。
【0036】
S215では、プロセッサ210は、データオーギュメンテーションとも呼ばれる加工処理を基準入力画像データに対して行うことによって、互いに異なる画像を表す複数の入力画像データを生成する。本実施例では、プロセッサ210は、予め決められた複数の候補加工処理から、ランダムに1以上の加工処理を選択する(例えば、乱数に従って加工処理が選択される)。そして、プロセッサ210は、選択した加工処理を基準入力画像データに対して実行することによって、新たな入力画像データを生成する。プロセッサ210は、加工処理の選択と実行とを、複数回行う。
【0037】
本実施例では、複数の候補加工処理は、ラベルシートの不具合を形成する複数の不具合形成処理を含んでいる。複数の不具合形成処理は、ラベルシートの文字列の一部を削除する処理を含んでよい(削除された文字に対応する画素の色は、削除された文字の近傍の背景部分の色と同じ色に変更される)。複数の不具合形成処理は、文字を別の文字に変更する処理を含んでよい。複数の不具合形成処理は、画像の一部を削除する処理を含んでよい。このような不具合形成処理は、不具合を有するラベルシートが撮影された場合に生成され得る画像データを、生成可能である。
【0038】
また、複数の候補加工処理は、ラベルシートの読取条件の変化に相当する複数の条件変化処理を含んでいる。複数の条件変化処理は、トーンカーブ調整処理、ホワイトバランス調整処理、ノイズ付加処理を含んでよい。このような条件変化処理は、種々の読取条件の下でラベルシートが撮影された場合に生成され得る画像データを、生成可能である。
【0039】
プロセッサ210は、種々の加工処理を実行することによって、不具合の無い種々のラベルシートを表す複数の入力画像データと、不具合を有する種々のラベルシートの複数の入力画像データとを、生成する。いずれの入力画像データも、光学的に読み取られたラベルシートの画像を表している。なお、不具合を有するラベルシートの撮影によって、不具合を有するラベルシートの入力画像データが生成されてもよい。
【0040】
S220では、プロセッサ210は、入力画像データと、不具合の無いラベルシートを表す原本画像データと、の複数組の画像ペアを生成する。そして、プロセッサ210は、各画像ペアに関して、入力画像データと原本画像データとを対応付けて記憶装置215(本実施例では、不揮発性記憶装置230)に格納する。格納された複数組の画像ペアは、第1種訓練データ590を構成する。原本画像データは、予め準備された原本ベクタデータのレンダリングによって生成されるビットマップデータであり、ラベルシートのコンピュータグラフィックス画像を表している。原本ベクタデータは、ラベルシートの製造のために予め準備されているデータである。原本画像データの画像の高さと幅とは、第1生成モデル510(図2)によって生成される第1生成画像の高さと幅と、それぞれ同じである。本実施例では、原本画像データは、複数組の画像ペアに共通である。第1種訓練データ590に含まれる原本画像データの総数は、1個であってよい。なお、製造時のエラーにより、不具合を有するラベルシートが製造され得る。
【0041】
なお、S210では、ラベルシートの複数回の撮影が行われてよい。複数回の撮影の間では、撮影条件(例えば、図示しない光源の明るさ等)が異なってよい。そして、プロセッサ210は、複数の基準入力画像データを生成してよい。S215では、プロセッサ210は、複数の基準入力画像データを使用して、複数の入力画像データを生成してよい。
【0042】
S225では、プロセッサ210は、第1モデル500(図2)の複数の演算パラメータ、すなわち、第1生成モデル510と第1識別モデル520とのそれぞれの複数の演算パラメータ(例えば、畳込フィルタの複数の重みと複数のバイアスなど)を、初期化する。例えば、各演算パラメータは、乱数値に設定される。
【0043】
S230では、プロセッサ210は、第1種訓練データ590に含まれる複数組の画像ペアから、処理対象の複数の画像ペアである複数の対象ペアで構成されるサブセットを選択する。サブセットとしては、未処理の複数の画像ペアが選択される。また、サブセットの画像ペアの総数は、予め決められている。以下、図2の入力画像データI5idと画像データIodとが、対象ペアを示していることとする。ここで、画像データIodが、原本画像データである(画像データIodを、原画像データIodとも呼び、画像Ioを、原画像Ioとも呼ぶ)。
【0044】
S235では、プロセッサ210は、対象ペアの入力画像データI5idを第1生成モデル510に入力することによって、第1生成画像データI51dを生成する。具体的には、プロセッサ210は、第1生成モデル510の演算パラメータを使用して、第1生成モデル510の各層の演算を行うことによって、第1生成画像データI51dを生成する。
【0045】
S240では、プロセッサ210は、第1生成画像I51中の一部の領域である第1部分領域A1を、ランダムに決定する。第1部分領域A1を定める複数のパラメータ(例えば、位置、形状、大きさ、数など)のうち、予め選択されたパラメータを、プロセッサ210は、ランダムに決定する。本実施例では、プロセッサ210は、乱数を生成し、乱数に従って第1部分領域A1の位置である第1位置P1を決定する。第1部分領域A1の形状と大きさとは、予め決められている。また、プロセッサ210は、1個の第1部分画像PA1のための1個の第1部分領域A1を、決定する。
【0046】
S245では、プロセッサ210は、第1生成画像データI51dと第1部分領域A1とを使用する第1取得処理を実行することによって、第1部分領域A1の画像の少なくとも一部を示す第1部分画像PA1の第1部分画像データPA1dを取得する。本実施例では、プロセッサ210は、第1位置P1に配置された所定形状と所定サイズとを有する第1部分領域A1の画像を示す第1部分画像PA1の第1部分画像データPA1dを取得する。すなわち、プロセッサ210は、第1部分領域A1の画像を、そのまま、第1部分画像PA1として採用する。これに代えて、第1取得処理は、画像の回転や画像のスケーリング(拡大、または、縮小)などの種々の画像処理を含んでよい(詳細は、後述)。
【0047】
S250では、プロセッサ210は、第1部分画像データPA1dを第1識別モデル520に入力することによって、識別データ529を生成する。具体的には、プロセッサ210は、第1識別モデル520の演算パラメータを使用して、第1識別モデル520の各層の演算を行うことによって、識別データ529を算出する。以下、第1部分画像データPA1d(すなわち、第1生成画像データI51d)から得られる識別データ529を、第1識別データ529fとも呼ぶ。
【0048】
S255では、プロセッサ210は、原画像Io中の一部の領域である第2部分領域A2を、ランダムに決定する。第2部分領域A2を定める複数のパラメータ(例えば、位置、形状、大きさ、数など)のうち、予め選択されたパラメータを、プロセッサ210は、ランダムに決定する。本実施例では、プロセッサ210は、乱数を生成し、乱数に従って第2部分領域A2の位置である第2位置P2を決定する。第2部分領域A2の形状と大きさとは、予め決められている。また、プロセッサ210は、1個の第2部分画像PA2のための1個の第2部分領域A2を、決定する。
【0049】
S260では、プロセッサ210は、原画像データIodと第2部分領域A2とを使用する第2取得処理を実行することによって、第2部分領域A2の画像の少なくとも一部を示す第2部分画像PA2の第2部分画像データPA2dを取得する。本実施例では、プロセッサ210は、第2位置P2に配置された所定形状と所定サイズとを有する第2部分領域A2の画像を示す第2部分画像PA2の第2部分画像データPA2dを取得する。すなわち、プロセッサ210は、第2部分領域A2の画像を、そのまま、第2部分画像PA2として採用する。これに代えて、第2取得処理は、画像の回転や画像のスケーリングなどの種々の画像処理を含んでよい(詳細は、後述)。
【0050】
S265では、プロセッサ210は、第2部分画像データPA2dを第1識別モデル520に入力することによって、識別データ529を生成する。具体的には、プロセッサ210は、第1識別モデル520の演算パラメータを使用して、第1識別モデル520の各層の演算を行うことによって、識別データ529を算出する。以下、第2部分画像データPA2d(すなわち、原画像データIod)から得られる識別データ529を、第2識別データ529rとも呼ぶ。
【0051】
S270(図5)では、プロセッサ210は、第1識別データ529fと第2識別データ529rとを使用して、予め決められた識別損失関数に従って、識別損失を算出する。識別損失関数は、第2識別データ529rが「実(1)」に近いほど小さい値を算出し、第1識別データ529fが「偽(ゼロ)」に近いほど小さい値を算出するような、種々の関数であってよい。例えば、第2識別データ529rを、Drとし、第1識別データ529fを、Dfとする場合に、識別損失関数は、以下の関数Fa(Dr、Df)であってよい。
Fa(Dr、Df)=(1-Dr)+(Df)
【0052】
本実施例では、サブセット(図4:S230)は、複数組の対象ペアを含んでいる。プロセッサ210は、複数組の対象ペアのそれぞれに関して、S235-S265の処理を実行する。そして、S270では、プロセッサ210は、複数組の対象ペアから識別損失関数に従って取得される複数の損失の合計値を、識別損失として算出する。
【0053】
S275では、プロセッサ210は、識別損失が小さくなるように、予め決められたアルゴリズムに従って、第1識別モデル520の複数の演算パラメータを調整する。アルゴリズムとしては、例えば、誤差逆伝播法と勾配降下法とを使用したアルゴリズムが採用されてよい。また、プロセッサ210は、いわゆるAdamの最適化を行ってよい。また、本実施例では、プロセッサ210は、畳込層群522の各畳込層に、バッチノーマライゼーションを適用する。プロセッサ210は、全結合層群527のうちの2番目の全結合層に、ドロップアウトを適用する。
【0054】
なお、識別損失関数は、第2識別データ529rが「実(1)」に近いほど大きい値を算出し、第1識別データ529fが「偽(ゼロ)」に近いほど大きい値を算出するような関数であってよい。例えば、識別損失関数は、以下の関数Fb(Dr、Df)であってよい。
Fb(Dr、Df)=log(Dr)+log(1-Df)
この場合、識別損失が大きいほど、第1識別モデル520の性能は良好である。プロセッサ210は、識別損失が大きくなるように、第1識別モデル520の複数の演算パラメータを調整する。なお、この場合、第1識別モデル520にとっては、識別損失は、小さくすべき損失ではなく、大きくすべき評価値である。なお、関数Fb(Dr、Df)にマイナスの符号を付して得られる関数-Fb(Dr、Df)は、小さくすべき損失を表す損失関数として使用可能である。
【0055】
S280、S285は、図4のS240、S245と、それぞれ同じである。S280、S285では、プロセッサ210は、新たな第1位置P1を決定し、新たな第1部分画像データPA1dを取得する。
【0056】
S290では、プロセッサ210は、新たな第1部分画像データPA1dを第1識別モデル520に入力することによって、新たな第1識別データ529fを生成する。S275で第1識別モデル520が訓練されているので、S290で算出される第1識別データ529fは、「偽(ゼロ)」により近い値になり得る。
【0057】
S295では、プロセッサ210は、S290で生成された第1識別データ529fを使用して、予め決められた生成損失関数に従って、生成損失を算出する。生成損失関数は、第1識別データ529fが「実(1)」に近いほど、小さい値を算出する種々の関数であってよい。例えば、第1識別データ529fをDfとする場合に、生成損失関数は、以下の関数Fc(Df)であってよい。
Fc(Df)=(1-Df)
【0058】
本実施例では、サブセット(図4:S230)が複数組の対象ペアを含んでいるので、S235では、プロセッサ210は、複数の第1生成画像データを生成する。プロセッサ210は、複数組の第1生成画像データのそれぞれに関して、S280-S290(図5)の処理を実行する。そして、S295では、プロセッサ210は、複数の第1生成画像データから生成損失関数に従って取得される複数の損失の合計値を、生成損失として算出する。
【0059】
S300では、プロセッサ210は、生成損失が小さくなるように、予め決められたアルゴリズムに従って、第1生成モデル510の複数の演算パラメータを調整する。アルゴリズムとしては、例えば、誤差逆伝播法と勾配降下法とを使用したアルゴリズムが採用されてよい。また、プロセッサ210は、いわゆるAdamの最適化を行ってよい。また、本実施例では、プロセッサ210は、第1エンコーダ512の2番目から5番目までの4個の畳込層と、第1デコーダ517の1番目から4番目までの4個の転置畳込層と、に、バッチノーマライゼーションを適用する。プロセッサ210は、第1デコーダ517の1番目から2番目までの2個の転置畳込層に、ドロップアウトを適用する。
【0060】
S305では、プロセッサ210は、訓練終了条件が満たされるか否かを判断する。訓練終了条件は、第1モデル500が適切に訓練されたことを示す任意の条件であってよい。本実施例では、訓練終了条件は、作業者からの終了指示が入力されることである。プロセッサ210は、第1種訓練データ590(図1)中の訓練に使用されていない複数の画像ペアから、所定数の画像ペアをランダムに取得する。プロセッサ210は、取得した複数の画像ペアのそれぞれの入力画像データを第1生成モデル510に入力し、第1生成モデル510から複数の第1生成画像データを取得する。プロセッサ210は、入力された入力画像と出力された第1生成画像との複数のペアを、表示部240に表示する。作業者は、表示部240を観察して、第1生成画像が入力画像と同じラベルシートのコンピュータグラフィックス画像を適切に表しているか否かを確認する。作業者は、確認結果に応じて、操作部250を操作して、訓練の終了指示、または、継続指示を入力する。
【0061】
なお、訓練の終了条件は、他の条件であってよい。例えば、終了条件は、訓練に使用されていない予め決められた第1数の画像ペアを使用して算出される識別損失と生成損失とが、それぞれに対応する所定の閾値以下であることであってよい。
【0062】
訓練が終了していないと判断される場合(S305:No)、プロセッサ210は、図4のS230へ移行し、新たなサブセットの処理を実行する。訓練が終了したと判断される場合(S305:Yes)、S310で、プロセッサ210は、訓練済の第1生成モデル510を、記憶装置215(ここでは、不揮発性記憶装置230)に格納する。そして、プロセッサ210は、図4図5の処理を終了する。訓練済の第1生成モデル510は、ラベルシートの読取画像を、同じラベルシートのコンピュータグラフィックス画像に変換できる。なお、訓練が終了した場合、プロセッサ210は、第1識別モデル520を、不揮発性記憶装置230から削除してよい。
【0063】
なお、上述した読取装置で生じるノイズと読取りの条件との影響は、読取画像(例えば、入力画像I5i(図2))の全体に、及ぶ。一方、コンピュータグラフィックス画像(例えば、原画像Io(図2))に対するそのような影響は、小さい。従って、読取画像の一部分のみと、コンピュータグラフィックス画像の一部分のみと、が使用可能な場合であっても、読取画像とコンピュータグラフィックス画像との識別は容易である。このように、第1識別モデル520(図2)は、ラベルシートの画像I51、Ioの全体ではなく部分画像PA1、PA2が入力される場合であっても、入力された画像がコンピュータグラフィックス画像であるか否かを適切に識別できる。また、本実施例の訓練では、第1識別モデル520へ入力される画像データの多様性が増加する。例えば、原画像Io中の互いに異なる部分を示す複数の第2部分画像PA2が、第1識別モデル520に入力される。従って、第1識別モデル520の訓練の速度が抑制される。この結果、第1生成モデル510の訓練と第1識別モデル520の訓練とのバランスをとることができる。従って、本実施例の訓練は、光学的に読み取られたラベルシートの画像I5iを表す画像データI5idを第1生成モデル510に入力することによって生成される画像データI51dの画像I51がラベルシートのコンピュータグラフィックス画像に近づくように、第1生成モデル510を適切に訓練できる。
【0064】
また、本実施例の訓練では、第1識別モデル520は、第1生成画像I51中の第1部分領域A1の画像を示す第1部分画像PA1の第1部分画像データPA1dを、偽画像データとして使用する。また、第1識別モデル520は、原画像Io中の第2部分領域A2の画像を示す第2部分画像PA2の第2部分画像データPA2dを、実画像データとして使用する。原画像Ioは、不具合の無いラベルシートを表している。従って、本実施例の訓練は、第1部分画像PA1によって表されるラベルシートの部分が、不具合の無いラベルシートの対応する部分に近づくように、第1生成モデル510を訓練できる。また、第1生成モデル510には、ラベルシートの不具合の無い部分を含む種々の入力画像I5iの種々の入力画像データI5idが入力される。従って、本実施例の訓練は、入力画像I5i中のラベルシートの不具合の無い部分と同じ部分を表す第1生成画像I51を生成するように、第1生成モデル510を訓練できる。仮に、入力画像I5iのラベルシートLBiが不具合を有する場合、第1生成画像I51は、入力画像I5iに含まれる不具合を示す部分の影響により、同様の不具合を示す部分を含み得る。本実施例の訓練では、第1部分領域A1は、第1生成画像I51内の不具合を示す部分とは異なる部分に決定され得る。従って、第1生成モデル510は、入力画像I5iに含まれる不具合を示す部分に起因する第1生成画像I51内の同様の不具合を示す部分がそのまま残るように、訓練され得る。以上により、訓練済の第1生成モデル510は、入力画像I5iのラベルシートLBiが不具合を有する場合、同じ不具合を有するラベルシートLBiを表す第1生成画像I51を生成する。
【0065】
また、プロセッサ210は、第1部分画像PA1のための第1部分領域A1の第1位置P1を、ランダムに決定する(図4:S240)。プロセッサ210は、第2部分画像PA2のための第2部分領域A2の第2位置P2を、ランダムに決定する(S255)。従って、種々の位置P1、P2の部分画像PA1、PA2の部分画像データPA1d、PA2dが、第1識別モデル520に入力される。このように、第1識別モデル520へ入力される画像データの多様性が増加するので、第1生成モデル510と第1識別モデル520との適切な訓練が、可能である。
【0066】
A5.第2訓練処理:
図6は、第2生成モデル600の第2訓練処理の例を示すフローチャートである。図3(B)は、第2生成モデル600の訓練の概要を示すブロック図である。本実施例では、第2生成モデル600は、種々のラベルシートの画像データが入力される場合に、不具合のないラベルシートの画像データを生成するように、訓練される。プロセッサ210(図1)は、第2プログラム232に従って、図6の処理を実行する。
【0067】
S410では、プロセッサ210は、図2で説明した原画像データIodを使用して複数の訓練画像データを生成し、生成した複数の訓練画像データを記憶装置215(本実施例では、不揮発性記憶装置230)に格納する。格納された複数の訓練画像データは、第2種訓練データ690(図1)を構成する。本実施例では、プロセッサ210は、データオーギュメンテーションとも呼ばれる加工処理を原画像データIodに対して行うことによって、互いに異なる画像を表す複数の訓練画像データを生成する。プロセッサ210は、S215(図4)と同様に、予め決められた複数の候補加工処理からの加工処理の選択と、原画像データIodに対する選択された加工処理の実行とを、複数回行う。なお、S410で使用される複数の候補加工処理は、不具合の無いラベルシートを維持する複数の加工処理で構成されている(例えば、トーンカーブ調整処理、ホワイトバランス調整処理、ノイズ付加処理など)。文字の領域を加工する処理のようなラベルシートの不具合を生成する加工処理は、使用されない。従って、複数の訓練画像データは、いずれも、不具合の無いラベルシートを表している。
【0068】
S415では、プロセッサ210は、第2生成モデル600の複数の演算パラメータ(例えば、畳込フィルタの複数の重みと複数のバイアスなど)を、初期化する。例えば、各演算パラメータは、乱数値に設定される。
【0069】
S420では、プロセッサ210は、第2種訓練データ690に含まれる複数の訓練画像データから、処理対象の複数のデータである複数の対象訓練画像データで構成されるサブセットを選択する。サブセットとしては、未処理の複数の訓練画像データが選択される。サブセットの画像データの総数は、予め決められている。
【0070】
S425では、プロセッサ210は、対象訓練画像データI6td(図3(B))を、第2生成モデル600(図3)に入力することによって、第2生成画像データI6xdを生成する。具体的には、プロセッサ210は、第2生成モデル600の演算パラメータを使用して、第2生成モデル600の各層の演算を行うことによって、第2生成画像データI6xdを生成する。
【0071】
S430では、プロセッサ210は、第2生成モデル600に入力された対象訓練画像データI6tdと、第2生成画像データI6xdと、を使用して、予め決められた再構成損失関数に従って、再構成損失を算出する。再構成損失関数は、2個の画像データの間の差分を表す種々の関数であってよい。本実施例では、再構成損失関数として、いわゆる交差エントロピーが使用される。これに代えて、再構成損失関数として、二乗和誤差が使用されてよい。本実施例では、サブセット(S420)は、複数の対象訓練画像データを含んでいる。プロセッサ210は、複数の対象訓練画像データのそれぞれに関して、S425の処理を実行し、複数の第2生成画像データを生成する。S430では、プロセッサ210は、対象訓練画像データと第2生成画像データとの複数のペアから再構成損失関数に従って取得される複数の損失L2の合計値を、再構成損失として算出する。
【0072】
S435では、プロセッサ210は、再構成損失が小さくなるように、予め決められたアルゴリズムに従って、第2生成モデル600の複数の演算パラメータを調整する。アルゴリズムとしては、例えば、誤差逆伝播法と勾配降下法とを使用したアルゴリズムが採用されてよい。また、プロセッサ210は、いわゆるAdamの最適化を行ってよい。また、本実施例では、プロセッサ210は、第2エンコーダ602の2番目から5番目までの4個の畳込層と、第2デコーダ607の1番目から4番目までの4個の転置畳込層と、に、バッチノーマライゼーションを適用する。プロセッサ210は、第2デコーダ607の1番目から2番目までの2個の転置畳込層に、ドロップアウトを適用する。
【0073】
S440では、プロセッサ210は、訓練終了条件が満たされるか否かを判断する。訓練終了条件は、第2生成モデル600が適切に訓練されたことを示す任意の条件であってよい。本実施例では、訓練終了条件は、作業者からの終了指示が入力されることである。プロセッサ210は、第2種訓練データ690(図1)中の訓練に使用されていない複数の訓練画像データから、所定数の画像データをランダムに取得する。プロセッサ210は、取得した複数の画像データを第2生成モデル600に入力し、第2生成モデル600から複数の第2生成画像データを取得する。プロセッサ210は、入力された画像と出力された第2生成画像との複数のペアを、表示部240に表示する。作業者は、表示部240を観察して、第2生成画像が入力された画像と同じラベルシートの画像を適切に表しているか否かを確認する。作業者は、確認結果に応じて、操作部250を操作して、訓練の終了指示、または、継続指示を入力する。
【0074】
なお、訓練の終了条件は、他の条件であってよい。例えば、終了条件は、訓練に使用されていない予め決められた第2数の訓練画像データを使用して算出される再構成損失が、所定の再構成閾値以下であることであってよい。
【0075】
訓練が終了していないと判断される場合(S440:No)、プロセッサ210は、S420へ移行し、新たなサブセットの処理を実行する。訓練が終了したと判断される場合(S440:Yes)、S445で、プロセッサ210は、訓練済の第2生成モデル600を、記憶装置215(ここでは、不揮発性記憶装置230)に格納する。そして、プロセッサ210は、図6の処理を終了する。以上のように、第2生成モデル600は、不具合の無い種々のラベルシートの画像データから、不具合の無い同じラベルシートの画像データを生成するように訓練される。従って、訓練済の第2生成モデル600は、入力される画像データI61d(図3(A))が不具合を有するラベルシートLBjを表す場合であっても、不具合の無いラベルシートLBjxを表す画像データI62dを生成する。
【0076】
A6.検査処理:
図7は、検査処理の例を示すフローチャートである。検査処理は、画像処理装置200(図1)によって実行される。プロセッサ210は、第3プログラム233に従って、検査処理を実行する。
【0077】
S510では、プロセッサ210は、検査対象のラベルシートである注目ラベルシートをデジタルカメラ100に撮影させ、注目撮影画像データをデジタルカメラ100から取得する。図8は、検査処理の概略図である。図中の画像データIxdは、注目撮影画像Ixの注目撮影画像データIxdである。注目撮影画像Ixは、注目ラベルシートLBxを含むプリンタDVの一部分を表している。図8の例では、注目ラベルシートLBxは、文字列の不具合を有している(詳細は、後述)。
【0078】
S515では、プロセッサ210は、注目撮影画像から注目ラベルシートの領域を抽出するクロッピング処理を行う。本実施例では、プロセッサ210は、物体検出モデルと呼ばれる機械学習モデル(例えば、YOLOv4 (You only look once)、SSD (Single Shot MultiBox Detector)、R-CNN (Region Based Convolutional Neural Networks) など)を使用して、注目ラベルシートLBxの領域を検出する。プロセッサ210は、注目撮影画像データIxdのうちの検出された領域を示す部分を使用して、注目ラベルシートLBxを表す注目入力画像データIx0dを生成する。プロセッサ210は、注目入力画像データIx0dによって表される注目入力画像Ix0の高さと幅とを、第1モデル500によって受け入れられる画像の高さと幅とに調整する。なお、注目ラベルシートLBxの領域の検出方法は、他の任意の方法であってよい。例えば、プロセッサ210は、予め決められた基準パターンを使用するパターンマッチングによって、注目ラベルシートLBxの領域を検出してもよい。
【0079】
S520では、プロセッサ210は、注目入力画像データを第1生成モデル510に入力することによって、第1注目生成画像データIx1dを生成する。プロセッサ210は、第1生成モデル510の演算パラメータを使用して、第1生成モデル510の各層の演算を行うことによって、第1注目生成画像データIx1dを生成する。第1注目生成画像データIx1dの第1注目生成画像Ix1は、コンピュータグラフィックス画像のような注目ラベルシートLBxの画像である。
【0080】
S530では、プロセッサ210は、第1注目生成画像データIx1dを第2生成モデル600に入力することによって、第2注目生成画像データIx2dを生成する。プロセッサ210は、第2生成モデル600の演算パラメータを使用して、第2生成モデル600の各層の演算を行うことによって、第2注目生成画像データIx2dを生成する。第2注目生成画像データIx2dの第2注目生成画像Ix2は、不具合の無いラベルシートLBxmを表している(正解ラベルシートLBxmとも呼ぶ)。図8の例では、正解ラベルシートLBxmは、3個の文字列T1、T2、T3を表している。一方、注目入力画像Ix0によって示されるように、注目ラベルシートLBxは、2個の文字列T1、T2xを表している。第2文字列T2xの最も右側の文字T2eは、正解ラベルシートLBxmの第2文字列T2の正しい「2」に代えて、誤った「9」である。注目ラベルシートLBx上では、第3文字列T3は、空白領域Axに置換されている。
【0081】
S535では、プロセッサ210は、第1注目生成画像Ix1と第2注目生成画像Ix2との間の差分を示す中間差分画像Ix3の中間差分画像データIx3dを生成する。中間差分画像Ix3の各画素は、第1注目生成画像Ix1の対応する画素の第1色値と、第2注目生成画像Ix2の対応する画素の第2色値と、の間の差を示している。本実施例では、第1色値と第2色値とは、RGB値である。プロセッサ210は、第1色値と第2色値との間のL1距離を、中間差分画像Ix3の画素の画素値として算出する。なお、中間差分画像Ix3の画素の画素値は、L1距離に代えて、第1注目生成画像Ix1と第2注目生成画像Ix2との間の差を示す任意の値であってよい(例えば、L2距離、RGB値から算出される輝度値の差分、など)。
【0082】
中間差分画像Ix3は、種々のノイズを含み得る。例えば、文字などのオブジェクトと背景との境界を示す画素の色値は、第1注目生成画像Ix1と第2注目生成画像Ix2との間で、異なり得る。中間差分画像Ix3は、このような色値のズレを、表し得る。そこで、本実施例では、プロセッサ210は、中間差分画像データIx3dの二値化処理を実行することによって、最終的な差分画像Ix4の差分画像データIx4dを生成する。二値化処理の閾値は、不具合を示す画素の値を1に設定し、不具合の無い画素とノイズを示す画素とのぞれぞれの値をゼロに設定するように、予め実験的に決定される。図8の例では、差分画像Ix4は、注目入力画像Ix0から欠けている第3文字列T3と、第2文字列T2xの最も右側の文字の差分画像T2wと、を表している。
【0083】
S540では、プロセッサ210は、差分画像データIx4dの次元削減処理を実行することによって、異常度DAを算出する。異常度DAは、注目入力画像データIx0dによって表される注目ラベルシートLBxの不具合の度合いを示している。次元削減処理は、差分画像データIx4dの特徴を示す異常度DAを算出する種々の処理であってよい。本実施例では、プロセッサ210は、t-SNE(t-distributed Stochastic Neighbor Embedding)を使用して、差分画像データIx4dから、第1値V1と第2値V2とで構成される2次元データを生成する。図8には、2次元データを示すグラフの概略が示されている。横軸は第1値V1を示し、縦軸は第2値V2を示している。注目点Piは、差分画像データIx4dから算出された2次元データを示している。基準点Psは、不具合の無いラベルシートの複数の撮影画像からS515-S540の処理と同じ処理によって得られる複数の2次元データPrの代表点である。本実施例では、基準点Psは、複数の2次元データPrの重心点であり、予め決められている。距離DAdは、基準点Psと注目点Piとの間の距離である(本実施例では、二乗和誤差)。なお、距離DAdは、2個の点Ps、Piの間の距離を示す種々の値であってよい(例えば、L2距離、L1距離など)。
【0084】
プロセッサ210は、予め決められた評価関数に距離DAdを入力することによって、異常度DAを算出する。評価関数は、距離DAdが大きいほど大きい異常度DAを算出する種々の関数であってよい。ここで、距離DAdの全範囲が、短範囲と中範囲と長範囲との3つの範囲に区分される場合に、短範囲では、異常度DAがゼロに近く、長範囲では、異常度DAが最大値(例えば、100)に近く、中範囲では、距離DAdの変化に応じて異常度DAが大きく変化することが好ましい。このような評価関数としては、例えば、シグモイド関数、または、tanh関数を採用可能である。
【0085】
このように、本実施例では、プロセッサ210は、t-SNEと評価関数とを使用する次元削減処理を実行して、差分画像データIx4dから異常度DAを算出する。本実施例では、異常度DAは、ゼロ以上、100以下の値である。
【0086】
S545では、プロセッサ210(図1)は、差分画像Ix4と異常度DAとを、表示部240に表示する。図9(A)は、表示部240に表示される画像の例を示す概略図である。表示部240は、差分画像Ix4と、異常度DAを示す文字列DAtと、を表している。図9(A)では、異常度DAは、80であり、異常度DAの単位として「%」が示されている。作業者は、表示部240を観察することによって、注目ラベルシートLBxのうちの不具合を有する部分と、異常の度合いとを、容易に認識できる。
【0087】
図7の実施例では、プロセッサ210は、S530-S545の処理と並行して、S550、S555、S560の処理を実行する。図10は、検査処理の概略図である。図10には、S550、S555の概略が示されている。S550(図7)では、プロセッサ210は、第1注目生成画像データIx1dの文字認識処理を実行し、注目ラベルシートLBxによって表される文字列のリストを示す注目文字列テーブルTxを取得する。文字認識処理は、公知の種々の処理であってよい。例えば、Google社の「Tesseract OCR」と呼ばれる光学文字認識エンジンが、使用されてよい。なお、本実施例では、プロセッサ210は、ノイズを含む注目入力画像データIx0dではなく、第1注目生成画像データIx1dを、文字認識に使用する。従って、プロセッサ210は、適切な文字認識結果を、取得できる。
【0088】
図10には、注目文字列テーブルTxの例が示されている。図示するように、注目文字列テーブルTxは、第1文字列T1と、第2文字列T2xと、を示している。第2文字列T2xの最も右側の文字T2eは、誤った「9」である。第3文字列T3は、認識されない。
【0089】
S555では、プロセッサ210は、注目文字列テーブルTxと、原本文字列テーブルToと、を比較することにより、不具合を有する文字列のリストを示す不具合文字列テーブルTdを生成する。原本文字列テーブルToは、不具合の無いラベルシートによって表される文字列のリストを示しており、予め準備されている。プロセッサ210は、注目文字列テーブルTxと原本文字列テーブルToとを比較し、文字列単位で、不具合を検出する。図10の例では、不具合文字列テーブルTdは、第2文字列T2xと、第3文字列T3と、を示している。第2文字列T2xの最も右側の文字T2eは、誤った「9」である。
【0090】
このように、不具合文字列テーブルTdは、注目文字列テーブルTxに含まれる文字列であって、原本文字列テーブルToに含まれる対応する文字列と少なくとも一部が異なる文字列(例えば、第2文字列T2x)を、含んでいる。また、不具合文字列テーブルTdは、原本文字列テーブルToに含まれ、かつ、注目文字列テーブルTxに含まれない文字列(例えば、第3文字列T3)を、含んでいる。図示を省略するが、注目文字列テーブルTxが、原本文字列テーブルToに含まれない文字列を含む場合、不具合文字列テーブルTdは、その文字列を含んでいる。
【0091】
S560では、プロセッサ210(図1)は、不具合文字列テーブルTdによって示される文字列を、表示部240に表示する。図9(B)は、表示部240に表示される画像の例を示す概略図である。表示部240は、不具合文字列テーブルTdに含まれる文字列T2x、T3を表している。作業者は、表示部240を観察することによって、注目ラベルシートLBxに含まれる不具合を、容易に認識できる。
【0092】
S530-S545の処理とS550-S560の処理とが終了した場合、プロセッサ210は、図7の検査処理を終了する。なお、プロセッサ210は、S530-S545の処理と、S550-S560の処理とを、並行ではなく、順番に実行してよい。
【0093】
以上のように、本実施例では、画像処理装置200のプロセッサ210は、以下の画像処理を実行する。図7のS520では、プロセッサ210は、光学的に読み取られた注目ラベルシートLBx(図8)を表す注目入力画像データIx0dを第1生成モデル510に入力することによって、注目入力画像データIx0dに対応する第1注目生成画像データIx1dを生成する。図2図4図5で説明したように、第1生成モデル510は、光学的に読み取られたラベルシートの画像I5i(図2)を表す画像データI5idを第1生成モデル510に入力することによって生成される画像データI51dの画像I51がラベルシートのコンピュータグラフィックス画像Ioに近づくように訓練された生成モデルである。
【0094】
また、図7のS530では、プロセッサ210は、第1注目生成画像データIx1d(図8)を第2生成モデル600に入力することによって、不具合の無い注目対象物の画像Ix2を表す第2注目生成画像データIx2dを生成する。図6で説明したように、第2生成モデル600は、ラベルシートの画像を表す画像データI61d(図3(A))を第2生成モデル600に入力することによって不具合の無いラベルシートの画像I62を表す画像データI62dを生成するように訓練された生成モデルである。
【0095】
また、図7のS535では、プロセッサ210は、第1注目生成画像データIx1d(図8)の画像Ix1と第2注目生成画像データIx2dの画像Ix2との間の差分を示す差分画像Ix4の差分画像データIx4dを生成する。
【0096】
図2図5図6で説明したように、第1生成モデル510は、第1生成モデル510と第1識別モデル520とを有する第1モデル500の訓練によって生成される。ここで、第1生成モデル510は、生成ネットワークの例であり、第1識別モデル520は、識別ネットワークの例であり、第1モデル500は、生成ネットワークと識別ネットワークとを有する敵対的生成ネットワークの例である。
【0097】
図4のS250、S260、図2で説明したように、第1識別モデル520は、第1部分画像データPA1dと第2部分画像データPA2dとを第1識別モデル520に入力することによって、訓練されている。S235-S245、図2で説明したように、第1部分画像データPA1dは、訓練用の入力画像データI5idを第1生成モデル510に入力することによって生成された画像データI51dの画像である第1画像I51の一部分である第1部分画像PA1を表している。S250-S260、図2で説明したように、第2部分画像データPA2dは、訓練用のコンピュータグラフィックス画像Ioである第2画像Ioの一部分である第2部分画像PA2を表している。
【0098】
以上により、識別ネットワークの例である第1識別モデル520へ入力される画像データPA1d、PA2d(図2)の多様性が増加し、第1識別モデル520の訓練の速度が抑制されるので、生成ネットワークの例である第1生成モデル510の訓練と第1識別モデル520の訓練とのバランスをとることができる。従って、図8に示すように、第1生成モデル510は、光学的に読み取られたラベルシートLBxの画像Ix0を表す画像データIx0dを第1生成モデル510に入力することによって生成される画像データIx1dの画像Ix1がラベルシートのコンピュータグラフィックス画像に近づくように適切に訓練される。このような第1生成モデル510によって生成される第1注目生成画像データIx1dが第2生成モデル600に入力されるので、第2生成モデル600は、不具合の無い注目ラベルシートの画像を表す第2注目生成画像データIx2dを適切に生成できる。従って、第1注目生成画像データIx1dの画像Ix1と第2注目生成画像データIx2dの画像Ix2との間の差分を示す差分画像Ix4の差分画像データIx4dは、注目ラベルシートLBxの読取りの条件に拘わらずに、注目入力画像データIx0dによって表される注目ラベルシートLBxの不具合を、適切に表すことができる。
【0099】
さらに、本実施例では、S540(図7)で、プロセッサ210は、差分画像データIx4dの次元削減処理を実行することによって、注目入力画像データIx0dによって表される注目ラベルシートLBxの異常度DAを算出する。上述したように、差分画像データIx4dは、注目ラベルシートLBxの不具合を適切に表すので、プロセッサ210は、差分画像データIx4dを使用して、適切な異常度DAを算出できる。
【0100】
また、図4のS240、S255、図2で説明したように、第1画像I51上の第1部分領域A1の第1位置P1は、ランダムに決定されており、第2画像Io上の第2部分領域A2の第2位置P2は、ランダムに決定されている。第1モデル500の訓練では(図4図5)、プロセッサ210は、種々の位置P1、P2の部分領域A1、A2の部分画像PA1、PA2の部分画像データPA1d、PA2dを、第1識別モデル520に入力する。これにより、第1識別モデル520へ入力される画像データの多様性が増加するので、第1生成モデル510と第1識別モデル520との適切な訓練が、可能である。
【0101】
また、上述したように、図4図5は、生成ネットワークと識別ネットワークとを有する敵対的生成ネットワークの訓練処理の例を示している。この訓練処理は、以下の処理を備えている。S235では、プロセッサ210は、訓練用の入力画像データI5idを生成ネットワークの例である第1生成モデル510に入力することによって、第1画像I51の第1画像データI51dを生成する。S240では、プロセッサ210は、第1画像I51中の第1部分領域A1をランダムに決定する(本実施例では、第1部分領域A1の第1位置P1が、ランダムに決定される)。S245では、プロセッサ210は、第1画像I51中の第1部分領域A1の画像の少なくとも一部を示す第1部分画像PA1を表す第1部分画像データPA1dを、第1画像データI51dと第1部分領域A1とを使用して取得する。S250では、プロセッサ210は、第1部分画像データPA1dを識別ネットワークの例である第1識別モデル520に入力することによって、第1識別データ529fを取得する。S255では、プロセッサ210は、入力画像データI5idに対応付けられた第2画像データIodの第2画像Io中の第2部分領域A2をランダムに決定する(本実施例では、第2部分領域A2の第2位置P2が、ランダムに決定される)。S260では、プロセッサ210は、第2画像Io中の第2部分領域A2の画像の少なくとも一部を示す第2部分画像PA2を表す第2部分画像データPA2dを、第2画像データIodと第2部分領域A2とを使用して取得する。S265では、プロセッサ210は、第2部分画像データPA2dを第1識別モデル520に入力することによって、第2識別データ529rを取得する。S270、S275では、プロセッサ210は、第1識別データ529fと第2識別データ529rとを使用することによって、第1識別モデル520のパラメータを調整する。以上により、敵対的生成ネットワークの訓練のために識別ネットワークに入力される画像の多様性が向上するので、識別ネットワーク、ひいては、識別ネットワークと生成ネットワークを有する敵対的生成ネットワークを、適切に訓練できる。なお、敵対的生成ネットワークの用途は、ラベルシートなどの対象物の不具合に関する検査に限らず、任意の用途であってよい。
【0102】
B.変形例:
(1)第1モデル500の訓練(図4図5)には、互いに異なる画像を表す複数の入力画像データが使用されることが好ましい。複数の入力画像データは、ラベルシートの互いに異なる不具合を示す複数の入力画像データを含むことが好ましい。また、複数の入力画像データは、互いに異なる読取条件に対応する複数の入力画像データを含むことが好ましい。
【0103】
また、入力画像データに対応付けられるコンピュータグラフィックス画像のデータは、入力画像データによって表されるラベルシートと同じラベルシートを表してよい。すなわち、入力画像データが不具合を有するラベルシートを表す場合、その入力画像データに対応付けられるコンピュータグラフィックス画像のデータは、同じ不具合を有するラベルシートを表してよい。このような注目入力画像データとコンピュータグラフィックス画像のデータとのペアを訓練に用いることによって、訓練済の第1生成モデル510は、不具合を有するラベルシートを表す画像データが入力される場合に、同じ不具合を有するラベルシートのコンピュータグラフィックス画像を表すデータを、適切に生成できる。
【0104】
(2)第1モデル500の訓練(図4図5)では、プロセッサ210は、互いに異なる複数の第1位置P1(図2)の複数の第1部分領域A1の複数の画像を示す複数の第1部分画像PA1の複数のデータPA1dを、第1識別モデル520に入力することが好ましい。ここで、プロセッサ210は、複数の第1生成画像データを使用して複数の第1部分画像PA1のデータを取得することが好ましい。これに代えて、プロセッサ210は、1個の第1生成画像データを使用して複数の第1部分画像PA1のデータを取得してもよい。ここで、S240(図4)では、プロセッサ210は、1個の第1生成画像から取得される第1部分画像PA1の数(すなわち、第1生成画像上の第1部分領域A1の数)を、ランダムに決定してよい。互いに異なる複数の第1位置P1は、ランダムに決定される代わりに、予め決められていてもよい。また、S240では、プロセッサ210は、第1生成画像上の第1部分領域A1の大きさ(単位は、例えば、予め決められた方向(例えば、幅方向)の画素数)を、ランダムに決定してよい。また、プロセッサ210は、予め決められた複数の形状(例えば、四角形、長方形、菱形、円、楕円など)から、第1生成画像上の第1部分領域A1の形状をランダムに決定してよい。一般的には、プロセッサ210は、S240で、第1生成画像上の第1部分領域A1の位置と形状と大きさと数とを含む複数のパラメータのうちの1以上のパラメータを、ランダムに決定してよい。これにより、第1識別モデル520に入力される画像データの多様性は、更に向上する。なお、残りのパラメータは、予め決められてよい。ここで、プロセッサ210は、S240で、複数のパラメータのうちのランダムに決定すべきパラメータを、ランダムに決定してよい。
【0105】
また、S245の第1取得処理は、第1生成画像中の第1部分領域A1の画像の少なくとも一部を示す第1部分画像PA1の第1部分画像データPA1dを取得する種々の処理であってよい。第1取得処理は、例えば、画像の回転と画像のスケーリング(拡大、または、縮小)の一方または両方を含んでよい。画像のスケーリングは、画像の画素密度を変更する。第1取得処理は、回転とスケーリングとに限らず、他の種々の画像処理を含んでよい。第1取得処理は、第1取得処理によって生成された第1部分画像PA1が第1部分領域A1の画像の少なくとも一部と同じ画像を示すように構成されていることが好ましい。第1取得処理では、プロセッサ210は、第1取得処理の画像処理で使用される1以上のパラメータ(例えば、回転角度とスケーリング比率とを含む複数のパラメータ)のうちの予め選択された1以上のパラメータ(例えば、回転角度とスケーリング比率との一方または両方)を、ランダムに決定してよい。スケーリング比率は、スケーリングの前の画像の大きさ(単位は、例えば、予め決められた方向(例えば、幅方向)の画素数)に対するスケーリングの後の画像の大きさの比率である。第1取得処理では、プロセッサ210は、回転とスケーリングとを含む複数の画像処理から、実行すべき画像処理を、ランダムに選択してよい。第1取得処理では、プロセッサ210は、第1取得処理の画像処理で使用される1以上のパラメータのうちのランダムに決定すべきパラメータを、ランダムに選択してよい。ランダムに決定されたパラメータを第1取得処理の画像処理で使用することによって、第1識別モデル520に入力される画像データの多様性は、更に向上する。なお、残りのパラメータは、予め決められてよい。
【0106】
いずれの場合も、第1取得処理は、第1部分画像PA1を、第1識別モデル520によって受け入れられる画像である識別入力画像に調整する処理を含んでよい。プロセッサ210は、例えば、画素密度の調整、または、畳込処理によって、第1部分画像PA1の大きさ(より一般的には、画素密度)を調整してよい。また、調整前の第1部分画像PA1の形状が識別入力画像の形状と異なる場合、プロセッサ210は、調整前の第1部分画像PA1から、識別入力画像の形状と同じ形状を有する部分を抽出することによって、調整済の第1部分画像PA1を生成してよい。このように、第1部分画像PA1は、第1生成画像中の第1部分領域A1の画像の全体または一部を示してよい。スケーリングを含む第1取得処理が実行される場合、調整済の第1部分画像PA1の中の、第1部分領域A1の画像の大きさが、スケーリング比率が大きいほど大きくなるように、第1部分画像PA1が調整されてよい。
【0107】
同様に、プロセッサ210は、互いに異なる複数の第2位置P2(図2)の複数の第2部分領域A2の複数の画像を示す複数の第2部分画像PA2の複数のデータPA2dを、第1識別モデル520に入力することが好ましい。ここで、プロセッサ210は、1個のコンピュータグラフィックス画像データ(例えば、画像データIod)を使用して複数の第2部分画像PA2のデータを取得してよい。ここで、S255(図4)では、プロセッサ210は、1個のコンピュータグラフィックス画像から取得される第2部分画像PA2の数(すなわち、コンピュータグラフィックス画像上の第2部分領域A2の数)を、ランダムに決定してよい。これに代えて、プロセッサ210は、複数のコンピュータグラフィックス画像データを使用して複数の第2部分画像PA2のデータを取得してもよい。互いに異なる複数の第2位置P2は、ランダムに決定される代わりに、予め決められていてもよい。また、S255では、プロセッサ210は、コンピュータグラフィックス画像上の第2部分領域A2の大きさ(単位は、例えば、予め決められた方向(例えば、幅方向)の画素数)を、ランダムに決定してよい。また、プロセッサ210は、予め決められた複数の形状(例えば、四角形、長方形、菱形、円、楕円など)から、コンピュータグラフィックス画像上の第2部分領域A2の形状をランダムに決定してよい。一般的には、プロセッサ210は、S255で、コンピュータグラフィックス画像上の第2部分領域A2の位置と形状と大きさと数とを含む複数のパラメータのうちの1以上のパラメータを、ランダムに決定してよい。これにより、第1識別モデル520に入力される画像データの多様性は、更に向上する。なお、残りのパラメータは、予め決められてよい。ここで、プロセッサ210は、S255で、複数のパラメータのうちのランダムに決定すべきパラメータを、ランダムに決定してよい。
【0108】
また、S260の第2取得処理は、コンピュータグラフィックス画像中の第2部分領域A2の画像の少なくとも一部を示す第2部分画像PA2の第2部分画像データPA2dを取得する種々の処理であってよい。第2取得処理は、第2取得処理によって生成された第2部分画像PA2が第2部分領域A2の画像の少なくとも一部と同じ画像を示すように構成されていることが好ましい。第2取得処理は、第1取得処理と同じであってよく、例えば、画像の回転と画像のスケーリングの一方または両方を含んでよい。第2取得処理では、プロセッサ210は、第2取得処理の画像処理で使用される1以上のパラメータ(例えば、回転角度とスケーリング比率とを含む複数のパラメータ)のうちの予め選択された1以上のパラメータ(例えば、回転角度とスケーリング比率との一方または両方)を、ランダムに決定してよい。第2取得処理では、プロセッサ210は、回転とスケーリングとを含む複数の画像処理から、実行すべき画像処理を、ランダムに選択してよい。第2取得処理では、プロセッサ210は、第2取得処理の画像処理で使用される1以上のパラメータのうちのランダムに決定すべきパラメータを、ランダムに選択してよい。ランダムに決定されたパラメータを第2取得処理の画像処理で使用することによって、第1識別モデル520に入力される画像データの多様性は、更に向上する。なお、残りのパラメータは、予め決められてよい。
【0109】
いずれの場合も、第2取得処理は、第2部分画像PA2を、第1識別モデル520によって受け入れられる識別入力画像に調整する処理を含んでよい。プロセッサ210は、例えば、画素密度の調整、または、畳込処理によって、第2部分画像PA2の大きさ(より一般的には、画素密度)を調整してよい。また、調整前の第2部分画像PA2の形状が識別入力画像の形状と異なる場合、プロセッサ210は、調整前の第2部分画像PA2から、識別入力画像の形状と同じ形状を有する部分を抽出することによって、調整済の第2部分画像PA2を生成してよい。このように、第2部分画像PA2は、コンピュータグラフィックス画像中の第2部分領域A2の画像の全体または一部を示してよい。スケーリングを含む第2取得処理が実行される場合、調整済の第2部分画像PA2の中の、第2部分領域A2の画像の大きさが、スケーリング比率が大きいほど大きくなるように、第2部分画像PA2が調整されてよい。
【0110】
(3)第1モデル500は、図2等で説明したネットワークに代えて、生成ネットワークと識別ネットワークとを有する種々の敵対的生成ネットワークであってよい。例えば、第1生成モデル510に入力される画像の高さと幅とは、予め決められた任意の高さと幅とであってよい。第1生成モデル510の第1エンコーダ512の畳込層の総数は、1以上の任意の数であってよい。各畳込層のフィルタのサイズは、種々のサイズであってよい。第1エンコーダ512は、全結合層を含んでよい。第1エンコーダ512からは、畳込層が、省略されてよい。同様に、第1生成モデル510の第1デコーダ517の転置畳込層の総数は、1以上の任意の数であってよい。各転置畳込層のフィルタのサイズは、種々のサイズであってよい。第1デコーダ517は、全結合層を含んでよい。第1デコーダ517からは、転置畳込層が、省略されてよい。
【0111】
第1識別モデル520の畳込層群522の畳込層の総数は、1以上の任意の数であってよい。各畳込層のフィルタのサイズは、種々のサイズであってよい。全結合層群527の全結合層の総数は、1以上の任意の数であってよい。各全結合層のノード数は、種々の値であってよい。畳込層群522とグローバル平均プーリング層525と全結合層群527との3個のモジュールのうち1個または2個のモジュールが、省略されてよい。
【0112】
バッチノーマライゼーションは、第1モデル500の種々の層に適用されてよい。ドロップアウトは、第1モデル500の種々の層に適用されてよい。
【0113】
(4)第2生成モデル600は、図3(A)、図3(B)等で説明したネットワークに限らず、入力された画像から不具合のない画像を生成する任意のネットワークであってよい。例えば、第2生成モデル600の構成は、第1生成モデル510の構成と異なってよい。また、第2生成モデル600は、生成ネットワークと識別ネットワークとを有する敵対的生成ネットワークの訓練によって生成された生成ネットワークであってよい。バッチノーマライゼーションは、第2生成モデル600の種々の層に適用されてよい。ドロップアウトは、第2生成モデル600の種々の層に適用されてよい。
【0114】
(5)差分画像データIx4dから異常度DAを算出する処理(図7:S540)は、不具合の度合いを示す異常度DAを算出する種々の処理であってよい。例えば、プロセッサ210は、t-SNEを使用して差分画像データIx4dから3次元データを生成し、3次元空間における基準点と注目点との間の距離を使用して異常度DAを算出してよい。また、プロセッサ210は、t-SNEを使用して、差分画像データIx4dから1個の値を直接的に算出してよい。そして、プロセッサ210は、算出された1個の値を評価関数に入力することによって、異常度DAを算出してよい。また、プロセッサ210は、t-SNEに代えて、種々の次元削減処理(例えば、主成分解析)を使用してよい。
【0115】
(6)検査処理は、図7に示す処理に代えて、ラベルシートの不具合に関する情報(例えば、差分画像Ix4、異常度DA、不具合文字列テーブルTdなど)を生成する任意の処理であってよい。例えば、S540は、省略されてよい。この場合、S545では、プロセッサ210は、差分画像Ix4を表示部240に表示してよい。また、差分画像データを生成する処理(S535)において、中間差分画像データIx3dの二値化処理(図8)が省略され、中間差分画像データIx3dが、差分画像データとして使用されてよい。また、S550-S560の処理は、省略されてよい。これに代えて、S530-S545の処理が省略されてよい。
【0116】
また、S545、S560において、ユーザに情報を提示する方法は、情報の表示に代えて、ユーザに情報を伝達可能な任意の方法であってよい。例えば、プロセッサ210は、情報を説明する音声を出力してよい。
【0117】
(7)ラベルシートの形状は、任意の形状であってよく、例えば、三角形、四角形、5以上の角を有する多角形、円、または、楕円であってよい。いずれの場合も、画像データは、矩形状の画像を表してよい。図4のS240、S255では、プロセッサ210は、抽出される部分画像の全体がラベルシートに含まれるように、部分画像の領域を決定することが好ましい。
【0118】
(8)画像処理の対象である対象物は、プリンタなどの製品に貼られるラベルシートに限らず、製品に直接的に印刷されるラベルであってよい。対象物は、ラベルに限らず、製品に取り付けられる札でもよい。対象物は、製品を収容する容器、または、製品を包む包装紙であってよい。対象物に関連する製品は、プリンタに限らず、ミシン、カッティングマシンなどの任意の製品であってよい。一般的に、対象物は、文字を表す任意の対象物であってよい。対象物によって表される文字の数は、1以上の任意の整数であってよい。
【0119】
(9)対象物を光学的に読み取る読取装置は、デジタルカメラ100に限らず、CCDやCMOSなどの光電変換素子を用いて光学的に対象物を読み取るように構成された任意の読取装置であってよい(例えば、スキャナ)。
【0120】
(10)第1訓練処理(例えば、図4図5)、第2訓練処理(例えば、図6)、検査処理(例えば、図7)は、互いに異なる画像処理装置によって実行されてよい。いずれの画像処理装置も、パーソナルコンピュータとは異なる種類の装置(例えば、デジタルカメラ、スキャナ、スマートフォン)であってもよい。また、ネットワークを介して互いに通信可能な複数の装置(例えば、コンピュータ)が、画像処理装置による画像処理の機能を一部ずつ分担して、全体として、画像処理の機能を提供してもよい(これらの装置を備えるシステムが画像処理装置に対応する)。
【0121】
上記各実施例において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部あるいは全部をハードウェアに置き換えるようにしてもよい。例えば、図1の第1生成モデル510は、専用のハードウェア回路によって実現されてよい。
【0122】
また、本発明の機能の一部または全部がコンピュータプログラムで実現される場合には、そのプログラムは、コンピュータ読み取り可能な記録媒体(例えば、一時的ではない記録媒体)に格納された形で提供することができる。プログラムは、提供時と同一または異なる記録媒体(コンピュータ読み取り可能な記録媒体)に格納された状態で、使用され得る。「コンピュータ読み取り可能な記録媒体」は、メモリーカードやCD-ROMのような携帯型の記録媒体に限らず、各種ROM等のコンピュータ内の内部記憶装置や、ハードディスクドライブ等のコンピュータに接続されている外部記憶装置も含み得る。
【0123】
以上、実施例、変形例に基づき本発明について説明してきたが、上記した発明の実施の形態は、本発明の理解を容易にするためのものであり、本発明を限定するものではない。本発明は、その趣旨を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物が含まれる。
【符号の説明】
【0124】
100…デジタルカメラ、200…画像処理装置、210…プロセッサ、215…記憶装置、220…揮発性記憶装置、230…不揮発性記憶装置、231…第1プログラム、232…第2プログラム、233…第3プログラム、240…表示部、250…操作部、270…通信インタフェース、500…第1モデル、510…第1生成モデル、512…第1エンコーダ、515…第1特徴データ、517…第1デコーダ、519…コネクション、520…第1識別モデル、522…畳込層群、525…グローバル平均プーリング層、527…全結合層群、529…識別データ、529f…第1識別データ、529r…第2識別データ、590…第1種訓練データ、600…第2生成モデル、602…第2エンコーダ、607…第2デコーダ、609…コネクション、690…第2種訓練データ
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10