JP6468356B2 - プログラム生成装置、プログラム生成方法および生成プログラム - Google Patents

プログラム生成装置、プログラム生成方法および生成プログラム Download PDF

Info

Publication number
JP6468356B2
JP6468356B2 JP2017524525A JP2017524525A JP6468356B2 JP 6468356 B2 JP6468356 B2 JP 6468356B2 JP 2017524525 A JP2017524525 A JP 2017524525A JP 2017524525 A JP2017524525 A JP 2017524525A JP 6468356 B2 JP6468356 B2 JP 6468356B2
Authority
JP
Japan
Prior art keywords
image
program
image processing
evaluation value
output
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2017524525A
Other languages
English (en)
Other versions
JPWO2016208037A1 (ja
Inventor
毅 長門
毅 長門
哲男 肥塚
哲男 肥塚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JPWO2016208037A1 publication Critical patent/JPWO2016208037A1/ja
Application granted granted Critical
Publication of JP6468356B2 publication Critical patent/JP6468356B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/77Processing image or video features in feature spaces; using data integration or data reduction, e.g. principal component analysis [PCA] or independent component analysis [ICA] or self-organising maps [SOM]; Blind source separation
    • G06V10/774Generating sets of training patterns; Bootstrap methods, e.g. bagging or boosting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/12Computing arrangements based on biological models using genetic models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/12Computing arrangements based on biological models using genetic models
    • G06N3/126Evolutionary algorithms, e.g. genetic algorithms or genetic programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/20Image enhancement or restoration using local operators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/94Hardware or software architectures specially adapted for image or video understanding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/96Management of image or video recognition tasks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • General Engineering & Computer Science (AREA)
  • Biophysics (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Multimedia (AREA)
  • Evolutionary Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Data Mining & Analysis (AREA)
  • General Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Mathematical Physics (AREA)
  • Molecular Biology (AREA)
  • Genetics & Genomics (AREA)
  • Computational Linguistics (AREA)
  • Biomedical Technology (AREA)
  • Databases & Information Systems (AREA)
  • Medical Informatics (AREA)
  • Physiology (AREA)
  • Image Analysis (AREA)
  • Image Processing (AREA)
  • Stored Programmes (AREA)

Description

本発明は、プログラム生成装置、プログラム生成方法および生成プログラムに関する。
所望の画像処理を実行する画像処理プログラムを、遺伝的プログラミングによって自動生成する技術が注目されている。この技術は、入力画像と処理結果の画像(目標画像)の組といった学習データを用いて、画像処理のための部分プログラム(例えば、画像フィルタのプログラム)を組み合わせて生成される画像処理プログラムを、遺伝的プログラミングによって最適化していくものである。
また、遺伝的プログラミングを利用した装置の例として、現世代の重みデータと、前世代以前の世代で利用した重みデータとを用いて変換器を進化させるようにした遺伝的処理装置が提案されている。
特開2011−14049号公報
青木紳也、長尾智晴、「木構造画像変換の自動構築法ACTIT」、情報メディア学会誌Vol.53,No.6、1999年6月20日、p.890−892
遺伝的プログラミングによって画像処理プログラムを自動生成する処理では、例えば、次のような生存選択方法が用いられる。学習の過程で生成された個体に対応するプログラムを用いて、学習データに含まれる入力画像が処理される。その処理結果として出力された出力画像が学習データに含まれる目標画像と比較され、その比較結果に基づいて個体を次世代に残すかが判定される。
しかし、この方法では、画像処理の内容によっては、学習が促進されるような有用な固体が淘汰されてしまう場合があるという問題がある。このような問題は、画像処理プログラムの生成処理に長い時間がかかってしまう原因になり得る。
1つの側面では、本発明は、遺伝的プログラミングによって画像処理プログラムを生成する際の生存選択を適正化することが可能なプログラム生成装置、プログラム生成方法および生成プログラムを提供することを目的とする。
1つの案では、遺伝的プログラミングによってプログラムを生成するプログラム生成装置が提供される。このプログラム生成装置は、記憶部と演算部とを有する。記憶部は、入力画像と第1目標画像とを含む学習データを記憶する。ここで、第1目標画像は、入力画像を第2目標画像に変換する処理の途中で出力される画像を示す。演算部は、それぞれ複数の部分プログラムが組み合わされた複数の画像処理プログラムの中から第1プログラムを選択し、第1プログラムに含まれる部分プログラムの一部を変更することで第2プログラムを生成し、第2プログラムを用いて入力画像に対する画像処理を実行し、画像処理の途中で出力される中間出力画像と第1目標画像との比較に基づいて、第2プログラムを次世代に残すかを判定し、第2プログラムを次世代に残すと判定された場合、複数の画像処理プログラムの1つを第2プログラムに入れ替える。
また、1つの案では、上記のプログラム生成装置と同様の処理をコンピュータが実行するプログラム生成方法が提供される。
さらに、1つの案では、上記のプログラム生成装置と同様の処理をコンピュータに実行させる生成プログラムが提供される。
1つの側面では、遺伝的プログラミングによって画像処理プログラムを生成する際の生存選択を適正化できる。
本発明の上記および他の目的、特徴および利点は本発明の例として好ましい実施の形態を表す添付の図面と関連した以下の説明により明らかになるであろう。
第1の実施の形態に係るプログラム生成装置の構成例および処理例を示す図である。 画像処理プログラムの生成処理手順の比較例を示す図である。 交叉の例を示す図である。 突然変異の例を示す図である。 画像処理の例を示す図である。 第2の実施の形態における個体の評価手順の概要を示す図である。 画像処理装置のハードウェア構成例を示す図である。 画像処理装置が備える処理機能の構成例を示すブロック図である。 学習データの第1の例を示す図である。 学習データの第2の例を示す図である。 プログラム生成処理手順の例を示すフローチャート(その1)である。 プログラム生成処理手順の例を示すフローチャート(その2)である。 最終評価値および重み係数の変化の例を示す図である。 重み係数の算出に用いる変調テーブルについて説明するための図である。 第3の実施の形態におけるプログラム生成処理手順の例を示すフローチャート(その1)である。 第3の実施の形態におけるプログラム生成処理手順の例を示すフローチャート(その2)である。
以下、本発明の実施の形態について図面を参照して説明する。
〔第1の実施の形態〕
図1は、第1の実施の形態に係るプログラム生成装置の構成例および処理例を示す図である。プログラム生成装置1は、遺伝的プログラミングによって画像処理プログラムを生成する装置である。
プログラム生成装置1は、記憶部1aと演算部1bとを有する。記憶部1aは、例えば、RAM(Random Access Memory)などの揮発性記憶装置、または、HDD(Hard Disk Drive)、フラッシュメモリなどの不揮発性記憶装置として実装される。演算部1bは、例えば、プロセッサである。
記憶部1aは、学習データ10を記憶する。学習データ10は、入力画像11、第1目標画像12および第2目標画像13を含む。第2目標画像13は、入力画像11に画像処理を施した場合に、その処理結果として出力される画像の目標となる画像である。一方、第1目標画像12は、入力画像11を第2目標画像13に変換するような画像処理を施した場合に、その画像処理の途中のどこかの段階で出力される画像の目標となる画像である。例えば、入力画像11における特定の画像領域に特定の処理を施すという画像処理の場合、第1目標画像12としては、画像におけるその特定の画像領域と、それ以外の画像領域(背景領域)とが区別された画像を用いることができる。各画像領域は、例えば、特定の画像領域の画素値を最大値とし、背景画像領域の画素値を最小値(0)とするなど、画素値の割り当てによって区別させることができる。
なお、記憶部1aには、複数組の学習データ10が記憶されてもよい。
また、記憶部1aは、プログラム群20を記憶してもよい。プログラム群20は、演算部1bの処理で利用されるデータであり、複数の画像処理プログラム21,22,23,・・・を含む。プログラム群20に含まれる画像処理プログラム21,22,23,・・・は、それぞれ、複数の部分プログラムが組み合わされて生成される。部分プログラムは、画像フィルタなどの画像処理を実行するためのプログラム部品である。プログラム生成装置1は、プログラム群20の世代が更新されるたびに、プログラム群20に適応度の高い画像処理プログラムを優先的に残存させることによって、所望の画像処理を実行する画像処理プログラムを生成する。
演算部1bは、プログラム群20から画像処理プログラムを選択する(ステップS1)。ここでは例として、画像処理プログラム21が選択されたものとする。次に、演算部1bは、選択した画像処理プログラム21に含まれる部分プログラムの一部を変更することで、画像処理プログラム21aを生成する。この処理過程は、画像処理プログラム21を進化させる過程である(ステップS2)。この進化過程では、例えば、画像処理プログラム21と、プログラム群20から選択された他の画像処理プログラムとの間の交叉や、画像処理プログラム21またはその交叉後のプログラムの突然変異などが行われる。
進化過程により、例えば、部分プログラムP1〜P3が組み合わされた画像処理プログラム21aが生成されたとする。なお、図1中の「In」は、画像処理プログラム21aの入力部を示し、「Out」は、画像処理プログラム21aの出力部を示す。
次に、演算部1bは、画像処理プログラム21aを用いて、入力画像11に対する画像処理を実行する(ステップS3)。演算部1bは、この画像処理の途中で中間出力画像を出力する。例えば、中間出力画像は、画像処理プログラム21aに含まれる部分プログラムP1〜P3のうち、最終段に組み込まれた部分プログラムP3を除く部分プログラムP1,P2のそれぞれの処理結果として出力される画像である。図1の例では、部分プログラムP1の処理結果として中間出力画像31が出力され、部分プログラムP2の処理結果として中間出力画像32が出力される。
次に、演算部1bは、生成された画像処理プログラム21aを次世代に残すかを判定する(ステップS4)。このステップS4の処理は、中間出力画像31,32と第1目標画像12とを比較する処理(ステップS4a)を含む。このステップS4aでは、例えば、画像間の類似度が比較結果として出力される。また、図1の例のようにステップS4aで複数の中間出力画像31,32と第1目標画像12とが比較される場合、その比較結果としては、例えば、中間出力画像31,32と第1目標画像12との各類似度の最大値が出力される。演算部1bは、ステップS4aでの比較結果に基づいて、画像処理プログラム21aを次世代に残すかを判定する。
なお、ステップS4では、ステップS4aでの比較結果だけでなく、画像処理プログラム21aの実行結果として出力される最終出力画像と、第2目標画像13との比較結果を用いて、判定が行われてもよい。
ステップS4において画像処理プログラム21aを次世代に残すと判定された場合、演算部1bは、プログラム群20に含まれる画像処理プログラム21,22,23,・・・の1つを、画像処理プログラム21aに入れ替える(ステップS5)。これにより、プログラム群20の世代が更新される。
ここで、画像処理プログラム21aを次世代に残すかの判定方法としては、画像処理プログラム21aによる画像処理の結果として出力される最終出力画像と、第2目標画像13との比較に基づいて判定する方法が考えられる。しかし、この方法では、画像処理の途中で、第1目標画像12のような所望の画像に近い画像が生成されていたとしても、最終画像と第2目標画像13とが類似していなければ、画像処理プログラム21aは淘汰され、次世代のプログラム群20に残らない。このように、学習の促進に役立つ可能性の高い有効な画像処理プログラムが淘汰されてしまうことが、画像処理プログラムの生成が完了するまでにかかる時間を長くする原因となり得る。
これに対して、ステップS4aでの比較結果は、画像処理プログラム21aの実行途中で出力される中間出力画像が、所望の画像に近いかの指標を示す。ステップS4においてこのような指標に基づいて判定が行われることで、画像処理プログラム21aの実行途中で適切な画像を出力できる可能性の高い画像処理プログラムが、淘汰されずに次世代のプログラム群20に残存するようになる。これにより、処理過程が適切と指定される画像処理プログラムが次世代に残りやすくなるように、生存選択が適正化される。
そして、上記手順で世代が更新されたプログラム群20を用いてステップS1〜S5の処理が繰り返し実行されることで、ステップS4aでの比較結果が示す画像間の近さの度合いが上昇する速度が速まっていき、学習速度が向上する。これにより、プログラム群20に含まれる画像処理プログラム、および、それらの画像処理プログラムから進化過程によって生成された画像処理プログラムの適応度の最大値が、所定の閾値に達するまでの時間が短くなる。すなわち、所望の処理を実現する画像処理プログラムが生成されるまでの時間が短縮される。
〔第2の実施の形態〕
次に、第2の実施の形態に係る画像処理装置について説明する。第2の実施の形態に係る画像処理装置は、図1に示したプログラム生成装置1と同様の処理機能と、この処理機能によって生成された画像処理プログラムを実行して画像処理を行う機能とを備える。
以下の説明では、まず、図2〜図4を用いて、遺伝的プログラミングによる画像処理プログラムの生成処理の基本的な手順を示す比較例について説明し、図5を用いて、比較例における問題点について説明する。そして、その後に第2の実施の形態に係る画像処理装置について説明する。
図2は、画像処理プログラムの生成処理手順の比較例を示す図である。
画像処理プログラムの生成処理の前に、1つ以上の学習データ50が用意される。学習データ50には、入力画像51と、入力画像51に対して画像処理を施したときの目標画像52とが含まれる。入力画像51は、例えば、カメラによって被写体を撮像することによって得られる。
遺伝的プログラミングによる画像処理プログラムの生成処理では、個体は、1つ以上の部分プログラムを組み合わせて構成される。例えば、図2の左上に示すように、個体は木構造で定義される。
個体に組み込むことが可能な複数の部分プログラムも、あらかじめ用意される。以下、個体に組み込まれる部分プログラムの例として、画像フィルタを想定するが、部分プログラムは画像フィルタに限るものではなく、他の種類の画像処理を行うプログラムを用いることもできる。なお、図2の左上において、“F”は画像フィルタを示し、“I”は入力端子を示し、“O”は出力端子を示す。
遺伝的プログラミングによる画像処理プログラムの生成処理は、例えば、次のように実行される。まず、複数の初期個体による個体群61が生成される(ステップS11)。各初期個体のノードには、あらかじめ用意された複数の画像フィルタの中から画像フィルタがランダムに選択されて組み込まれる。次に、生成された個体群61の中から、ランダムに2つの親個体が取り出される(ステップS12)。
次に、これら2つの親個体に対して進化過程の処理が施されることで、2つ以上の子個体が生成される(ステップS13)。進化過程では、2つの親個体に対して交叉処理および突然変異処理が行われる。2つの親個体に対して、それぞれ異なる交叉処理や突然変異処理が行われることで、3つ以上の子個体が生成されてもよい。
次に、進化過程を経て生成された子個体、および元の親個体のそれぞれについて、適応度が計算される(ステップS14)。この処理では、対象の個体それぞれを用いた画像処理が、学習データ50の入力画像51に対して実行され、実行後の画像と対応する目標画像52とが比較されることで適応度が計算される。複数の学習データ50が存在する場合、個体それぞれについて、複数の学習データ50を用いて得られた適応度の平均値が算出される。
ここで、いずれかの個体の適応度が所定の閾値以上であった場合には、その個体が最終的な画像処理プログラムとして出力され、プログラム生成処理が終了する。一方、すべての個体の適応度が所定の閾値未満であった場合には、生成された各子個体および元の2つの親個体を含む個体群62の中から、生存選択が行われる(ステップS15)。この生存選択では、個体群62の中から、算出された適応度が最大の個体が選択される。さらに、個体群62内の残りの個体の中から、所定の方法で個体が1つ選択される。例えば、残りの個体の中から、適応度に応じた確率で個体が選択される。
このような生存選択によって選択された2つの個体は、個体群61に含まれる2つの個体と入れ替えられる(ステップS16)。例えば、生存選択によって選択された2つの個体は、個体群61に含まれる個体のうち、親個体として取り出された2つの個体と入れ替えられる。これにより、個体群61に含まれる個体が次世代の個体へ変更される。そして、適応度が所定の閾値以上となる個体が出現するまで、同様の処理が繰り返される。
図3は、交叉の例を示す図である。図3では、親個体71aと親個体72aとの間で交叉が行われ、親個体71aに基づく子個体71bと、親個体72aに基づく子個体72bとが生成される場合の例を示す。
親個体71aは、画像フィルタF1,F2,F3,F4を含み、親個体72aは、画像フィルタF2,F3,F5,F6を含む。ここで、親個体71aにおける画像フィルタF2のノードと、親個体72aにおける画像フィルタF5のノードが、交叉を行う箇所として選択されたものとする。
交叉の処理では、例えば、選択されたノードだけでなく、そのノードより下位階層のノードも交叉の対象となる。このため、図3の例では、親個体71aにおける“画像フィルタF2,F1、画像フィルタF2の一方に接続された入力端子のノード、画像フィルタF1に接続された入力端子のノード”と、親個体72aにおける“画像フィルタF5、画像フィルタF5に接続された入力端子のノード”とが入れ替えられる。このような交叉により、画像フィルタF3,F4,F5を含む子個体71bと、画像フィルタF1,F2,F4をそれぞれ1つ含み、画像フィルタF3を2つ含む子個体72bとが生成される。
図4は、突然変異の例を示す図である。図4において、個体73aは、画像フィルタF3,F4,F5を含む。この個体73aは、例えば、個体群61から取り出された親個体であってもよいし、または、個体群61から親個体として取り出された後、交叉が行われた個体であってもよい。
ここで、個体73aにおける画像フィルタF3のノードが突然変異を行う箇所として選択されるとともに、突然変異による置き換え後の画像フィルタとして画像フィルタF7が選択されたものとする。なお、突然変異による置き換え後の画像フィルタは、あらかじめ用意された複数の画像フィルタの中からランダムに選択される。このような突然変異により、画像フィルタF4,F5,F7を含む子個体73bが生成される。
ところで、上記の手順により生成される画像処理プログラムの用途の例としては、FA(Factory Automation)分野において、製品を撮像した画像に画像処理を施して所望の効果を得るという用途が考えられる。例えば、製品の外観を撮像した画像に画像処理を施して、欠陥が生じた箇所を抽出する、位置合わせを行う箇所を抽出する、特定の部品に印字された文字を認識するといった用途が考えられる。
このような用途では、被写体となる製品の変更や改良、それに伴う撮像環境の変化などに応じて、画像処理アルゴリズムの再構築の必要が生じる場合がある。このため、画像処理アルゴリズムの構築の容易性が求められている。また、照明条件の変化や被写体の形状、位置姿勢のばらつき等の撮像環境の変化に対するロバスト性が高い画像処理アルゴリズムを構築することが求められている。
遺伝的プログラミングを利用することで、入力画像51とこれに対応する目標画像52とをあらかじめ用意しておくだけで、このような用途で使用可能な画像処理プログラムを容易に生成することができる。また、それぞれ撮像環境が異なる入力画像51と目標画像52のペア(学習データ50)を複数用意しておくことで、撮像環境の変化に対するロバスト性が高い画像処理アルゴリズムを自動生成することもできる。
ここで、図5は、画像処理の例を示す図である。画像処理の例として、入力画像内の特定の領域について何らかの特定の処理を施すというものがある。図5では、その一例として、プリント基板に搭載された半導体チップのパッケージ領域から、その領域に印字された文字の部分だけを特定の色(例えば、白)の領域として抽出する処理を示す。画像処理の結果として最終的に出力される最終出力画像81dにおいては、半導体チップのパッケージ領域に印字された「ABC123」という文字の部分だけが白の領域として抽出されている。
なお、図5の画像処理は、例えば、特定の領域から文字を認識するための前処理として実行される。また、特定の領域について何らかの処理を施すという処理の他の例としては、特定の部品が搭載された領域から、部品に描かれた記号や模様の部分を特定の色の領域として抽出する処理が考えられる。さらに、また、画像内の特定の領域における部品の位置や傾きを検出するために、その領域における部品の搭載領域だけを特定の色の領域として抽出する、という処理も考えられる。
以下、文字や記号、模様の抽出対象となる特定の領域を、「抽出対象領域」と記載する。
上記のような画像処理における入力画像については、撮影時における被写体の明るさが画像ごとに大きくばらつく可能性がある。それだけでなく、画像内の抽出対象領域の明るさのばらつき度合いと、その領域以外の背景領域の明るさのばらつき度合いとが異なることも多い。それは、抽出対象領域と背景領域とで明るさのばらつきの発生原因が異なる場合があるからである。例えば、抽出対象領域と背景領域とで光の反射率や色の傾向が異なることや、抽出対象領域と背景領域の高さの差によって周囲からの光の当たり方が異なることが、原因となり得る。
このため、画像全体に対する処理によって明るさのばらつきの影響を低減するような前処理のアルゴリズムを構築することは、難易度が高い。明るさのばらつきの影響を低減するためには、抽出対象領域と背景領域のそれぞれに対して別々の前処理を施すことが望ましい。このような理由から、上記のような画像処理におけるロバスト性を向上させるためには、抽出対象領域と背景領域との切り分け処理を含めることが重要となる。
図5に示す入力画像81aにおいては、半導体チップのパッケージ領域は黒色であるため、照明の変動に対する輝度の変化は小さい。しかし、背景となるプリント基板はより明るい色であるため、照明の変動に対する輝度の変化が大きくなる可能性がある。このような被写体が写った入力画像81aから最終出力画像81dが得られるような画像処理プログラムをプログラマーが構築する場合、半導体チップのパッケージ領域を抽出するような中間処理アルゴリズムを含めることが多い。この中間処理アルゴリズムによれば、例えば、抽出された領域とそれ以外の背景領域とが画素値などによって区別された画像が得られる。そして、得られた画像を用いて文字の領域が抽出される。
このように、抽出された領域とそれ以外の背景領域とが区別された画像の例としては、抽出された領域以外の背景領域をマスクしたマスク画像がある。マスク画像では、抽出された領域が白領域(すなわち、画素値が最大値の領域)とされ、それ以外の背景領域が黒領域(すなわち、画素値が最小値の領域)とされる。
図5に示す中間出力画像81bは、上記のような中間処理アルゴリズムによって生成されたマスク画像の一例である。この中間処理アルゴリズムは、例えば、入力画像81aから半導体チップのパッケージ領域と類似する色の領域を抽出するものである。他方、図5に示す画像処理は、例えば、抽出する文字と類似する色の領域を入力画像81aから抽出する処理も含む。図5に示す中間出力画像81cは、このような処理によって得られた画像の例である。そして、図5に示す画像処理では、中間処理画像81bと中間処理画像81cとの論理積(and)をとることで、最終出力画像81dが生成される。
このような画像処理を実行するための画像処理プログラムを、図2に示した手順によって生成した場合、生存選択のための個体の評価(すなわち、適応度の算出)は、最終出力画像81dとこれに対応する目標画像との比較によって行われることになる。この場合、個体を用いた画像処理の実行途中で抽出対象領域を抽出できるような有効な処理が実行されていたとしても、そのことに関係なく、最終的な出力画像に基づく評価結果によって個体が淘汰される。このため、画像処理の実行途中で有効な出力が得られている個体を次世代に残すことができないという問題がある。
このことは、最終的な出力画像に基づく評価結果だけを用いて個体の生存選択を行うと、その評価結果を示す値が収束するまでに時間がかかり、画像処理プログラムの生成に要する時間が長くなることの1つの原因となることを示す。換言すると、最終的な出力画像だけでなく、画像処理の実行途中で得られる中間出力画像も加味した評価結果に基づいて生存選択を行うことにより、画像処理プログラムの生成時間を短縮できる可能性がある。
なお、上記の問題を解決するための他の方法として、入力画像上に抽出対象領域に対応する関心領域(Region Of Interest:ROI)を事前に設定した上で、画像処理プログラムを生成する方法も考えられる。しかし、この方法は、抽出対象領域が決まった場所に存在する画像に対する画像処理にしか適用できない。また、他の方法として、関心領域の抽出処理を行うプログラムの学習と、それ以後の処理を行うプログラムの学習とを個別に行う方法も考えられる。しかし、複数回の学習を行うことで全体のプログラム生成時間が長くなってしまう。
図6は、第2の実施の形態における個体の評価手順の概要を示す図である。本実施の形態の画像処理装置は、図6に示すような手順で個体を評価する。
本実施の形態では、学習データ82として、入力画像82aと中間目標画像82bと最終目標画像82cとの組み合わせが用意される。最終目標画像82cは、評価対象の個体を用いた画像処理によって最終的に出力される画像についての目標画像である。中間目標画像82bは、評価対象の個体を用いた画像処理の途中の段階、すなわち、その個体の最終ノードを除くいずれかのノードにおいて出力される画像についての目標画像である。図6の例では、中間目標画像82bは、抽出対象領域以外の領域(背景領域)をマスクするためのマスク画像である。
図6では、評価対象の個体の例として、画像フィルタF1〜F9を有する個体74を示している。本実施の形態の画像処理装置は、入力画像82aを入力として、評価対象の個体74を用いた画像処理を実行する。そして、画像処理装置は、個体74において画像フィルタ(部分プログラム)が組み込まれている各ノードで出力される出力画像を取得する。
取得される出力画像には、最終ノードを除く各ノード(中間ノード)で出力される中間出力画像83a,83b,83c,・・・と、最終ノードで出力される最終出力画像84とに大別される。すなわち、画像処理装置は、個体74の最終ノードに組み込まれた画像フィルタF9を除く他の画像フィルタF1〜F9からの出力画像を、中間出力画像83a,83b,83c,・・・として取得する。また、画像処理装置は、個体74の最終ノードに組み込まれた画像フィルタF9からの出力画像(すなわち、個体74の最終的な出力画像)を、最終出力画像84として取得する。
画像処理装置は、取得した最終出力画像84と最終目標画像82cとの比較結果に加え、取得した中間出力画像83a,83b,83c,・・・のそれぞれと中間目標画像82bとの比較結果に基づいて、個体74を次世代に残すか否かを判定する。
より具体的には、画像処理装置は、取得した最終出力画像84と最終目標画像82cとを比較し、その比較結果に基づいて最終評価値85bを算出する。この算出方法は図2のステップS14と同様の方法とすることができ、例えば、最終出力画像84と最終目標画像82cとの類似度が最終評価値85bとして算出される。
これに加え、画像処理装置は、取得した中間出力画像83a,83b,83c,・・・のそれぞれを、中間目標画像82bと比較し、その比較結果に基づいて中間評価値85aを算出する。例えば、画像処理装置は、中間出力画像83a,83b,83c,・・・のそれぞれと中間目標画像82bとの類似度を算出し、算出された類似度のうちの最大値を中間評価値85aとする。
そして、画像処理装置は、中間評価値85aと最終評価値85bとに基づいて、個体74を次世代に残すか否かを判定する。例えば、中間評価値85aと最終評価値85bとを重み係数に応じた比率で合成した評価値に基づいて、個体74を次世代に残すか否かを判定する。
このような手順により、最終出力画像が目標とする最終画像に近いだけでなく、いずれかの中間出力画像が目標とする中間画像に近い個体が、次世代に残るようになる。個体群61(図2参照)において、このように中間出力画像が中間目標画像に近いと推定される個体が増えていくことにより、個体群61から生成される親個体および子個体の最終評価値が上昇しやすくなり、学習が促進される。その結果、画像処理プログラムの生成が完了するまでの時間が短縮される。
また、画像処理装置は、個体を次世代に残すかを判定するための評価値として、中間評価値と最終評価値とに重み付けを行って算出した値を用いることもできる。例えば、画像処理装置は、学習の初期段階では、中間評価値の重みを大きくして算出した評価値を用い、学習が進むに連れて、評価値を算出する際の最終評価値の重みを徐々に大きくしていく。これにより、学習の初期段階では、中間出力画像が中間目標画像に近づくことが重視されるように学習が行われる。そして、学習が進んで中間評価値が収束していくと、最終出力画像が最終目標画像に近づくことが重視されるようになる。個体群61に中間評価値の高い個体が多くなるほど、最終評価値が所定の閾値に達するまでの時間が短縮されるので、上記のように重みを変化させることで全体として画像処理プログラムの生成が完了するまでの時間が短縮される。
次に、第2の実施の形態の画像処理装置の詳細について説明する。
図7は、画像処理装置のハードウェア構成例を示す図である。画像処理装置100は、例えば、図7に示すようなコンピュータとして実現される。
画像処理装置100は、プロセッサ101によって装置全体が制御されている。プロセッサ101は、マルチプロセッサであってもよい。プロセッサ101は、例えばCPU(Central Processing Unit)、MPU(Micro Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、またはPLD(Programmable Logic Device)である。また、プロセッサ101は、CPU、MPU、DSP、ASIC、PLDのうちの2以上の要素の組み合わせであってもよい。
プロセッサ101には、バス109を介して、RAM(Random Access Memory)102と複数の周辺機器が接続されている。
RAM102は、画像処理装置100の主記憶装置として使用される。RAM102には、プロセッサ101に実行させるOS(Operating System)プログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、RAM102には、プロセッサ101による処理に必要な各種データが格納される。
バス109に接続されている周辺機器としては、HDD103、グラフィック処理装置104、入力インタフェース105、読み取り装置106、ネットワークインタフェース107および通信インタフェース108がある。
HDD103は、画像処理装置100の補助記憶装置として使用される。HDD103には、OSプログラム、アプリケーションプログラム、および各種データが格納される。なお、補助記憶装置としては、SSD(Solid State Drive)などの他の種類の不揮発性記憶装置を使用することもできる。
グラフィック処理装置104には、表示装置104aが接続されている。グラフィック処理装置104は、プロセッサ101からの命令にしたがって、画像を表示装置104aの画面に表示させる。表示装置としては、液晶ディスプレイや有機EL(ElectroLuminescence)ディスプレイなどがある。
入力インタフェース105には、入力装置105aが接続されている。入力インタフェース105は、入力装置105aから出力される信号をプロセッサ101に送信する。入力装置105aとしては、キーボードやポインティングデバイスなどがある。ポインティングデバイスとしては、マウス、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
読み取り装置106には、可搬型記録媒体106aが脱着される。読み取り装置106は、可搬型記録媒体106aに記録されたデータを読み取ってプロセッサ101に送信する。可搬型記録媒体106aとしては、光ディスク、光磁気ディスク、半導体メモリなどがある。
ネットワークインタフェース107は、ネットワーク107aを介して他の装置との間でデータの送受信を行う。
通信インタフェース108は、接続された外部デバイスとの間でデータの送受信を行う。本実施の形態では、通信インタフェース108には、外部デバイスとしてカメラ108aが接続されており、通信インタフェース108は、カメラ108aから送信された画像データをプロセッサ101に送信する。
以上のようなハードウェア構成によって、画像処理装置100の処理機能を実現することができる。
図8は、画像処理装置が備える処理機能の構成例を示すブロック図である。画像処理装置100は、画像取得部111、画像処理部112、プログラム生成部120、プログラム記憶部130、要素記憶部141、学習データ記憶部142、個体群記憶部143および出力画像記憶部144を有する。
画像取得部111、画像処理部112およびプログラム生成部120の処理は、例えば、画像処理装置100のプロセッサ101が所定のプログラムを実行することで実現される。また、画像処理部112の処理の一部は、プログラム記憶部130に保存された画像処理プログラムを、画像処理装置100のプロセッサ101が実行することで実現される。プログラム記憶部130、要素記憶部141および学習データ記憶部142は、例えば、画像処理装置100のHDD103の記憶領域として実現される。個体群記憶部143および出力画像記憶部144は、例えば、画像処理装置100のRAM102の記憶領域として実現される。
画像取得部111は、撮像された画像のデータをカメラ108aから取得し、プログラム生成部120または画像処理部112に出力する。
プログラム生成部120は、遺伝的プログラミングにより画像処理プログラムを生成し、生成された画像処理プログラムをプログラム記憶部130に保存する。なお、プログラム生成部120の内部構成については後述する。
画像処理部112は、カメラ108aによって撮像された画像のデータを画像取得部111を介して取得する。画像処理部112は、プログラム記憶部130に保存された画像処理プログラムにしたがって、取得した画像のデータに画像処理を施す。処理後の画像は、例えば表示装置104aに表示される。
プログラム記憶部130は、プログラム生成部120によって生成された画像処理プログラムを記憶する。
要素記憶部141は、プログラム生成部120によって生成される各個体に組み込むことが可能な要素のデータを記憶する。これらの要素は、画像処理プログラムの構成要素となる部分プログラムであり、例えば、各種の画像フィルタのプログラムが含まれる。
学習データ記憶部142は、入力画像と、これに対応する中間目標画像および最終目標画像の各データを含む学習データを、複数記憶する。学習データに含まれる入力画像は、例えば、画像処理装置100に接続されたカメラ108aによって撮像された画像であってもよい。また、入力画像に対応する中間目標画像および最終目標画像は、例えば、入力画像に対してレタッチ処理を施すことによって作成される。
個体群記憶部143は、個体群を記憶する。個体群は、要素記憶部141に記憶された要素(部分プログラム)を組み合わせることで生成される個体(画像処理プログラム)を複数含む。なお、個体群記憶部143には、各個体に対応する画像処理プログラムそのものが記憶されてもよいし、個体の各ノードに組み込まれた部分プログラム名とノード間の接続構造とを示す構造情報が個体ごとに記憶されてもよい。また、個体群記憶部143には、各個体について算出された評価値が、個体に対応づけて記憶される。
出力画像記憶部144は、生存選択の対象の個体に対応するプログラムの実行によって得られる出力画像を記憶する。この出力画像としては、個体の中間ノードで出力される中間出力画像と、個体の最終ノードで出力される最終出力画像とがある。
プログラム生成部120は、学習制御部121、プログラム実行部122および評価値算出部123を有する。
学習制御部121は、プログラム生成部120でのプログラム生成処理全体を統括的に制御する。例えば、学習制御部121は、初期個体群の生成、個体の進化処理、評価値に基づく生存選択および最終的な画像処理プログラムの出力、生存選択された個体による個体群の更新などの処理を実行する。
プログラム実行部122は、学習制御部121からの指示に応じて、個体(画像処理プログラム)を実行する。プログラム実行部122は、個体の実行により、その個体の最終ノードで出力される最終出力画像だけでなく、その個体の中間ノードで出力される中間出力画像を出力し、出力画像記憶部144に格納する。
評価値算出部123は、学習制御部121からの指示に応じて、各個体を評価するための評価値を算出する。算出される評価値としては、前述した中間評価値および最終評価値の他、さらに総合評価値がある。
次に、学習データの例について説明する。
図9は、学習データの第1の例を示す図である。図9では、例として、プリント基板に搭載された半導体チップのパッケージ領域から、その領域に印字された文字の部分だけを白色領域として抽出する、という画像処理を想定する。この場合、文字の抽出対象となる抽出対象領域は、半導体チップのパッケージ領域となる。画像処理装置100によってこのような画像処理を実現するための画像処理プログラムを生成する場合には、例えば、図9に示すような学習データ151〜153が用いられる。
学習データ151は、入力画像151a、中間目的画像151bおよび最終目的画像151cを含む。入力画像151aには、プリント基板が写っている。中間目的画像151bは、入力画像151aにおける半導体チップのパッケージ領域(抽出対象領域)以外の背景領域をマスクしたマスク画像である。最終目的画像151cは、入力画像151aにおける半導体チップのパッケージ領域に印字された文字の部分のみが白色とされた画像である。
学習データ152は、入力画像152a、中間目的画像152bおよび最終目的画像152cを含む。入力画像152aには、プリント基板が写っている。ただし、入力画像152aに写るプリント基板は、入力画像151aに写るプリント基板とは異なるものであってもよいし、入力画像152aにおける半導体チップの搭載位置は、入力画像151aにおける半導体チップの搭載位置とは異なっていてもよい。中間目的画像152bは、入力画像152aにおける背景領域をマスクしたマスク画像である。最終目的画像152cは、入力画像152aにおける半導体チップのパッケージ領域に印字された文字の部分のみが白色とされた画像である。
学習データ153は、入力画像153a、中間目的画像153bおよび最終目的画像153cを含む。入力画像153aには、プリント基板が写っている。ただし、入力画像153aに写るプリント基板は、入力画像151a,152aに写るプリント基板とは異なるものであってもよいし、入力画像153aにおける半導体チップの搭載位置は、入力画像151a,152aにおける半導体チップの搭載位置とは異なっていてもよい。中間目的画像153bは、入力画像153aにおける背景領域をマスクしたマスク画像である。最終目的画像153cは、入力画像153aにおける半導体チップのパッケージ領域に印字された文字の部分のみが白色とされた画像である。
図10は、学習データの第2の例を示す図である。図10では、例として、道路を走行する車両に搭載されたナンバプレート領域から、その領域に印字された文字の部分だけを白色領域として抽出する、という画像処理を想定する。この場合、文字の抽出対象となる抽出対象領域は、ナンバプレート領域となる。画像処理装置100によってこのような画像処理を実現するための画像処理プログラムを生成する場合には、例えば、図10に示すような学習データ161〜163が用いられる。
学習データ161は、入力画像161a、中間目的画像161bおよび最終目的画像161cを含む。入力画像161aには、車両が写っている。中間目的画像161bは、入力画像161aにおけるナンバプレート領域(抽出対象領域)以外の背景領域をマスクしたマスク画像である。最終目的画像161cは、入力画像161aにおけるナンバプレート領域に記載された文字の部分のみが白色とされた画像である。
学習データ162は、入力画像162a、中間目的画像162bおよび最終目的画像162cを含む。入力画像162aには、車両が写っている。ただし、入力画像162aに写る車両は、入力画像161aに写る車両とは異なるものであってもよいし、入力画像162aにおけるナンバプレートの位置は、入力画像161aにおけるナンバプレートの位置とは異なっていてもよい。中間目的画像162bは、入力画像162aにおける背景領域をマスクしたマスク画像である。最終目的画像162cは、入力画像162aにおけるナンバプレート領域に印字された文字の部分のみが白色とされた画像である。
学習データ163は、入力画像163a、中間目的画像163bおよび最終目的画像163cを含む。入力画像163aには、車両が写っている。ただし、入力画像163aに写る車両は、入力画像161a,162aに写る車両とは異なるものであってもよいし、入力画像163aにおけるナンバプレートの位置は、入力画像161a,162aにおけるナンバプレートの位置とは異なっていてもよい。中間目的画像163bは、入力画像163aにおける背景領域をマスクしたマスク画像である。最終目的画像163cは、入力画像163aにおけるナンバプレート領域に記載された文字の部分のみが白色とされた画像である。
ここで、上記の図9,図10の例のように、画像処理プログラムの生成時には、抽出対象領域の位置が互いに異なる複数の学習データが利用されることが望ましい。これにより、抽出対象領域が互いに異なる撮像画像を画像処理の対象としても所望の結果を高性能に得ることが可能な画像処理プログラムを生成することができる。
また、図9の入力画像151a,152a,153aでは、撮影時における被写体への照明の明るさが互いに異なっている。また、図10の入力画像161a,162a,163aでは、撮影時における被写体への光の当たり方の分布が互いに異なっている。これらの例のように、画像処理プログラムの生成時には、明るさなどの撮影条件が互いに異なる入力画像を含む複数の学習データが利用されることが望ましい。これにより、撮影条件が変動した場合でも所望の結果を安定的に得ることが可能な画像処理プログラムを生成することができる。
次に、画像処理装置100によるプログラム生成処理の詳細について、フローチャートを用いて説明する。
図11〜図12は、プログラム生成処理手順の例を示すフローチャートである。
[ステップS21]学習制御部121は、学習データの設定のための入力操作を受け付ける。例えば、学習データ記憶部142に記憶された学習データの中から、本処理で使用される学習データが指定される。ここでは、n組の学習データが使用されるものとする(ただし、nは1以上の整数)。
[ステップS22]学習制御部121は、要素記憶部141に登録された要素を組み合わせることで、複数の初期個体を生成し、生成された初期個体を個体群記憶部143に格納する。この処理において生成される個体群は図3に示した個体群61に相当するので、これ以後、「個体群61」と表記する。
[ステップS23]個体群61に含まれる各個体についての中間評価値Fmidと最終評価値Flastとが、次のような手順で算出される。
学習制御部121は、個体群61に含まれる個体を1つ選択し、選択した個体をプログラム実行部122に実行させる。プログラム実行部122は、選択された個体にしたがって、ステップS21で指定されたn組の学習データに含まれる各入力画像に対する画像処理を実行する。この画像処理において、プログラム実行部122は、選択した個体の各ノードにおいて出力される画像を出力画像記憶部144に格納する。格納される出力画像には、中間ノードにおいて出力される中間出力画像と、最終ノードにおいて出力される最終出力画像とがある。すなわち、n組の学習データのそれぞれについて、1つ以上の中間出力画像と1つの最終出力画像とが格納される。
学習制御部121は、選択した個体についての中間評価値Fmidと最終評価値Flastとを評価値算出部123に算出させる。評価値算出部123は、まず、この個体に含まれる中間ノードごとに予備評価値を算出する。具体的には、この個体に含まれるk番目の中間ノードの予備評価値f(k)は、k番目の中間ノードにおいてn組の学習データをそれぞれ用いて出力されたn個の中間出力画像を用いて、次の式(1)にしたがって算出される。
Figure 0006468356
式(1)において、Wは画像の水平方向の画素数を示し、Hは画像の垂直方向の画素数を示す。m(k,i)(x,y)は、i番目の学習データに含まれる入力画像を用いて、k番目の中間ノードにおいて出力された中間出力画像における座標(x,y)の画素値を示す。Mi(x,y)は、i番目の学習データに含まれる中間目標画像における座標(x,y)の画素値を示す。Vmaxは、画素値がとり得る最大値を示す。なお、これらの画素値は、例えば、輝度値である。式(1)によれば、予備評価値f(k)は0以上1以下の値をとる。
評価値算出部123は、上記の方法で個体に含まれる全中間ノードについての予備評価値f(k)を算出する。そして、評価値算出部123は、次の式(2)にしたがって個体に対応する中間評価値Fmidを算出する。すなわち、個体に対応する中間評価値Fmidは、その個体について算出された各予備評価値f(k)のうちの最大値として算出される。
mid=max{f(k)} ・・・(2)
また、評価値算出部123は、個体の最終ノードにおいてn組の学習データをそれぞれ用いて出力されたn個の最終出力画像を用いて、次の式(3)にしたがって最終評価値Flastを算出する。
Figure 0006468356
式(3)において、oi(x,y)は、i番目の学習データに含まれる入力画像を用いて出力された最終出力画像における座標(x,y)の画素値を示す。Ti(x,y)は、i番目の学習データに含まれる最終目標画像における座標(x,y)の画素値を示す。式(3)によれば、最終評価値Flastは、予備評価値f(k)と同様、0以上1以下の値をとる。
以上の手順により、個体群61に含まれる各個体についての中間評価値Fmidと最終評価値Flastとが算出される。評価値算出部123は、算出された中間評価値Fmidと最終評価値Flastとを、個体に対応付けて個体群記憶部143に登録する。
[ステップS24]学習制御部121は、評価値算出部123に重み係数tの算出を指示する。評価値算出部123は、現在個体群61に含まれている全個体の中間評価値Fmidの分布状況に基づいて、重み係数tを算出する。例えば、重み係数tは、個体群61に含まれている全個体の中間評価値Fmidの平均値として算出される。
[ステップS25]学習制御部121は、個体群61に含まれる個体の中から、2つの親個体をランダムに選択する。
[ステップS26]学習制御部121は、選択された2つの親個体の間で交叉を行うことで、2つ以上の所定数の子個体を生成する。
[ステップS27]学習制御部121は、生成された子個体のいずれかのノードに突然変異を発生させ、元の子個体のノードに組み込まれていた画像フィルタを、要素記憶部141に登録されている他の画像フィルタのいずれかに置き換える。
[ステップS28]ステップS26,S27の処理によって生成された各子個体についての中間評価値Fmidと最終評価値Flastとが、ステップS23での個体についての中間評価値Fmidと最終評価値Flastと同様の手順で算出される。
[ステップS29]学習制御部121は、ステップS25で選択された親個体、および、ステップS26,S27で生成された子個体のそれぞれについての最終評価値Flastと、所定の閾値とを比較する。学習制御部121は、これらの個体の中に、最終評価値Flastが閾値より大きい個体が存在するかを判定する。最終評価値Flastが閾値より大きい個体が存在しない場合、ステップS30の処理が実行される。最終評価値Flastが閾値より大きい個体が存在する場合、ステップS33の処理が実行される。
[ステップS30]学習制御部121は、ステップS25で選択された親個体、および、ステップS26,S27で生成された子個体のそれぞれについての総合評価値Ftotalを、評価値算出部123に算出させる。評価値算出部123は、これらの各個体についての総合評価値Ftotalを、次の式(4)にしたがって算出する。
total=(1−t)Fmid+tFlast ・・・(4)
[ステップS31]学習制御部121は、ステップS25で選択された親個体、および、ステップS26,S27で生成された子個体の中から、ステップS30で算出された総合評価値Ftotalが最大の個体を、生存させる個体として選択する。さらに、学習制御部121は、残りの個体の中から生存させる個体をさらに1つ選択する。この選択処理では、例えば、算出された総合評価値Ftotalに応じた確率で個体が選択される。
[ステップS32]学習制御部121は、ステップS31で選択した2つの個体によって、個体群61に含まれる個体のうちステップS25で選択した親個体を置換する。これによって、個体群61の世代が更新される。また、ステップS31で選択された2つの個体についての中間評価値Fmidと最終評価値Flastは、個体群記憶部143において個体に対応づけて登録される。
なお、個体群61に含まれる個体のうち置換される個体の少なくとも1つは、例えば、総合評価値Ftotalまたは最終評価値Flastが最小の個体であってもよい。
[ステップS33]学習制御部121は、ステップS29で最終評価値Flastが閾値より大きいと判定された個体に対応する画像処理プログラムをプログラム記憶部130に格納して、処理を終了する。なお、ステップS29で、最終評価値Flastが閾値より大きい個体が複数存在した場合、学習制御部121は、これらの個体の中から最終評価値Flastが最大の個体に対応する画像処理プログラムをプログラム記憶部130に格納する。
以上の図11〜図12の処理によれば、ステップS30において、生存選択の対象の各個体についての総合評価値Ftotalが、各個体についての中間評価値Fmidと最終評価値Flastとに基づいて算出される。そして、ステップS31において、生存させる個体が総合評価値Ftotalに基づいて選択される。これにより、各個体を用いた画像処理の結果として出力される最終出力画像だけでなく、その画像処理の途中で出力される中間出力画像の有効性を加味して、生存させる個体が選択される。そのため、処理過程の一部が適切と推定される固体が淘汰されずに個体群61に残りやすくなり、そのような個体が個体群61において増加していくのに連れて、個体群61内の個体の最終評価値Flastのうちの最大値も増加しやすくなる。したがって、学習速度が向上し、画像処理プログラムの生成が完了するまでの時間が短縮される。
また、ステップS32において個体群61の世代が更新された後、ステップS24において、その世代の個体群61内の各個体についての中間評価値Fmidの分布状況に基づいて、総合評価値Ftotalの算出に用いられる重み係数tが再計算される。したがって、総合評価値Ftotalは、学習の進行に伴って変動する。
ここで、個体群61内の各個体についての中間評価値Fmidの分布状況に基づいて重み係数tが算出されることで、重み係数tの値は学習の進行に伴って徐々に増加していく。このため、総合評価値Ftotalの算出の際には、学習が進むに連れて、最終評価値Flastの合成比率が高くなっていく。これにより、学習の初期段階では、中間評価値Fmidを重視して個体の生存選択が行われ、学習が進むに連れて、最終評価値Flastを重視して個体の生存選択が行われるようになる。個体群61に中間評価値Fmidの高い個体が多くなるほど、最終評価値Flastが所定の閾値に達するまでの時間が短縮されるので、上記のように重み係数を変化させることで全体として画像処理プログラムの生成が完了するまでの時間が短縮される。
図13は、最終評価値および重み係数の変化の例を示す図である。この図13では、本実施の形態での最終評価値Flastの変化とともに、図12のステップS30で総合評価値Ftotalでなく最終評価値Flastに基づいて生存選択を行った場合の最終評価値Flastの変化の比較例についても同時に示している。なお、図13に示す最終評価値Flastの値は、図12のステップS29で閾値と比較される最終評価値Flastのうちの最大値である。
この図13の例によれば、本実施の形態において最終評価値Flastが所定の閾値を超えるまでの時間は、比較例と比較して1/2程度に短縮されている。また、重み係数tは、全体として、個体群61の世代数の増加に伴って上昇している。
〔第3の実施の形態〕
第3の実施の形態では、重み係数tを、中間評価値Fmidの算出値に基づいて算出する代わりに、学習の時間的な進行度合いに応じて算出するように、第2の実施の形態を変形した例を示す。なお、第3の実施の形態に係る画像処理装置の基本的な構成は第2の実施の形態と同様であるので、第2の実施の形態と同様の符号を用いて説明する。
図14は、重み係数の算出に用いる変調テーブルについて説明するための図である。図14に示すグラフ170は、変調テーブルに登録される情報をグラフ化したものである。グラフ170の例では、個体群61の世代数gの増加に伴って、重み係数tが3段階で増加している。本実施の形態の画像処理装置100は、グラフ170に示すような世代数gと重み係数tとの対応関係を記憶する変調テーブルに基づいて、重み係数tを算出する。
なお、重み係数tの算出は、学習の進行に伴って重み係数tが増加するような方法であれば、変調テーブルを用いる方法に限らない。例えば、所定の算出式を用いて重み係数tを算出してもよい。
図15〜図16は、第3の実施の形態におけるプログラム生成処理手順の例を示すフローチャートである。なお、図15〜図16では、図11〜図12と同様の処理が行われる処理ステップには、同じステップ番号を付して示し、その説明を省略する。
図15〜図16の処理では、図11〜図12の処理から以下の点が変更されている。ステップS21とステップS22との間に、ステップS21a,S21bが追加される。また、ステップS24の処理が削除され、ステップS23の次にステップS25が実行される。さらに、ステップS32の後にステップS32a,S32bが追加され、ステップS32bの次にステップS25が実行される。
[ステップS21a]学習制御部121は、重み係数tの変調テーブルを設定する。例えば、ユーザの入力操作により、世代数gと重み係数tとの対応関係が設定される。
[ステップS21b]学習制御部121は、世代数gを1に初期化し、評価値算出部123に重み係数tの設定を指示する。評価値算出部123は、変調テーブルを参照して、現在の世代数gに対応付けられた重み係数tの値を設定する。
[ステップS32a]学習制御部121は、世代数gを1だけインクリメントする。
[ステップS32b]学習制御部121は、評価値算出部123に重み係数tの更新を指示する。評価値算出部123は、変調テーブルを参照して、現在の世代数gに対応付けられた重み係数tの値を用いて、現在の重み係数tの設定値を更新する。
なお、ステップS21bの処理は、ステップS21aの終了後からステップS30の実行前のどのタイミングで実行されてもよい。また、ステップS32a,S32bの処理も、ステップS32の終了後から次のステップS30の実行前のどのタイミングで実行されてもよい。
以上説明した第3の実施の形態によれば、学習の進行に伴って重み係数tの値が徐々に増加していく。これにより、学習の初期段階では、中間評価値Fmidを重視して個体の生存選択が行われ、学習が進むに連れて、最終評価値Flastを重視して個体の生存選択が行われるようになる。したがって、画像処理プログラムの生成が完了するまでの時間が短縮される。
なお、上記の各実施の形態に示した装置(プログラム生成装置1および画像処理装置100)の処理機能は、コンピュータによって実現することができる。その場合、各装置が有すべき機能の処理内容を記述したプログラムが提供され、そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置(HDD)、フレキシブルディスク(FD)、磁気テープなどがある。光ディスクには、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc-Read Only Memory)、CD−R(Recordable)/RW(ReWritable)などがある。光磁気記録媒体には、MO(Magneto-Optical disk)などがある。
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD、CD−ROMなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムまたはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
上記については単に本発明の原理を示すものである。さらに、多数の変形、変更が当業者にとって可能であり、本発明は上記に示し、説明した正確な構成および応用例に限定されるものではなく、対応するすべての変形例および均等物は、添付の請求項およびその均等物による本発明の範囲とみなされる。
1 プログラム生成装置
1a 記憶部
1b 演算部
10 学習データ
11 入力画像
12 第1目標画像
13 第2目標画像
20 プログラム群
21,21a,22,23 画像処理プログラム
31,32 中間出力画像
S1,S2,S3,S4,S4a,S5 ステップ

Claims (7)

  1. 遺伝的プログラミングによりプログラムを生成するプログラム生成装置において、
    入力画像と第1目標画像とを含む学習データを記憶する記憶部であって、前記第1目標画像は前記入力画像を第2目標画像に変換する処理の途中で出力される画像を示す、前記記憶部と、
    それぞれ複数の部分プログラムが組み合わされた複数の画像処理プログラムの中から第1プログラムを選択し、前記第1プログラムに含まれる前記部分プログラムの一部を変更することで第2プログラムを生成し、前記第2プログラムを用いて前記入力画像に対する画像処理を実行し、前記画像処理の途中で出力される中間出力画像と前記第1目標画像との比較に基づいて、前記第2プログラムを次世代に残すかを判定し、前記第2プログラムを次世代に残すと判定された場合、前記複数の画像処理プログラムの1つを前記第2プログラムに入れ替える演算部と、
    を有するプログラム生成装置。
  2. 前記画像処理の実行では、前記第2プログラムに含まれる前記部分プログラムのうち、最終段以外の位置にそれぞれ組み込まれた非最終部分プログラムを実行することにより、前記中間出力画像を前記非最終部分プログラムごとに出力し、
    前記判定では、前記非最終部分プログラムごとに出力された前記中間出力画像のそれぞれと前記第1目標画像との比較に基づいて、前記非最終部分プログラムごとに評価値を算出し、前記評価値の最大値に基づいて、前記第2プログラムを次世代に残すかを判定する、
    請求項1記載のプログラム生成装置。
  3. 前記演算部は、さらに、前記複数の画像処理プログラムをそれぞれ用いて前記入力画像に対する処理を実行し、前記処理のそれぞれの途中で出力される画像と前記第1目標画像との比較に基づいて、重み係数を算出し、
    前記判定では、前記中間出力画像と前記第1目標画像との比較に基づいて第1評価値を算出し、前記画像処理の結果として出力される最終出力画像と前記第2目標画像との比較に基づいて第2評価値を算出し、前記第1評価値と前記第2評価値とを前記重み係数に応じた比率で合成した第3評価値に基づいて、前記第2プログラムを次世代に残すかを判定する、
    請求項1記載のプログラム生成装置。
  4. 前記演算部は、さらに、前記複数の画像処理プログラムが現世代の個体として含まれる個体群の世代交代数に基づいて、重み係数を算出し、
    前記判定では、前記中間出力画像と前記第1目標画像との比較に基づいて第1評価値を算出し、前記画像処理の結果として出力される最終出力画像と前記第2目標画像との比較に基づいて第2評価値を算出し、前記第1評価値と前記第2評価値とを前記重み係数に応じた比率で合成した第3評価値に基づいて、前記第2プログラムを次世代に残すかを判定する、
    請求項1記載のプログラム生成装置。
  5. 前記第1目標画像は、前記入力画像において、特定の処理を施す第1画像領域とそれ以外の第2画像領域とが区別された画像であり、
    前記第2目標画像は、前記入力画像における前記第1画像領域に前記特定の処理が施された画像である、
    請求項1乃至4のいずれか1項に記載のプログラム生成装置。
  6. 遺伝的プログラミングによりプログラムを生成するプログラム生成方法において、
    コンピュータが、
    それぞれ複数の部分プログラムが組み合わされた複数の画像処理プログラムの中から第1プログラムを選択し、
    前記第1プログラムに含まれる前記部分プログラムの一部を変更することで第2プログラムを生成し、
    前記第2プログラムを用いて入力画像に対する画像処理を実行し、
    前記画像処理の途中で出力される中間出力画像と、前記入力画像を第2目標画像に変換する処理の途中で出力される画像を示す第1目標画像との比較に基づいて、前記第2プログラムを次世代に残すかを判定し、
    前記第2プログラムを次世代に残すと判定された場合、前記複数の画像処理プログラムの1つを前記第2プログラムに入れ替える、
    プログラム生成方法。
  7. 遺伝的プログラミングによりプログラムを生成する生成プログラムにおいて、
    コンピュータに、
    それぞれ複数の部分プログラムが組み合わされた複数の画像処理プログラムの中から第1プログラムを選択し、
    前記第1プログラムに含まれる前記部分プログラムの一部を変更することで第2プログラムを生成し、
    前記第2プログラムを用いて入力画像に対する画像処理を実行し、
    前記画像処理の途中で出力される中間出力画像と、前記入力画像を第2目標画像に変換する処理の途中で出力される画像を示す第1目標画像との比較に基づいて、前記第2プログラムを次世代に残すかを判定し、
    前記第2プログラムを次世代に残すと判定された場合、前記複数の画像処理プログラムの1つを前記第2プログラムに入れ替える、
    生成プログラム。
JP2017524525A 2015-06-25 2015-06-25 プログラム生成装置、プログラム生成方法および生成プログラム Active JP6468356B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2015/068371 WO2016208037A1 (ja) 2015-06-25 2015-06-25 プログラム生成装置、プログラム生成方法および生成プログラム

Publications (2)

Publication Number Publication Date
JPWO2016208037A1 JPWO2016208037A1 (ja) 2018-03-15
JP6468356B2 true JP6468356B2 (ja) 2019-02-13

Family

ID=57586632

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017524525A Active JP6468356B2 (ja) 2015-06-25 2015-06-25 プログラム生成装置、プログラム生成方法および生成プログラム

Country Status (5)

Country Link
US (1) US10489710B2 (ja)
EP (1) EP3316184B1 (ja)
JP (1) JP6468356B2 (ja)
CN (1) CN107636698B (ja)
WO (1) WO2016208037A1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10838699B2 (en) 2017-01-18 2020-11-17 Oracle International Corporation Generating data mappings for user interface screens and screen components for an application
JP6663873B2 (ja) * 2017-02-22 2020-03-13 株式会社日立製作所 プログラム自動生成システム及びプログラム自動生成方法
US10489126B2 (en) * 2018-02-12 2019-11-26 Oracle International Corporation Automated code generation
WO2019220608A1 (ja) * 2018-05-18 2019-11-21 富士通株式会社 情報処理装置、情報処理方法および情報処理プログラム
US10936912B2 (en) 2018-11-01 2021-03-02 International Business Machines Corporation Image classification using a mask image and neural networks
WO2020110933A1 (ja) * 2018-11-28 2020-06-04 株式会社トラスト・テクノロジー プログラミング装置、およびプログラム
JP7427337B2 (ja) * 2020-04-03 2024-02-05 株式会社ディスコ ウエーハの検査方法

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1830320A4 (en) * 2004-12-24 2010-10-20 Nat Univ Corp Yokohama Nat Uni IMAGE PROCESSOR
JP4766030B2 (ja) * 2007-10-11 2011-09-07 富士ゼロックス株式会社 画像処理装置及び画像処理プログラム
JP5408128B2 (ja) 2008-05-15 2014-02-05 株式会社ニコン 画像処理装置、画像処理方法、処理装置、およびプログラム
WO2010050152A1 (ja) * 2008-10-27 2010-05-06 日本電信電話株式会社 画素予測値生成手順自動生成方法、画像符号化方法、画像復号方法、それらの装置、それらのプログラム、およびこれらのプログラムを記録した記録媒体
JP2010232739A (ja) * 2009-03-25 2010-10-14 Fuji Xerox Co Ltd 画像処理装置、画像形成装置及びプログラム
US20100277774A1 (en) * 2009-05-04 2010-11-04 Certifi Media Inc. Image quality indicator responsive to image processing
JP5313037B2 (ja) * 2009-05-11 2013-10-09 パナソニック株式会社 電子カメラ、画像処理装置および画像処理方法
JP5310298B2 (ja) * 2009-06-24 2013-10-09 富士ゼロックス株式会社 画像処理装置、画像形成システム、およびプログラム
JP5359622B2 (ja) * 2009-07-03 2013-12-04 株式会社ニコン 遺伝的処理装置、遺伝的処理方法、および遺伝的処理プログラム
JP5088395B2 (ja) * 2010-04-15 2012-12-05 株式会社ニコン 電子カメラ
US9171264B2 (en) * 2010-12-15 2015-10-27 Microsoft Technology Licensing, Llc Parallel processing machine learning decision tree training
JP6103243B2 (ja) * 2011-11-18 2017-03-29 日本電気株式会社 局所特徴量抽出装置、局所特徴量抽出方法、及びプログラム
JP2014068273A (ja) * 2012-09-26 2014-04-17 Olympus Imaging Corp 画像編集装置、画像編集方法、およびプログラム
JP6102947B2 (ja) * 2012-12-28 2017-03-29 富士通株式会社 画像処理装置及び特徴検出方法
EP2806374B1 (en) * 2013-05-24 2022-07-06 Tata Consultancy Services Limited Method and system for automatic selection of one or more image processing algorithm
JP6179224B2 (ja) * 2013-07-02 2017-08-16 富士通株式会社 画像処理フィルタの作成装置及びその方法
US9448771B2 (en) * 2014-10-17 2016-09-20 Duelight Llc System, computer program product, and method for generating a lightweight source code for implementing an image processing pipeline
JP5963990B2 (ja) * 2014-06-16 2016-08-03 オリンパス株式会社 医療用システム、その画像処理設定方法、及び画像処理装置
EP3159790B1 (en) * 2014-06-19 2021-03-24 Fujitsu Limited Program generation device, program generation method, and program
CN104317556B (zh) * 2014-10-22 2018-03-16 华为技术有限公司 一种流式应用升级方法、主控节点及流计算系统

Also Published As

Publication number Publication date
US10489710B2 (en) 2019-11-26
US20180144249A1 (en) 2018-05-24
EP3316184B1 (en) 2020-03-11
CN107636698B (zh) 2021-10-19
CN107636698A (zh) 2018-01-26
EP3316184A4 (en) 2018-07-18
WO2016208037A1 (ja) 2016-12-29
EP3316184A1 (en) 2018-05-02
JPWO2016208037A1 (ja) 2018-03-15

Similar Documents

Publication Publication Date Title
JP6468356B2 (ja) プログラム生成装置、プログラム生成方法および生成プログラム
JP6639700B2 (ja) マルチモーダルデジタル画像を生成する方法及びシステム
JP2018535491A (ja) 画像のセマンティックセグメンテーションのためのシステム及びコンピューター実施方法、並びに非一時的コンピューター可読媒体
JP7231762B2 (ja) 画像処理方法、学習装置、画像処理装置及びプログラム
US20180247183A1 (en) Method and system for generative model learning, and recording medium
JP2014089626A (ja) 画像検出装置及び制御プログラム並びに画像検出方法
EP3156897B1 (en) Program generation device, program generation method and program
JP2021108155A (ja) 画像内のキーポイント位置の認識方法、装置、電子機器及び媒体
JP2018163444A (ja) 情報処理装置、情報処理方法及びプログラム
JP5311899B2 (ja) パターン検出器の学習装置、学習方法及びプログラム
JP6703289B2 (ja) 情報処理装置、情報処理方法および情報処理プログラム
JP6729810B2 (ja) 情報処理装置、情報処理方法及び情報処理プログラム
JP2020087165A (ja) 学習データ生成プログラム、学習データ生成装置、及び学習データ生成方法
JP6546385B2 (ja) 画像処理装置及びその制御方法、プログラム
JP2011014051A (ja) 生成装置、生成方法、および生成プログラム
CN113362409B (zh) 图像上色及其模型训练方法、装置、电子设备、存储介质
US20220157050A1 (en) Image recognition device, image recognition system, image recognition method, and non-transitry computer-readable recording medium
JP6544435B2 (ja) プログラム生成装置、プログラム生成方法および生成プログラム
JP6331914B2 (ja) アルゴリズム生成装置、アルゴリズム生成方法及びアルゴリズム生成用コンピュータプログラム
JP6633267B2 (ja) 次元削減装置、方法及びプログラム
US20240013407A1 (en) Information processing apparatus, information processing method, and non-transitory computer-readable storage medium
WO2019064461A1 (ja) 学習ネットワーク生成装置、及び学習ネットワーク生成プログラム
JPWO2007013425A1 (ja) 画像処理自動構成装置
JPWO2018173257A1 (ja) 情報処理装置、情報処理方法及び情報処理プログラム
Lee et al. Interactive segmentation as supervised classification with superpixels

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20171108

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20181218

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181231

R150 Certificate of patent or registration of utility model

Ref document number: 6468356

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150