(57)【要約】  高精度な画像分類処理を実現する画像分類プログラムを生成する。  生成部（１ａ）は、それぞれ画像分類プログラムを表す木構造（１１ａ，１１ｂ，１１ｃ，・・・）を生成する。各木構造は第１階層群（１２ａ）と第２階層群（１２ｂ）とを有し、第１階層群（１２ａ）のノードの要素は、それぞれ入力画像に対して前処理を施すための画像フィルタ（２１ａ，２１ｂ，２１ｃ，・・・）の中から選択され、第２階層群（１２ｂ）のノードの要素は、第１階層群（１２ａ）のノードに対して選択された要素の実行によって得られた情報を基に分類器を生成するための制御パラメータとして、それぞれ異なる値を設定するための設定プログラム（３１ａ，３１ｂ，３１ｃ，・・・）の中から選択される。遺伝的処理部（１ｂ）は、木構造（１１ａ，１１ｂ，１１ｃ，・・・）に基づいて、遺伝的プログラミングによって適応度が所定の閾値を超える木構造を出力する。
2017068675.tif 000002
【特許請求の範囲】
【請求項１】
それぞれ画像分類プログラムを表す複数の木構造を生成する生成部であって、前記複数の木構造のそれぞれは、１以上の隣接する階層をそれぞれ含む第１階層群と第２階層群とを有し、前記第１階層群のノードの要素は、それぞれ入力画像に対して前処理を施すための複数の画像フィルタの中から選択され、前記第２階層群のノードの要素は、前記第１階層群のノードに対して選択された要素の実行によって得られた情報を基に分類器を生成するための制御パラメータとして、それぞれ異なる値を設定するための複数の設定プログラムの中から選択される、前記生成部と、
前記複数の木構造に基づいて、遺伝的プログラミングによって適応度が所定の閾値を超える木構造を出力する遺伝的処理部と、
を有するプログラム生成装置。
【請求項２】
前記複数の木構造のそれぞれは、第３階層群をさらに有し、
前記第３階層群のノードの要素は、前記情報を基に生成される分類器の種類を設定するための複数の種類設定プログラムの中から選択される、
請求項１記載のプログラム生成装置。
【請求項３】
前記制御パラメータとしてそれぞれ異なる値を設定するための１以上の前記設定プログラムが、前記複数の種類設定プログラムのそれぞれに対応づけて記憶部に記憶され、
前記第２階層群のノードの要素は、前記第３階層群のノードの要素として選択された前記種類設定プログラムに対応づけられた１以上の前記設定プログラムの中から選択される、
請求項２記載のプログラム生成装置。
【請求項４】
前記複数の木構造のそれぞれは、第４階層群をさらに有し、
前記第４階層群のノードの要素は、前記第２階層群のノードとして選択された前記設定プログラムにしたがって設定される前記制御パラメータの値を、それぞれ異なる値によって補正するための複数の補正プログラムの中から選択される、
請求項１乃至３のいずれか１項に記載のプログラム生成装置。
【請求項５】
前記複数の画像フィルタのそれぞれは、前記入力画像に基づいて特徴量を抽出するためのプログラムであり、
前記複数の木構造のそれぞれは、第５階層群をさらに有し、
前記第５階層群のノードの要素は、前記第１階層群のノードの要素として選択された前記画像フィルタにしたがって抽出された特徴量に基づいて、前記第２階層群のノードの要素に基づく分類器の生成のために入力される入力データを生成するための複数のデータ生成プログラムの中から選択され、
前記複数のデータ生成プログラムは、それぞれ異なる数の特徴量の入力を受けて前記入力データを生成するためのプログラムであり、前記第５階層群のノードの要素として選択された前記データ生成プログラムについての特徴量の入力数に応じて、前記第１階層群に含まれるノード数が変化する、
請求項１乃至４のいずれか１項に記載のプログラム生成装置。
【請求項６】
前記遺伝的処理部は、前記複数の木構造が木構造群に含まれる状態を起点として、前記木構造群の中から選択した親の木構造に基づいて子の木構造を生成し、前記子の木構造に基づく処理によって生成された分類器の分類正解率に基づいて前記子の木構造の適応度を算出し、算出された適応度が前記閾値以下である場合に前記木構造群に含まれる木構造の１つを前記子の木構造と入れ替える処理を、繰り返し実行する、
請求項１乃至５のいずれか１項に記載のプログラム生成装置。
【請求項７】
前記遺伝的処理部は、前記子の木構造におけるノードの構成または前記子の木構造に基づく処理によって生成された分類器に基づくペナルティ項に応じて前記分類正解率を補正した値を、前記子の木構造の適応度として算出する、
請求項６記載のプログラム生成装置。
【請求項８】
前記子の木構造を生成する際に前記第２階層群のノードの要素を固定したままにする第１の動作モードと、前記子の木構造を生成する際に前記第１階層群のノードの要素を固定したままにする第２の動作モードとを有し、
前記遺伝的処理部は、前記子の木構造の適応度の増加率に基づいて前記第１の動作モードから前記第２の動作モードに切り替える、
請求項６または７記載のプログラム生成装置。
【請求項９】
コンピュータが、
それぞれ画像分類プログラムを表す複数の木構造を生成する生成処理であって、前記複数の木構造のそれぞれは、１以上の隣接する階層をそれぞれ含む第１階層群と第２階層群とを有し、前記第１階層群のノードの要素は、それぞれ入力画像に対して前処理を施すための複数の画像フィルタの中から選択され、前記第２階層群のノードの要素は、前記第１階層群のノードに対して選択された要素の実行によって得られた情報を基に分類器を生成するための制御パラメータとして、それぞれ異なる値を設定するための複数の設定プログラムの中から選択される、前記生成処理を実行し、
前記複数の木構造に基づいて、遺伝的プログラミングによって適応度が所定の閾値を超える木構造を出力する、
プログラム生成方法。
【請求項１０】
コンピュータに、
それぞれ画像分類プログラムを表す複数の木構造を生成する生成処理であって、前記複数の木構造のそれぞれは、１以上の隣接する階層をそれぞれ含む第１階層群と第２階層群とを有し、前記第１階層群のノードの要素は、それぞれ入力画像に対して前処理を施すための複数の画像フィルタの中から選択され、前記第２階層群のノードの要素は、前記第１階層群のノードに対して選択された要素の実行によって得られた情報を基に分類器を生成するための制御パラメータとして、それぞれ異なる値を設定するための複数の設定プログラムの中から選択される、前記生成処理を実行し、
前記複数の木構造に基づいて、遺伝的プログラミングによって適応度が所定の閾値を超える木構造を出力する、
処理を実行させる生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム生成装置、プログラム生成方法および生成プログラムに関する。
【背景技術】
【０００２】
画像に写っている物体がどのクラスに属するかを判定する画像処理は、画像分類と呼ばれる。画像分類の中でも２クラスに分類する画像処理は最も一般的であり、例えば、顔と非顔の２クラスに分類する顔画像認識は広く利用されている。【０００３】
一方、画像処理プログラムの生成に関しては、所望の画像処理を実行する画像処理プログラムを、遺伝的プログラミングによって自動生成する技術がある。この技術は、入力画像と目標となる処理結果（例えば、目標画像）とを用いて、画像処理のための部分プログラム（例えば、画像フィルタのプログラム）を組み合わせて生成される画像処理プログラムを、遺伝的プログラミングによって最適化していくものである。【０００４】
そして、画像分類プログラムの生成においても遺伝的プログラミングを活用する技術が提案されている。この技術では、分類器に入力する特徴量群を計算する特徴量群算出部の前段に設けたフィルタ列が、進化的計算により最適化される。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００７−２１３４８０号公報
【非特許文献】
【０００６】
【非特許文献１】青木紳也、長尾智晴、「木構造画像変換の自動構築法ＡＣＴＩＴ」、情報メディア学会誌Ｖｏｌ．５３，Ｎｏ．６、１９９９年６月２０日、ｐ．８９０−８９２
【発明の概要】
【発明が解決しようとする課題】
【０００７】
画像分類では、画像からどのような特徴量を抽出して用いるかという点と、得られた特徴量に基づいてどのような分類器を生成するかという点が、分類精度を高めるために重要である。しかし、これらの２点の両方の最適な組み合わせを探索するためには、専門家による高度な知識と多大な開発時間が必要であった。【０００８】
また、フィルタ列を進化的計算により最適化するという前述の技術では、分類器の生成については進化的計算による最適化の対象になっていない。
１つの側面では、本発明は、高精度な画像分類処理を実現する画像分類プログラムを生成可能なプログラム生成装置、プログラム生成方法および生成プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
１つの案では、生成部と遺伝的処理部とを有するプログラム生成装置が提供される。生成部は、それぞれ画像分類プログラムを表す複数の木構造を生成する。ここで、複数の木構造のそれぞれは、１以上の隣接する階層をそれぞれ含む第１階層群と第２階層群とを有し、第１階層群のノードの要素は、それぞれ入力画像に対して前処理を施すための複数の画像フィルタの中から選択され、第２階層群のノードの要素は、第１階層群のノードに対して選択された要素の実行によって得られた情報を基に分類器を生成するための制御パラメータとして、それぞれ異なる値を設定するための複数の設定プログラムの中から選択される。遺伝的処理部は、複数の木構造に基づいて、遺伝的プログラミングによって適応度が所定の閾値を超える木構造を出力する。【００１０】
また、１つの案では、上記のプログラム生成装置と同様の処理をコンピュータが実行するプログラム生成方法が提供される。
さらに、１つの案では、上記のプログラム生成装置と同様の処理をコンピュータに実行させる生成プログラムが提供される。
【発明の効果】
【００１１】
１つの側面では、高精度な画像分類処理を実現する画像分類プログラムを生成できる。
本発明の上記および他の目的、特徴および利点は本発明の例として好ましい実施の形態を表す添付の図面と関連した以下の説明により明らかになるであろう。
【図面の簡単な説明】
【００１２】
【図１】第１の実施の形態に係るプログラム生成装置の構成例および処理例を示す図である。
【図２】第２の実施の形態に係る画像処理装置のハードウェア構成例を示す図である。
【図３】個体の構造例を示す図である。
【図４】各区間の要素例を示す図である。
【図５】個体および出力データのデータ構造例を示す図である。
【図６】画像処理装置が備える処理機能の構成例を示すブロック図である。
【図７】プログラム生成処理手順の例を示すフローチャートである。
【図８】交叉処理手順の例を示すフローチャートである。
【図９】突然変異処理手順の例を示すフローチャートである。
【図１０】学習・適応度算出処理の手順の例を示すフローチャート（その１）である。
【図１１】学習・適応度算出処理の手順の例を示すフローチャート（その２）である。
【図１２】交差検定法を用いた場合の学習・適応度算出処理の手順の例を示すフローチャート（その１）である。
【図１３】交差検定法を用いた場合の学習・適応度算出処理の手順の例を示すフローチャート（その２）である。
【図１４】交差検定法を用いた場合の学習・適応度算出処理の手順の例を示すフローチャート（その３）である。
【図１５】出力データに基づく画像分類処理手順の例を示すフローチャートである。
【図１６】分類器の再学習手順の例を示すフローチャートである。
【図１７】変形例における画像分類プログラムの生成処理手順の例を示すフローチャートである。
【発明を実施するための形態】
【００１３】
以下、本発明の実施の形態について図面を参照して説明する。
〔第１の実施の形態〕
図１は、第１の実施の形態に係るプログラム生成装置の構成例および処理例を示す図である。図１に示すプログラム生成装置１は、生成部１ａと遺伝的処理部１ｂとを有する。生成部１ａおよび遺伝的処理部１ｂの処理は、例えば、プログラム生成装置１が備えるプロセッサが所定のプログラムを実行することで実現される。
【００１４】
生成部１ａは、それぞれ画像分類プログラムを表す複数の木構造１１ａ，１１ｂ，１１ｃ，・・・を生成する。画像分類プログラムは、入力画像が複数のクラスのどれに属するかを判定するためのプログラムである。また、複数の木構造１１ａ，１１ｂ，１１ｃ，・・・のそれぞれは、１以上の隣接する階層をそれぞれ含む第１階層群１２ａと第２階層群１２ｂを有する。
【００１５】
第１階層群１２ａのノードの要素は、第１要素群２０に含まれる複数の画像フィルタ２１ａ，２１ｂ，２１ｃ，・・・の中から選択される。複数の画像フィルタ２１ａ，２１ｂ，２１ｃ，・・・は、それぞれ入力画像に対して前処理を施すためのプログラムである。図１の例では、木構造１１ａの第１階層群１２ａにはノードＮ１〜Ｎ４が含まれ、ノードＮ１〜Ｎ４のそれぞれの要素が、複数の画像フィルタ２１ａ，２１ｂ，２１ｃ，・・・の中から選択される。
【００１６】
第２階層群１２ｂのノードの要素は、第２要素群３０に含まれる複数の設定プログラム３１ａ，３１ｂ，３１ｃ，・・・の中から選択される。複数の設定プログラム３１ａ，３１ｂ，３１ｃ，・・・はそれぞれ、第１階層群１２ａのノードに対して選択された要素の実行によって得られた情報を基に分類器を生成するための制御パラメータとして、それぞれ異なる値を設定するためのプログラムである。
【００１７】
図１の例では、設定プログラム３１ａ，３１ｂ，３１ｃは、分類器を生成するためにそれぞれパラメータａ，ｂ，ｃを設定するためのプログラムである。また、木構造１１ａの第２階層群１２ｂにはノードＮ５，Ｎ６が含まれ、ノードＮ５，Ｎ６のそれぞれの要素が、複数の設定プログラム３１ａ，３１ｂ，３１ｃ，・・・の中から選択される。
【００１８】
遺伝的処理部１ｂは、生成部１ａにより生成された複数の木構造１１ａ，１１ｂ，１１ｃ，・・・に基づいて、遺伝的プログラミングによって適応度が所定の閾値を超える木構造を出力する。
【００１９】
例えば、遺伝的処理部１ｂは、複数の木構造１１ａ，１１ｂ，１１ｃ，・・・が木構造群１０に含まれる状態を起点として、次のような処理を実行する。遺伝的処理部１ｂは、木構造群１０の中から選択した親の木構造に基づいて子の木構造を生成する。遺伝的処理部１ｂは、生成された子の木構造に基づく処理によって生成された分類器の分類正解率に基づいて、子の木構造の適応度を算出する。遺伝的処理部１ｂは、算出された適応度が上記の閾値以下である場合、木構造群１０に含まれる木構造の１つを子の木構造と入れ替える。遺伝的処理部１ｂは、以上の処理を、子の木構造の適応度が上記の閾値を超えるまで繰り返し実行する。
【００２０】
以上のプログラム生成装置１によれば、遺伝的プログラミングによって、第１階層群１２ａの各ノードの要素と第２階層群１２ｂの各ノードの要素とがそれぞれ最適化される。これにより、前処理のアルゴリズムと分類器の生成アルゴリズムとの最適な組み合わせを見出すことができる。したがって、高精度な画像分類処理を実行可能な画像分類プログラムを生成することができる。
【００２１】
〔第２の実施の形態〕
次に、第２の実施の形態に係る画像処理装置について説明する。第２の実施の形態に係る画像処理装置は、図１に示したプログラム生成装置１と同様の処理機能と、この処理機能によって生成された画像分類プログラムを実行して画像分類処理を実行する機能とを備える。
【００２２】
図２は、第２の実施の形態に係る画像処理装置のハードウェア構成例を示す図である。第２の実施の形態に係る画像処理装置１００は、例えば、図２に示すようなコンピュータとして実現される。
【００２３】
画像処理装置１００は、プロセッサ１０１によって装置全体が制御されている。プロセッサ１０１は、マルチプロセッサであってもよい。プロセッサ１０１は、例えばＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、またはＰＬＤ（Programmable Logic Device）である。また、プロセッサ１０１は、ＣＰＵ、ＭＰＵ、ＤＳＰ、ＡＳＩＣ、ＰＬＤのうちの２以上の要素の組み合わせであってもよい。
【００２４】
プロセッサ１０１には、バス１０９を介して、ＲＡＭ（Random Access Memory）１０２と複数の周辺機器が接続されている。
ＲＡＭ１０２は、画像処理装置１００の主記憶装置として使用される。ＲＡＭ１０２には、プロセッサ１０１に実行させるＯＳ（Operating System）プログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、プロセッサ１０１による処理に必要な各種データが格納される。
【００２５】
バス１０９に接続されている周辺機器としては、ＨＤＤ（Hard Disk Drive）１０３、グラフィック処理装置１０４、入力インタフェース１０５、読み取り装置１０６、通信インタフェース１０７およびネットワークインタフェース１０８がある。
【００２６】
ＨＤＤ１０３は、画像処理装置１００の補助記憶装置として使用される。ＨＤＤ１０３には、ＯＳプログラム、アプリケーションプログラム、および各種データが格納される。なお、補助記憶装置としては、ＳＳＤ（Solid State Drive）などの他の種類の不揮発性記憶装置を使用することもできる。
【００２７】
グラフィック処理装置１０４には、表示装置１０４ａが接続されている。グラフィック処理装置１０４は、プロセッサ１０１からの命令にしたがって、画像を表示装置１０４ａの画面に表示させる。表示装置としては、液晶ディスプレイや有機ＥＬ（ElectroLuminescence）ディスプレイなどがある。
【００２８】
入力インタフェース１０５には、入力装置１０５ａが接続されている。入力インタフェース１０５は、入力装置１０５ａから出力される信号をプロセッサ１０１に送信する。入力装置１０５ａとしては、キーボードやポインティングデバイスなどがある。ポインティングデバイスとしては、マウス、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【００２９】
読み取り装置１０６には、可搬型記録媒体１０６ａが脱着される。読み取り装置１０６は、可搬型記録媒体１０６ａに記録されたデータを読み取ってプロセッサ１０１に送信する。可搬型記録媒体１０６ａとしては、光ディスク、光磁気ディスク、半導体メモリなどがある。
【００３０】
通信インタフェース１０７は、接続された外部デバイスとの間でデータの送受信を行う。本実施の形態では、通信インタフェース１０７には、外部デバイスとしてカメラ１０７ａが接続され、通信インタフェース１０７は、カメラ１０７ａから送信された画像データをプロセッサ１０１に送信する。
【００３１】
ネットワークインタフェース１０８は、ネットワーク１０８ａを介して他の装置との間でデータの送受信を行う。
以上のようなハードウェア構成によって、画像処理装置１００の処理機能を実現することができる。
【００３２】
上記の画像処理装置１００は、入力画像を複数のクラスのうちの１つに分類するための画像分類プログラムを、遺伝的プログラミングによって自動的に生成する。生成された画像分類プログラムに基づく画像分類処理としては、例えば、入力画像に顔が写っているか否かを判定する処理や、入力画像に写っている製品や部品が良品か不良品かを判定する処理などがある。
【００３３】
画像分類プログラムによって実現される処理には、学習画像を用いた学習によって分類器を生成する分類器生成処理と、分類器に入力する特徴情報を学習画像に基づいて生成する前処理とが含まれる。高精度な画像分類を実現する上で、学習画像からどのような特徴量を抽出して用いるかという点と、得られた特徴量に基づいてどのような分類器を生成するかという点の両方が重要である。画像処理装置１００は、遺伝的プログラミングにより、分類器の生成アルゴリズムと前処理アルゴリズムの最適な組み合わせを探索する。これにより、高精度な画像分類が可能な分類器の処理を実現する画像分類プログラムが生成される。
【００３４】
図３は、個体の構造例を示す図である。図３に示すように、遺伝的プログラミングにおいて取り扱われる個体は、各ノードの要素としてプログラムモジュールが設定された木構造によって表される。また、個体を表す木構造は、それぞれ１以上の隣接する階層を含む区間に区分される。本実施の形態では図３に例示するように、木構造は、そのリーフ側からルート側に向かってＣ（Conversion）区間、Ｆ（Feature）区間、Ｄ（Data）区間、Ｔ（Type）区間、Ｐ（Parameter）区間およびＬ（Learning）区間に区分される。
【００３５】
各区間は、画像分類の処理段階に対応しており、各区間に含まれる要素に基づいて対応する段階の処理が実行される。例えば、Ｃ区間、Ｆ区間およびＤ区間は、識別器に入力するデータを生成するための前処理に対応づけられている。Ｃ区間は、画像変換フィルタを用いて、入力画像を特徴抽出に適するように変換する処理に対応づけられている。Ｆ区間は、Ｃ区間の処理で変換された画像から、特徴抽出フィルタを用いて特徴量を抽出する処理に対応づけられている。Ｄ区間は、Ｆ区間の処理で抽出された特徴量に基づいて、分類器に入力するための入力データを生成する処理に対応づけられている。
【００３６】
Ｔ区間は、分類器の種類を選択する処理に対応づけられている。Ｐ区間は、学習画像を用いた学習によって分類器を生成するための学習パラメータを設定する処理に対応づけられている。Ｐ区間は、例えば、Ｐａ区間とＰｒ区間に分割されている。Ｐａ区間は、学習パラメータの絶対値を設定する処理に対応づけられ、Ｐｒ区間は、学習パラメータの相対値を設定する処理に対応づけられている。Ｐａ区間で設定された絶対値が、Ｐｒ区間で設定された相対値を用いた加減算やスケーリングなどによって増減されることで、分類器の生成のための学習パラメータが決定される。Ｌ区間は、学習画像を用いた学習によって分類器を生成する処理に対応づけられている。
【００３７】
区間内に設定することが可能なノード数やノード間の構造は、区間ごとに異なる。例えば、Ｃ区間では、最もルート側のノード数は、Ｆ区間の最もリーフ側に設定されたノード数と同じになる。また、Ｃ区間のルート側ノードからリーフ側に設定されるノードの分岐数や段数は、例えば、Ｃ区間のルート側ノードと最もリーフ側のノードまでの最大の階層数（ノード段数）が一定数以下などの条件の下で決定される。
【００３８】
Ｆ区間では、最もルート側のノード数は、Ｄ区間で設定されたプログラムモジュールに入力可能なデータ数と同じになる。また、例えば、ルート側ノードからリーフ側に、一定数以下のノードが接続される。
【００３９】
Ｄ区間では、階層数の制限が設けられる。例えば、Ｄ区間の要素として、２入力のプログラムモジュールが設定されるものとし、Ｄ区間の階層数が２以下に制限されるものとする。この場合、Ｄ区間の階層数が１であれば、Ｄ区間のノード数は１となり、Ｄ区間のデータ入力数は２となる。一方、階層数が２であれば、Ｄ区間のノード数は３となり、Ｄ区間のデータ入力数は最大で４となる。
【００４０】
Ｔ区間、Ｐａ区間、Ｐｒ区間およびＬ区間では、１つのノードが設定される。なお、例えばＰａ区間やＰｒ区間には、直列な２つ以上のノードが設定されてもよい。
図４は、各区間の要素例を示す図である。なお、図４では、説明の都合上、区間の記載順を図３とは異なる順序としている。
【００４１】
区間内のノードに要素として設定可能なプログラムモジュールは、区間ごとに個別に用意され、要素記憶部１５０にあらかじめ記憶される。初期個体の木構造が設定される際には、ある区間に含まれる要素は、その区間に対応するプログラムモジュールの中から選択される。
【００４２】
図４に示すように、要素記憶部１５０には、Ｃ区間に対応するプログラムモジュールとして、それぞれ入力画像を変換するための画像変換フィルタ１５１ａ，１５１ｂ，１５１ｃ，・・・が記憶される。画像変換フィルタ１５１ａ，１５１ｂ，１５１ｃ，・・・の例としては、Ｓｍｏｏｔｈフィルタ、Ｓｏｂｅｌフィルタ、Ｌａｐｌａｃｅフィルタ、Ａｎｄフィルタ、Ｓｕｂフィルタ、Ａｄｄフィルタ、Ｏｒフィルタ、Ｅｒｏｄｅフィルタ、Ｄｉｌａｔｅフィルタ、Ｔｈｒｅｓｈｏｌｄフィルタなどを適用可能である。
【００４３】
また、要素記憶部１５０には、Ｆ区間に対応するプログラムモジュールとして、特徴量を抽出するための特徴抽出フィルタ１５２ａ，１５２ｂ，１５２ｃ，・・・が記憶される。特徴抽出フィルタ１５２ａ，１５２ｂ，１５２ｃ，・・・の例としては、平均輝度を算出するフィルタ、輝度ヒストグラムを算出するフィルタ、ＦＦＴ（Fast Fourier Transformation）を実行するフィルタなどを適用可能である。また、領域分割数などの制御パラメータが異なる同じ種類のフィルタを適用することもできる。
【００４４】
また、要素記憶部１５０には、Ｄ区間に対応するプログラムモジュールとして、分類器の入力データを生成するための入力データ生成モジュール１５３ａ，１５３ｂ，１５３ｃ，・・・が記憶される。入力データ生成モジュール１５３ａ，１５３ｂ，１５３ｃ，・・・の例としては、入力数がそれぞれ１，２のプログラムモジュールや、入力データの正規化、入力データの圧縮などを実行するプログラムモジュールを適用可能である。ここで、前述のように、Ｄ区間では階層数が可変となる。Ｄ区間の階層数と、Ｄ区間の要素に設定されるプログラムモジュールの入力数とが可変とされることで、特徴次元数を可変とした学習を行うことができる。
【００４５】
また、要素記憶部１５０には、Ｔ区間に対応するプログラムモジュールとして、分類器の種類を指定するための分類器種類設定モジュール１５４ａ，１５４ｂ，１５４ｃ，・・・が記憶される。また、要素記憶部１５０には、Ｌ区間に対応するプログラムモジュールとして、分類器を生成するための分類器生成モジュール１５５ａ，１５５ｂ，１５５ｃ，・・・が記憶される。
【００４６】
Ｔ区間とＬ区間との間では、設定可能なプログラムモジュールについて依存性がある。具体的には、分類器種類設定モジュール１５４ａ，１５４ｂ，１５４ｃ，・・・と分類器生成モジュール１５５ａ，１５５ｂ，１５５ｃ，・・・とは、一対一で対応づけられている。そして、一方の区間の要素が決定されると、他方の区間の要素が一意に決定される。例えば、Ｔ区間の要素として分類器種類設定モジュール１５４ａが決定されると、Ｌ区間の要素として分類器生成モジュール１５５ａが決定される。
【００４７】
Ｔ区間およびＬ区間と、Ｐａ区間との間でも、設定可能なプログラムモジュールについて依存性がある。要素記憶部１５０には、Ｐａ区間に設定可能なプログラムモジュールとして、分類器種類設定モジュール（または分類器生成モジュール）のそれぞれに対応する複数の絶対値設定モジュールが記憶される。例えば、分類器種類設定モジュール１５４ａに対応する絶対値設定モジュール１５６ａａ，１５６ａｂ，１５６ａｃ，・・・が、分類器種類設定モジュール１５４ｂに対応する絶対値設定モジュール１５６ｂａ，１５６ｂｂ，１５６ｂｃ，・・・が、分類器種類設定モジュール１５４ｃに対応する絶対値設定モジュール１５６ｃａ，１５６ｃｂ，１５６ｃｃ，・・・が、要素記憶部１５０に記憶される。そして、例えば、Ｔ区間の要素としてある分類器種類設定モジュールが決定された場合、Ｐａ区間の要素としては、決定された分類器種類設定モジュールに対応する絶対値設定モジュールの中の１つが設定される。
【００４８】
要素記憶部１５０には、Ｐｒ区間に対応するプログラムモジュールとして、学習パラメータの絶対値を増減して微調整するための相対値設定モジュール１５７ａ，１５７ｂ，１５７ｃ，・・・が記憶される。
【００４９】
以上のように要素記憶部１５０に記憶されたプログラムモジュールが図３の木構造のノードに設定されることで、個体が生成される。画像処理装置１００は、まず、個体群に含める複数の初期個体を生成した後、この個体群から選択した親個体を基に子個体を生成し、適応度の高い子個体を個体群内の親個体と入れ替える。画像処理装置１００は、このような処理を繰り返し実行し、一定以上の適応度を有する個体を最良個体として出力する。
【００５０】
このような処理において、親個体を進化させて子個体を生成する際には、親個体の１つ以上のノードの要素が変更される。親個体の進化のためにあるノードの要素が変更される場合には、変更後の要素は、そのノードが属する区間に対してあらかじめ用意されたプログラムモジュールとなる。例えば、突然変異によってＣ区間の要素を変更する場合、変更後の要素は、Ｃ区間に対応する画像変換フィルタの中から選択される。
【００５１】
このような処理により、各区間での処理アルゴリズムの組み合わせが最適化される。例えば、分類器に入力する特徴量を抽出するための処理アルゴリズムと、分類器を生成するための処理アルゴリズムとの組み合わせが最適化される。その結果、画像分類のための適切な分類器の種類や学習パラメータが選択されるとともに、その分類器への入力に適した特徴量を抽出することが可能になる。したがって、分類精度の高い画像分類プログラムを生成することができる。
【００５２】
ここで、絶対値設定モジュールと相対値設定モジュールについて補足説明する。Ｐ区間は、学習パラメータの絶対値を設定するためのＰａ区間と、相対値を設定するためのＰｒ区間とに分割されている。上記のように、Ｐａ区間の要素は、Ｔ区間またはＬ区間に設定されたプログラムモジュールに対応する絶対値設定モジュールの中から選択される。これに対して、Ｐｒ区間の要素である相対値設定モジュールは、Ｐａ区間の要素によって設定された学習パラメータの絶対値に対して、それぞれ異なる数を加算または減算するプログラムモジュールである。あるいは、相対値設定モジュールは、設定された絶対値を、それぞれ異なる係数を用いた乗算によってスケーリングするプログラムモジュールである。
【００５３】
このような構成とすることで、例えば、Ｐａ区間の要素によって学習パラメータを大まかに設定し、Ｐｒ区間の要素によって学習パラメータを微調整することができる。分類器の種類によって、学習パラメータとして設定される数値の範囲は異なる場合がある。そのため、Ｐａ区間の要素としては、Ｔ区間で設定された種類の分類器に設定し得る範囲内の数値を設定する要素だけを用意しておけばよくなる。したがって、すべての種類の分類器に設定し得る数値の範囲をきめ細かくカバーするために、学習パラメータの設定のためにプログラムを大量に用意しておく必要がなくなり、プログラムモジュールの数を減らすことができる。また、遺伝的プログラミングにおける学習効率も向上する。
【００５４】
なお、分類器として例えばＳＶＭ（Support Vector Machine）が用いられる場合、Ｔ区間およびＰ区間の要素としては次のようなものを適用可能である。Ｔ区間に対応する分類器種類設定モジュール１５４ａ，１５４ｂ，１５４ｃ，・・・としては、使用されるカーネル関数を指定するプログラムモジュールを適用可能である。指定されるカーネル関数としては、例えば、ＬＩＮＥＡＲカーネル、ＰＯＬＹカーネル、ＲＢＦ（Radial Basis Function）カーネル、ＳＩＧＭＯＩＤカーネルなどを適用可能である。
【００５５】
また、Ｐａ区間およびＰｒ区間に対応する絶対値設定モジュールとしては、学習パラメータとしてＣ，γの値を設定するプログラムモジュールを適用可能である。Ｌ区間に対応する分類器生成モジュール１５５ａ，１５５ｂ，１５５ｃ，・・・としては、Ｔ区間の要素によって指定されたカーネル関数を用いた分類器を生成するプログラムモジュールを適用可能である。
【００５６】
また、Ｔ区間では、ＳＶＭ以外の他の複数種類の分類器の中から選択できるようにしてもよいし、ＳＶＭの分類器と、他の複数種類の分類器との中から選択できるようにしてもよい。
【００５７】
図５は、個体および出力データのデータ構造例を示す図である。個体は、例えば、木構造の内容を示す木構造データ２００として表現される。木構造データ２００は、画像変換フィルタ構造２０１、特徴抽出フィルタ構造２０２、データ生成モジュール構造２０３、分類器種類設定モジュール情報２０４、パラメータ設定モジュール情報２０５および分類器生成モジュール情報２０６を含む。
【００５８】
画像変換フィルタ構造２０１は、Ｃ区間におけるノードの構成を示す情報と、各ノードに設定された画像変換フィルタの識別情報を含む。特徴抽出フィルタ構造２０２は、Ｆ区間におけるノードの構成を示す情報と、各ノードに設定された特徴抽出フィルタの識別情報を含む。データ生成モジュール構造２０３は、Ｄ区間におけるノードの構成を示す情報と、各ノードに設定された入力データ生成モジュールの識別情報を含む。
【００５９】
分類器種類設定モジュール情報２０４は、Ｔ区間のノードに設定された分類器種類設定モジュールの識別情報を含む。パラメータ設定モジュール情報２０５は、Ｐａ区間のノードに設定された絶対値設定モジュールの識別情報と、Ｐｒ区間のノードに設定された相対値設定モジュールの識別情報を含む。分類器生成モジュール情報２０６は、Ｌ区間のノードに設定された分類器生成モジュールの識別情報を含む。
【００６０】
一方、出力データ２１０は、遺伝的プログラミングによって最終的に出力された個体に関する情報である。出力データ２１０は、その個体に関する画像変換フィルタ構造２０１、特徴抽出フィルタ構造２０２、データ生成モジュール構造２０３、分類器種類設定モジュール情報２０４、パラメータ設定モジュール情報２０５および分類器生成モジュール情報２０６に加えて、分類器情報２０７を含む。分類器情報２０７は、学習画像を用いた学習によって生成された分類器を示す情報を含む。例えば、分類器情報２０７は、分類器の処理を実現するプログラムモジュールである。
【００６１】
なお、出力データ２１０は、画像変換フィルタ構造２０１、特徴抽出フィルタ構造２０２およびデータ生成モジュール構造２０３に基づいて要素記憶部１５０から抽出されたプログラムモジュールと、分類器情報２０７に基づくプログラムモジュールとを結合したプログラムの形式で出力されてもよい。
【００６２】
なお、出力データ２１０は、分類器種類設定モジュール情報２０４とパラメータ設定モジュール情報２０５を含まなくてもよい。ただし、出力データ２１０に分類器種類設定モジュール情報２０４とパラメータ設定モジュール情報２０５を含めておくことで、出力データ２１０を用いて新たな学習画像を用いた分類器の再学習を行うことが可能になる。
【００６３】
次に、画像処理装置１００の詳細について説明する。
図６は、画像処理装置が備える処理機能の構成例を示すブロック図である。画像処理装置１００は、画像取得部１１１、画像分類処理部１１２、プログラム生成部１２０、要素記憶部１５０、サンプル画像記憶部１３１、個体群情報記憶部１３２および出力データ記憶部１３３を有する。
【００６４】
画像取得部１１１およびプログラム生成部１２０の処理は、例えば、画像処理装置１００のプロセッサ１０１が所定のプログラムを実行することで実現される。また、画像分類処理部１１２の処理の一部は、出力データ記憶部１３３に記憶された出力データに基づく画像分類プログラムを、画像処理装置１００のプロセッサ１０１が実行することで実現される。要素記憶部１５０、サンプル画像記憶部１３１、個体群情報記憶部１３２および出力データ記憶部１３３は、例えば、画像処理装置１００のＲＡＭ１０２の記憶領域として実現される。
【００６５】
画像取得部１１１は、撮像された画像のデータをカメラ１０７ａから取得し、プログラム生成部１２０または画像分類処理部１１２に出力する。
プログラム生成部１２０は、遺伝的プログラミングにより画像分類プログラムを生成し、生成された画像分類プログラムに対応する出力データを出力データ記憶部１３３に保存する。なお、プログラム生成部１２０の内部構成については後述する。
【００６６】
画像分類処理部１１２は、カメラ１０７ａによって撮像された画像のデータを、画像取得部１１１を介して取得する。画像分類処理部１１２は、出力データ記憶部１３３に記憶された出力データに基づく画像分類プログラムにしたがって、取得した画像のデータがどのクラスに属するかを判定する。判定結果は、例えば、表示装置１０４ａに表示される。
【００６７】
要素記憶部１５０は、プログラム生成部１２０によって生成される個体に組み込むことが可能な要素のデータを記憶する。
サンプル画像記憶部１３１は、分類器の学習や評価のために利用される複数のサンプル画像のデータを記憶する。各サンプル画像には、そのサンプル画像が属するクラスを示すラベルが付加されている。サンプル画像としては、画像取得部１１１によってカメラ１０７ａから取得された画像を用いることができる。
【００６８】
個体群情報記憶部１３２は、プログラム生成部１２０によって生成された個体群のデータを記憶する。個体群に含まれる個体は、プログラム生成処理過程で随時更新される。
出力データ記憶部１３３は、プログラム生成部１２０の処理によって最終的に出力された個体に関する情報を記憶する。
【００６９】
プログラム生成部１２０は、ＧＰ（Genetic Programming）学習制御部１２１、画像変換部１２２、特徴抽出部１２３、入力データ生成部１２４、種類設定部１２５、パラメータ設定部１２６、分類器生成部１２７および分類処理部１２８を有する。
【００７０】
ＧＰ学習制御部１２１は、遺伝的プログラミングによるプログラム生成処理全体の実行を制御する。例えば、ＧＰ学習制御部１２１は、初期個体の生成、個体の進化処理、適応度の算出などの処理を実行する。
【００７１】
画像変換部１２２は、個体の木構造におけるＣ区間のノードに設定された画像変換フィルタにしたがって、入力画像に対する画像変換処理を実行する。
特徴抽出部１２３は、個体の木構造におけるＦ区間のノードに設定された特徴抽出フィルタにしたがって、画像変換後の入力画像からの特徴量抽出処理を実行する。
【００７２】
入力データ生成部１２４は、個体の木構造におけるＤ区間のノードに設定された入力データ生成モジュールにしたがって、分類器に入力する入力データを入力された特徴量に基づいて生成する。
【００７３】
種類設定部１２５は、個体の木構造におけるＴ区間のノードに設定された分類器種類設定モジュールにしたがって、分類器の種類を設定する処理を実行する。
パラメータ設定部１２６は、個体の木構造におけるＰａ区間のノードに設定された絶対値設定モジュールとＰｒ区間のノードに設定された相対値設定モジュールにしたがって、分類器の学習パラメータを設定する処理を実行する。
【００７４】
分類器生成部１２７は、個体の木構造におけるＬ区間のノードに設定された分類器生成モジュールにしたがい、パラメータ設定部１２６によって設定された制御パラメータを用いて、学習により分類器を生成する処理を実行する。
【００７５】
分類処理部１２８は、分類器生成部１２７によって生成された分類器に対応し、評価画像がどのクラスに属するかを判定する。
次に、画像処理装置１００の処理についてフローチャートを用いて説明する。
【００７６】
図７は、プログラム生成処理手順の例を示すフローチャートである。
［ステップＳ１１］ＧＰ学習制御部１２１は、複数の初期個体を生成し、生成した初期個体を示す情報を個体群情報記憶部１３２に格納する。以下、個体群情報記憶部１３２に格納される個体のことを「個体群」と呼ぶ。
【００７７】
初期個体の生成手順としては、基本的に、各区間において図３で説明したような条件にしたがってノードが設定され、各ノードの要素が、ノードが属する区間に対応するプログラムモジュールの中から選択されて設定される。図４のような要素が用いられる場合、初期個体は、例えば、次のような手順で設定される。
【００７８】
ＧＰ学習制御部１２１は、Ｌ区間、Ｐｒ区間、Ｐａ区間、Ｔ区間にそれぞれ１つずつ含まれるノードに設定する要素を選択する。ＧＰ学習制御部１２１は、各区間のノードに設定する要素を、その区間に対応づけて用意されたプログラムモジュールの中からランダムに選択する。ただし、Ｌ区間のノードに設定される分類器生成モジュールは、Ｔ区間のノードに設定された分類器種類設定モジュールによって一意に決定される。また、Ｐａ区間のノードに設定される要素は、Ｔ区間のノードに設定された分類器設定モジュールに対応する絶対値設定モジュールの中からランダムに選択される。
【００７９】
また、Ｐａ区間には複数階層のノードが設定されてもよい。その場合、ノードごとに絶対値設定モジュールが個別に用意され、各ノードで異なる種類の制御パラメータが設定されることが望ましい。また、Ｐａ区間とＰｒ区間の各ノード階層数を一致させ、Ｐａ区間のノードごとにＰｒ区間で制御パラメータの微調整が行われるようにすることもできる。
【００８０】
次に、Ｄ区間の最大階層数が２の場合、ＧＰ学習制御部１２１は、Ｄ区間の階層数を１とするか２とするかを、ランダムに決定する。階層数が１の場合、Ｔ区間のノード数は１となる。ＧＰ学習制御部１２１は、そのノードに設定する要素を、入力データ生成モジュールの中からランダムに選択する。一方、階層数が２の場合、Ｄ区間のノード数は２以上となる。ＧＰ学習制御部１２１は、Ｄ区間におけるルート側のノードに設定する要素を、入力データ生成モジュールの中からランダムに選択する。選択された入力生成モジュールの入力数が１の場合、リーフ側には１つのノードが設定され、入力数が２の場合、リーフ側には２つのノードが設定される。ＧＰ学習制御部１２１は、設定された各ノードに設定する要素を、入力データ生成モジュールの中からランダムに選択する。このような処理により、Ｄ区間の入力数は１から４のいずれかとなる。
【００８１】
次に、ＧＰ学習制御部１２１は、Ｆ区間の要素を設定する。Ｆ区間のノード数は、Ｄ区間の入力数と同じになる。ＧＰ学習制御部１２１は、Ｆ区間の各ノードに設定する要素を、特徴抽出フィルタの中からランダムに選択する。
【００８２】
次に、ＧＰ学習制御部１２１は、Ｃ区間の要素を設定する。Ｃ区間のルート側のノード数は、Ｆ区間のノード数と同じになる。ＧＰ学習制御部１２１は、Ｃ区間のルート側のノードのそれぞれのリーフ側にノードを設定し、各ノードに設定する要素を、画像変換フィルタの中からランダムに選択する。あるノードに設定された画像変換フィルタの入力数が２の場合、そのノードからリーフ側に２つノードが設定される。ＧＰ学習制御部１２１は、要素を設定済みのノードよりリーフ側のノードに、ランダムに選択した画像変換フィルタを設定するとともに、さらにそのリーフ側のノードの数を決定していく。このようにして、ＧＰ学習制御部１２１は、例えば、Ｃ区間のルート側のノードからの最大階層数が所定値以下となり、かつ、Ｃ区間に含まれるノード数が所定値以下となるように、ノードの構造を決定するとともに、各ノードの要素を決定する。
【００８３】
［ステップＳ１２］ＧＰ学習制御部１２１は、個体群に含まれる個体の中から、２つの親個体をランダムに選択する。
［ステップＳ１３］ＧＰ学習制御部１２１は、選択した親個体を用いて２以上の所定数の子個体を生成する。例えば、ＧＰ学習制御部１２１は、選択された２つの親個体の間で交叉を行うことで、２つ以上の所定数の子個体を生成する。ＧＰ学習制御部１２１は、生成された各子個体のいずれかのノードに突然変異を発生させ、そのノードの要素を変更する。なお、交叉および突然変異の方法については、それぞれ図８、図９において詳しく説明する。
【００８４】
［ステップＳ１４］ＧＰ学習制御部１２１は、生成された子個体の１つを選択する。
［ステップＳ１５］ＧＰ学習制御部１２１は、選択した子個体に基づいて、学習による分類器の生成、および、生成された分類器についての適応度の算出を実行する。このステップＳ１５の具体的な処理例については、図１０〜図１４において説明する。
【００８５】
［ステップＳ１６］ＧＰ学習制御部１２１は、ステップＳ１３で生成された子個体のすべてを選択済みかを判定する。ＧＰ学習制御部１２１は、未選択の子個体がある場合には、処理をステップＳ１４に進め、未選択の子個体の中の１つを選択する。一方、ＧＰ学習制御部１２１は、子個体をすべて選択済みである場合、処理をステップＳ１７に進める。
【００８６】
［ステップＳ１７］ＧＰ学習制御部１２１は、ステップＳ１５で子個体ごとに算出された適応度のうちの最大適応度が、所定の閾値ｔｈより大きいかを判定する。ＧＰ学習制御部１２１は、最大適応度が閾値ｔｈ以下の場合、処理をステップＳ１８に進める。一方、ＧＰ学習制御部１２１は、最大適応度が閾値ｔｈより大きい場合、処理をステップＳ１９に進める。
【００８７】
［ステップＳ１８］ＧＰ学習制御部１２１は、ステップＳ１３で生成された子個体の中から、適応度が最も高い子個体を生存させる子個体として選択する。さらに、ＧＰ学習制御部１２１は、残りの子個体の中から生存させる個体をさらに１つ選択する。この選択処理では、例えば、適応度に応じた確率で個体が選択される。ＧＰ学習制御部１２１は、個体群の個体のうち、ステップＳ１２で選択された親個体を、生存させる２つの個体に入れ替える。
【００８８】
［ステップＳ１９］ＧＰ学習制御部１２１は、ステップＳ１３で生成された子個体のうち、適応度が最も高い子個体を最良個体と判定し、最良個体に関する出力データを出力データ記憶部１３３に保存する。この出力データには、最良個体についてのステップＳ１５の処理過程で生成された分類器を示す分類器情報も含まれる。
【００８９】
なお、ステップＳ１４では子個体のみが選択の対象とされていたが、子個体だけでなくステップＳ１２で選択された親個体も選択の対象とされてもよい。
図８は、交叉処理手順の例を示すフローチャートである。図８の処理は、図７のステップＳ１３において、２つの親個体から交叉処理によって２つの子個体を生成する場合の処理である。
【００９０】
［ステップＳ２１］ＧＰ学習制御部１２１は、２つの親個体のうち、一方の親個体からノードをランダムに選択する。
［ステップＳ２２］ＧＰ学習制御部１２１は、他方の親個体から、ステップＳ２１で選択されたノードと同じ区間のノードを選択する。ＧＰ学習制御部１２１は、その区間にノードが複数存在する場合には、それらの中からランダムにノードを１つ選択する。
【００９１】
［ステップＳ２３］ＧＰ学習制御部１２１は、一方の親個体の木構造のうち、ステップＳ２１で選択されたノードからリーフ側の木構造と、他方の親個体の木構造のうち、ステップＳ２２で選択されたノードからリーフ側の木構造とを、互いに入れ替える。ただし、ステップＳ２１，Ｓ２２で選択されたノードがＴ区間、Ｐａ区間、Ｌ区間のいずれかである場合、ＧＰ学習制御部１２１は、Ｔ区間、Ｐａ区間およびＬ区間の木構造も子個体間で入れ替える。
【００９２】
図９は、突然変異処理手順の例を示すフローチャートである。図９の処理は、図７のステップＳ１３において、生成された子個体に突然変異を発生させる場合の処理である。
［ステップＳ３１］ＧＰ学習制御部１２１は、子個体からノードをランダムに選択する。
【００９３】
［ステップＳ３２］ＧＰ学習制御部１２１は、ステップＳ３１で選択されたノードが属する区間を特定する。ＧＰ学習制御部１２１は、要素記憶部１５０に記憶された、特定した区間に対応する要素の中から、ステップＳ３１で選択されたノードに現在設定されている要素以外の要素をランダムに選択する。
【００９４】
［ステップＳ３３］ＧＰ学習制御部１２１は、ステップＳ３１で選択されたノードに設定されている要素を、ステップＳ３２で選択された要素に入れ替える。
ただし、ステップＳ３１で選択されたノードがＴ区間、Ｐａ区間、Ｌ区間のいずれかである場合、ＧＰ学習制御部１２１は、ステップＳ３２，Ｓ３３において、ステップＳ３１で選択されたノード以外の要素についても入れ替えを行う。具体的には、ＧＰ学習制御部１２１は、まず、Ｔ区間のノードについてステップＳ３２，Ｓ３３の手順で要素の入れ替えを行い、さらに、Ｐａ区間およびＬ区間のノードの入れ替えを行う。Ｐａ区間のノードの要素は、Ｔ区間で新たに選択された要素に対応する要素の中から選択される。Ｌ区間のノードの要素は、Ｔ区間で新たに選択された要素に対応する要素が選択される。
【００９５】
図１０〜図１１は、学習・適応度算出処理の手順の例を示すフローチャートである。図１０〜図１１の処理は、図７のステップＳ１５の処理に対応する。図１０〜図１１の処理で利用される子個体とは、図７のステップＳ１４で選択された子個体である。なお、図１０〜図１１では例として、サンプル画像記憶部１３１には、学習用画像のデータと評価用画像のデータとがそれぞれ複数記憶されているものとする。
【００９６】
［ステップＳ５１］ＧＰ学習制御部１２１は、学習用画像の中から１つ選択する。
［ステップＳ５２］画像変換部１２２は、子個体のＣ区間のノードに設定された画像変換フィルタにしたがって、ステップＳ５１で選択された学習用画像に対する画像変換処理を実行する。
【００９７】
［ステップＳ５３］特徴抽出部１２３は、子個体のＦ区間のノードに設定された特徴抽出フィルタにしたがって、ステップＳ５２で変換された画像に基づいて特徴量を抽出する。
【００９８】
［ステップＳ５４］ＧＰ学習制御部１２１は、すべての学習用画像を選択済みかを判定する。未選択の学習用画像がある場合、ＧＰ学習制御部１２１は、処理をステップＳ５１に進め、未選択の学習用画像の中から１つ選択する。一方、すべての学習用画像を選択済みの場合、ＧＰ学習制御部１２１は、処理をステップＳ５５に進める。
【００９９】
［ステップＳ５５］入力データ生成部１２４は、子個体のＤ区間のノードに設定された入力データ生成モジュールにしたがって、ステップＳ５３で抽出された特徴量に基づいて、分類器に入力する入力データを生成する。
【０１００】
［ステップＳ５６］種類設定部１２５は、子個体のＴ区間のノードに設定された分類器種類設定モジュールにしたがって、分類器の種類を設定する。
［ステップＳ５７］パラメータ設定部１２６は、子個体のＰａ区間のノードに設定された絶対値設定モジュールと、Ｐｒ区間のノードに設定された相対値設定モジュールとにしたがって、分類器に設定する学習パラメータを設定する。
【０１０１】
［ステップＳ５８］分類器生成部１２７は、子個体のＬ区間のノードに設定された分類器生成モジュールにしたがって、分類器生成のための学習処理を実行する。この学習処理では、ステップＳ５７で設定された学習パラメータと、ステップＳ５５で生成された入力データと、各学習画像に付加されたラベルとが利用される。学習処理により、分類器が生成される。実際には、生成された分類器を示す分類器情報が生成される。分類器情報は、例えば、分類器の処理を実現するプログラムモジュール、あるいは、分類器の処理を実現する関数などのプログラムモジュールに設定する制御パラメータである。
【０１０２】
次に、図１１のステップＳ６１の処理が実行される。
［ステップＳ６１］ＧＰ学習制御部１２１は、評価用画像の中から１つ選択する。
［ステップＳ６２］画像変換部１２２は、子個体のＣ区間のノードに設定された画像変換フィルタにしたがって、ステップＳ６１で選択された評価用画像に対する画像変換処理を実行する。
【０１０３】
［ステップＳ６３］特徴抽出部１２３は、子個体のＦ区間のノードに設定された特徴抽出フィルタにしたがって、ステップＳ６２で変換された画像に基づいて特徴量を抽出する。
【０１０４】
［ステップＳ６４］入力データ生成部１２４は、子個体のＤ区間のノードに設定された入力データ生成モジュールにしたがって、ステップＳ６３で抽出された特徴量に基づいて、分類器に入力する入力データを生成する。
【０１０５】
［ステップＳ６５］分類処理部１２８は、ステップＳ５８で生成された分類器情報にしたがって、ステップＳ６４で生成された入力データに基づいて、ステップＳ６１で選択された評価用画像がどのクラスに属するかを判定する分類処理を実行する。
【０１０６】
［ステップＳ６６］分類処理部１２８は、ステップＳ６５の分類処理による分類結果と、ステップＳ６１で選択された評価用画像に付加されたラベルが示すクラスとを比較して、分類結果が正解か不正解かを判定する。
【０１０７】
［ステップＳ６７］ＧＰ学習制御部１２１は、すべての評価用画像を選択済みかを判定する。未選択の学習用画像がある場合、ＧＰ学習制御部１２１は、処理をステップＳ６１に進め、未選択の評価用画像の中から１つ選択する。一方、すべての評価用画像を選択済みの場合、ＧＰ学習制御部１２１は、処理をステップＳ６８に進める。
【０１０８】
［ステップＳ６８］ＧＰ学習制御部１２１は、ステップＳ６６での判定結果から正解率を算出する。ＧＰ学習制御部１２１は、算出された正解率に基づいて、子個体の適応度を算出する。
【０１０９】
このステップＳ６８では、算出された正解率をペナルティ項に応じて補正した値が適応度として出力されてもよい。ペナルティ項としては、特徴次元数、木構造のサイズ（木構造に含まれるノード数またはノードの最大階層数）、ＳＶＭが用いられる場合のサポートベクトル数などを適用可能である。例えば、一般に、得られるデータと比較して分類器の複雑さが大きくなるほど、過学習が起こりやすくなる。そこで、ＧＰ学習制御部１２１は、例えば、特徴次元数が大きいほど、また、木構造のサイズが大きいほど、また、サポートベクトル数が大きいほど、正解率を小さくするように補正して適応度を算出する。なお、特徴次元数は、子個体のＤ区間に設定された入力データ生成モジュールに基づいて判別可能である。このように正解率をペナルティ項に応じて補正することで、学習結果の優劣を正確に評価でき、分類精度の高い画像分類プログラムを生成できる。
【０１１０】
なお、特徴次元数、木構造サイズ、サポートベクトル数の少なくとも１つが極端に小さくなった場合も、過学習の状態に陥って汎化性が低下することがある。このため、ペナルティ項による補正量は単調関数でなくてもよい。
【０１１１】
以上の図１０〜図１１の処理では、学習用画像と評価用画像とが別々に用意されていた。これに対して、交差検定法を用いることで、学習用画像と評価用画像とを個別に用意せず、サンプル画像記憶部１３１に用意したサンプル画像をすべて用いて分類器の学習と評価とを実行することができる。以下、図１２〜図１４に交差検定法を用いた場合の処理例を挙げる。
【０１１２】
図１２〜図１４は、交差検定法を用いた場合の学習・適応度算出処理の手順の例を示すフローチャートである。図１２〜図１４の処理は、図７のステップＳ１５の処理に対応する。図１２〜図１３の処理で利用される子個体とは、図７のステップＳ１４で選択された子個体である。
【０１１３】
［ステップＳ７１］ＧＰ学習制御部１２１は、サンプル画像の中から１つ選択する。
［ステップＳ７２］画像変換部１２２は、子個体のＣ区間のノードに設定された画像変換フィルタにしたがって、ステップＳ７１で選択されたサンプル画像に対する画像変換処理を実行する。
【０１１４】
［ステップＳ７３］特徴抽出部１２３は、子個体のＦ区間のノードに設定された特徴抽出フィルタにしたがって、ステップＳ７２で変換された画像に基づいて特徴量を抽出する。
【０１１５】
［ステップＳ７４］ＧＰ学習制御部１２１は、すべてのサンプル画像を選択済みかを判定する。未選択のサンプル画像がある場合、ＧＰ学習制御部１２１は、処理をステップＳ７１に進め、未選択のサンプル画像の中から１つ選択する。一方、すべてのサンプル画像を選択済みの場合、ＧＰ学習制御部１２１は、処理をステップＳ７５に進める。
【０１１６】
［ステップＳ７５］入力データ生成部１２４は、子個体のＤ区間のノードに設定された入力データ生成モジュールにしたがって、ステップＳ７３で抽出された特徴量に基づいて、分類器に入力する入力データを生成する。
【０１１７】
［ステップＳ７６］種類設定部１２５は、子個体のＴ区間のノードに設定された分類器種類設定モジュールにしたがって、分類器の種類を設定する。
［ステップＳ７７］パラメータ設定部１２６は、子個体のＰａ区間のノードに設定された絶対値設定モジュールと、Ｐｒ区間のノードに設定された相対値設定モジュールとにしたがって、分類器に設定する学習パラメータを設定する。
【０１１８】
［ステップＳ７８］分類器生成部１２７は、子個体のＬ区間のノードに設定された分類器生成モジュールにしたがって、分類器生成のための学習処理を実行する。この学習処理では、ステップＳ７７で設定された学習パラメータと、ステップＳ７５で生成された入力データと、各学習画像に付加されたラベルとが利用される。学習処理により、分類器が生成される。
【０１１９】
なお、このステップＳ７８で生成される分類器は、子個体が図７のステップＳ１９で最良個体として選択された場合に、出力データに含められる分類器である。このため、ステップＳ７５〜Ｓ７８の処理は、上記のタイミングでは実行されずに、子個体が最良個体として選択された場合にステップＳ１９において実行されてもよい。
【０１２０】
次に、図１３のステップＳ８１の処理が実行される。
［ステップＳ８１］ＧＰ学習制御部１２１は、サンプル画像を、それぞれ同じ数の画像を含むＮ個のグループに分類する。ＧＰ学習制御部１２１は、分類したグループのうち、（Ｎ−１）個のグループのサンプル画像を学習用画像に決定し、残りの１個のグループのサンプル画像を評価用画像に決定する。
【０１２１】
［ステップＳ８２］ＧＰ学習制御部１２１は、図１２のステップＳ７３で抽出された特徴量のうち、ステップＳ８１で決定された学習用画像に基づく特徴量を処理対象として特定する。入力データ生成部１２４は、子個体のＤ区間のノードに設定された入力データ生成モジュールにしたがって、処理対象として特定された特徴量に基づいて、分類器に入力する入力データを生成する。
【０１２２】
［ステップＳ８３］種類設定部１２５は、子個体のＴ区間のノードに設定された分類器種類設定モジュールにしたがって、分類器の種類を設定する。
［ステップＳ８４］パラメータ設定部１２６は、子個体のＰａ区間のノードに設定された絶対値設定モジュールと、Ｐｒ区間のノードに設定された相対値設定モジュールとにしたがって、分類器に設定する学習パラメータを設定する。
【０１２３】
［ステップＳ８５］分類器生成部１２７は、子個体のＬ区間のノードに設定された分類器生成モジュールにしたがって、分類器生成のための学習処理を実行する。この学習処理では、ステップＳ８４で設定された学習パラメータと、ステップＳ８２で生成された入力データと、ステップＳ８１で決定された各学習用画像に付加されたラベルとが利用される。学習処理により、分類器が生成される。
【０１２４】
次に、図１４のステップＳ９１の処理が実行される。
［ステップＳ９１］ＧＰ学習制御部１２１は、図１３のステップＳ８１で決定された評価用画像の中から１つ選択する。
【０１２５】
［ステップＳ９２］ＧＰ学習制御部１２１は、図１２のステップＳ７３で抽出された特徴量のうち、ステップＳ９１で選択された評価用画像に基づいて抽出された特徴量を、処理対象として選択する。入力データ生成部１２４は、子個体のＤ区間のノードに設定された入力データ生成モジュールにしたがって、処理対象として選択された特徴量に基づいて、分類器に入力する入力データを生成する。
【０１２６】
［ステップＳ９３］分類処理部１２８は、図１３のステップＳ８５で生成された分類器を用いて、ステップＳ９２で生成された入力データに基づいて、ステップＳ９１で選択された評価用画像がどのクラスに属するかを判定する分類処理を実行する。
【０１２７】
［ステップＳ９４］分類処理部１２８は、ステップＳ９３の分類処理による分類結果と、ステップＳ９１で選択された評価用画像に付加されたラベルが示すクラスとを比較して、分類結果が正解か不正解かを判定する。
【０１２８】
［ステップＳ９５］ＧＰ学習制御部１２１は、評価用画像をすべて選択済みかを判定する。未選択の評価用画像がある場合、ＧＰ学習制御部１２１は、処理をステップＳ９１に進め、未選択の評価用画像の中から１つ選択する。一方、評価用画像をすべて選択済みである場合、ＧＰ学習制御部１２１は、処理をステップＳ９６に進める。
【０１２９】
［ステップＳ９６］図１３のステップＳ８１では、Ｎグループを学習用画像と評価用画像の各グループに分類することが可能なパターンとして、Ｎパターン存在する。ＧＰ学習制御部１２１は、これらのすべてのパターンについて処理済みかを判定する。処理済みでないパターンがある場合、ＧＰ学習制御部１２１は、処理をステップＳ８１に進め、処理済みでない新たなパターンによって学習用画像と評価用画像とを特定する。一方、すべてのパターンについて処理済みの場合、ＧＰ学習制御部１２１は、処理をステップＳ９７に進める。
【０１３０】
［ステップＳ９７］ＧＰ学習制御部１２１は、ステップＳ９４での判定結果から正解率を算出する。ＧＰ学習制御部１２１は、算出された正解率に基づいて、子個体の適応度を算出する。また、このステップＳ６８では、ＧＰ学習制御部１２１は、図１１のステップＳ６８と同様の手順で、算出された正解率をペナルティ項に応じて補正し、補正後の値を適応度として出力してもよい。
【０１３１】
以上の図１２〜図１４の処理によれば、図１０〜図１１の処理と比較して、少ないサンプル画像を用いて分類精度の高い画像分類プログラムを生成することができる。
図１５は、出力データに基づく画像分類処理手順の例を示すフローチャートである。
【０１３２】
［ステップＳ１０１］画像分類処理部１１２は、出力データ記憶部１３３に記憶された出力データ２１０の画像変換フィルタ構造２０１、特徴抽出フィルタ構造２０２およびデータ生成モジュール構造２０３に基づいて、Ｃ区間、Ｆ区間およびＤ区間のノードに要素を設定する。
【０１３３】
［ステップＳ１０２］画像分類処理部１１２は、出力データ２１０の分類器情報２０７に基づいて、分類器を構築する。
［ステップＳ１０３］画像分類処理部１１２は、分類処理対象の画像を、画像取得部１１１を通じて取得する。この画像は、例えば、カメラ１０７ａによって撮像された画像である。
【０１３４】
［ステップＳ１０４］画像変換部１２２は、Ｃ区間のノードに設定された画像変換フィルタにしたがって、取得された画像に対する画像変換処理を実行する。
［ステップＳ１０５］特徴抽出部１２３は、Ｆ区間のノードに設定された特徴抽出フィルタにしたがって、ステップＳ１０４で変換された画像に基づいて特徴量を抽出する。
【０１３５】
［ステップＳ１０６］入力データ生成部１２４は、Ｄ区間のノードに設定された入力データ生成モジュールにしたがって、ステップＳ１０５で抽出された特徴量に基づいて、分類器に入力する入力データを生成する。
【０１３６】
［ステップＳ１０７］分類処理部１２８は、出力データ２１０の分類器情報２０７に基づく分類器を用いて、ステップＳ１０６で生成された入力データに基づいて、取得された画像がどのクラスに属するかを判定する分類処理を実行し、分類結果を出力する。
【０１３７】
また、新たなサンプル画像が得られた場合には、それらのサンプル画像と出力データとを用いて分類器の再学習を実行することもできる。
図１６は、分類器の再学習手順の例を示すフローチャートである。
【０１３８】
［ステップＳ１２１］ＧＰ学習制御部１２１は、出力データ記憶部１３３に記憶された出力データ２１０の画像変換フィルタ構造２０１、特徴抽出フィルタ構造２０２、データ生成モジュール構造２０３、分類器種類設定モジュール情報２０４、パラメータ設定モジュール情報２０５および分類器生成モジュール情報２０６に基づいて、Ｃ区間、Ｆ区間、Ｄ区間、Ｔ区間、Ｐａ区間、Ｐｒ区間およびＬ区間のノードに要素を設定する。なお、図１５のステップＳ１０１との違いは、出力データ２１０に基づいて分類器の種類および学習パラメータの設定も行われる点である。
【０１３９】
以後、ステップＳ１２１で設定された要素に基づいて、新たに用意されたサンプル画像を学習画像として用いて、図９のステップＳ５１〜Ｓ５８と同様の処理が実行される。なお、ステップＳ５８の学習処理では、新たに用意されたサンプル画像に付加されたラベルが用いられる。
【０１４０】
［ステップＳ１２２］ＧＰ学習制御部１２１は、出力データ２１０の分類器情報２０７を、ステップＳ５８で生成された分類器の情報に更新する。
〔第２の実施の形態の変形例〕
次に、第２の実施の形態に係る画像処理装置１００の処理の一部を変形した変形例について説明する。なお、以下の変形例の説明では、第２の実施の形態に係る画像処理装置１００の構成要素と同じ符号を用いて説明する。
【０１４１】
画像分類プログラムを生成する際には、特定の区間に属するノードの要素のみを遺伝的プログラミングによって最適化するように制御することもできる。例えば、ＧＰ学習制御部１２１は、Ｔ区間、Ｐａ区間、Ｐｒ区間およびＬ区間のノードの要素だけを最適化するようにプログラム生成処理を制御することができる。この場合、個体群に含められる各初期個体では、Ｃ区間、Ｆ区間およびＤ区間の各ノードにはあらかじめ決められた要素が設定される。そして、プログラム生成処理中では、Ｔ区間、Ｐａ区間、Ｐｒ区間およびＬ区間のノードの要素だけが進化の対象とされ、Ｃ区間、Ｆ区間およびＤ区間の各ノードの要素は変更されない。このような制御により、分類器の生成アルゴリズムだけを最適化することができる。
【０１４２】
また、特定の区間に属するノードの要素のみを最適化する処理は、例えば、適応度の算出に用いるペナルティ項を最適化するために利用することができる。例えば、ペナルティ項として用いられる特徴次元数を最適化するためには、画像特徴量に基づいて入力データを生成するまでの処理について遺伝的プログラミングによって最適化すればよい。具体的には、Ｃ区間、Ｆ区間およびＤ区間、あるいはＦ区間とＤ区間の各ノードの要素のみを最適化すればよい。また、ペナルティ項として用いられるＳＶＭのサポートベクトル数を最適化するためには、分類器の生成の手順を最適化することが有効である。したがって、Ｔ区間、Ｐａ区間、Ｐｒ区間およびＬ区間の各ノードの要素のみを最適化すればよい。
【０１４３】
さらに、それぞれ異なる区間のノードの要素だけを最適化する複数の動作モードを設け、これらの動作モードを所定の条件にしたがって切り替えることもできる。以下の変形例では、Ｃ区間の要素だけを最適化する動作モード１と、Ｆ区間およびＤ区間のノードの要素だけを最適化する動作モード２と、Ｔ区間、Ｐａ区間、Ｐｒ区間およびＬ区間のノードの要素だけを最適化する動作モード３とを切り替え可能であるものとする。すなわち、動作モード１では、学習画像の変換処理のアルゴリズムを最適化できる。動作モード２では、変換された画像に基づいて分類器に入力する入力データを生成する処理のアルゴリズムを最適化できる。動作モード３では、分類器の生成アルゴリズムを最適化することができる。
【０１４４】
図１７は、変形例における画像分類プログラムの生成処理手順の例を示すフローチャートである。なお、図１７では、図７と同様の処理が行われる処理ステップには、同じステップ番号を付して示している。
【０１４５】
［ステップＳ１１ａ］ＧＰ学習制御部１２１は、動作モード１に設定する。
［ステップＳ１１ｂ］ＧＰ学習制御部１２１は、複数の初期個体を生成し、生成した初期個体を示す情報を個体群情報記憶部１３２に格納する。図７のステップＳ１１との違いは、すべての個体について、Ｃ区間以外の区間のノードにはあらかじめ決められた要素が設定される点である。
【０１４６】
この後、図７に示したステップＳ１２〜Ｓ１７の処理が実行される。ただし、ステップＳ１３で子個体を生成する際、特定の区間のノードの要素だけが進化の対象とされる。具体的には、動作モード１ではＣ区間のノードの要素だけが進化の対象とされ、動作モード２では、Ｆ区間およびＤ区間のノードの要素だけが進化の対象とされ、動作モード３では、Ｔ区間、Ｐａ区間、Ｐｒ区間およびＬ区間のノードの要素だけが進化の対象とされる。
【０１４７】
そして、ステップＳ１７において、子個体の適応度のうちの最大適応度が閾値ｔｈ以下である場合、ステップＳ１８の処理が実行された後、ステップＳ１８ａの処理が実行される。
【０１４８】
［ステップＳ１８ａ］ＧＰ学習制御部１２１は、動作モードを切り替えるための条件が満たされたかを判定し、その判定結果に応じて動作モードを切り替える。現在が動作モード１の場合、動作モード２に切り替えられ、現在が動作モード２の場合、動作モード３に切り替えられる。その後、ステップＳ１２以後の処理が再度実行される。
【０１４９】
動作モードの切り替え方法としては、例えば、適応度の上昇が停滞した場合に動作モードを切り替える方法が考えられる。具体的には、ＧＰ学習制御部１２１は、ステップＳ１６で算出された適応度の最大値の増加率が所定の閾値以下になった場合に、動作モードを次の動作モードに切り替える。これにより、区間ごとにノードの要素を順次最適化することができる。また、別の方法としては、ＧＰ学習制御部１２１は、個体群の世代数が所定数に達した場合に動作モード１から動作モード２に切り替え、世代数がそれより大きい所定数に達した場合に動作モード２から動作モード３に切り替えてもよい。
【０１５０】
なお、上記の各実施の形態に示した装置（プログラム生成装置１および画像処理装置１００）の処理機能は、コンピュータによって実現することができる。その場合、各装置が有すべき機能の処理内容を記述したプログラムが提供され、そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc-Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。
【０１５１】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１５２】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムまたはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムにしたがった処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムにしたがった処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムにしたがった処理を実行することもできる。
【０１５３】
上記については単に本発明の原理を示すものである。さらに、多数の変形、変更が当業者にとって可能であり、本発明は上記に示し、説明した正確な構成および応用例に限定されるものではなく、対応するすべての変形例および均等物は、添付の請求項およびその均等物による本発明の範囲とみなされる。
【符号の説明】
【０１５４】
１  プログラム生成装置
１ａ  生成部
１ｂ  遺伝的処理部
１０  木構造群
１１ａ，１１ｂ，１１ｃ，・・・  木構造
１２ａ  第１階層群
１２ｂ  第２階層群
２０  第１要素群
２１ａ，２１ｂ，２１ｃ，・・・  画像フィルタ
３０  第２要素群
３１ａ，３１ｂ，３１ｃ，・・・  設定プログラム
【図１】
2017068675.tif 000003
【図２】
2017068675.tif 000004
【図３】
2017068675.tif 000005
【図４】
2017068675.tif 000006
【図５】
2017068675.tif 000007
【図６】
2017068675.tif 000008
【図７】
2017068675.tif 000009
【図８】
2017068675.tif 000010
【図９】
2017068675.tif 000011
【図１０】
2017068675.tif 000012
【図１１】
2017068675.tif 000013
【図１２】
2017068675.tif 000014
【図１３】
2017068675.tif 000015
【図１４】
2017068675.tif 000016
【図１５】
2017068675.tif 000017
【図１６】
2017068675.tif 000018
【図１７】
2017068675.tif 000019
【国際調査報告】
2017068675.tif 000020
2017068675.tif 000021
2017068675.tif 000022
2017068675.tif 000023