(57)【特許請求の範囲】
【請求項１】
畳み込み処理部と、入力された画像データが分類される１以上の第１のカテゴリ毎に第１の全結合処理部と、前記１以上の第１のカテゴリそれぞれに対応する１以上の第２のカテゴリ毎に第２の全結合処理部とを有する畳み込みニューラルネットワークを用いて、前記画像データが前記１以上の第１のカテゴリのそれぞれに分類される度合いを示す確信度を算出する画像処理装置であって、
前記畳み込み処理部により予め学習された第１の係数を用いて、前記畳み込み処理部において畳み込み処理を行う畳み込み処理手段と、
前記畳み込み処理手段による処理結果について、前記第１の全結合処理部により予め学習された第２の係数と前記第２の全結合処理部により予め学習された第３の係数を用いて、前記第１の全結合処理部及び前記第２の全結合処理部においてそれぞれ全結合処理を行い、前記画像データが前記１以上の第１のカテゴリ及び前記１以上の第２のカテゴリのそれぞれに分類される度合いを示す確信度の候補値を算出する全結合処理手段と、
前記全結合処理手段により算出された前記確信度の候補値の正規化を行う正規化手段と、
前記第１のカテゴリの前記確信度の候補値が前記正規化手段により正規化された第１の候補値と、該第１のカテゴリに対応する前記第２のカテゴリの前記確信度の候補値が前記正規化手段により正規化された第２の候補値とを所定の値と比較し、前記第１の候補値及び前記第２の候補値が前記所定の値以上である場合、前記第１の候補値を、前記画像データが該第１の候補値に対応する前記第１のカテゴリに分類される度合いを示す確信度として採用すると判定する一方、前記第１の候補値又は前記第２の候補値が前記所定の値未満である場合、前記画像データは該第１の候補値に対応する前記第１のカテゴリには分類されないと判定する判定手段と、
を有し、
前記第１の係数は、前記畳み込み処理部により前記１以上の第１のカテゴリ対して共通に学習された係数である一方、前記第２の係数は前記第１の全結合処理部により、前記第３の係数は前記第２の全結合処理部により、それぞれ前記第１のカテゴリ及び前記第２のカテゴリ毎に学習された係数である、画像処理装置。
【請求項２】
前記第２のカテゴリは、前記１以上の第１のカテゴリのうち誤ったカテゴリに分類される可能性が高いカテゴリの認識を行うためのカテゴリであり、
前記第２のカテゴリに対応する第３の係数は、正例と負例の数に偏りがある学習データにより予め学習された、請求項１記載の画像処理装置。
【請求項３】
前記全結合処理手段により算出される確信度の候補値は、前記画像データが前記１以上の第１のカテゴリ又は前記１以上の第２のカテゴリに分類される度合いを示す分類確信度の候補値と、分類されない度合いを示す否分類確信度の候補値との組であり、
前記判定手段は、前記第１のカテゴリの前記分類確信度の候補値が前記正規化手段により正規化された第３の候補値と、該第１のカテゴリに対応する前記第２のカテゴリの前記分類確信度の候補値が前記正規化手段により正規化された第４の候補値とを所定の値と比較し、前記第３の候補値及び前記第４の候補値が前記所定の値以上である場合、前記第３の候補値を、前記画像データが該第１の候補値に対応する前記第１のカテゴリに分類される度合いを示す確信度として採用すると判定する一方、前記第３の候補値又は前記第４の候補値が前記所定の値未満である場合、前記画像データは該第３の候補値に対応する前記第１のカテゴリには分類されないと判定する、請求項１又は２記載の画像処理装置。
【請求項４】
前記正規化手段は、前記分類確信度の候補値及び前記否分類確信度の候補値のそれぞれを
【数１２】
0006582416.tif 000011
【数１３】
0006582416.tif 000012
により正規化する、請求項３記載の画像処理装置。
【請求項５】
前記学習は、誤差逆伝播法により行われる請求項１ないし４のいずれか１項に記載の画像処理装置。
【請求項６】
畳み込み処理部と、入力された画像データが分類される１以上の第１のカテゴリ毎に第１の全結合処理部と、前記１以上の第１のカテゴリそれぞれに対応する１以上の第２のカテゴリ毎に第２の全結合処理部とを有する畳み込みニューラルネットワークを用いて、前記画像データが前記１以上の第１のカテゴリのそれぞれに分類される度合いを示す確信度を算出する画像処理装置における画像処理方法であって、
前記畳み込み処理部により予め学習された第１の係数を用いて、前記畳み込み処理部において畳み込み処理を行う畳み込み処理手順と、
前記畳み込み処理手順による処理結果について、前記第１の全結合処理部により予め学習された第２の係数と前記第２の全結合処理部に予め学習された第３の係数を用いて、前記第１の全結合処理部及び前記第２の全結合処理部においてそれぞれ全結合処理を行い、前記画像データが前記１以上の第１のカテゴリ及び前記１以上の第２のカテゴリのそれぞれに分類される度合いを示す確信度の候補値を算出する全結合処理手順と、
前記全結合処理手順により算出された前記確信度の候補値の正規化を行う正規化手順と、
前記第１のカテゴリの前記確信度の候補値が前記正規化手順により正規化された第１の候補値と、該第１のカテゴリに対応する前記第２のカテゴリの前記確信度の候補値が前記正規化手順により正規化された第２の候補値とを所定の値と比較し、前記第１の候補値及び前記第２の候補値が前記所定の値以上である場合、前記第１の候補値を、前記画像データが該第１の候補値に対応する前記第１のカテゴリに分類される度合いを示す確信度として採用すると判定する一方、前記第１の候補値又は前記第２の候補値が前記所定の値未満である場合、前記画像データは該第１の候補値に対応する前記第１のカテゴリには分類されないと判定する判定手順と、
を有し、
前記第１の係数は、前記畳み込み処理部により前記１以上の第１のカテゴリ対して共通に学習された係数である一方、前記第２の係数は前記第１の全結合処理部により、前記第３の係数は前記第２の全結合処理部により、それぞれ前記第１のカテゴリ及び前記第２のカテゴリ毎に学習された係数である、画像処理方法。
【請求項７】
畳み込み処理部と、入力された画像データが分類される１以上の第１のカテゴリ毎に第１の全結合処理部と、前記１以上の第１のカテゴリそれぞれに対応する１以上の第２のカテゴリ毎に第２の全結合処理部とを有する畳み込みニューラルネットワークを用いて、前記画像データが前記１以上の第１のカテゴリのそれぞれに分類される度合いを示す確信度を算出する画像処理装置を、
前記畳み込み処理部により予め学習された第１の係数を用いて、前記畳み込み処理部において畳み込み処理を行う畳み込み処理手段、
前記畳み込み処理手段による処理結果について、前記第１の全結合処理部により予め学習された第２の係数と前記第２の全結合処理部に予め学習された第３の係数を用いて、前記第１の全結合処理部及び前記第２の全結合処理部においてそれぞれ全結合処理を行い、前記画像データが前記１以上の第１のカテゴリ及び前記１以上の第２のカテゴリのそれぞれに分類される度合いを示す確信度の候補値を算出する全結合処理手段、
前記全結合処理手段により算出された前記確信度の候補値の正規化を行う正規化手段、
前記第１のカテゴリの前記確信度の候補値が前記正規化手段により正規化された第１の候補値と、該第１のカテゴリに対応する前記第２のカテゴリの前記確信度の候補値が前記正規化手段により正規化された第２の候補値とを所定の値と比較し、前記第１の候補値及び前記第２の候補値が前記所定の値以上である場合、前記第１の候補値を、前記画像データが該第１の候補値に対応する前記第１のカテゴリに分類される度合いを示す確信度として採用すると判定する一方、前記第１の候補値又は前記第２の候補値が前記所定の値未満である場合、前記画像データは該第１の候補値に対応する前記第１のカテゴリには分類されないと判定する判定手段、
として機能させ、
前記第１の係数は、前記畳み込み処理部により前記１以上の第１のカテゴリ対して共通に学習された係数である一方、前記第２の係数は前記第１の全結合処理部により、前記第３の係数は前記第２の全結合処理部により、それぞれ前記第１のカテゴリ及び前記第２のカテゴリ毎に学習された係数である、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置、画像処理方法及びプログラムに関する。
【背景技術】
【０００２】
デジタルカメラや携帯情報端末等の機器において、撮影する画像のシーンを機器が認識して、シーンに適したホワイトバランス、露出、ピント位置等を自動的に設定する画像処理技術が知られている。また、撮影された画像の保存等をすると、撮影された画像のシーンを機器が認識して、シーンに適した加工、編集等を自動的に行う画像処理技術も知られている。
【０００３】
上記のような画像処理を実現するために、機器等がシーンを認識する方法として、畳み込みニューラルネットワークを用いて画像に写っているものを例えば「人」、「自動車」、「犬」、「椅子」等のカテゴリに分類する技術が従来より知られている（例えば特許文献１及び２参照）。このような従来技術では、カテゴリ毎にニューラルネットワークを用いる方法（すなわち、複数のニューラルネットワークを用いる方法）や、画像データにいずれのカテゴリに属するかを示すラベルを施すことで１つのネットワークのみを用いる方法がある。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記の従来技術においては、複数のネットワークを用いる方法では、カテゴリ数の増加に伴って必要となる計算量やメモリ量が増加する。他方、１つのネットワークのみを用いる方法では、画像データに複数のカテゴリに属するもの（例えば「料理」と「花」）が写っていると、適切なカテゴリ分類がされない場合がある。
【０００５】
また、１つのネットワークのみを用いる方法では、カテゴリを追加した場合、既存のカテゴリが学習した画像データについても再度ラベリングを行った上で、新たに追加したカテゴリに対して再学習を行う必要がある。特に、ラベリングはユーザが手作業で行わなければならないため、画像データの再学習はユーザにとって大きな手間となっている。
【０００６】
本発明の一実施形態は、上記の点に鑑みてなされたもので、画像データの適切なカテゴリ分類を支援することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するため、本発明の一実施形態では、畳み込み処理部と、入力された画像データが分類されるカテゴリ毎に全結合処理部とを有する畳み込みニューラルネットワークを用いて、前記画像データが複数のカテゴリのいずれに属するかを算出する画像処理装置あって、前記画像データが前記複数のカテゴリのいずれに属するかを算出するための係数であって前記畳み込み処理部により予め学習された第１の係数を用いて、前記畳み込み処理部において畳み込み処理を行う畳み込み処理手段と、前記畳み込み処理手段による処理結果について、前記画像データが前記複数のカテゴリのいずれに属するかを算出するため係数であって前記全結合処理部により予め学習された第２の係数を用いて、前記全結合処理部において全結合処理を行い、前記画像データが前記複数のカテゴリのいずれに属するかを算出する全結合処理手段と、前記全結合処理手段による処理結果について、前記カテゴリ毎に正規化を行う正規化手段と、を有し、前記畳み込み処理部は、前記第１の係数を前記複数のカテゴリに対して共通に学習を行う一方、前記全結合処理部は、前記第２の係数を前記カテゴリ毎に学習を行うことを特徴とする。
【発明の効果】
【０００８】
本発明の一実施形態によれば、画像データの適切なカテゴリ分類を支援することができる。
【図面の簡単な説明】
【０００９】
【図１】第１の実施形態に係る画像処理装置の外観の一例を示す図である。
【図２】第１の実施形態に係る画像処理装置の構成の一例を示す図である。
【図３】第１の実施形態に係る画像処理装置の画像処理エンジンの機能構成の一例を示すブロック図である。
【図４】第１の実施形態に係る画像処理装置のカテゴリ識別処理の一例のフローチャートである。
【図５】第１の実施形態に係る入力画像データの加工処理の一例を説明するための図である。
【図６】第１の実施形態に係る第１層の畳み込み処理の一例を説明するための図である。
【図７】第１の実施形態に係る第１層のバイアス値及び重みデータの一例のデータ構成を説明するための図である。
【図８】第１の実施形態に係る第１層のフィルタの一例のデータ構成を説明するための図である。
【図９】第１の実施形態に係る第１層のプーリング処理の一例を説明するための図である。
【図１０】第１の実施形態に係る第２層の畳み込み処理の一例を説明するための図である。
【図１１】第１の実施形態に係る第２層のバイアス値及び重みデータの一例のデータ構成を説明するための図である。
【図１２】第１の実施形態に係る第２層のフィルタの一例のデータ構成を説明するための図である。
【図１３】第１の実施形態に係る第２層のプーリング処理の一例を説明するための図である。
【図１４】第１の実施形態に係る第３層の畳み込み処理の一例を説明するための図である。
【図１５】第１の実施形態に係る第３層のバイアス値及び重みデータの一例のデータ構成を説明するための図である。
【図１６】第１の実施形態に係る第３層のフィルタの一例のデータ構成を説明するための図である。
【図１７】第１の実施形態に係る第４層の全結合処理の一例を説明するための図である。
【図１８】第１の実施形態に係る第４層のバイアス値及び重みデータの一例のデータ構成を説明するための図である。
【図１９】第１の実施形態に係る正規化処理の一例を説明するための図である。
【図２０】第２の実施形態に係る画像処理装置の画像処理エンジンの機能構成の一例を示すブロック図である。
【図２１】第２の実施形態に係る画像処理装置の学習処理の一例を示すフローチャートである。
【図２２】第３の実施形態に係る画像処理装置の画像処理エンジンの機能構成の一例を示すブロック図である。
【図２３】第３の実施形態に係る画像処理装置のカテゴリ識別処理の一例のフローチャートである。
【図２４】第３の実施形態に係る第４層の一般カテゴリの全結合処理の一例を説明するための図である
【図２５】第３の実施形態に係る第４層のバイアス値及び重みデータの一例のデータ構成を説明するための図である。
【図２６】第３の実施形態に係る第４層の特殊カテゴリの全結合処理の一例を説明するための図である。
【図２７】第３の実施形態に係る正規化処理の一例を説明するための図である。
【図２８】第４の実施形態に係る画像処理装置の画像処理エンジンの機能構成の一例を示すブロック図である。
【図２９】第４の実施形態に係る画像処理装置の学習処理の一例を示すフローチャートである。
【図３０】第５の実施形態に係る学習処理の一例の概要を説明するための図である。
【図３１】第５の実施形態に係る学習処理の一例を示すフローチャートである。
【図３２】第５の実施形態に係る逆方向の全結合処理の一例を説明するための図である。
【図３３】第５の実施形態に係る逆方向の第３層の畳み込み処理の一例を説明するための図である。
【図３４】第５の実施形態に係る逆方向の第２層のプーリング処理の一例を説明するための図である。
【発明を実施するための形態】
【００１０】
以下、本発明の実施形態について添付の図面を参照しながら説明する。
【００１１】
［第１の実施の形態］
＜画像処理装置の外観＞
まず、第１の実施形態に係る画像処理装置１の外観について説明する。図１は、第１の実施形態に係る画像処理装置の外観の一例を示す図である。図１では、画像処理装置の一例としてのデジタルカメラの外観を示している。図１（ａ）は上面図、図１（ｂ）は正面図、図１（ｃ）は背面図である。なお、画像処理装置１は、デジタルカメラに限られず、携帯電話、スマートフォン、タブレット端末、ゲーム機器等、画像処理を行える機器であればよい。
【００１２】
デジタルカメラの上面には、レリーズシャッタＳＷ１、モードダイヤルＳＷ２、及びサブＬＣＤ２が設けられている。デジタルカメラの正面には、ストロボ発光部４、光学ファインダ５、リモコン受光部６、及び鏡胴ユニット７が設けられている。また、正面から見て左側面にはＳＤカード／電池蓋３が設けられている。
【００１３】
また、デジタルカメラの背面には、ＡＦＬＥＤ８、ストロボＬＥＤ９、ズームスイッチ（ワイド）ＳＷ３、ズームスイッチ（遠隔）ＳＷ４、セルフタイマ／削除スイッチＳＥ５、メニュースイッチＳＷ６、上／ストロボスイッチＳＷ７が設けられている。さらに、デジタルカメラ１の背面には、右スイッチＳＷ８、ディスプレイスイッチＳＷ９、下／ストロボスイッチＳＷ１０、左／画像確認スイッチＳＷ１１、オーケースイッチＳＷ１２、ＬＣＤモニタ１０、及び電源スイッチＳＷ１３が設けられている。
【００１４】
＜画像処理装置の内部構成＞
次に、画像処理装置１の内部構成について説明する。図２は、第１の実施形態に係る画像処理装置の構成の一例を示す図である。図２に示すように、鏡胴ユニット７は、被写体の光学画像を取り込むズームレンズ５０１及びズーム駆動モータ６１４ａからなるズーム光学系と、フォーカスレンズ５０２及びフォーカス駆動モータ６１４ｂからなるフォーカス光学系と、絞り５０３及び絞りモータ６１４ｃからなる絞りユニットと、メカシャッタ５０４及びメカシャッタモータ６１４ｄからなるメカシャッタユニットと、各モータを駆動するモータドライバ６１４とを有する。そして、モータドライバ６１４は、リモコン受光部６での入力情報や操作キーユニット６１３の操作入力に基づいて、画像処理エンジン１００内にあるＣＰＵブロック１０８からの駆動指令により駆動制御される。
【００１５】
画像処理エンジン１００に接続されるＮＡＮＤフラッシュメモリ３００には、ＣＰＵブロック１０８において解読可能なコードで記述された制御プログラム３０１やこの制御プログラム３０１が利用する制御パラメータ等が格納されている。画像処理装置１の電源がオン状態になると、制御プログラム３０１はＳＲＡＭ１０９にロードされ、ＣＰＵブロック１０８はＳＲＡＭ１０９にロードされた制御プログラム３０１にしたがって画像処理装置１の各部の動作を制御する。また、制御プログラム３０１は、制御に必要なデータ等を一時的にＳＲＡＭ１０９やＳＤＲＡＭ２００等に保存する。ＮＡＮＤフラッシュメモリ３００は、書き換え可能な不揮発性メモリであるため、制御プログラム３０１やこの制御プログラム３０１が利用する制御パラメータ等を変更することが可能となり、例えば機能のバージョンアップ等を行うことができる。
【００１６】
イメージセンサ６０６は、光学画像を光電変換するための固体撮像素子であり、ＡＥＦ（アナログフロントエンド）４００は、画像ノイズ除去用相関二重サンプリングを行うＣＤＳ４０１、利得調整を行うＡＧＣ４０２、デジタル信号変換を行うＡ／Ｄ４０３、ＴＧ４０４を有する。このうち、ＴＧ４０４は、センサ１制御ブロック１０６から垂直同期信号（ＶＤ信号）、水平同期信号（ＨＤ信号）を供給され、ＣＰＵブロック１０８によって制御されるイメージセンサ６０６及びＡＥＦ４００の駆動タイミング信号を発生する。
【００１７】
画像処理エンジン１００は、イメージセンサ６０６よりＡＦＥ４００の出力データにホワイトバランス設定やガンマ設定を行い、また、前述したように、ＶＤ信号、ＨＤ信号を供給するセンサ１制御ブロック１０６、フィルタリング処理により輝度データ・色差データへの変換を行うセンサ２制御ブロック１０７、前述した画像処理装置１の各部の動作を制御するＣＰＵブロック１０８を有する。
【００１８】
また、画像処理エンジン１００は、前述した制御に必要なデータ等を、一時的に保存するＳＲＡＭ１０９、パソコン等の外部機器とＵＳＢ通信を行うＵＳＢブロック１０１、ＪＰＥＧ圧縮・伸張を行うＪＰＥＧ  ＣＯＤＥＣブロック１０２を有する。
【００１９】
さらに、画像処理エンジン１００は、画像データのサイズを補間処理により拡大／縮小するリサイズブロック１０３、画像データを液晶モニタやＴＶなどの外部表示機器に表示するためのビデオ信号に変換するＴＶ信号表示ブロック１０４、撮影された画像データを記録するメモリカードの制御を行うメモリカードコントローラブロック１０５を有している。
【００２０】
ＳＤＲＡＭ２００は、前述した画像処理エンジン１００で画像データに各種処理を施す際に、画像データを一時的に保存する。保存される画像データは、例えば、イメージセンサ６０６から、ＡＦＥ４００を経由して取り込む。ここで、取り込まれた画像データはセンサ１制御ブロック１０６でホワイトバランス設定、ガンマ設定が行われた状態の「ＲＡＷ−ＲＧＢ画像データ」やセンサ２制御ブロック１０７で輝度データ・色差データ変換が行われた状態の「ＹＵＶ画像データ」、ＪＰＥＧ  ＣＯＤＥＣブロック１０２でＪＰＥＧ圧縮された「ＪＰＥＧ画像データ」等である。
【００２１】
メモリカードコントローラブロック１０５にはメモリカードスロットル６０５が接続されている。このメモリカードスロットル６０５は、着脱可能なメモリカード６０５ａを装着するためのスロットルである。なお、メモリカードスロットル６０５にメモリカード６０５ａが装着されていない場合でも、撮影した画像データを記憶できるようにするため内蔵メモリ（不図示）が画像処理エンジン１００に接続されていてもよい。
【００２２】
ＬＣＤドライバ６０２は、ＬＣＤモニタ１０を駆動するドライブ回路であり、ＴＶ信号表示ブロック１０４から出力されたビデオ信号をＬＣＤモニタ１０に表示するための信号に変換する機能も有している。ＬＣＤモニタ１０は、撮影前に被写体の状態を監視する、撮影した画像を確認する、メモリカード６０５ａや前述した不図示の内蔵メモリに記録した画像データを表示する等を行うためのモニタである。ビデオアンプ６０３は、ＴＶ信号表示ブロック１０４から出力されたビデオ信号を７５Ωインピーダンス変換するためのアンプであり、ビデオジャック６０４は、ＴＶ等の外部表示機器と接続するためのジャックである。
【００２３】
ＵＳＢコネクタ６０１は、パソコン等の外部機器とＵＳＢ接続を行うためのコネクタである。
【００２４】
サブマイコン６０７は、ＲＯＭ・ＲＡＭをワンチップに内蔵したＣＰＵであり、操作キーユニット６１３やリモコン受光部６の出力信号をユーザの操作情報として、ＣＰＵブロック１０８に出力したり、ＣＰＵブロック１０８より出力されるカメラの状態をサブＬＣＤ２、ＡＦＬＥＤ６１１、ストロボＬＥＤ６１２、ブザー６０８の制御信号に変換して、出力する。
【００２５】
サブＬＣＤ２は、例えば、撮影可能枚数などを表示するための表示部であり、ＬＣＤドライバ６１０は、サブマイコン６０７の出力信号により、サブＬＣＤ２を駆動するためのドライブ回路である。
【００２６】
ＡＦＬＥＤ６１１は、撮影時の合焦状態を表示するためのＬＥＤであり、ストロボＬＥＤ６１２は、ストロボ充電状態を表すためのＬＥＤである。なお、このＡＦＬＥＤ６１１とストロボＬＥＤ６１２を、メモリカードアクセス中などの別の表示用途に使用してもよい。操作キーユニット６１３は、ユーザが操作するキー回路であり、リモコン受光部６は、ユーザが操作したリモコン送信機の信号の受信部である。
【００２７】
画像処理エンジン１００には、ストロボを発光させるストロボ発光部４を制御するためのストロボ回路６０９が接続されている。また、画像処理エンジン１００には、ＣＰＵブロック１０８により制御される、入力された音声信号を増幅するマイクアンプやスピーカーを駆動するためのオーディオアンプが内蔵されたオーディオＣＯＤＥＣ６１５が接続されている。さらに、オーディオＣＯＤＥＣ６１５には、ユーザが音声信号を入力するマイク６１６及び音声信号を出力するスピーカー６１７が接続されている。
【００２８】
＜画像処理装置の画像処理エンジンの機能構成＞
次に、第１の実施形態に係る画像処理装置１の画像処理エンジン１００の機能構成について説明する。図３は、第１の実施形態に係る画像処理装置の画像処理エンジンの機能構成の一例を示すブロック図である。なお、本実施形態においては、入力された画像データが複数のカテゴリのいずれのカテゴリに分類されるかの度合いを示す確信度を算出するための畳み込みニューラルネットワークＮは、一例として、第１層〜第４層で構成されるものとする。すなわち、本実施形態に係る畳み込みニューラルネットワークＮは、畳み込み処理及びプーリング処理を行う第１層〜第２層と、畳み込み処理を行う第３層と、全結合処理を行う第４層とから構成される。なお、畳み込みニューラルネットワークＮの構成は、これに限られず、一般に、ｎを３以上の任意の自然数として、畳み込み処理及びプーリング処理を行う第１層〜第ｎ−２層と、畳み込み処理を行う第ｎ−１層と、全結合処理を行う第ｎ層とから構成されていてもよい。
【００２９】
また、本実施形態において、カテゴリは、カテゴリに属する場合とそのカテゴリ以外に属する場合との組によって表されるものとする。例えば、１つのカテゴリは、「料理」「料理以外」と表される。同様に、例えば、「花」「花以外」、「車」「車以外」、「紅葉」「紅葉以外」等のように表される。
【００３０】
まず、図３に示すように、画像データ１０００は入力部２０に入力される。入力部２０では、入力された画像データ１０００に対して所定の加工処理を行った後、第１層の畳み込み処理部３０１に画像データを出力する。
【００３１】
第１層の畳み込み処理部３０１は、本実施形態に係る畳み込みニューラルネットワークＮにより予め学習されたバイアス値２１００及び重みデータ３１００に基づいて畳み込み処理を行った後、画像データを第１層のプーリング処理部４０１に出力する。そして、第１層のプーリング処理部４０１は、プーリング処理を行った後、画像データを第２層の畳み込み処理部３０２に出力する。
【００３２】
第２層の畳み込み処理部３０２は、本実施形態に係る畳み込みニューラルネットワークＮにより予め学習されたバイアス値２２００及び重みデータ３２００に基づいて畳み込み処理を行った後、画像データを第２層のプーリング処理部４０２に出力する。そして、第２層のプーリング処理部４０２は、プーリング処理を行った後、画像データを第３層の畳み込み処理部３０３に出力する。
【００３３】
第３層の畳み込み処理部３０３は、本実施形態に係る畳み込みニューラルネットワークＮにより予め学習されたバイアス値２３００及び重みデータ３３００に基づいて畳み込み処理を行った後、画像データを第４層の全結合処理部５０に出力する。
【００３４】
第４層の全結合処理部５０は、本実施形態に係る畳み込みニューラルネットワークＮにより予め学習されたバイアス値２４００及び重みデータ３４００に基づいて全結合処理を行った後、画像データを正規化処理部６０に出力する。ここで、本実施形態に係る畳み込みニューラルネットワークＮの全結合処理部５０は、カテゴリ毎に全結合処理部５０を有する。例えば、カテゴリの個数が、「料理」「料理以外」、「花」「花以外」、「車」「車以外」の３つである場合、全結合処理部５０はそれぞれのカテゴリ毎に３つ（全結合処理部５０１〜全結合処理部５０３）有する。したがって、本実施形態に係る畳み込みニューラルネットワークＮでは、カテゴリ数が増減した場合、それぞれ対応する全結合処理部５０を追加又は削除する必要がある。なお、他方で、カテゴリ数が増減した場合においても畳み込み処理部３０及びプーリング処理部４０は追加・削除する必要はない。
【００３５】
また、バイアス値２４００及び重みデータ３４００は、各全結合処理部５０毎に有する。すなわち、例えば、カテゴリが、「料理」「料理以外」、「花」「花以外」、「車」「車以外」の３つである場合、カテゴリ「料理」「料理以外」に対応する全結合処理部５０１が用いるバイアス値２４００１及び重みデータ３４００１を有する。同様に、カテゴリ「花」「花以外」に対応する全結合処理部５０２が用いるバイアス値２４００２及び重みデータ３４００２、カテゴリ「車」「車以外」に対応する全結合処理部５０３が用いるバイアス値２４００３及び重みデータ３４００３を有する。
【００３６】
したがって、バイアス値２４００及び重みデータ３４００は、畳み込みニューラルネットワークＮにより予めカテゴリ毎に学習された値（データ）である。他方、バイアス値２１００〜２３００及び重みデータ３１００〜３３００は、カテゴリに関わらずに（換言すれば、全カテゴリ共通に）、畳み込みニューラルネットワークＮにより予め学習された値（データ）である。このようなバイアス値２１００〜２４００及び重みデータ３１００〜３４００は、畳み込みニューラルネットワークＮのネットワーク係数又はネットワーク結合係数と呼ばれ、特許請求の範囲に記載の係数の一例である。
【００３７】
正規化処理部６０は、各全結合処理部５０の処理結果について、所定の正規化処理を行う。そして、出力部７０は、正規化処理部６０が行った処理結果を出力する。
【００３８】
なお、本実施形態において、バイアス値２１００〜２４００及び重みデータ３１００〜３４００は、上述した通り、畳み込みニューラルネットワークＮにより予め学習されている値（データ）であるものとする。また、これらのバイアス値２１００〜２４００及び重みデータ３１００〜３４００は、例えば、ＮＡＮＤフラッシュメモリ３００等に格納される。なお、バイアス値２１００〜２４００及び重みデータ３１００〜３４００のデータ構成については後述する。
【００３９】
また、ＮＡＮＤフラッシュメモリ３００等には、上記の学習に用いた学習データも格納されていてもよい。ここで、学習データとは、畳み込みニューラルネットワークＮによりバイアス値２１００〜２４００及び重みデータ３１００〜３４００を更新するために用いるデータである。学習データには、例えば、学習に用いる画像データと、この画像データがいずれのカテゴリに属するかを示す教師データ（正解ラベル）とが含まれる。
【００４０】
本実施形態に係る画像処理エンジン１００は、上述した各構成を有することにより、後述する各種処理を実現することができる。
【００４１】
＜処理の詳細＞
次に、第１の実施形態に係る画像処理装置１の処理について、図４〜図１９を参照しつつ詳細について説明する。図４は、第１の実施形態に係る画像処理装置のカテゴリ識別処理の一例のフローチャートである。この処理により、本実施形態に係る画像処理装置１は、入力された画像データが、予め定められたカテゴリのいずれに属するのかを算出（識別）することができる。
【００４２】
ステップＳ１において、入力部２０は、画像データ１０００を入力し、この画像データ１０００を、畳み込みニューラルネットワークＮに入力するための加工処理を行う。ここで加工処理について、図５を用いて説明する。図５は、第１の実施形態に係る入力画像データの加工処理の一例を説明するための図である。なお、画像データ１０００の色空間は、ＲＧＢ色空間であるものとする（すなわち、画像データ１０００の色チャンネルは３チャンネルである）。ただし、画像データ１０００の色空間は、ＲＧＢ色空間に限られず、例えば、ＣＭＫ色空間、ＨＳＶ色空間やＨＬＳ色空間等であってもよい。
【００４３】
Ｓｔｅｐ１１）入力部２０は、入力された画像データ１０００について、この画像データ１０００を６４×６４（ピクセル）の画像データとなるように縮小する。このとき、画像データ１０００の長辺が６４（ピクセル）となるように縮小を行い、短辺については縮小された結果６４（ピクセル）に満たない部分については値として０（すなわち、ＲＧＢの各色成分が０）をパディングして６４（ピクセル）とする。なお、画像データ１０００を縮小するためのアルゴリズムとしては、例えば、バイリニア法を用いればよい。
【００４４】
Ｓｔｅｐ１２）次に、入力部２０は、上記のＳｔｅｐ１１において得られた６４×６４の画像データの各画素値から、所定の値を減算した画像データを生成する。ここで、所定の値は、各学習データに含まれる画像データ（以降、「学習画像データ」という）の各画素値の平均値である。すなわち、各学習画像データの画素位置（ｉ，ｊ）における画素値の平均値をＭ（ｉ，ｊ）とした場合、上記のＳｔｅｐ１１において得られた６４×６４の画像データの各画素位置（ｉ，ｊ）の画素値からＭ（ｉ，ｊ）を減算する。ここで、ｉ，ｊ＝１，・・・，６４である。
【００４５】
Ｓｔｅｐ１３）最後に、入力部２０は、上記のＳｔｅｐ１２において得られた画像データについて、中心の５６×５６（ピクセル）の画像データ以外を０クリアする。換言すれば、上記のＳｔｅｐ１２において得られた画像データの周辺４ピクセル分を０クリアする。なお、図５において、網掛け部分が０クリアした部分である（このことは、以降の説明においても同様である）。
【００４６】
そして、図５に示した上記のＳｔｅｐ１３において得られた画像データ（この画像データを「画像データ１１００」とする。）を、入力部２０は、第１層の畳み込み処理部３０１に出力する。
【００４７】
ステップＳ２において、第１層の畳み込み処理部３０１は、画像データ１１００を入力し、この画像データ１１００について畳み込み処理を行う。ここで第１層の畳み込み処理について、図６を用いて説明する。図６は、第１の実施形態に係る第１層の畳み込み処理の一例を説明するための図である。
【００４８】
Ｓｔｅｐ２１）畳み込み処理部３０１は、入力した画像データ１１００を入力する。ここで、入力した画像データ１１００の色空間はＲＧＢ色空間であるため、色チャンネルは６４×６４×３チャンネルである。
【００４９】
Ｓｔｅｐ２２）畳み込み処理部３０１は、重みデータ３１００からフィルタを生成し、画像データ１１００の中心の５６×５６の部分に対して、このフィルタを用いてフィルタ処理を行う。ここで、重みデータ３１００のデータ構成及びこの重みデータ３１００から生成されるフィルタ３１００ｆのデータ構成について説明する。
【００５０】
図７（ｂ）は、第１層の重みデータ３１００の一例のデータ構成を説明するための図である。図７（ｂ）に示すように、第１層の重みデータ３１００は、７５×６４の行列で表されるデータ構成を有している。なお、重みデータ３１００の各値ｗ１（ｉ，ｊ）は、上述したように、畳み込みニューラルネットワークＮにより予め学習された値である。
【００５１】
次に、重みデータ３１００から生成されるフィルタ３１００ｆのデータ構成について説明する。図８は、第１の実施形態に係る第１層のフィルタの一例のデータ構成を説明するための図である。図８に示すように、各フィルタ３１００ｆは、５×５の行列の３つの組で表されるデータ構成を有している。換言すれば、各フィルタ３１００ｆは、５×５×３で表されるデータ構成を有している。例えば、重みデータ３１００のｗ１（１，１）〜ｗ１（２５，１）、ｗ１（２６，１）〜ｗ１（５０，１）、及びｗ１（５１，１）〜ｗ１（７５，１）からフィルタ３１００ｆ１が生成される。同様に、重みデータ３１００のｗ１（１，２）〜ｗ１（２５，２）、ｗ１（２６，２）〜ｗ１（５０，２）、及びｗ１（５１，２）〜ｗ１（７５，２）からフィルタ３１００ｆ２が生成される。以降、ｊ＝３，・・・，６４の場合も同様である。
【００５２】
以上のように生成された各フィルタ３１００ｆを用いて、畳み込み処理部３０１は、フィルタ処理を行う。フィルタ処理は、例えば、以下のようにして行う。
（１）画像データ１１００の中心５６×５６×３の部分に対してフィルタ３１００ｆ１をかける（すなわち、画像データ１１００とフィルタｆ１の対応する値の乗算を行う）。これは、例えば、Ｒチャンネルを固定し、Ｒチャンネル用のフィルタ３１００ｆ１の中心を５６×５６の左上から５ずつ右にずらしながら行う。そして、Ｒチャンネル用のフィルタ３１００ｆ１の中心が画像データ１１００の５６×５６部分の右端まで辿りついたら、フィルタ３１００ｆ１の中心を下に５ずらして、再度、左端からＲチャンネル用のフィルタ３１００ｆ１を当該部分に対してかける。
（２）次に、画像データ１１００のＧチャンネルに対して、上記（１）と同様の方法でＧチャンネル用のフィルタ３１００ｆ１をかけ、Ｂチャンネルに対しても同様にＢチャンネル用のフィルタ３１００ｆ１をかける。
（３）フィルタ３１００ｆ２〜フィルタ３１００ｆ６４についても、上記と同様に、画像データ１１００のＲＧＢの各チャンネルに対してフィルタ処理を順に行う。
【００５３】
以上により、上記のフィルタ処理により、画像データ１１００から６４×６４×３×６４チャンネルの画像が生成される。
【００５４】
Ｓｔｅｐ２３）次に、畳み込み処理部３０１は、上記のＳｔｅｐ２２において得られた６４×６４×３×６４チャンネルの画像データの各ＲＧＢ成分を加算する。この結果、６４×６４×６４チャンネルの画像データが得られる。
【００５５】
Ｓｔｅｐ２４）次に、畳み込み処理部３０１は、上記のＳｔｅｐ２３において得られた画像データの各画素値に対して、バイアス値２１００を加算する。ここで、図７（ａ）は、第１層のバイアス値２１００の一例のデータ構成を説明するための図である。図７（ａ）に示すように、バイアス値２１００は、１×６４の行列により表される。そこで、畳み込み処理部３０１は、１つめの画像データの各画素値に対してバイアス値ｂ１（１）を加算する。同様に、２つ目の画像データの各画素値に対してバイアス値ｂ１（２）を加算する。以降、同様に、６４個のすべての画像データの各画素値に対して、それぞれ、バイアス値２１００を加算する。
【００５６】
Ｓｔｅｐ２５）続いて、畳み込み処理部３０１は、上記のＳｔｅｐ２４において得られた６４×６４×６４チャンネルの画像データに対して、所定の活性化関数を適用して出力画像データを得る。所定の活性化関数としては、例えば、任意の画素値ｘに対して、ｆ（ｘ）＝ｍａｘ（０，ｘ）で定義される関数が挙げられる。
【００５７】
なお、上記のＳｔｅｐ２５において、６４×６４×６４チャンネルの画像データに対して、活性化関数を適用した後、前述の処理において０クリアした網掛け部分は取り除き、画像データの中心の５６×５６部分のみをプーリング処理部３０１に出力する。したがって、畳み込み処理部３０１がプーリング処理部３０１に出力する画像データの色チャンネルは、５６×５６×６４である。このようにして得られた５６×５６×６４チャンネルの画像データを以降、「画像データ１２００」とする。なお、網掛け部分は、上記のＳｔｅｐ２３に又はＳｔｅｐ２４おいて取り除いてもよい。
【００５８】
ステップＳ３において、プーリング処理部４０１は、画像データ１２００を入力し、この画像データ１２００についてプーリング処理を行う。ここで第１層のプーリング処理について、図９を用いて説明する。図９は、第１の実施形態に係る第１層のプーリング処理の一例を説明するための図である。
【００５９】
Ｓｔｅｐ３１）プーリング処理部４０１は、５６×５６×６４チャンネルの画像データ１２００を入力する。
【００６０】
Ｓｔｅｐ３２）プーリング処理部４０１は、画像データ１２００の３×３の領域内の最大値を出力する処理を繰り返し行い、２８×２８×６４の画像データ（この画像データを以降「画像データ１３００」とする）を生成する。これは、例えば、以下のようにして行う。
（１）画像データ１２００の１つの５６×５６の画像データについて、左上を中心として３×３の領域における画素値の最大値を得る。そして、この最大値を、画像データ１３００の画素位置（１，１）の画素値とする。
（２）次に、３×３の領域を右に２ずつ移動させながら、それぞれの領域内における画素値の最大値を得て、それぞれ、画像データ１３００の画素位置（１，２）〜（１，２８）の画素値とする。
（３）続いて、３×３の領域の中心を下に２移動させ、左端から同様に２ずつ領域の中心を移動させながら、それぞれの領域内における画素値の最大値を得て、それぞれ、画像データ１３００の画素位置（２，１）〜（２，２８）の画素値とする。以降、同様に、（３，１）〜（２８，２８）の画素値を得る。
（４）上記の（１）〜（３）を、すべての５６×５６の画像データについて行う。すなわち、上記の（１）〜（３）を、６４個の５６×５６の画像データについて行う。
【００６１】
Ｓｔｅｐ３３）プーリング処理部４０１は、画像データ１３００を第２層の畳み込み処理部３０２に出力する。
【００６２】
ステップＳ４において、第２層の畳み込み処理部３０２は、画像データ１３００を入力し、この画像データ１３００について畳み込み処理を行う。ここで第２層の畳み込み処理について、図１０を用いて説明する。図１０は、第１の実施形態に係る第２層の畳み込み処理の一例を説明するための図である。
【００６３】
Ｓｔｅｐ４１）畳み込み処理部３０２は、入力した画像データ１３００を入力する。ここで、入力した画像データ１３００の色チャンネルは、２８×２８×６４チャンネルである。
【００６４】
Ｓｔｅｐ４２）畳み込み処理部３０２は、重みデータ３２００からフィルタを生成し、画像データ１３００に対して、このフィルタを用いてフィルタ処理を行う。ここで、重みデータ３２００のデータ構成及びこの重みデータ３２００から生成されるフィルタ３２００ｆのデータ構成について説明する。
【００６５】
図１１（ｂ）は、第２層の重みデータ３２００の一例のデータ構成を説明するための図である。図１１（ｂ）に示すように、第２層の重みデータ３２００は、１６００×６４の行列で表されるデータ構成を有している。なお、重みデータ３２００の各値ｗ２（ｉ，ｊ）は、上述したように、畳み込みニューラルネットワークＮにより予め学習された値である。
【００６６】
次に、重みデータ３２００から生成されるフィルタ３２００ｆのデータ構成について説明する。図１２は、第１の実施形態に係る第２層のフィルタの一例のデータ構成を説明するための図である。図１２に示すように、各フィルタ３２００ｆは、５×５の行列の６４個の組で表されるデータ構成を有している。換言すれば、各フィルタ３２００ｆは、５×５×６４で表されるデータ構成を有している。例えば、重みデータ３２００のｗ２（１，１）〜ｗ２（２５，１）、・・・、ｗ２（１５７６，１）〜ｗ２（１６００，１）からフィルタ３２００ｆ１が生成される。同様に、ｗ２（１，２）〜ｗ２（２５，２）、・・・、ｗ２（１５７６，２）〜ｗ２（１６００，２）からフィルタ３２００ｆ２が生成される。以降、ｊ＝３，・・・，６４の場合も同様である。
【００６７】
以上のように生成された各フィルタ３２００ｆを用いて、畳み込み処理部３０２は、フィルタ処理を行う。フィルタ処理は、例えば、以下のようにして行う。
（１）画像データ１３００に対してフィルタ３２００ｆ１をかける（すなわち、画像データ１３００とフィルタｆ１の対応する値の乗算を行う）。これは、例えば、１つのチャンネルを固定し、フィルタ３２００ｆ１の中心を２８×２８の左上から５ずつ右にずらしながら行う。そして、フィルタ３２００ｆ１の中心が画像データ１３００の２８×２８の部分の右端まで辿りついたら、フィルタ３２００ｆ１の中心を下に５ずらして、再度、左端からフィルタ３２００ｆ１を当該部分に対してかける。
（２）次に、画像データ１３００の他のチャンネルに対して、上記（１）と同様の方法でフィルタ３２００ｆ１をかける。この処理をすべてのチャンネル１〜６４に対して繰り返す。
（３）フィルタ３２００ｆ２〜フィルタ３２００ｆ６４についても、上記と同様に、画像データ１３００のすべてのチャンネル（１〜６４）に対してフィルタ処理を順に行う。
【００６８】
以上により、上記のフィルタ処理により、画像データ１３００から２８×２８×６４×６４チャンネルの画像データが得られる。
【００６９】
Ｓｔｅｐ４３）次に、畳み込み処理部３０２は、上記のステップＳｔｅｐ４２により得られた画像データの２８×２８の部分について、各画素値を１〜６４チャンネルのそれぞれについて加算する。この結果、２８×２８×６４チャンネルの画像データが得られる。
【００７０】
Ｓｔｅｐ４４）次に、畳み込み処理部３０２は、上記のＳｔｅｐ４３において得られた画像データの各画素値に対して、バイアス値２２００を加算する。ここで、図１１（ａ）は、第２層のバイアス値２２００の一例のデータ構成を説明するための図である。図１１（ａ）に示すように、バイアス値２２００は、１×６４の行列により表される。そこで、畳み込み処理部３０２は、１つめの画像データの各画素値に対してバイアス値ｂ２（１）を加算する。同様に、２つ目の画像データの各画素値に対してバイアス値ｂ２（２）を加算する。以降、同様に、６４個のすべての画像データの各画素値に対して、それぞれ、バイアス値２２００を加算する。
【００７１】
Ｓｔｅｐ４５）続いて、畳み込み処理部３０２は、上記のＳｔｅｐ４４において得られた２８×２８×６４チャンネルの画像データに対して、所定の活性化関数を適用して出力画像データを得る。所定の活性化関数としては、例えば、任意の画素値ｘに対して、ｆ（ｘ）＝ｍａｘ（０，ｘ）で定義される関数が挙げられる。このようにして得られた２８×２８×６４チャンネルの画像データを以降、「画像データ１４００」とする。畳み込み処理部３０２は、画像データ１４００を第２層のプーリング処理部３０２に出力する。
【００７２】
ステップＳ５において、プーリング処理部４０２は、画像データ１４００を入力し、この画像データ１４００についてプーリング処理を行う。ここで第２層のプーリング処理について、図１３を用いて説明する。図１３は、第１の実施形態に係る第２層のプーリング処理の一例を説明するための図である。
【００７３】
Ｓｔｅｐ５１）プーリング処理部４０２は、２８×２８×６４チャンネルの画像データ１４００を入力する。
【００７４】
Ｓｔｅｐ５２）プーリング処理部４０２は、画像データ１４００の３×３の領域内の最大値を出力する処理を繰り返し行い、１４×１４×６４の画像データ（この画像データを以降「画像データ１５００」とする）を生成する。これは、例えば、以下のようにして行う。
（１）画像データ１４００の１つの２８×２８の画像データについて、左上を中心として３×３の領域における画素値の最大値を得る。そして、この最大値を、画像データ１５００の画素位置（１，１）の画素値とする。
（２）次に、３×３の領域を右に２ずつ移動させながら、それぞれの領域内における画素値の最大値を得て、それぞれ、画像データ１５００の画素位置（１，２）〜（１，１４）の画素値とする。
（３）続いて、３×３の領域の中心を下に２移動させ、左端から同様に２ずつ領域の中心を移動させながら、それぞれの領域内における画素値の最大値を得て、それぞれ、画像データ１５００の画素位置（２，１）〜（２，１４）の画素値とする。以降、同様に、（３，１）〜（１４，１４）の画素値を得る。
（４）上記の（１）〜（３）を、すべての２８×２８の画像データについて行う。すなわち、上記の（１）〜（３）を、６４個の２８×２８の画像データについて行う。
【００７５】
Ｓｔｅｐ５３）プーリング処理部４０２は、画像データ１５００を第３層の畳み込み処理部３０３に出力する。
【００７６】
ステップＳ６において、第３層の畳み込み処理部３０３は、画像データ１５００を入力し、この画像データ１５００について畳み込み処理を行う。ここで第３層の畳み込み処理について、図１４を用いて説明する。図１４は、第１の実施形態に係る第３層の畳み込み処理の一例を説明するための図である。
【００７７】
Ｓｔｅｐ６１）畳み込み処理部３０３は、画像データ１５００を入力する。ここで、入力した画像データ１５００の色チャンネルは、１４×１４×６４チャンネルである。
【００７８】
Ｓｔｅｐ６２）畳み込み処理部３０３は、重みデータ３３００からフィルタを生成し、画像データ１５００に対して、このフィルタを用いてフィルタ処理を行う。ここで、重みデータ３３００のデータ構成及びこの重みデータ３３００から生成されるフィルタ３３００ｆのデータ構成について説明する。
【００７９】
図１５（ｂ）は、第３層の重みデータ３３００の一例のデータ構成を説明するための図である。図１５（ｂ）に示すように、第３層の重みデータ３３００は、５７６×６４の行列で表されるデータ構成を有している。なお、重みデータ３３００の各値ｗ３（ｉ，ｊ）は、上述したように、畳み込みニューラルネットワークＮにより予め学習された値である。
【００８０】
次に、重みデータ３３００から生成されるフィルタ３３００ｆのデータ構成について説明する。図１６は、第１の実施形態に係る第３層のフィルタの一例のデータ構成を説明するための図である。図１６に示すように、各フィルタ３３００ｆは、３×３の行列の６４個の組で表されるデータ構成を有している。換言すれば、各フィルタ３３００ｆは、３×３×６４で表されるデータ構成を有している。例えば、重みデータ３３００のｗ３（１，１）〜ｗ３（９，１）、・・・、ｗ３（５６８，１）〜ｗ３（５７６，１）からフィルタ３３００ｆ１が生成される。同様に、ｗ３（１，２）〜ｗ３（９，２）、・・・、ｗ３（５６８，２）〜ｗ３（５７６，２）からフィルタ３２００ｆ２が生成される。以降、ｊ＝３，・・・，６４の場合も同様である。
【００８１】
以上のように生成された各フィルタ３３００ｆを用いて、畳み込み処理部３０３は、フィルタ処理を行う。フィルタ処理は、例えば、以下のようにして行う。
（１）画像データ１５００に対してフィルタ３３００ｆ１をかける（すなわち、画像データ１５００とフィルタｆ１の対応する値の乗算を行う）。これは、例えば、１つのチャンネルを固定し、フィルタ３３００ｆ１の中心を１４×１４の左上から３ずつ右にずらしながら行う。そして、フィルタ３３００ｆ１の中心が画像データ１５００の１４×１４の部分の右端まで辿りついたら、フィルタ３２００ｆ１の中心を下に３ずらして、再度、左端からフィルタ３３００ｆ１を当該部分に対してかける。
（２）次に、画像データ１５００の他のチャンネルに対して、上記（１）と同様の方法でフィルタ３３００ｆ１をかける。この処理をすべてのチャンネル１〜６４に対して繰り返す。
（３）フィルタ３３００ｆ２〜フィルタ３３００ｆ６４についても、上記と同様に、画像データ１５００のすべてのチャンネル（１〜６４）に対してフィルタ処理を順に行う。
【００８２】
以上により、上記のフィルタ処理により、画像データ１５００から１４×１４×６４×６４チャンネルの画像データが得られる。
【００８３】
Ｓｔｅｐ６３）次に、畳み込み処理部３０３は、上記のステップＳｔｅｐ６２により得られた画像データの１４×１４の部分について、各画素値を１〜６４チャンネルのそれぞれについて加算する。この結果、１４×１４×６４チャンネルの画像データが得られる。
【００８４】
Ｓｔｅｐ６４）次に、畳み込み処理部３０３は、上記のＳｔｅｐ６３において得られた画像データの各画素値に対して、バイアス値２３００を加算する。ここで、図１５（ａ）は、第３層のバイアス値２３００の一例のデータ構成を説明するための図である。図１５（ａ）に示すように、バイアス値２３００は、１×６４の行列により表される。そこで、畳み込み処理部３０３は、１つめの画像データの各画素値に対してバイアス値ｂ３（１）を加算する。同様に、２つ目の画像データの各画素値に対してバイアス値ｂ３（２）を加算する。以降、同様に、６４個のすべての画像データの各画素値に対して、それぞれ、バイアス値２３００を加算する。
【００８５】
Ｓｔｅｐ６５）続いて、畳み込み処理部３０３は、上記のＳｔｅｐ６４において得られた１４×１４×６４チャンネルの画像データに対して、所定の活性化関数を適用して出力画像データを得る。所定の活性化関数としては、例えば、任意の画素値ｘに対して、ｆ（ｘ）＝ｍａｘ（０，ｘ）で定義される関数が挙げられる。このようにして得られた１４×１４×６４チャンネルの画像データを以降、「画像データ１６００」とする。畳み込み処理部３０３は、画像データ１６００を全結合処理部５０に出力する。
【００８６】
ステップＳ７において、第４層の全結合処理部５０は、画像データ１６００を入力し、この画像データ１６００について全結合処理を行う。なお、全結合処理部５０は、カテゴリ毎に存在し、それぞれの全結合処理部５０に対して画像データ１６００を入力する。例えば、カテゴリ数が「料理」「料理以外」、「花」「花以外」、「車」「車以外」の３つである場合、全結合処理部５０は、カテゴリ「料理」「料理以外」に対応する全結合処理部５０１、カテゴリ「花」「花以外」に対応する全結合処理部５０２、及びカテゴリ「車」「車以外」に対応する全結合処理部５０３の３つが存在する。そして、各全結合処理部５０は、それぞれ、画像データ１６００を入力する。
【００８７】
ここで第４層の全結合処理について、図１７を用いて説明する。図１７は、第１の実施形態に係る第４層の全結合処理の一例を説明するための図である。
【００８８】
Ｓｔｅｐ７１）全結合処理部５０は、画像データ１６００を入力する。ここで、入力した画像データ１６００の色チャンネルは、１４×１４×６４である。
【００８９】
Ｓｔｅｐ７２）全結合処理部５０は、画像データ１６００の各画素値をベクトル値に変換する。すなわち、１４×１４×６４チャンネルの画像データ１６００の各画素値を１２５４４行１列のベクトル値に変換する。ここで、ベクトル値の各成分の値をｘ１，・・・，ｘ１２５４４とする。
【００９０】
Ｓｔｅｐ７３）全結合処理部５０は、カテゴリ毎に、バイアス値２４００及び重みデータ２４００を用いて、積和演算を行う。ここで、バイアス値２４００及び重みデータ３４００のデータ構成について説明する。図１８は、第１の実施形態に係る第４層のバイアス値及び重みデータの一例のデータ構成を説明するための図である。
【００９１】
図１８（ａ）は、第４層のバイアス値２４００の一例のデータ構成を説明するための図である。図１８（ａ）に示すように、第４層のバイアス値２４００は、カテゴリ毎のバイアス値２４００１，バイアス値２４００２，・・・から構成されている。また、カテゴリ毎のバイアス値２４００ｋは、１行２列のベクトル値である。なお、上述したように、ベクトルの各成分の値ｂ４（ｋ，ｊ）は、畳み込みニューラルネットワークＮによりカテゴリ毎に予め学習された値である。
【００９２】
ここで、ｋは、カテゴリを示す数値であるとする。例えば、ｋ＝１のときカテゴリ「料理」「料理以外」を示し、ｋ＝２のときカテゴリ「花」「花以外」を示す。また、ｊは、カテゴリに属する場合か否かを示す数値である。例えば、ｊ＝１のときカテゴリに属する場合であり、ｊ＝２のときカテゴリに属さない場合である。
【００９３】
図１８（ｂ）は、第４層の重みデータ３４００の一例のデータ構成を説明するための図である。図１８（ｂ）に示すように、第４層の重みデータ３４００は、カテゴリ毎の重みデータ３４００１，重みデータ３４００２，・・・から構成されている。また、カテゴリ毎の重みデータ３４００ｋは、１２５４４行２列の行列である。なお、上述したように、この行列の各成分の値ｗ４（ｉ，ｊ，ｋ）は、畳み込みニューラルネットワークＮによりカテゴリ毎に予め学習された値である。
【００９４】
図１７の説明に戻り、全結合処理部５０は、カテゴリ毎に、以下の積和演算を行う。換言すれば、カテゴリｋに対して、全結合処理部５０ｋが、以下の積和演算を行う。
【００９５】
【数１】
0006582416.tif 000002
ここで、ｊ及びｋの意味は上述した通りである。このようにして得られた２×１×｜ｋ｜のデータ（このデータを「確信度」と呼ぶ）を、全結合処理部５０は、正規化処理部６０に出力する。なお、｜ｋ｜は、カテゴリ数である。
【００９６】
なお、上記の積和演算の結果が、画像データ１０００がカテゴリｋに属する場合（ｊ＝１の場合）の算出結果と、画像データ１０００がカテゴリｋに属さない場合（ｊ＝２）の算出結果である。これにより、ある画像データ１０００があるカテゴリｋに属するのか又は属さないのかを数値として判定することができる。例えば、あるカテゴリｋについて、ｙ１（ｋ）の値が０．７、ｙ２（ｋ）の値が０．３である場合、この画像データ１０００は、カテゴリｋに属する場合が高いと判定することができる。換言すれば、あるカテゴリｋについて、ｙ１（ｋ）の値がｙ２（ｋ）の値より高い場合、入力された画像データ１０００はそのカテゴリｋに属する可能性が高いといえる（前述した「確信度」との名称はこのためである）。ただし、上記の算出結果では、カテゴリ同士のいずれのカテゴリに属するかを判定することができないため（換言すれば、異なるカテゴリ同士の確信度の比較ができないため）、次のステップＳ８において正規化処理を行う。
【００９７】
ステップＳ８において、正規化処理部６０は、全結合処理部５０より出力された２×１×｜ｋ｜のデータを入力し、正規化処理を行う。ここで正規化処理について、図１９を用いて説明する。図１９は、第１の実施形態に係る正規化処理の一例を説明するための図である。
【００９８】
Ｓｔｅｐ８１）正規化処理部６０は、全結合処理部５０より出力された２×１×｜ｋ｜のデータを入力する。
【００９９】
Ｓｔｅｐ８２）正規化処理部６０は、カテゴリ毎に、（ｙ１（ｋ），ｙ２（ｋ））について以下の式により正規化を行う。
【０１００】
【数２】
0006582416.tif 000003
このようにして得られた２×１×｜ｋ｜のデータが正規化後の確信度である。正規化処理を行うことにより、全カテゴリにおける確信度が０以上１以下の値に正規化されるため、異なるカテゴリ同士の確信度を比較することが可能になる。例えば、ｋ＝１をカテゴリ「料理」「料理以外」、ｋ＝２をカテゴリ「花」「花以外」とした場合において、ｚ１（１）＝０．８，ｚ２（１）＝０．２，ｚ１（２）＝０．６，ｚ２（２）＝０．４であるとき、入力された画像データ１０００はカテゴリ「料理」に属する可能性が高いと言える。
【０１０１】
また、これにより、画像データ１０００の中に複数のカテゴリに属するものが存在する場合（例えば、画像データ１０００中に「料理」と「花」が写っている場合）においても、異なるカテゴリ間の確信度の比較が適切に行うことができるようになる。
【０１０２】
ステップＳ９において、出力部７０は、正規化処理部６０が出力した正規化後の確信度を出力する。なお、出力部７０の出力先は、特に限定されない。出力部７０は、例えば、ＬＣＤモニタ１０等に出力してもよいし、所定のプログラム等に出力してもよい。したがって、ユーザがＬＣＤモニタ１０等に表示された入力画像データ１０００の確信度を参考にして手作業でラベリングを行ってもよいし、所定のプログラム等により出力部７０が出力した確信度に基づいて自動でラベリングを行ってもよい。
【０１０３】
［第２の実施の形態］
次に、第２の実施形態に係る画像処理装置１について説明する。第２の実施形態に係る画像処理装置１では、第１の実施形態に係る画像処理装置１においてバイアス値及び重みデータの学習を行う。画像処理装置１の外観、内部構成、及びカテゴリ識別処理については、第１の実施形態と同様であるため説明を省略する。すなわち、第２の実施形態では、第１の実施形態に係る画像処理装置１の学習処理に必要な箇所を説明する。
【０１０４】
＜画像処理装置の画像処理エンジンの機能構成＞
第２の実施形態に係る画像処理装置１の画像処理エンジン１００の機能構成について説明する。図２０は、第２の実施形態に係る画像処理装置の画像処理エンジンの機能構成の一例を示すブロック図である。
【０１０５】
第２の実施形態に係る画像処理装置１の画像処理エンジン１００の機能構成は、学習画像データ４０００及び教師データ５０００を有する点が第１の実施形態と異なる。なお、第１の実施形態において説明したように学習画像データ４０００と教師データ５０００は学習データを構成する。
【０１０６】
学習画像データ４０００は、点線６０００Ａ及び点線６０００Ｂで示すバイアス値及び重みデータの学習に用いる画像データである。なお、学習とは、学習画像データ４０００の出力結果が教師データ５０００に適合するように、バイアス値及び重みデータの値を更新することである。
【０１０７】
教師データ５０００は、学習画像データ４０００の正解ラベルである。すなわち、教師データ５０００は、学習画像データ４０００がいずれのカテゴリに属するかを示す情報である。
【０１０８】
＜処理の詳細＞
次に、第２の実施形態に係る画像処理装置１の学習処理に説明する。図２１は、第２の実施形態に係る画像処理装置の学習処理の一例を示すフローチャートである。
【０１０９】
ステップＳ１１において、入力部２０は、学習画像データ４０００及び教師データ５０００を入力する。なお、画像処理装置１は、様々な画像データを適切なカテゴリに分類することができるようにするため、学習画像データ４０００及び教師データ５０００を数千〜数万データ入力させて学習を行うことが望ましい。
【０１１０】
ステップＳ１２において、畳み込み処理部３０及び全結合処理部５０は、学習画像データ４０００及び教師データ５０００に基づき、バイアス値及び重みデータの更新（学習）を行う。このような学習は、例えば、誤差逆伝播法などの従来からある方法を用いればよい。
【０１１１】
ここで、点線６０００Ａで示すバイアス値及び重みデータは、すべての学習画像データ４０００及び教師データ５０００に基づいて更新される。他方、点線６０００Ｂで示すバイアス値及び重みデータは、学習画像データ４０００が属するカテゴリに応じて（すなわち、教師データ５０００が示すカテゴリに応じて）、対応するバイアス値２４００及び重みデータ５０００のみが更新される。例えば、学習画像データ４０００及び教師データ５０００がカテゴリ「料理」「料理以外」の学習データである場合、このカテゴリに対応する全結合処理部５０１が用いるバイアス値２４００１及び重みデータ３４００１のみが学習対象である。同様に、例えば、学習画像データ４０００及び教師データ５０００がカテゴリ「花」「花以外」の学習データである場合、このカテゴリに対応する全結合処理部５０２が用いるバイアス値２４００２及び重みデータ３４００２のみが学習対象である。
【０１１２】
なお、上記のステップＳ１２において、バイアス値及び重みデータの学習を十分に行った後においては点線６０００Ａで示すバイアス値及び重みデータの学習は行わなくてもよい。例えば、バイアス値及び重みデータの学習が十分に行われた後において、カテゴリを追加した場合、この追加したカテゴリに対応するバイアス値２４００及び重みデータ３４００のみ学習を行えばよい。これにより、学習処理に伴う計算量を削減することができる。
【０１１３】
［第３の実施の形態］
次に、第３の実施形態に係る画像処理装置１について説明する。画像データをカテゴリに分類する際に、一般のカテゴリ間における識別と、誤認識が発生しやすいカテゴリ間の識別とを分けて処理する方法も知られているが（例えば特開２０１３−２５０８０９号公報参照）、このような方法では適切な学習が行われない場合がある。例えば、カテゴリ「花」と、「花」と誤認識しやすいカテゴリ「木漏れ日」とがある場合において、「木漏れ日」の学習画像データの数が「花」の学習画像データの数に比して極端に少ない数しか用意することができない場合、適切な学習がされない場合がある。本実施形態に係る画像処理装置１では、このような場合においても画像データの適切なカテゴリ分類を行うことができるようにするものである。なお、本実施形態では、第１の実施形態と異なる箇所について主に説明を行い、第１の実施形態と同一の機能を有する箇所又は同一の処理を行う箇所については、適宜説明を省略又は簡略化する。
【０１１４】
＜画像処理装置の画像処理エンジンの機能構成＞
まず、第３の実施形態に係る画像処理装置１の画像処理エンジン１００の機能構成について説明する。図２２は、第３の実施形態に係る画像処理装置の画像処理エンジンの機能構成の一例を示すブロック図である。
【０１１５】
第４層の全結合処理部５０Ａは、本実施形態に係る畳み込みニューラルネットワークＮにより予め学習されたバイアス値２４００Ａ及び重みデータ３４００Ａに基づいて全結合処理を行った後、画像データを正規化処理部６０に出力する。ここで、本実施形態に係る畳み込みニューラルネットワークＮの全結合処理部５０Ａは、カテゴリ毎に全結合処理部５０Ａを有する。また、本実施形態に係るカテゴリは、「一般カテゴリ」と「特殊カテゴリ」とから構成されている。したがって、例えば、一般カテゴリが「花」、「料理」、「車」、「木漏れ日」であり、特殊カテゴリが「花」である場合、全結合処理部８０は一般カテゴリの全結合処理部５０Ａ１〜５０Ａ４及び特殊カテゴリの全結合処理部５０Ａ５を有する。一般に、カテゴリ数がｎ、一般カテゴリ数がｍ、特殊カテゴリ数がｎ−ｍである場合、全結合処理部５０Ａは、一般カテゴリの全結合処理部５０Ａ１〜５０Ａｍ及び特殊カテゴリの全結合処理部５０Ａｍ＋１〜５０Ａｎを有する。よって、本実施形態に係る畳み込みニューラルネットワークＮでは、カテゴリ数（一般カテゴリ数又は特殊カテゴリ数）が増減した場合、それぞれ対応する全結合処理部５０Ａを追加又は削除する必要がある。なお、他方で、カテゴリ数が増減した場合においても畳み込み処理部３０及びプーリング処理部４０は追加・削除する必要はない。
【０１１６】
ここで、本実施形態に係るカテゴリを構成する「一般カテゴリ」と「特殊カテゴリ」について説明する。「一般カテゴリ」とは、例えば、「花」、「料理」、「車」、「木漏れ日」等の入力された画像データが分類されるカテゴリである。本実施形態では、一般カテゴリ毎に、そのカテゴリに分類される度合いを示す確信度と、そのカテゴリに分類されない度合いを示す確信度が算出される。例えば、一般カテゴリ「花」に対して、入力された画像データが「花」に分類される度合いを示す確信度と、「花以外」に分類される度合い示す確信度とが算出される。
【０１１７】
他方、「特殊カテゴリ」とは、ある一般カテゴリと誤認識しやすい一般カテゴリであるにも関わらず、十分な学習データを準備できなかった場合に、これらの誤認識しやすい一般カテゴリ間を識別するためのカテゴリである。例えば、一般カテゴリの「花」と「木漏れ日」が誤認識しやすいカテゴリであり、一般カテゴリ「木漏れ日」の正例の学習画像データが一般カテゴリ「花」の正例の学習画像データに比して極端に少ない量しか準備できなかった場合、特殊カテゴリ「花」を設けることで、一般カテゴリ「花」と一般カテゴリ「木漏れ日」とを識別する。
【０１１８】
上記の特殊カテゴリについて、さらに詳しく説明すると、例えば、一般カテゴリ「花」の正例の学習画像データが１万枚準備できた一方で、一般カテゴリ「木漏れ日」の正例の学習画像データ（すなわち、一般カテゴリ「花」の負例の学習画像データ）が５００枚しか準備できなった場合、次のような問題が発生する。
（１）例えば、目標認識率が９０％で一般カテゴリ「花」が上記の数の正例及び負例の学習画像データで学習されている場合において、仮に、学習に用いた画像データすべてが一般カテゴリ「花」に分類されると認識されたとしても、目標認識率が達成されてしまう。
（２）他方で、一般カテゴリ「花」の正例の学習画像データの数を例えば５００枚に減らせば、上記（１）の問題は解決するが（すなわち、一般カテゴリ「花」と「木漏れ日」が認識される）、この場合、その他のカテゴリ（例えば、「料理」等）との間で認識率が低下する。
【０１１９】
そこで、本実施形態では、正例に比して極端に少ない負例を用いて学習された特殊カテゴリを設ける。例えば、一般カテゴリ「花」は正例と負例とがそれぞれ１万枚の学習画像データで学習されているのに対して、特殊カテゴリ「花」は４０００枚の正例の学習画像データと、誤認識されすい一般カテゴリ「木漏れ日」の正例である５００枚の負例の学習画像データとで学習されている。このように、本実施形態のカテゴリは、入力された画像データが分類される「一般カテゴリ」と、誤認識しやすい一般カテゴリ間を識別するための「特殊カテゴリ」とから構成される。これにより、後述するように、誤認識されやすい一般カテゴリの学習が十分でない（すなわち、正例の学習画像データが十分に準備できなかった）場合においても、入力された画像データの認識を行うことができる。
【０１２０】
図２２の説明に戻り、バイアス値２４００Ａ及び重みデータ３４００Ａは、各全結合処理部５０Ａ毎に有する。すなわち、例えば、一般カテゴリが「花」、「料理」、「車」、「木漏れ日」、特殊カテゴリが「花」である場合、一般カテゴリ「花」に対応する一般カテゴリの全結合処理部５０Ａ１が用いるバイアス値２４００Ａ１及び重みデータ３４００Ａ１を有する。同様に、一般カテゴリ「料理」に対応する一般カテゴリの全結合処理部５０Ａ２が用いるバイアス値２４００Ａ２及び重みデータ３４００Ａ２、一般カテゴリ「車」に対応する一般カテゴリの全結合処理部５０Ａ３が用いるバイアス値２４００Ａ３及び重みデータ３４００Ａ３、一般カテゴリ「木漏れ日」に対応する一般カテゴリの全結合処理部５０Ａ４が用いるバイアス値２４００Ａ４及び重みデータ３４００Ａ４を有する。また、特殊カテゴリ「花」に対応する特殊カテゴリの全結合処理部８０５が用いるバイアス値２４００Ａ５及び重みデータ３４００Ａ５を有する。一般に、一般カテゴリの全結合処理部５０Ａ１〜５０Ａｍのそれぞれが用いるバイアス値２４００Ａ１〜２４００Ａｍ及び重みデータ３４００Ａ１〜３４００Ａｍと、特殊カテゴリの全結合処理部８０ｍ＋１〜８０ｎのそれぞれが用いるバイアス値２４００Ａｍ＋１〜２４００Ａｎ及び重みデータ３４００Ａｍ＋１〜３４００Ａｎとを有する。
【０１２１】
したがって、バイアス値２４００Ａ及び重みデータ３４００Ａは、畳み込みニューラルネットワークＮにより予め一般カテゴリ毎又は特殊カテゴリ毎に学習された値（データ）である。他方、バイアス値２１００〜２３００及び重みデータ３１００〜３３００は、一般カテゴリのすべてに対して共通に、畳み込みニューラルネットワークＮにより予め学習された値（データ）である（なお、特殊カテゴリの学習の際にはバイアス値２１００〜２３００及び重みデータ３１００〜３３００は更新されない）。このようなバイアス値２１００〜２３００及び重みデータ３１００〜３３００は、畳み込みニューラルネットワークＮのネットワーク係数又はネットワーク結合係数と呼ばれ、第１の係数の一例である。また、バイアス値２４００Ａ１〜２４００Ａｍ及び重みデータ３４００Ａ１〜３４００Ａｍは、第２の係数の一例であり、バイアス値２４００Ａｍ＋１〜２４００Ａｎ及び重みデータ３４００Ａｍ＋１〜３４００Ａｎは、第３の係数の一例である。
【０１２２】
複合判定処理部８０は、正規化処理部６０の処理結果に基づき、一般カテゴリの確信度と、この一般カテゴリに対応する特殊カテゴリの確信度に基づき、入力された画像データが一般カテゴリ又はこの一般カテゴリと誤認識されやすい他の一般カテゴリのいずれに分類されるかを判定する。例えば、一般カテゴリ「花」、一般カテゴリと誤認識されやすい一般カテゴリが「木漏れ日」、一般カテゴリ「花」に対応する特殊カテゴリ「花」がある場合、一般カテゴリ「花」の確信度と特殊カテゴリ「花」の確信度とに基づき、入力された画像データが一般カテゴリ「花」に分類されるのか又は一般カテゴリ「木漏れ日」に分類されるのかを判定する。
【０１２３】
出力部７０は、複合判定処理部８０の処理結果に基づき、正規化処理部６０で正規化された確信度を出力する。
【０１２４】
＜処理の詳細＞
次に、第３の実施形態に係る画像処理装置１の処理について説明する。図２３は、第３の実施形態に係る画像処理装置のカテゴリ識別処理の一例のフローチャートである。この処理により、本実施形態に係る画像処理装置１は、入力された画像データが、予め定められた一般カテゴリのいずれに分類されるのかを示す確信度を算出することができる。この算出された確信度により、入力された画像データが分類される一般カテゴリが識別される。
【０１２５】
ステップＳ２１〜Ｓ２６の処理については、それぞれ図４で説明したステップＳ１〜Ｓ６の処理と同様であるため説明を省略する。ただし、ステップＳ２６において畳み込み処理部３０３は、画像データ１６００を全結合処理部５０Ａに出力する。
【０１２６】
ステップＳ２７において、第４層の全結合処理部５０Ａに含まれる一般カテゴリの全結合処理部５０Ａ１〜５０Ａｍは、画像データ１６００を入力し、この画像データ１６００について全結合処理を行う。なお、一般カテゴリの全結合処理部５０Ａ１〜５０Ａｍは、一般カテゴリ毎に存在し、それぞれの一般カテゴリの全結合処理部５０Ａ１〜５０Ａｍに対して画像データ１６００が入力される。例えば、一般カテゴリが「花」、「料理」、「車」、「木漏れ日」の４つである場合、それぞれの一般カテゴリに対応する一般カテゴリの全結合処理部５０Ａ１〜５０Ａ４は、それぞれ画像データ１６００を入力し、それぞれ全結合処理を行う。
【０１２７】
ここで第４層の一般カテゴリの全結合処理について、図２４を用いて説明する。図２４は、第３の実施形態に係る第４層の一般カテゴリの全結合処理の一例を説明するための図である。以降では、ｋを１〜ｍのいずれか自然数であるとして、一般カテゴリの全結合処理部５０Ａｋについて説明する。ここで、ｋは、カテゴリを示す数値であるとする。例えば、ｋ＝１のとき一般カテゴリ「花」を示し、ｋ＝２のとき一般カテゴリ「料理」を示す。
【０１２８】
Ｓｔｅｐ２７１）一般カテゴリの全結合処理部５０Ａｋは、画像データ１６００を入力する。ここで、入力した画像データ１６００の色チャンネルは、１４×１４×６４である。
【０１２９】
Ｓｔｅｐ２７２）一般カテゴリの全結合処理部５０Ａｋは、画像データ１６００の各画素値をベクトル値に変換する。すなわち、１４×１４×６４チャンネルの画像データ１６００の各画素値を１２５４４行１列のベクトル値に変換する。ここで、ベクトル値の各成分の値をｘ１，・・・，ｘ１２５４４とする。
【０１３０】
Ｓｔｅｐ２７３）一般カテゴリの全結合処理部５０Ａｋは、バイアス値２４００及び重みデータ２４００を用いて、積和演算を行う。ここで、バイアス値２４００及び重みデータ３４００のデータ構成について説明する。図２５は、第３の実施形態に係る第４層のバイアス値及び重みデータの一例のデータ構成を説明するための図である。
【０１３１】
図２５（ａ）は、第４層のバイアス値２４００Ａの一例のデータ構成を説明するための図である。図２５（ａ）に示すように、第４層のバイアス値２４００Ａは、一般カテゴリのバイアス値２４００Ａ１，バイアス値２４００Ａ２，・・・，バイアス値２４００Ａｍ及び特殊カテゴリのバイアス値２４００Ａｍ＋１，バイアス値２４００Ａｍ＋２，・・・，バイアス値２４００Ａｎから構成されている。また、一般カテゴリ又は特殊カテゴリのバイアス値２４００Ａｋ（ｋ＝１〜ｎ）は、１行２列のベクトル値である。なお、上述したように、ｋ＝１〜ｍの場合のベクトルの各成分の値ｂ４（ｋ，ｊ）は、畳み込みニューラルネットワークＮにより一般カテゴリ毎に予め学習された値である。他方、ｋ＝ｍ＋１〜ｎの場合のベクトルの各成分の値ｂ４（ｋ，ｊ）は、畳み込みニューラルネットワークＮにより特殊カテゴリ毎に予め学習された値である。ここで、ｊは、該当の一般カテゴリに分類されるか否かを示す数値である。例えば、ｊ＝１のとき該当のカテゴリに分類される場合であり、ｊ＝２のとき該当のカテゴリに分類されない場合である。
【０１３２】
図２５（ｂ）は、第４層の重みデータ３４００Ａの一例のデータ構成を説明するための図である。図２５（ｂ）に示すように、第４層の重みデータ３４００Ａは、一般カテゴリの重みデータ３４００Ａ１，重みデータ３４００Ａ２，・・・，重みデータ３４００Ａｍ及び特殊カテゴリの重みデータ３４００Ａｍ＋１，重みデータ３４００Ａｍ＋２，・・・，重みデータ３４００Ａｎから構成されている。また、一般カテゴリ又は特殊カテゴリの重みデータ３４００Ａｋ（ｋ＝１〜ｎ）は、１２５４４行２列の行列である。なお、上述したように、ｋ＝１〜ｍの場合のこの行列の各成分の値ｗ４（ｉ，ｊ，ｋ）は、畳み込みニューラルネットワークＮにより一般カテゴリ毎に予め学習された値である。他方、ｋ＝ｍ＋１〜ｎの場合のこの行列の各成分の値ｗ４（ｉ，ｊ，ｋ）は、畳み込みニューラルネットワークＮにより特殊カテゴリ毎に予め学習された値である。
【０１３３】
図２４の説明に戻り、一般カテゴリの全結合処理部５０Ａｋは、以下の積和演算を行う。
【０１３４】
【数３】
0006582416.tif 000004
以上のようにして得られた２×１×ｍのデータ（このデータを「確信度」と呼ぶ）を、全結合処理部５０Ａは、正規化処理部６０に出力する。
【０１３５】
なお、上記の積和演算の結果が、入力された画像データ１０００が一般カテゴリｋに分類される場合（ｊ＝１の場合）の算出結果と、入力された画像データ１０００が一般カテゴリｋに分類されない場合（ｊ＝２）の算出結果である。これにより、ある画像データ１０００がある一般カテゴリｋに分類されるのか又は分類されないのかを数値として判定することができる。例えば、ある一般カテゴリｋ（例えば、一般カテゴリ「花」）について、ｙ１（ｋ）の値が０．７、ｙ２（ｋ）の値が０．３である場合、この画像データ１０００は、一般カテゴリｋに分類される場合が高いと判定することができる。換言すれば、あるカテゴリｋについて、ｙ１（ｋ）の値がｙ２（ｋ）の値より高い場合、入力された画像データ１０００はその一般カテゴリｋに分類される可能性が高いといえる（前述した「確信度」との名称はこのためである）他方、あるカテゴリｋについて、ｙ１（ｋ）の値がｙ２（ｋ）の値より小さい場合、入力された画像データ１０００はその一般カテゴリｋに分類される可能性が低いといえる。
【０１３６】
ステップＳ２８において、第４層の全結合処理部５０Ａに含まれる特殊カテゴリの全結合処理部５０Ａｍ＋１〜５０Ａｎは、画像データ１６００を入力し、この画像データ１６００について全結合処理を行う。なお、特殊カテゴリの全結合処理部５０Ａｍ＋１〜５０Ａｎは、特殊カテゴリ毎に存在し、それぞれの特殊カテゴリの全結合処理部５０Ａｍ＋１〜５０Ａｎに対して画像データ１６００が入力される。例えば、特殊カテゴリが「花」、「料理」の２つである場合、それぞれの一般カテゴリに対応する一般カテゴリの全結合処理部５０Ａ１及び５０Ａ２は、それぞれ画像データ１６００を入力し、それぞれ全結合処理を行う。
【０１３７】
ここで第４層の特殊カテゴリの全結合処理について、図２６を用いて説明する。図２６は、第３の実施形態に係る第４層の特殊カテゴリの全結合処理の一例を説明するための図である。以降では、ｋをｍ＋１〜ｎのいずれか自然数であるとして、特殊カテゴリの全結合処理部５０Ａｋについて説明する。ここで、ｋは、カテゴリを示す数値であるとする。例えば、ｋ＝ｍ＋１のとき特殊カテゴリ「花」を示し、ｋ＝ｍ＋２のとき特殊カテゴリ「料理」を示す。
【０１３８】
Ｓｔｅｐ２８１）特殊カテゴリの全結合処理部５０Ａｋは、画像データ１６００を入力する。ここで、入力した画像データ１６００の色チャンネルは、１４×１４×６４である。
【０１３９】
Ｓｔｅｐ２８２）特殊カテゴリの全結合処理部５０Ａｋは、画像データ１６００の各画素値をベクトル値に変換する。すなわち、１４×１４×６４チャンネルの画像データ１６００の各画素値を１２５４４行１列のベクトル値に変換する。ここで、ベクトル値の各成分の値をｘ１，・・・，ｘ１２５４４とする。
【０１４０】
Ｓｔｅｐ２８３）特殊カテゴリの全結合処理部５０Ａｋは、図２５を用いて説明したバイアス値２４００Ａ及び重みデータ２４００Ａを用いて、以下の積和演算を行う。
【０１４１】
【数４】
0006582416.tif 000005
以上のようにして得られた２×１×（ｎ−ｍ）の確信度を、全結合処理部５０Ａは、正規化処理部６０に出力する。
【０１４２】
なお、上記の積和演算の結果が、入力された画像データ１０００が特殊カテゴリｋに分類される場合（ｊ＝１の場合）の算出結果と、入力された画像データ１０００が特殊カテゴリｋに分類されない場合（ｊ＝２）の算出結果である。上記のステップＳ７及びＳ８において算出された確信度を互いに比較することができるようにするため、次のステップＳ２９において正規化処理を行う。
【０１４３】
ステップＳ２９において、正規化処理部６０は、一般カテゴリの全結合処理部５０Ａ１〜５０Ａｍより出力された２×１×ｍのデータ及び特殊カテゴリの全結合処理部５０Ａｍ＋１〜５０Ａｎより出力された２×１×（ｎ−ｍ）のデータをそれぞれ入力し、正規化処理を行う。すなわち、正規化処理部６０は、全結合処理部５０Ａより出力された２×１×ｎのデータを入力し、正規化処理を行う。ここで正規化処理について、図２７を用いて説明する。図２７は、第３の実施形態に係る正規化処理の一例を説明するための図である。
【０１４４】
Ｓｔｅｐ２９１）正規化処理部６０は、全結合処理部５０Ａより出力された２×１×ｎのデータを入力する。
【０１４５】
Ｓｔｅｐ２９２）正規化処理部６０は、一般カテゴリ毎及び特殊カテゴリ毎に、（ｙ１（ｋ），ｙ２（ｋ））について以下の式により正規化を行う。
【０１４６】
【数５】
0006582416.tif 000006
このようにして得られた２×１×ｎのデータが正規化後の確信度である。正規化処理を行うことにより、一般カテゴリ及び特殊カテゴリにおける確信度が０以上１以下の値に正規化されるため、異なるカテゴリ同士の確信度を比較することが可能になる。例えば、ｋ＝１を一般カテゴリ「花」、ｋ＝２を一般カテゴリ「料理」とした場合において、ｚ１（１）＝０．８，ｚ２（１）＝０．２，ｚ１（２）＝０．６，ｚ２（２）＝０．４であるとき、入力された画像データ１０００は一般カテゴリ「料理」よりも一般カテゴリ「花」に分類される可能性が高いと言える。
【０１４７】
また、これにより、画像データ１０００の中に複数の一般カテゴリに属するものが存在する場合（例えば、画像データ１０００中に「花」と「料理」が写っている場合）においても、異なる一般カテゴリ間の確信度の比較が適切に行うことができるようになる。
【０１４８】
さらに、一般カテゴリの確信度と、この一般カテゴリに対応する特殊カテゴリの確信度とに基づき所定の判定を行うことで、誤認識がされやすい一般カテゴリ間において、画像データ１０００がいずれの一般カテゴリに分類されるかを判定することができる。この判定方法については、後述するステップＳ３０〜Ｓ３３において説明する。なお、以降で説明する確信度は、特に断らない限り、ステップＳ２９により正規化された確信度である。また、正規化された確信度は、確信度の候補値の一例である。
【０１４９】
ステップＳ３０において、複合処理判定部８０は、一般カテゴリの確信度が所定の閾値以上か否かを判定する。例えば、複合処理判定部８０は、ｋ＝１である一般カテゴリ「花」の確信度ｙ１（１）が所定の閾値以上か否かを判定する。一般カテゴリの確信度が所定の閾値以上である場合、ステップＳ３１に進む一方、一般カテゴリの確信度が所定の閾値未満である場合、ステップＳ３３に進む。なお、一般カテゴリの確信度が所定の閾値以上と判定された場合であっても、この一般カテゴリに対応する特殊カテゴリが存在しない場合は、ステップＳ３２の処理に進む。すなわち、対応する特殊カテゴリが存在しない場合、ステップＳ３１の処理は実行されない。例えば、対応する特殊カテゴリが存在しない一般カテゴリ「車」について、この一般カテゴリ「車」の確信度が所定の閾値以上であっても、ステップＳ３１の処理は実行せずにステップＳ３２の処理に進む。より一般には、特殊カテゴリｋ＝ｍ＋１，・・・，ｎが存在する場合、これらの特殊カテゴリにそれぞれ対応する一般カテゴリｋ＝１，・・・，ｎ−ｍの確信度が、それぞれ所定の閾値以上である場合、ステップＳ３１に進む一方、所定の閾値未満である場合、ステップＳ３３に進む。他方、対応する特殊カテゴリが存在しない一般カテゴリｋ＝ｎ−ｍ＋１，・・・，ｍの確信度が、それぞれ所定の閾値以上である場合、ステップＳ３２に進む一方、所定の閾値未満である場合、ステップＳ３３に進む。
【０１５０】
なお、所定の閾値と比較する一般カテゴリの確信度は、この一般カテゴリに分類される確信度（すなわち、ｙ１（ｋ））又は分類されない確信度（すなわち、ｙ２（ｋ））のいずれか一方を用いればよい。また、所定の閾値をどのような値に設定するかは設計事項であり、適宜変更可能である。一般に、閾値を高く設定すると誤認識の発生が防止される一方で、複数の一般カテゴリに属するものが写っている画像データ等を分類する場合、いずれのカテゴリにも分類されないと認識されることがある。
【０１５１】
ステップＳ３１において、複合処理判定部８０は、特殊カテゴリの確信度が所定の閾値以上か否かを判定する。すなわち、例えば、複合処理判定部８０は、ｋ＝m＋１である特殊カテゴリ「花」の確信度ｙ１（１）が所定の閾値以上か否かを判定する。より一般には、特殊カテゴリｋ＝ｍ＋１，・・・，ｎの確信度が所定の閾値以上か否かを判定する。特殊カテゴリの確信度が所定の閾値以上である場合、ステップＳ３２に進む一方、一般カテゴリの確信度が閾値未満である場合、ステップＳ３３に進む。
【０１５２】
ステップＳ３２において、複合処理判定部８０は、入力された画像データ１０００が特殊カテゴリに対応する一般カテゴリに分類されると判定する。
【０１５３】
ステップＳ３３において、複合処理判定部８０は、入力された画像データ１０００は特殊カテゴリに対応する一般カテゴリに分類されないと判定する。
【０１５４】
上記のステップＳ３２及びステップＳ３３について、一般カテゴリ「花」（確信度ｙ１（１））及び特殊カテゴリ「花」（確信度ｙ１（ｍ＋１））について一例として説明する。ステップＳ３１においてｙ１（１）が所定の閾値以上であると判定された場合、画像データ１０００は一般カテゴリ「花」に分類される可能性が高いといえる。しかし、一般カテゴリ「花」は、このカテゴリと誤認識しやすい一般カテゴリ「木漏れ日」に分類される学習画像データで十分な学習がされていない。そこで、ステップＳ３２においてｙ１（ｍ＋１）が所定の閾値以上であるか否かを判定する。ここで、特殊カテゴリ「花」は、誤認識しやすい一般カテゴリ「木漏れ日」に分類される学習画像データの数に合わせて正例の数を調整した上で、全結合処理部５０Ａにおけるバイアス値２４００Ａ及び重みデータ２４００Ａのみを更新して学習を行っている。したがって、ｙ１（１）が所定の閾値以上であってもｙ１（ｍ＋１）が所定の閾値未満である場合は、画像データ１０００は一般カテゴリ「花」に分類される可能性が低いといえる。すなわち、この場合、一般カテゴリ「花」の確信度を算出する際において誤認識が発生しており、画像データ１０００は一般カテゴリ「木漏れ日」に分類される可能性が高いといえる。これにより、学習が十分に行われていない一般カテゴリ間における誤認識が防止される。
【０１５５】
ステップＳ３４において、出力部７０は、確信度を出力する。ここで出力される確信度は、対応する特殊カテゴリが存在しない一般カテゴリについては、正規化後の確信度である。他方、対応する特殊カテゴリが存在する一般カテゴリについては、ステップＳ１２において一般カテゴリに分類されると判定された場合は一般カテゴリの正規化後の確信度を出力し、ステップＳ３３において一般カテゴリに分類されないと判定された場合は一般カテゴリの確信度は出力しない。なお、特殊カテゴリの確信度は出力しない。
【０１５６】
［第４の実施の形態］
次に、第４の実施形態に係る画像処理装置１について説明する。第４の実施形態に係る画像処理装置１では、第３の実施形態に係る画像処理装置１においてバイアス値及び重みデータの学習を行う。画像処理装置１の外観、内部構成、及びカテゴリ識別処理については、第３の実施形態と同様であるため説明を省略する。すなわち、第４の実施形態では、第３の実施形態に係る画像処理装置１の学習処理に必要な箇所を説明する。
【０１５７】
＜画像処理装置の画像処理エンジンの機能構成＞
第４の実施形態に係る画像処理装置１の画像処理エンジン１００の機能構成について説明する。図２８は、第４の実施形態に係る画像処理装置の画像処理エンジンの機能構成の一例を示すブロック図である。
【０１５８】
第４の実施形態に係る画像処理装置１の画像処理エンジン１００の機能構成は、学習画像データ４０００及び教師データ５０００を有する点が第３の実施形態と異なる。なお、上述したように学習画像データ４０００と教師データ５０００は学習データを構成する。
【０１５９】
学習画像データ４０００は、点線６０００Ａ及び点線６０００Ｃで示すバイアス値及び重みデータの学習に用いる画像データである。なお、学習とは、学習画像データ４０００の出力結果が教師データ５０００に適合するように、バイアス値及び重みデータの値を更新することである。ただし、教師データ５０００が一般カテゴリを示す情報である場合は、点線６０００Ａ及び点線６０００Ｃで示すバイアス値及び重みデータの学習を行う一方、教師データ５０００が特殊カテゴリを示す情報である場合は、点線６０００Ｃで示すバイアス値及び重みデータのみの学習を行う。
【０１６０】
教師データ５０００は、学習画像データ４０００の正解ラベルである。すなわち、教師データ５０００は、学習画像データ４０００がいずれのカテゴリに属するかを示す情報である。
【０１６１】
＜処理の詳細＞
次に、第４の実施形態に係る画像処理装置１の学習処理に説明する。図２２は、第４の実施形態に係る画像処理装置の学習処理の一例を示すフローチャートである。
【０１６２】
ステップＳ４１において、入力部２０は、学習画像データ４０００及び教師データ５０００を入力する。なお、画像処理装置１は、様々な画像データを適切なカテゴリに分類することができるようにするため、学習画像データ４０００及び教師データ５０００を数千〜数万データ入力させて学習を行うことが望ましい。このとき、学習データは、カテゴリ毎に、一定数（例えば１２８データ）毎に繰り返し入力することが好ましい。
【０１６３】
ステップＳ４２において、入力された教師データ５０００が一般カテゴリに含まれるカテゴリを示す情報であるか否かを判定する。教師データ５０００が一般カテゴリに含まれるカテゴリを示す情報である場合、ステップＳ４３に進む一方、特殊カテゴリに含まれるカテゴリを示す情報である場合、ステップＳ４４に進む。
【０１６４】
ステップＳ４３において、畳み込み処理部３０及び一般カテゴリの全結合処理部５０Ａ１〜５０Ａｍは、学習画像データ４０００及び教師データ５０００に基づき、点線６０００Ａ及び点線６０００Ｃで示すバイアス値及び重みデータの更新（学習）を行う。このような学習は、例えば、誤差逆伝播法などの従来からある方法を用いればよい。ここで、点線６０００Ａで示すバイアス値及び重みデータは、すべての学習画像データ４０００及び教師データ５０００に基づいて更新される。他方、点線６０００Ｃで示すバイアス値及び重みデータは、学習画像データ４０００が属する一般カテゴリに応じて（すなわち、教師データ５０００が示す一般カテゴリに応じて）、対応するバイアス値２４００Ａ及び重みデータ３４００Ａのみが更新される。例えば、学習画像データ４０００及び教師データ５０００が一般カテゴリ「花」の学習データである場合、この一般カテゴリに対応する一般カテゴリの全結合処理部５０Ａ１が用いるバイアス値２４００Ａ１及び重みデータ３４００Ａ１のみが学習対象である。
【０１６５】
なお、上記のステップＳ４３において、バイアス値及び重みデータの学習を十分に行った後においては点線６０００Ａで示すバイアス値及び重みデータの学習は行わなくてもよい。例えば、バイアス値及び重みデータの学習が十分に行われた後において、一般カテゴリを追加した場合、この追加した一般カテゴリに対応するバイアス値２４００Ａ及び重みデータ３４００Ａのみ学習を行えばよい。これにより、学習処理に伴う計算量を削減することができる。
【０１６６】
ステップＳ４４において、特殊カテゴリの全結合処理部５０Ａｍ＋１〜５０Ａｎは、学習画像データ４０００及び教師データ５０００に基づき、点線６０００Ｃで示すバイアス値及び重みデータの更新（学習）を行う。このような学習は、上記と同様に、例えば、誤差逆伝播法などの従来からある方法を用いればよい。ここで、点線６０００Ｃで示すバイアス値及び重みデータは、学習画像データ４０００が属する特殊カテゴリに応じて（すなわち、教師データ５０００が示す特殊カテゴリに応じて）、対応するバイアス値２４００Ａ及び重みデータ３４００Ａのみが更新される。例えば、学習画像データ４０００及び教師データ５０００が特殊カテゴリ「花」の学習データである場合、この特殊カテゴリに対応する特殊カテゴリの全結合処理部５０Ａｍ＋１が用いるバイアス値２４００Ａｍ＋１及び重みデータ３４００Ａｍ＋１のみが学習対象である。
【０１６７】
［第５の実施の形態］
次に、第５の実施形態に係る画像処理装置１について説明する。第５の実施形態は、第２の実施形態において説明した画像処理装置１の学習処理について、より詳しく説明するものである。なお、第４の実施形態において説明した学習処理についても略同様であるため、適宜、第４の実施形態に係る学習処理についても併せて説明する。
【０１６８】
＜処理の概要＞
まず、本実施形態に係る画像処理装置１の学習処理の概要について説明する。図３０は、第５の実施形態に係る学習処理の一例の概要を説明するための図である。本実施形態では、一例として、誤差逆伝播法を用いてバイアス値２１００〜２４００及び重みデータ３１００〜３４００を学習（更新）する場合について説明する。図３０に示すように、誤差逆伝播法では、順方向処理と逆方向処理とに分けられる。順方向処理とは、畳み込みニューラルネットワークＮの下位層から上位層へ向かう処理であり、他方、逆方向処理とは、畳み込みニューラルネットワークＮの上位層から下位層へ向かう処理である。
【０１６９】
すなわち、まず、学習画像データ４０００と教師データ５０００とを畳み込みニューラルネットワークＮに入力し、学習画像データ４０００に基づき畳み込み処理及びプーリング処理〜全結合処理を行う（ステップＳ５１〜Ｓ５２）。これは、第１の実施形態（又は第３の実施形態）で説明したカテゴリ識別処理と同様の処理が行われる。
【０１７０】
次に、教師データ５０００に基づき、各全結合処理部５０について学習対象であるか否かを判定し（ステップＳ５３）、判定対象の全結合処理部５０における出力結果と教師データ５０００との誤差を算出する（ステップＳ５４）。
【０１７１】
続いて、算出された誤差に基づき逆方向の全結合処理〜畳み込み処理及びプーリング処理を行う（ステップＳ５５〜Ｓ５６）。そして、逆方向の全結合処理〜畳み込み処理及びプーリング処理の結果に基づいて、ネットワーク係数（バイアス値２１００〜２４００及び重みデータ３１００〜３４００）の更新を行う（ステップＳ５７）。
【０１７２】
このように、誤差逆伝播法では、順方向処理における出力値と教師データとの誤差を算出し、この誤差を上位層から下位層に伝播させることにより、ネットワーク係数の更新を行う。
【０１７３】
＜処理の詳細＞
次に、第５の実施形態に係る画像処理装置１の処理の詳細について説明する。図３１は、第５の実施形態に係る学習処理の一例を示すフローチャートである。
【０１７４】
ステップＳ６１において、入力部２０は、ミニバッチ数分の学習画像データ４０００と教師データ５０００を入力する。ここで、ミニバッチ数とは、例えば数十ないし数百の数である。したがって、本実施形態に係る学習処理は、数千ないし数万の数の学習画像データ４０００及び教師データ５０００に対して、ミニバッチ数毎に、ステップＳ６１〜ステップＳ６７の処理を繰り返し実行する。
【０１７５】
なお、カテゴリが一般カテゴリと特殊カテゴリに分けられる場合（第４の実施形態の場合）、まず、一般カテゴリの学習画像データ４０００及び教師データ５０００について学習処理を行う。その後、特殊カテゴリの学習画像データ４０００及び教師データ５０００について学習を行えばよい。
【０１７６】
ステップＳ６２において、畳み込み処理部３０、プーリング処理部４０、及び全結合処理部５０は、順方向の処理を実行する。すなわち、入力部２０により入力された学習画像データ４０００に基づき、カテゴリ識別処理と同様の処理を行う。
【０１７７】
ステップＳ６３において、正規化処理部６０は、教師データ５０００に基づき、各全結合処理部５０について、学習対象か否かを判定する。すなわち、正規化処理部６０は、教師データ５０００に基づき、学習画像データ４０００が属するカテゴリに対応する全結合処理部５０を学習対象であると判定する。ここで学習対象であると判定された全結合処理部５０が用いるバイアス値２４００及び重みデータ３４００が、第４層における更新対象のネットワーク係数である。このように、第４層では、すべてのバイアス値２４００及び重みデータ３４００を更新するのではなく、学習対象の全結合処理部５０が用いるバイアス値２４００及び重みデータ３４００のみを更新する。
【０１７８】
例えば、学習画像データ４０００がカテゴリ「花」に属する場合（すなわち、教師データ５０００の値が例えば（「花」，「花以外」）＝（１，０））、カテゴリ「花」に対応する全結合処理部５０が学習対象であると判定される。したがって、カテゴリ「花」に対応する全結合処理部５０が用いるバイアス値２４００及び重みデータ３４００が、第４層における更新対象のネットワーク係数である。
【０１７９】
なお、学習対象と判定される全結合処理部５０は、２以上であってもよい。つまり、学習画像データ４０００がカテゴリ「花」と「車」に属する場合、この２つカテゴリ「花」及び「車」にそれぞれ対応する全結合処理部５０を学習対象であると判定してもよい。
【０１８０】
ステップＳ６４において、正規化処理部６０は、上記において学習対象と判定された全結合処理部５０の出力値と教師データ５０００とに基づき、誤差を算出する。具体的には、学習対象と判定された全結合処理部５０の出力値を正規化処理部６０により正規化した値（ｚ１，ｚ２）と、教師データ５０００の値（Ｔ１，Ｔ２）との誤差δ＝（ｚ１−Ｔ１，ｚ２−Ｔ２）を算出する。ここで算出された誤差δが、下位層に伝播される値であり、この誤差δが小さくなるようにバイアス値及び重みデータが更新される。
【０１８１】
ステップＳ６５において、全結合処理部５０は、逆方向の全結合処理を行う。なお、ここで全結合処理を行う全結合処理部５０は、上記のステップＳ６３において学習対象であると判定された全結合処理部５０である。このように、逆方向の処理においては、すべての全結合処理部５０に誤差δを伝播させるのではなく、学習対象の全結合処理部５０のみに誤差δを伝播させる。ここで、上記のステップＳ６３において学習対象である判定されたカテゴリｋの全結合処理部５０ｋの逆方向の全結合処理について、図３２を用いて説明する。図３２は、第５の実施形態に係る逆方向の全結合処理の一例を説明するための図である。
【０１８２】
Ｓｔｅｐ６５１）全結合処理部５０ｋは、正規化処理部６０から誤差δ＝δｉｎ＝（δｉｎ，１，δｉｎ，２）を入力する。
【０１８３】
Ｓｔｅｐ６５２）全結合処理部５０ｋは、カテゴリｋの重みデータ３４００ｋに基づき出力値δｉｎ，ｉを算出する。
【０１８４】
Ｓｔｅｐ６５３）全結合処理部５０ｋは、上記の算出された出力値δｉｎ，ｉ（１２５４４次元のベクトルデータ）を、１４×１３×６４チャンネルのデータδｏｕｔ，ｍ，ｎ，ｌに変換する。
【０１８５】
Ｓｔｅｐ６５４）全結合処理部５０ｋは、δｏｕｔ，ｍ，ｎ，ｌを出力する。
【０１８６】
ここで、上記のステップＳ６５において、全結合処理部５０ｋは、誤差δｉｎに基づきネットワーク係数の勾配を計算し、同一カテゴリ毎にミニバッチ数分足し合わせて、例えばＳＲＡＭ１０９等の記憶装置に格納しておく。すなわち、全結合処理部５０ｋは、以下を計算し、計算結果を同一カテゴリ毎に足し合わせて記憶装置に格納する。
【０１８７】
【数６】
0006582416.tif 000007
ステップＳ６６において、全結合処理部５０ｋは、下位層に誤差δｏｕｔ，ｍ，ｎ，ｌを伝播させるか否かを判定する。下位層に誤差δｏｕｔ，ｍ，ｎ，ｌを伝播させる場合ステップＳ６７に進み、他方、下位層に誤差δｏｕｔ，ｍ，ｎ，ｌを伝播させない場合、ステップＳ６８に進む。
【０１８８】
ここで、下位層に誤差δｏｕｔ，ｍ，ｎ，ｌを伝播させない場合とは、例えば下位層（畳み込み処理部３０及びプーリング処理部４０）のバイアス値及び重みデータが十分に学習されている場合等である。また、特殊カテゴリの学習画像データ４０００及び教師データ５０００について学習する場合（第４の実施形態の場合）も下位層に誤差δｏｕｔ，ｍ，ｎ，ｌを伝播させない。上記のような判定処理は、ネットワーク係数の学習状況や教師データ５０００の値に基づいて全結合処理部５０が判断してもよいし、誤差δｏｕｔ，ｍ，ｎ，ｌを下位層に伝播させるか否かをユーザが選択するようにしてもよい。
【０１８９】
ステップＳ６７において、畳み込み処理部３０及びプーリング処理部３０は、逆方向の畳み込み処理及びプーリング処理を行う。以降では、第３層における逆方向の畳み込み処理及び第２層における逆方向のプーリング処理について説明する。第２層及び第１層における逆方向の畳み込み処理は、第３層における逆方向の畳み込み処理と、データのチャンネル数を除き略同様であるため説明を省略する。また、第１層における逆方向のプリーング処理は、第２層における逆方向のプーリング処理と、データのチャンネル数を除き略同様であるため説明を省略する。
【０１９０】
まず、第３層における逆方向の畳み込み処理について、図３３を用いて説明する。図３３は、第５の実施形態に係る逆方向の第３層の畳み込み処理の一例を説明するための図である。
【０１９１】
Ｓｔｅｐ６７１）畳み込み処理部３０３は、上位層から誤差δｏｕｔ，ｍ，ｎ，ｌを入力する。ここで入力された誤差δｏｕｔ，ｍ，ｎ，ｌを、「δｉｎ，ｍ，ｎ，ｌ」とする。そして、畳み込み処理部３０３は、誤差δｉｎ，ｍ，ｎ，ｌに所定の活性化関数を適用する。所定の活性化関数としては、例えば、ｆ（ｘ）＝ｍａｘ（０，ｘ）で定義される関数が挙げられる。
【０１９２】
Ｓｔｅｐ６７２）畳み込み処理部３０３は、重みデータ３３００から３×３×６４のフィルタを生成し、上記の所定の活性化関数を適用した後の誤差δｉｎ，ｍ，ｎ，ｌに、当該フィルタを適用する。これは、順方向の畳み込み処理と同様に、所定の活性化関数を適用した後の誤差δｉｎ，ｍ，ｎ，ｌに、フィルタの位置をずらしながら全体に対して行い、結果を足し合わせることにより行う。
【０１９３】
Ｓｔｅｐ６７３）畳み込み処理部３０３は、上記のフィルタを適用後の誤差δｏｕｔ，ｍ，ｎ，ｌを出力する。
【０１９４】
ここで、上記のステップＳ６６において、畳み込み処理部３０３は、誤差δｉｎ，ｍ，ｎ，ｌに基づきネットワーク係数の勾配を計算し、ミニバッチ数分足し合わせて、例えばＳＲＡＭ１０９等の記憶装置に格納しておく。ここで、誤差δｏｕｔ，ｍ，ｎ，ｌの１点（１つの値）に対して、３×３×６４のフィルタを５７６×１次元の型に変形すれば、ネットワーク係数の勾配は、以下で計算することができる。
【０１９５】
【数７】
0006582416.tif 000008
次に、第２層における逆方向のプーリング処理について、図３４を用いて説明する。図３４は、第５の実施形態に係る逆方向の第２層のプーリング処理の一例を説明するための図である。
【０１９６】
Ｓｔｅｐ６７４）プーリング処理部４０２は、誤差δｏｕｔ，ｍ，ｎ，ｌを入力する。ここで入力された誤差δｏｕｔ，ｍ，ｎ，ｌを、「δｉｎ，ｍ，ｎ，ｌ」とする。
【０１９７】
Ｓｔｅｐ６７５）プーリング処理部４０２は、順方向の処理において最大値を出力した画素値に対して、対応する誤差δｉｎ，ｍ，ｎ，ｌを加算する。すなわち、順方向の処理において出力される各最大値をＭｍ，ｎ，ｌとすれば、それぞれのＭｍ，ｎ，ｌに対してδｏｕｔ，ｍ，ｎ，ｌを加算して、誤差δｏｕｔ，ｍ'，ｎ'，ｌを生成する。ここで、ｍ'＝１，・・・２８、ｎ'＝１，・・・２８である。
【０１９８】
Ｓｔｅｐ６７６）プーリング処理部４０２は、上記で生成された２８×２８×６４の誤差δｏｕｔ，ｍ'，ｎ'，ｌを出力する。このようにして生成された２８×２８×６４の誤差δｏｕｔ，ｍ'，ｎ'，ｌが畳み込み処理部５０２に伝播される。
【０１９９】
ステップＳ６８において、畳み込み処理部３０及び全結合処理部５０は、バイアス値２１００〜２４００及び重みデータ３１００〜３４００を更新する。なお、上記のステップＳ６６で下位層に誤差を伝播させないと判定された場合、バイアス値２１００〜２３００及び重みデータ３１００〜３３００は更新されない（すなわち、畳み込み処理部３０は、ネットワーク係数の更新を行わない）。
【０２００】
ここで、全結合処理部５０は、例えば以下（すなわち、勾配降下法）によりバイアス値２４００及び重みデータ３４００を更新する。なお、以下の式中におけるｓｕｍ（・）は、上記のステップＳ６５において記憶装置に格納されたネットワーク係数の勾配の合計値である。また、あるカテゴリｋにおけるｗ４（ｉ，ｊ，ｋ）をｗｉｊ、ｂ４（ｋ，ｊ）をｂｊと表す。したがって、以下の式はカテゴリ毎（すなわち、全結合処理部５０毎）に計算され、当該全結合処理部５０に対応するバイアス値３４００及び重みデータ３４００が更新される。
【０２０１】
【数８】
0006582416.tif 000009
また、畳み込み処理部３０は、例えば以下（すなわち、勾配降下法）によりバイアス値２１００〜２３００及び重みデータ３１００〜３３００を更新する。なお、以下の式中におけるｓｕｍ（・）は、上記のステップＳ６６において記憶装置に格納されたネットワーク係数の勾配の合計値である。また、第ｘ層におけるｗｘ（ｉ，ｌ）をｗｉｌ、ｂｘ（ｌ）をｂ（ｌ）と表す。したがって、以下の式は階層毎に計算され、当該階層における畳み込み処理部３０に対応するバイアス値及び重みデータが更新される。
【０２０２】
【数９】
0006582416.tif 000010
以上により、畳み込みニューラルネットワークＮのバイアス値２１００〜２４００及び重みデータ３１００〜３４００が学習（更新）される。
【０２０３】
＜まとめ＞
以上により第１の実施形態に係る画像処理装置１は、畳み込みニューラルネットワークＮを用いて、入力された画像データ１０００がいずれのカテゴリに属するかの確信度を算出することができる。このとき、畳み込み処理部３０及びプーリング処理部４０は全カテゴリ共通とする一方で、全結合処理部５０はカテゴリ毎に有する構成とすることで、カテゴリの追加・削除に柔軟に対応させることができるとともに、カテゴリの追加に伴う計算量やメモリ量の増加を抑えることができる。
【０２０４】
また、第１の実施形態に係る画像処理装置１は、畳み込みニューラルネットワークＮを用いて算出された確信度に正規化処理を施すことで、異なるカテゴリ間の確信度を比較することができるようになる。また、正規化処理を施すことにより、例えば、複数のカテゴリに属する画像（例えば、「花」と「車」）が同一の画像に含まれている場合においても適切な確信度を得ることができる。
【０２０５】
第２の実施形態に係る画像処理装置１は、学習データに基づいて畳み込みニューラルネットワークＮが用いるバイアス値及び重みデータの更新（学習）を行うことができる。このとき、例えば、カテゴリが追加・削除された場合においても、全結合処理部５０が用いるバイアス値及び重みデータのみを更新（学習）させればよい。したがって、カテゴリの追加・削除に対応させることができる。
【０２０６】
第３の実施形態に係る画像処理装置１は、畳み込みニューラルネットワークＮを用いて、入力された画像データ１０００がいずれのカテゴリに分類されるかを示す確信度を算出することができる。しかも、カテゴリ間に誤認識しやすい存在し、かつ、これらの誤認識しやすいカテゴリ間で正例の学習データに偏りがある場合でも、適切な確信度が算出され、誤認識が防止される。
【０２０７】
第４の実施形態に係る画像処理装置１は、学習データに基づいて畳み込みニューラルネットワークＮが用いるバイアス値及び重みデータの更新（学習）を行うことができる。しかも、他のカテゴリとの誤認識を防止するための負例の学習データを十分に準備することができない場合においても、学習を行うバイアス値及び重みデータを所定の範囲に限定することで、適切な学習を行うことができる。
【０２０８】
本発明は、具体的に開示された上記の実施形態に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。
【符号の説明】
【０２０９】
１    画像処理装置
２０  入力部
３０  畳み込み処理部
４０  プーリング部
５０  全結合処理部
６０  正規化処理部
７０  出力部
Ｎ    畳み込みニューラルネットワーク
【先行技術文献】
【特許文献】
【０２１０】
【特許文献１】特許第４５３２９１５号公報
【特許文献２】特許第２９４０９３３号公報
【図１】
0006582416.tif 000013
【図２】
0006582416.tif 000014
【図３】
0006582416.tif 000015
【図４】
0006582416.tif 000016
【図５】
0006582416.tif 000017
【図６】
0006582416.tif 000018
【図７】
0006582416.tif 000019
【図８】
0006582416.tif 000020
【図９】
0006582416.tif 000021
【図１０】
0006582416.tif 000022
【図１１】
0006582416.tif 000023
【図１２】
0006582416.tif 000024
【図１３】
0006582416.tif 000025
【図１４】
0006582416.tif 000026
【図１５】
0006582416.tif 000027
【図１６】
0006582416.tif 000028
【図１７】
0006582416.tif 000029
【図１８】
0006582416.tif 000030
【図１９】
0006582416.tif 000031
【図２０】
0006582416.tif 000032
【図２１】
0006582416.tif 000033
【図２２】
0006582416.tif 000034
【図２３】
0006582416.tif 000035
【図２４】
0006582416.tif 000036
【図２５】
0006582416.tif 000037
【図２６】
0006582416.tif 000038
【図２７】
0006582416.tif 000039
【図２８】
0006582416.tif 000040
【図２９】
0006582416.tif 000041
【図３０】
0006582416.tif 000042
【図３１】
0006582416.tif 000043
【図３２】
0006582416.tif 000044
【図３３】
0006582416.tif 000045
【図３４】
0006582416.tif 000046