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

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

▶ キヤノン株式会社の特許一覧

特開2022-191776画像処理装置、画像処理方法及びプログラム
<>
  • 特開-画像処理装置、画像処理方法及びプログラム 図1
  • 特開-画像処理装置、画像処理方法及びプログラム 図2
  • 特開-画像処理装置、画像処理方法及びプログラム 図3
  • 特開-画像処理装置、画像処理方法及びプログラム 図4
  • 特開-画像処理装置、画像処理方法及びプログラム 図5
  • 特開-画像処理装置、画像処理方法及びプログラム 図6
  • 特開-画像処理装置、画像処理方法及びプログラム 図7
  • 特開-画像処理装置、画像処理方法及びプログラム 図8
  • 特開-画像処理装置、画像処理方法及びプログラム 図9
  • 特開-画像処理装置、画像処理方法及びプログラム 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022191776
(43)【公開日】2022-12-28
(54)【発明の名称】画像処理装置、画像処理方法及びプログラム
(51)【国際特許分類】
   G06V 30/194 20220101AFI20221221BHJP
   G06T 7/00 20170101ALI20221221BHJP
【FI】
G06K9/66
G06T7/00 350C
【審査請求】未請求
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2021100215
(22)【出願日】2021-06-16
(71)【出願人】
【識別番号】000001007
【氏名又は名称】キヤノン株式会社
(74)【代理人】
【識別番号】110001243
【氏名又は名称】弁理士法人谷・阿部特許事務所
(72)【発明者】
【氏名】奥間 啓水
【テーマコード(参考)】
5B064
5L096
【Fターム(参考)】
5B064AA01
5B064AB03
5B064BA01
5B064CA07
5B064CA10
5B064CA12
5B064CA13
5B064CA15
5B064DA20
5B064DA26
5B064DA27
5L096BA08
5L096BA17
5L096CA14
5L096DA02
5L096EA02
5L096EA03
5L096EA07
5L096EA16
(57)【要約】
【課題】文字画像を変形処理して疑似的な文字画像を生成する場面において、学習の妨げとなるような文字画像が生成されるのを抑制する。
【解決手段】変形処理に用いるパラメータに関する条件であって第一のクラスに紐付けられた条件に基づき、変形処理のパラメータを決定して、第一のクラスに属する文字画像に対して変形処理を行なう。そして、当該変形処理によって生成された変形後の文字画像が、第一のクラスとは異なるクラスに属する文字画像と類似しているか否かを判定し、類似すると判定された場合、第一のクラスに紐付けられた前記条件を更新する。
【選択図】図6
【特許請求の範囲】
【請求項1】
学習データに含まれる文字画像に対して変形処理を行って新たな学習データを生成する画像処理装置であって、
第一のクラスに属する文字画像を取得する取得手段と、
前記変形処理に用いるパラメータに関する条件であって、前記第一のクラスに紐付けられた条件を取得する取得手段と、
前記第一のクラスに紐付けられた前記条件に基づき前記変形処理のパラメータを決定して、前記第一のクラスに属する文字画像に対して前記変形処理を行なう処理手段と、
前記変形処理によって生成された変形後の文字画像が、前記第一のクラスとは異なるクラスに属する文字画像と類似しているか否かを判定する判定手段と、
前記判定手段にて類似すると判定された場合、前記第一のクラスに紐付けられた前記条件を更新する更新手段と、
を備え、
前記処理手段は、前記更新手段が前記更新を行った場合、更新後の前記条件に基づき前記変形処理のパラメータを決定して、前記第一のクラスに属する文字画像に対して前記変形処理を行なう、
ことを特徴とする画像処理装置。
【請求項2】
前記更新手段は、前記第一のクラスに属する複数の文字画像について前記変形処理を行って得られた複数の変形後の文字画像のうち所定数以上の文字画像が、前記第一のクラスとは異なるクラスに属する文字画像と類似していると判定された場合に、前記第一のクラスに紐付けられた前記条件を更新する、ことを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記更新手段は、前記変形後の文字画像が生成された際の前記変形処理で適用したパラメータを含まないように、前記第一のクラスに紐付けられた前記条件を更新する、ことを特徴とする請求項1又は2に記載の画像処理装置。
【請求項4】
前記変形処理は、回転、拡大又は縮小、膨張又は収縮、アスぺクト比変更のいずれかを含むことを特徴とする請求項1乃至3のいずれか一項に記載の画像処理装置。
【請求項5】
前記更新手段は、前記処理手段にて前記変形処理として、回転、拡大又は縮小、膨張又は収縮、アスぺクト比変更のうち複数の画像処理が行われていた場合、当該複数の画像処理のうち一部の画像処理において適用した処理パラメータを含まないように前記条件を更新する、ことを特徴とする請求項4に記載の画像処理装置。
【請求項6】
前記更新手段は、前記複数の画像処理のうち一部の画像処理において適用した処理パラメータを含まないように前記条件を更新する場合、前記複数の画像処理それぞれについて決定された処理パラメータを一方ずつ適用して画像処理を行い、それぞれの変形後の文字画像について、前記第一のクラスとは異なるクラスに属する文字画像と類似しているか否かを判定し、類似するとの判定結果が出た方の条件を更新する、ことを特徴とする請求項5に記載の画像処理装置。
【請求項7】
学習データに含まれる文字画像に対して変形処理を行って新たな学習データを生成する方法であって、
第一のクラスに属する文字画像を取得する取得ステップと、
前記変形処理に用いるパラメータに関する条件であって、前記第一のクラスに紐付けられた条件を取得する取得ステップと、
前記第一のクラスに紐付けられた前記条件に基づき前記変形処理のパラメータを決定して、前記第一のクラスに属する文字画像に対して前記変形処理を行なう処理ステップと、
前記変形処理によって生成された変形後の文字画像が、前記第一のクラスとは異なるクラスに属する文字画像と類似しているか否かを判定する判定ステップと、
前記判定ステップにて類似すると判定された場合、前記第一のクラスに紐付けられた前記条件を更新する更新ステップと、
を含み、
前記処理ステップでは、前記更新ステップにて前記更新を行われた場合、更新後の前記条件に基づき前記変形処理のパラメータを決定して、前記第一のクラスに属する文字画像に対して前記変形処理を行なう、
ことを特徴とする方法。
【請求項8】
コンピュータを、請求項1乃至6のいずれか一項に記載の画像処理装置として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、学習データの生成技術に関する。
【背景技術】
【0002】
近年、コンピュータの普及に伴う労働環境の変化により、業務文書をスキャンして電子化する機会が増加している。こうした電子化対象の文書には例えば領収書など、手書き文字が記入されたものも存在するところ、電子化された文書を集計等のデータ解析に活用するために、手書き文字領域に対して光学文字認識(OCR)を行って文字データを抽出することが行われている。ここで、手書き文字に対応したOCR技術の1つに、ニューラルネットワークなどの機械学習を行って得た学習済モデルを用いる手法がある。この手法では、まず、手書きの文字が描画された文字画像と当該文字画像に含まれる文字をテキスト化した正解クラスとが対になった学習データ(教師データ或いは訓練データとも呼ばれる。)を用いて学習を行う。そして、学習済モデルに手書き文字を含んだ文字画像を入力することにより、スキャン文書中の手書き文字をテキスト情報として利用することが可能となる。
【0003】
一般に機械学習によって画像認識を実施するためには膨大な量の画像が学習データとして必要になるところ、手書き文字には様々な形状が存在し、あらゆるパターンの手書き文字の画像を全て網羅して収集することは困難である。そこで、用意した学習データ用の文字画像に対して回転や拡縮等の変形処理を行い、学習データを増強すること(Data Augmentation)が一般的に行われている。特許文献1には、文字画像の学習データを増強するために、文字を構成する様々なへんやつくりの画像に対して変形処理を加え、変形された画像を合成することにより、疑似的な文字画像を学習データとして大量に生成する技術が開示されている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2015-69256号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
疑似的な文字画像を得るための変形処理によって得られた文字画像が別の正解クラスの文字画像と似てしまう場合がある。図10にその具体例を示す。いま、正解クラスが「7」の文字画像1000に対して変形処理として反時計回りに30度の回転処理を実行した結果、文字画像1001が得られたとする。このとき、変形後の文字画像1001の正解クラスは「7」であるが、正解クラスが「1」の文字画像1002と字形が似てしまっている。このような変形後の文字画像1001を学習データとして用いると、正解クラスが「1」の学習データと混同してしまい、正しい学習ができなくなってしまう。このような問題は上記特許文献1では考慮されておらず、当該問題を解決することができない。
【課題を解決するための手段】
【0006】
本開示の技術に係る画像処理装置は、学習データに含まれる文字画像に対して変形処理を行って新たな学習データを生成する画像処理装置であって、第一のクラスに属する文字画像を取得する取得手段と、前記変形処理に用いるパラメータに関する条件であって、前記第一のクラスに紐付けられた条件を取得する取得手段と、前記第一のクラスに紐付けられた前記条件に基づき前記変形処理のパラメータを決定して、前記第一のクラスに属する文字画像に対して前記変形処理を行なう処理手段と、前記変形処理によって生成された変形後の文字画像が、前記第一のクラスとは異なるクラスに属する文字画像と類似しているか否かを判定する判定手段と、前記判定手段にて類似すると判定された場合、前記第一のクラスに紐付けられた前記条件を更新する更新手段と、を備え、前記処理手段は、前記更新手段が前記更新を行った場合、更新後の前記条件に基づき前記変形処理のパラメータを決定して、前記第一のクラスに属する文字画像に対して前記変形処理を行なう、ことを特徴とする。
【発明の効果】
【0007】
本開示の技術によれば、文字画像を変形処理して疑似的な文字画像を生成する場面において、学習の妨げとなるような文字画像が生成されるのを抑制することができる。
【図面の簡単な説明】
【0008】
図1】画像処理システムの構成の一例を示した図。
図2】(a)は画像処理装置のハードウェア構成の一例を示したブロック図、(b)は端末装置のハードウェア構成の一例を示したブロック図。
図3】文字画像DBとしてのテーブルの一例を示す図。
図4】学習画像DBとしてのテーブルの一例を示す図。
図5】(a)は学習処理の流れを示すフローチャート、(b)は推論処理の流れを示すフローチャート。
図6】学習データ生成処理の流れを示すフローチャート。
図7】パラメータ条件を保持するデータベースとしてテーブルの一例を示す図。
図8】変形処理の詳細を示すフローチャート。
図9】(a)及び(b)は、パラメータ条件の変更・更新を説明する図。
図10】本発明の課題を説明する図。
【発明を実施するための形態】
【0009】
以下、図面を参照して本発明の実施の形態を詳しく説明する。なお、以下の実施の形態は特許請求の範囲に係る発明を限定するものでなく、また実施の形態で説明されている特徴の組み合わせの全てが発明の解決手段に必須のものとは限らない。
【0010】
[実施形態1]
<画像処理システムの概要>
図1は、本実施形態に係る、画像処理システムの構成の一例を示した図である。図1に示すように、画像処理システムは、画像処理装置100、端末装置110で構成され、ネットワーク120を介して互いに接続される。
【0011】
画像処理装置100は、学習データ生成部101、学習部102、推論部103の各機能部を有する。学習データ生成部101は、学習部102にてニューラルネットワークのモデルを学習するための学習データを生成する。学習データは、手書き文字が描画された文字画像と、当該文字画像に含まれる手書き文字をテキスト化した正解クラスとが対になったデータである。学習データ生成部101で生成される学習データの詳細については図4を用いて後述する。
【0012】
学習部102は、学習データ生成部101が生成した学習データを用いて、ニューラルネットワークのモデルを学習する。なお、学習部102によって生成されたニューラルネットワークのモデルを「学習済モデル」と呼称する。学習部102による学習処理については、図5(a)を用いて後述する。推論部103は、入力された文字画像に対し、学習部102が生成した学習済モデルを用いた推論によって、クラス情報を出力する。推論部103による推論処理については、図5(b)用いて後述する。
【0013】
端末装置110は、例えばPCやスマートフォンなどの情報処理装置である。ユーザやシステム管理者は、端末装置110からネットワーク120を介して画像処理装置100へアクセスして、学習の実行指示や学習済モデルの確認をすることができる。
【0014】
ネットワーク120は、画像処理装置100と端末装置110との間を接続するLANや公衆回線(WAN)等であって、ネットワーク120を介して装置間でのデータの送受信が行われる。
【0015】
なお、上記のシステム構成は一例であり、本実施形態における説明に必要な機能のみを図示している。本実施形態に開示の技術を実現できる構成であれば、各装置はどのような論理構成であってもよい。例えば、図1に示す構成では、推論部103が画像処理装置100に組み込まれているが、画像処理装置100とは別の装置が推論部103を有していてもよい。
【0016】
<ハードウェア構成>
図2は、図1に示す画像処理システムにおける画像処理装置100及び端末装置110のハードウェア構成の一例を示したブロック図である。
【0017】
図2(a)は、画像処理装置100のハードウェア構成を示す図である。図2(a)に示すように、画像処理装置100は、CPU201、ROM202、RAM204、ストレージ205、入力デバイス206、表示デバイス207、外部I/F208、GPU209で構成され、データバス203を介して互いに接続される。
【0018】
CPU201は、画像処理装置100における動作全体を制御するための制御装置である。CPU201は、ROM202に記憶されたブートプログラムを実行することで、画像処理装置100のシステムを起動し、ストレージ205に記憶されたプログラムを実行する。また、CPU201は、学習データ生成部101や学習部102が実行する計算処理の一部をGPU209と協調して実行する。ROM202は、不揮発性メモリで実現されるものであって、画像処理装置100を起動するブートプログラム等を格納する記憶装置である。データバス203は、画像処理装置100を構成するデバイス間で相互にデータを送受信するための通信路である。RAM204は、揮発性メモリで実現されるものであって、CPU201がプログラムを実行する際のワークメモリとして使用される記憶装置である。ストレージ205は、HDD(ハードディスクドライブ)やSSD(ソリッドステートドライブ)等で実現されるものであって、プログラムや学習データを記憶するための大容量記憶装置である。ここでプログラムには、後述する学習データ生成処理や学習処理、推論処理の実行をCPU201に指示するためのプログラムを含む。CPU201がこれらプログラムを実行することにより、前述の学習データ生成部101、学習部102、推論部103が実現される。入力デバイス206は、マウスやキーボード等で実現されるものであって、エンジニアからの画像処理装置100に対する操作入力を受け付ける。表示デバイス207は、液晶ディスプレイ等で実現されるものであって、画像処理装置100の各種設定画面などをエンジニアに対して表示出力する。外部I/F208は、ネットワーク120を介して端末装置110との間で各種データやコマンド等をやり取りするためのインタフェースである。GPU209は、画像処理に特化した演算処理装置である。GPU209は、CPU201による制御の下、与えられた学習データを元に、学習モデルを構成するパラメータを更新するための演算等を実行する。スキャナデバイス210は、CCDなどを用いて帳票などの原稿を走査し、得られた電気信号データを変換して画像データを生成する装置である。
【0019】
図2(b)は、端末装置110のハードウェア構成を示す図である。図2(b)に示すように、端末装置110は、CPU211、ROM212、RAM214、ストレージ215、入力デバイス216、表示デバイス217、外部I/F218で構成され、データバス213を介して互いに接続される。CPU211は、端末装置110における動作全体を制御するための制御装置である。CPU211は、ROM212に記憶されたブートプログラムを実行することで、端末装置110のシステムを起動し、ストレージ215に記憶されたプログラムを実行する。ROM212は、不揮発性メモリで実現されるものであって、端末装置110を起動するブートプログラム等を格納する記憶装置である。データバス213は、端末装置110を構成するデバイス間で相互にデータを送受信するための通信路である。RAM214は、揮発性メモリで実現されるものであって、CPU211が画像処理プログラムを実行する際のワークメモリとして使用される記憶装置である。ストレージ215は、HDD(ハードディスクドライブ)やSSD(ソリッドステートドライブ)等で実現されるものであって、前述のプログラム等を記憶するための記憶装置である。入力デバイス216は、マウスやキーボード等で実現されるものであって、ユーザからの端末装置110に対する操作入力を受け付ける。表示デバイス217は、液晶ディスプレイ等で実現されるものであって、ユーザに対して様々な情報を表示出力する。外部I/F218は、ネットワーク120を介して画像処理装置100との間で各種データやコマンド等をやり取りするためのインタフェースである。
【0020】
<学習データについて>
次に、ニューラルネットワークの学習に用いる、文字画像と正解クラスとが対になった学習データについて説明する。ここで、用語について定義しておく。実際に手書きされた文書のスキャン画像から手書き文字の領域を一文字単位で切り出すことによって得られる画像を「文字画像」と呼ぶこととする。そして、この文字画像に対して学習データ生成部101が変形処理を行って得た画像を「学習画像」と呼ぶこととする。
【0021】
≪文字画像データベース≫
図3は、文字画像を保存するためのデータベース(以下、「文字画像DB」と表記)としてのテーブルの一例を示す図である。文字画像DBとしてのテーブル300には、「レコードID」301、「文字画像」302、「正解クラス」303の各項目に対応するデータ又は値が格納される。なお、文字画像DBは、ストレージ205の記憶領域の一部が専用に割り当てられるものとする。
【0022】
「レコードID」301は、テーブル300内の各レコードを一意に識別するための識別情報が入るフィールドである。このレコードIDは、テーブル300へレコードが追加される度に、レコードに対して付与される。「文字画像」302は、手書き文字の文字1つ1つに対応する画像データが入るフィールドである。「正解クラス」303は、文字画像内に含まれる手書き文字をテキストデータとして保持するフィールドである。いま、図3に示すテーブル300には、手書き数字の文字画像とその正解クラスとを紐付けた4つのレコード304~307が例示されている。
【0023】
前述のとおり、テーブル300に格納される各文字画像は、例えば、手書き文字を含んだ文書などをスキャンして得られた画像から手書き文字の部分だけを文字毎に切り出すことによって得られるものであるが、文字画像の取得方法はこれに限定されない。また、図3に示すテーブル300のように複数の文字画像を一括して管理するのではなく、例えば正解クラス毎にテーブルを設けて管理してもよい。
【0024】
≪学習画像データベース≫
次に、学習データ生成部101が、上述の文字画像DBに格納された文字画像に対して変形処理を行って生成する、ニューラルネットワークの学習に用いる学習画像について説明する。図4は、学習データ生成部101が生成した学習画像を保存するためのデータベース(以下、「学習画像DB」と表記)としてのテーブルの一例を示す図である。学習画像DBとしてのテーブル400には、「レコードID」401、「学習画像」402、「正解クラス」403の各項目に対応するデータ又は値が格納される。なお、学習画像DBは、ストレージ205の記憶領域の一部が専用に割り当てられるものとする。
【0025】
「レコードID」401は、テーブル400内の各レコードを一意に識別するための識別情報が入るフィールドである。この「レコードID」401値は、テーブル400へレコードが追加される度に、レコードに対して付与される。「学習画像」402は、文字画像を変形して生成された画像データを保持するフィールドである。「正解クラス」403は、学習画像内に含まれる文字をテキストデータとして保持するフィールドである。いま、図4に示すテーブル400には、図3のテーブル300のレコード304~307の各文字画像に変形処理を施して得られた学習画像とその正解クラスとを紐付けた4つのレコード404~407が示されている。なお、図4のテーブルに示す具体例では、1つの学習画像に含まれる文字数が1個であるが、例えば上限を5文字に設定し、その範囲の中で文字画像を並べ変えるなどして任意の文字数から成る学習画像を生成する構成をとってもよい。
【0026】
<学習処理>
次に、学習部102による学習処理について、図5(a)を用いて説明する。図5(a)は、学習処理の流れを示すフローチャートである。図5(a)のフローチャートに示す各ステップは、CPU201が、ROM202等に格納された所定のプログラムをRAM204に展開し、これを実行することで実現される。学習処理は、ユーザが、画像処理装置100の入力デバイス206を介した所定の操作に応答して、或いはネットワーク120を介して端末装置110などから受け付けた所定の入力信号をトリガーとして開始される。本実施形態において、ニューラルネットワークの学習にはミニバッチ法を用いるものとする。なお、以下の説明において記号「S」はステップを意味する。
【0027】
S501では、学習画像DBから、学習に必要な学習データのデータセットが取得される。具体的には、学習画像DBとしてのテーブル400に含まれる各レコードを参照して、学習画像と正解クラスとの対からなる学習データが取得される。
【0028】
S502では、ニューラルネットワークが初期化される。具体的には、ニューラルネットワークを構築し、当該ニューラルネットワークに含まれるパラメータの値を、ランダムに決定する。構築するニューラルネットワークの構造は様々なものを用いることができるが、例えば、CNN(Convolutional Neural Networks)のような形態を取り得る。
【0029】
S503では、S501で読み込んだ学習データのうち所定の数(ミニバッチサイズ、例えば10個。ミニバッチの学習形態をとらないのであれば1個)の学習データが取得される。そして、S504及びS505にて、ニューラルネットワークの学習を行う。
【0030】
S504では、ニューラルネットワークの誤差が算出される。具体的には、S503で取得したミニバッチ内の各学習データに含まれる学習画像をニューラルネットワークに入力して学習画像内の文字を表すクラス情報を出力し、当該出力と正解クラスとの差を評価して誤差を求める処理が行われる。当該評価には指標としてCTC(Connectionist Temporal Classification)Lossなどを用いることができる。
【0031】
S505では、ニューラルネットワークのパラメータが調整される。具体的には、S504にて算出した誤差に基づき、例えばバックプロパゲーション法によってニューラルネットワークのパラメータを変更する処理が行われる。
【0032】
S506では、学習を終了するか否かが判定される。具体的には、S503~S505の処理を所定回数(例えば、40000回)行ったか否かがチェックされる。ここで所定回数は、例えば学習処理の開始時にユーザが所望の回数を入力するなどして決定すればよい。所定回数の処理が完了していた場合には終了と判定し、S507に遷移する。所定回数の処理が完了していない場合はS503に戻ってニューラルネットワークの学習が続行される。
【0033】
S507では、学習結果として、S505にて調整したニューラルネットワークのパラメータで構成される学習済モデルが、ストレージ205に保存される。
【0034】
以上が、学習処理の内容である。なお、図5(a)のフローチャートでは、学習データ取得処理(S501)において、事前に生成した学習データを読み込むように処理しているが、学習データと学習処理を並行して行ってもよい。すなわち、学習データ取得処理(S501)に先立って後述の学習データ生成処理を実行し、生成された学習データから順次読み込んで取得するような構成でもよい。
【0035】
<推論処理>
次に、推論部103による推論処理について図5(b)を用いて説明する。図5(b)は、推論処理の流れを示すフローチャートである。図5(b)のフローチャートに示す各ステップは、CPU201が、ROM202等に格納された所定のプログラムをRAM204に展開し、これを実行することで実現される。推論処理は、ユーザが、画像処理装置100の入力デバイス206を介した所定の操作に応答して、或いはネットワーク120を介して端末装置110などから受け付けた所定の入力信号をトリガーとして開始される。なお、以下の説明において記号「S」はステップを意味する。
【0036】
S511では、学習済モデルの読み込みが行われる。具体的には、まず、前述の図5(a)のフローチャートのS502で構築されたニューラルネットワークと同一構造のニューラルネットワークが構築され、構築したニューラルネットワークに、前述のS507で保存された学習済モデルが反映される。
【0037】
S512では、推論処理の対象となる画像(以降、「処理対象画像」と呼称する。)を生成する処理が実行される。具体的には、領収書等の文書をスキャンして得られたスキャン画像から手書き文字に相当する画素を抽出し、抽出画素塊の外接矩形を求めて、当該外接矩形内部の画素で構成される画像を得る。この処理は、一般に「ブロックセレクション」と呼ばれ、これにより得られた画像は「文字ブロック」と呼ばれる。こうして、領収書等のスキャン画像から1又は複数の処理対象画像が生成される。
【0038】
S513では、S512で生成された処理対象画像のうち注目する処理対象画像が学習済モデルに入力される。これにより、注目する処理対象画像に含まれる文字に対応したテキスト情報が、推論結果として出力される。
【0039】
S514では、S513で取得した推論結果が送信される。本実施形態では、ネットワーク120を介して端末装置110に送信されることになる。なお、推論結果を端末装置110に送信するのではなく、ストレージ205に保存するような構成をとってもよい。
【0040】
S515では、推論処理を終了するか否かが判定される。S512で生成された全ての処理対象画像についての推論処理が完了していた場合は、本処理を終了する。一方、未処理の処理対象画像が残っている場合はS513に戻って次の注目する処理対象画像を学習済みモデルに入力して推論処理を続行する。
【0041】
以上が、推論処理の内容である。
【0042】
<学習データ生成処理>
続いて、学習データ生成部101による学習データ生成処理について、図6を用いて説明する。図6は、学習データ生成処理の大まかな流れを示すフローチャートである。図6のフローチャートに示す各ステップは、CPU201が、ROM202等に格納された所定のプログラムをRAM204に展開し、これを実行することで実現される。学習データ生成処理は、画像処理装置100の入力デバイス206を介した所定のユーザ操作に応答して、或いはネットワーク120を介して端末装置110などから受け付けた所定の入力信号をトリガーとして開始される。なお、以下の説明において記号「S」はステップを意味する。
【0043】
S601では、文字画像DB(例えば上述のテーブル300)から、注目する文字画像と正解クラスのペアが取得される。
【0044】
S602では、後述の変形処理(S604)における処理パラメータの条件(以下、「パラメータ条件」と表記)が、S601で取得した正解クラスに基づき取得される。具体的には、予め正解クラス毎(ここでは“1”~“9”のそれぞれ)に用意した図7に示すようなテーブル700を参照して、処理パラメータの条件が取得される。いま、図7のテーブル700には、「変形処理」701及び「パラメータ条件」702の各項目に対応するデータ又は値が格納されている。「変形処理」701は、文字画像を変形させる具体的な処理内容を規定するフィールドである。「パラメータ条件」702は、「変形処理」701で規定される画像処理毎の変形量の範囲(最大でどの程度変形させるのか)を規定するフィールドである。テーブル700において、変形処理の内容として“回転”を規定するレコード703では、「パラメータ条件」702が示す範囲は“-10度~+10度”である。この場合、注目する文字画像を-10度~+10度の範囲で回転させることを意味している。そして、文字画像に対して回転処理を適用する際には、“-10度~+10度”の範囲内で実際に回転させる角度がランダムに決定されることになる。同様に、変形処理の内容として“拡大縮小”を規定するレコード704では、「パラメータ条件」702が示す範囲は“80%~175%”である。この場合、注目する文字画像を0.8倍から1.75倍までの範囲で縮小又は拡大させることを意味しており、実際に拡大縮小処理を適用する際には、“80%~175%”の範囲内で変倍率がランダムに決定されることになる。同様に、変形処理の内容として“膨張収縮”を規定するレコード705では、「パラメータ条件」702が示す範囲は“-2pxl~2pxl”である。この場合、処理対象の文字画像内の画素を-2個から+2個までの範囲で収縮又は膨張させることを意味しており、実際に膨張収縮処理を適用する際には、“-2pxl~2pxl”の範囲内で収縮率或いは膨張率がランダムに決定されることになる。同様に、変形処理の内容として“アスペクト比変更”を規定するレコード706では、「パラメータ条件」702が示す範囲は“高さ:幅=1:0.8~1.5”である。この場合、注目する文字画像の高さを1としたときの幅を0.8から1.5の範囲で拡大又は縮小させることを意味している。そして、実際にアスペクト比変更処理を適用する際には、文字画像の高さを1としたときの幅が0.8から1.5までの範囲内でランダムに決定されることになる。なお、パラメータ条件を格納するデータベースとしてのテーブルは、正解クラス毎に設けるとしたが、複数の正解クラスについて共通化してもよい。
【0045】
S603では、S602で取得したパラメータ条件に基づき、次の変形処理(S604)において適用する処理パラメータが決定される。具体的には、回転処理、拡大縮小処理、膨張収縮処理、アスペクト比変更処理の各画像処理におけるパラメータ値が、図7のテーブル700の「パラメータ条件」702に示す範囲からランダムに選択される。なお、パラメータ条件で規定された範囲の中から“0”が選択された場合は、変形処理としての画像処理を実行しないことを示す“None”がパラメータ値となる。
【0046】
S604では、S601で取得された文字画像に対して、S603で決定された処理パラメータを用いた変形処理が実行される。
【0047】
≪変形処理の詳細≫
図8は、変形処理の詳細を示すフローチャートである。以下、図8のフローに沿って、変形処理の内容について詳しく説明する。
【0048】
S801では、S603にて膨張収縮処理用に決定された処理パラメータに基づき、S601にて取得された文字画像に対し、膨張収縮処理が実行される。この際、パラメータ値が“None”の場合は膨張収縮処理を実行しない。膨張収縮処理は公知技術であり詳細は割愛するが、例えば画像内の文字の境界部を検出し、境界部の外側を一定ピクセル埋めることで膨張を、境界部の内側を一定ピクセル白画素で埋めることで収縮を、それぞれ実現できる。また、一定サイズのフィルタを用いてフィルタ内の画素状態に応じて置換処理を行うことで膨張収縮を実現してもよい。
【0049】
S802では、S603にて拡大縮小処理用に決定された処理パラメータに基づき、S601にて取得された文字画像に対し、拡大縮小処理が実行される。この際、パラメータ値が“None”の場合は拡大縮小処理を実行しない。拡大縮小処理は公知技術であるため、詳細は割愛する。
【0050】
S803では、S603にてアスペクト比変更処理用に決定された処理パラメータに基づき、S601にて取得された文字画像に対し、アスペクト比変更処理が実行される。この際、パラメータ値が“None”の場合はアスペクト比変更処理を実行しない。アスペクト比変更処理は公知技術であるため、詳細は割愛する。
【0051】
S804では、S603にて回転処理用に決定された処理パラメータに基づき、S601にて取得された文字画像に対し、回転処理が実行される。この際、パラメータ値が“None”の場合は回転処理を実行しない。回転処理は公知技術であるため、詳細は割愛する。
【0052】
以上が、変形処理の内容である。なお、図8のフローチャートは一例であり、例えば上記4種類の画像処理の順番を入れ替えたり、別の種類の画像処理を新たに組み込んだりしてもよい。図6のフローチャートの説明に戻る。
【0053】
S605では、S604の変形処理によって得られた文字画像が、別の正解クラスに属する文字画像と類似しているか否かが判定される。この判定は例えば、ストレージ205に保持された学習済モデルを用いて行う。学習済モデルに対して変形後の文字画像を入力し、当該入力した文字画像の正解クラスと学習済モデルが出力したクラス情報が示すクラスとが異なる場合、別の正解クラスに属する文字画像と類似していると判定することができる。変形後の文字画像が別の正解クラスの文字画像と類似する場合はS606へ進み、類似していない場合はS607へ進む。
【0054】
S606では、S601で取得した正解クラスに紐付くパラメータ条件が更新される。更新処理の詳細については後述する。パラメータ条件の更新処理が完了するとS603に戻り、更新後のパラメータ条件に従って、変形処理において適用する処理パラメータが再決定され、当該再決定した処理パラメータを適用した変形処理が再実行される。
【0055】
S607では、S604の変形処理の結果(変形後の文字画像)が学習画像DBに格納される。格納後は、S608にて、文字画像DB内の全ての文字画像が処理されたか否かが判定される。未処理の文字画像があればS601に戻って、次の注目する文字画像と正解クラスのペアが取得され、処理が続行される。一方、全ての文字画像が処理されていれば本処理を終了する。
【0056】
以上が、学習データ生成処理の内容である。ここで、具体例を用いて、本実施形態においてどのように学習データが生成されるのかを、図6のフローに沿って説明する。まず、注目する文字画像とその正解クラスのペアとして、図9(a)に示す文字画像900と正解クラス“1”のペアが取得される(S601)。次に、パラメータ条件として図7のテーブル700に示す内容が取得される(S602)。続いて、取得したパラメータ条件を基に、図9(a)の枠901内のように各処理パラメータが決定される(S603)。いま、回転処理について“8度”、拡大縮小処理及び膨張収縮処理について“None”、アスペクト比変更処理について“高さ:幅=1:1.4”が決定されている。これら処理パラメータに従った変形処理(S604)の結果が文字画像902である。そして、変形後の文字画像902が別の正解クラスの文字画像と類似しているとのかどうかが判定される(S605)。図9(a)の例では、変形後の文字画像902の推定結果がクラス“7”となっており、変形前の文字画像900の正解クラス“1”とは異なっている。よって、別の正解クラスに属する文字画像に“類似している”と判定されることになる(S605でYes)。この判定結果を受け、図9(b)に示すように、正解クラス“1”に紐付くパラメータ条件が、S602で決定した処理パラメータを含まないよう、更新後のテーブル700’のようにパラメータ条件が更新される。いま、回転処理に関しS602で決定した処理パラメータは“8度”であるため、これを含まない条件範囲“-10度~+7.9度”に変更されている。また、アスペクト比変更処理に関しても同様に、S602で決定した処理パラメータは“高さ:幅=1:1.4”であるため、これを含まない条件範囲“高さ:幅=1:0.8~1.39”に変更されている。こうして更新された後のパラメータ条件に従って処理パラメータを再度決定し(S603)、再び変形処理を実行する。そして、パラメータ条件を更新後の変形処理によって得られた変形後の文字画像が別の正解クラスの文字画像と類似していなければ、当該変形後の文字画像が学習画像DBに格納されることになる。このように、パラメータ条件の更新と変形処理とを繰り返し実行することにより、変形後の文字画像が別の正解クラスの文字画像と類似してしまうことが抑制され、学習データの品位が向上することになる。
【0057】
<変形例1>
上述の実施形態では、変形後の文字画像が他の正解クラスの文字画像と類似すると判定された場合、その変形時に適用した処理パラメータをすべて含まないようにパラメータ条件を変更・更新していた。しかしながら、例えば変形時に適用した処理パラメータの一部だけを含まないようにパラメータ条件を変更・更新してもよい。この場合、例えば前述の図9(a)の具体例において、処理パラメータとして決定された回転角度とアスペクト比の一方ずつを適用して変形処理を行い、それぞれの変形後の文字画像について類否判定を行なう。そして、類似するとの判定結果が出た方のパラメータ条件を対象として、その変形時に適用した処理パラメータを含まないように変更・更新すればよい。このように、類似するとの判定結果の原因を突き止め、影響を及ぼしている方のパラメータ条件だけを変更・更新の対象としてもよい。
【0058】
<変形例2>
上述の実施形態1では、文字画像DBより取得した一枚の文字画像に対して変形処理を実行し、その結果に対する類否判定の結果に基づき、パラメータ条件の更新要否を判定していた。しかしながら、一枚の文字画像に対する類否判定の結果だけに基づきパラメータ条件を更新すると、特異な文字画像(例えば変形前の文字画像が元々別の正解クラスの文字画像に似ているようなケース)によってパラメータ条件が左右されてしまう可能性がある。そこで、パラメータ条件の更新の要否を、複数枚の変形後の文字画像についての類否判定の結果に基づき決定するようにしてもよい。その際は、以下のような手順で行えばよい。
【0059】
まず、S601にて文字画像DBから正解クラスが同一の複数の文字画像(例えば正解クラスが“1”の文字画像を5つ)を取得する。そして、S602にて当該正解クラスに紐づくパラメータ条件を取得し、S603にて当該パラメータ条件に従って処理パラメータを決定して、S604にて複数の文字画像に対し変形処理を実行する。そして、S605にて変形後の文字画像それぞれについて別の正解クラスの文字画像との類否判定を行う。その結果、“類似する”との判定結果が所定数以上(例えば5つのうち3つ以上)であれば、S606にてパラメータ条件の更新を行うようにする。これにより、特異な文字画像による影響を軽減することができる。
【0060】
以上のとおり、本実施形態によれば、文字画像を変形処理して疑似的な文字画像を生成する場面において、学習の妨げとなるような文字画像が生成されるのを抑制することができる。
【0061】
(その他の実施例)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10