(57)【要約】【課題】登録されているカテゴリーが更新されたときにかかる多層ニューラルネットワークの学習時間を従来よりも短縮することができる画像処理装置を提供する。【解決手段】ニューラルネットワーク１００は、入力画像１０１に対してそれぞれ異なる空間フィルタ１０３，１０５を作用させた結果に基づいて次段の層の処理ユニットに対して出力値を出力する処理を行ない、最終的に複数の特徴量のそれぞれを生成する前層１１０と、当該複数の特徴量に対してそれぞれ異なる重み係数ｗ1A〜ｗ3Nを作用させた結果に基づいて次段の層の処理ユニットに対して出力値を出力する処理を行なうことにより、最終的に入力画像１０１を複数のカテゴリーのいずれかに分類する後層とを含む。画像処理装置は、カテゴリーが更新された場合に、前層１１０におけるフィルタ１０３，１０５の値を修正せずに、後層１５０における重み係数ｗ1A〜ｗ3Nの値を修正する。【選択図】図２
2016139176.tif 000002
【特許請求の範囲】
【請求項１】
各層に配置された複数の処理ユニットが多段接続された多層ニューラルネットワークを用いて、入力画像を登録されている複数のカテゴリーのいずれかに分類する、自動学習機能を備えた画像処理装置であって、
前記多層ニューラルネットワークは、
前記入力画像を最初の層の入力値である特徴量マップとして、各層における各処理ユニットが入力値である特徴量マップに対してそれぞれ異なる空間フィルタを作用させた結果に基づいて次段の層の処理ユニットに対して出力値を出力する処理を行なうことにより、最終的に複数の特徴量のそれぞれを生成するための前層と、
前記複数の特徴量を最初の層の入力値である特徴量として、各層における各処理ユニットが入力値である特徴量に対してそれぞれ異なる係数を作用させた結果に基づいて次段の層の処理ユニットに対して出力値を出力する処理を行なうことにより、最終的に前記入力画像を前記複数のカテゴリーのいずれかに分類するための後層とを含み、
前記後層において作用させる係数は、複数のカテゴリーのそれぞれに関連付けられている画像を学習することによって予め得られたものであって、
前記画像処理装置は、
前記複数のカテゴリーの更新を受け付けるための更新部と、
前記複数のカテゴリーが更新された場合に、前記前層において作用させる空間フィルタのそれぞれの値を更新せずに、前記後層における係数のそれぞれの値を更新するための学習部とを備える、画像処理装置。
【請求項２】
前記前層において空間フィルタを作用させる処理は、入力値である特徴量マップに対して空間フィルタにより畳みこみ演算処理を行なうことによりなされる、請求項１に記載の画像処理装置。
【請求項３】
前記後層において係数を作用させる処理は、入力値である特徴量に対して係数を積算する演算処理を行なうことによりなされる、請求項１または２に記載の画像処理装置。
【請求項４】
前記画像処理装置は、前記前層において作用させる空間フィルタのそれぞれの値と、前記後層における係数のそれぞれの値とを他の装置に更新させる命令を、当該他の装置に送信するための送信部をさらに備える、請求項１〜３のいずれか１項に記載の画像処理装置。
【請求項５】
前記送信部は、現在時刻が予め定められた時刻になったことに基づいて、前記命令を前記他の装置に送信する、請求項４に記載の画像処理装置。
【請求項６】
前記学習部は、前記後層における係数のそれぞれの値を最終層から順に更新し、更新後の係数を用いた分類結果が予め定められた基準を満たした時点で学習処理を終了する、請求項１〜５のいずれか１項に記載の画像処理装置。
【請求項７】
前記前層は、複数の層を含み、
前記前層の各層における各処理ユニットは、前の層における各処理ユニットから出力される特徴量マップに対してそれぞれ異なる空間フィルタを作用させた結果を次段の層における各処理ユニットに出力する、請求項１〜６のいずれか１項に記載の画像処理装置。
【請求項８】
各層に配置された複数の処理ユニットが多段接続された多層ニューラルネットワークを用いて、入力画像を登録されている複数のカテゴリーのいずれかに分類する、自動学習機能を備えた画像処理システムであって、
前記多層ニューラルネットワークは、
前記入力画像を最初の層の入力値である特徴量マップとして、各層における各処理ユニットが入力値である特徴量マップに対してそれぞれ異なる空間フィルタを作用させた結果に基づいて次段の層の処理ユニットに対して出力値を出力する処理を行なうことにより、最終的に複数の特徴量のそれぞれを生成するための前層と、
前記複数の特徴量を最初の層の入力値である特徴量として、各層における各処理ユニットが入力値である特徴量に対してそれぞれ異なる係数を作用させた結果に基づいて次段の層の処理ユニットに対して出力値を出力する処理を行なうことにより、最終的に前記入力画像を前記複数のカテゴリーのいずれかに分類するための後層とを含み、
前記後層において作用させる係数は、複数のカテゴリーのそれぞれに関連付けられている画像を学習することによって予め得られたものであって、
前記画像処理システムは、第１画像処理装置と、第２画像処理装置とを備え、
前記第１画像処理装置は、
前記複数のカテゴリーの更新を受け付けるための更新部と、
前記複数のカテゴリーが更新された場合に、前記前層において作用させる空間フィルタのそれぞれの値を更新せずに、前記後層における係数のそれぞれの値を更新するための第１学習部とを含み、
前記第２画像処理装置は、
予め定められたタイミングで、前記前層において作用させる空間フィルタのそれぞれの値と、前記後層における係数のそれぞれの値とを更新するための第２学習部とを含む、画像処理システム。
【請求項９】
各層に配置された複数の処理ユニットが多段接続された多層ニューラルネットワークを用いて、入力画像を登録されている複数のカテゴリーのいずれかに分類する、自動学習機能を備えた画像処理方法であって、
前記多層ニューラルネットワークは、
前記入力画像を最初の層の入力値である特徴量マップとして、各層における各処理ユニットが入力値である特徴量マップに対してそれぞれ異なる空間フィルタを作用させた結果に基づいて次段の層の処理ユニットに対して出力値を出力する処理を行なうことにより、最終的に複数の特徴量のそれぞれを生成するための前層と、
前記複数の特徴量を最初の層の入力値である特徴量として、各層における各処理ユニットが入力値である特徴量に対してそれぞれ異なる係数を作用させた結果に基づいて次段の層の処理ユニットに対して出力値を出力する処理を行なうことにより、最終的に前記入力画像を前記複数のカテゴリーのいずれかに分類するための後層とを含み、
前記後層において作用させる係数は、複数のカテゴリーのそれぞれに関連付けられている画像を学習することによって予め得られたものであって、
前記画像処理方法は、
前記複数のカテゴリーの更新を受け付けるステップと、
前記複数のカテゴリーが更新された場合に、前記前層において作用させる空間フィルタのそれぞれの値を更新せずに、前記後層における係数のそれぞれの値を更新するステップとを備える、画像処理方法。
【請求項１０】
各層に配置された複数の処理ユニットが多段接続された多層ニューラルネットワークを用いて、入力画像を登録されている複数のカテゴリーのいずれかに分類する、自動学習機能を備えた画像処理プログラムであって、
前記多層ニューラルネットワークは、
前記入力画像を最初の層の入力値である特徴量マップとして、各層における各処理ユニットが入力値である特徴量マップに対してそれぞれ異なる空間フィルタを作用させた結果に基づいて次段の層の処理ユニットに対して出力値を出力する処理を行なうことにより、最終的に複数の特徴量のそれぞれを生成するための前層と、
前記複数の特徴量を最初の層の入力値である特徴量として、各層における各処理ユニットが入力値である特徴量に対してそれぞれ異なる係数を作用させた結果に基づいて次段の層の処理ユニットに対して出力値を出力する処理を行なうことにより、最終的に前記入力画像を前記複数のカテゴリーのいずれかに分類するための後層とを含み、
前記後層において作用させる係数は、複数のカテゴリーのそれぞれに関連付けられている画像を学習することによって予め得られたものであって、
前記画像処理プログラムは、コンピュータに、
前記複数のカテゴリーの更新を受け付けるステップと、
前記複数のカテゴリーが更新された場合に、前記前層において作用させる空間フィルタのそれぞれの値を更新せずに、前記後層における係数のそれぞれの値を更新するステップとを実行させる、画像処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、画像処理装置の制御に関し、特に、入力画像を予め登録されている複数のカテゴリーのいずれかに分類するための自動学習機能を備える画像処理装置の制御に関する。
【背景技術】
【０００２】
従来、カメラなどで対象物を撮影して得られた入力画像を予め登録されているカテゴリーのいずれかに自動的に分類するための画像処理装置が開発されている。画像処理装置は、顔や静脈などの生体画像を用いたセキュリティ装置、手書き文字の認識、工業製品の欠陥検査など、様々な分野に応用されている。画像処理装置は、所謂機械学習により、分類対象物の特徴的な部分の画像情報（以下、「特徴量」ともいう。）を画像から自動的に抽出する。画像処理装置は、機械学習処理によって予め抽出された特徴量を入力画像から抽出された特徴量と比較することにより、分類対象物が入力画像に含まれているか否かを判断する。
【０００３】
機械学習に関する先行技術文献として、たとえば、特開２００５−３５２９００号公報（特許文献１）がある。当該公報は、機械学習の一例である多層ニューラルネットワークを用いた画像分類方法を開示している。多層ニューラルネットワークは、従来の機械学習とは異なり、特徴量の値や組み合わせだけでなく分類に必要な特徴量自体を学習することができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００５−３５２９００号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
多層ニューラルネットワークによる学習は、大量の学習画像と膨大な計算処理とを必要とする。そのため、多層ニューラルネットワークには、学習処理において非常に時間がかかるという問題がある。したがって、登録されているカテゴリーが更新される度に多層ニューラルネットワークを再学習することは困難である。
【０００６】
本開示は上述のような問題点を解決するためになされたものであって、その目的は、登録されているカテゴリーが更新されたときにかかる多層ニューラルネットワークの学習時間を従来よりも短縮することが可能な画像処理装置を提供することである。他の局面における目的は、登録されているカテゴリーが更新されたときにかかる多層ニューラルネットワークの学習時間を従来よりも短縮することが可能な画像処理システムを提供することである。さらに他の局面における目的は、登録されているカテゴリーが更新されたときにかかる多層ニューラルネットワークの学習時間を従来よりも短縮することが可能な画像処理方法を提供することである。さらに他の局面における目的は、登録されているカテゴリーが更新されたときにかかる多層ニューラルネットワークの学習時間を従来よりも短縮することが可能な画像処理プログラムを提供することである。
【課題を解決するための手段】
【０００７】
ある局面に従うと、各層に配置された複数の処理ユニットが多段接続された多層ニューラルネットワークを用いて、入力画像を登録されている複数のカテゴリーのいずれかに分類する、自動学習機能を備えた画像処理装置が提供される。多層ニューラルネットワークは、入力画像を最初の層の入力値である特徴量マップとして、各層における各処理ユニットが入力値である特徴量マップに対してそれぞれ異なる空間フィルタを作用させた結果に基づいて次段の層の処理ユニットに対して出力値を出力する処理を行なうことにより、最終的に複数の特徴量のそれぞれを生成するための前層と、複数の特徴量を最初の層の入力値である特徴量として、各層における各処理ユニットが入力値である特徴量に対してそれぞれ異なる係数を作用させた結果に基づいて次段の層の処理ユニットに対して出力値を出力する処理を行なうことにより、最終的に入力画像を複数のカテゴリーのいずれかに分類するための後層とを含む。後層において作用させる係数は、複数のカテゴリーのそれぞれに関連付けられている画像を学習することによって予め得られたものである。画像処理装置は、複数のカテゴリーの更新を受け付けるための更新部と、複数のカテゴリーが更新された場合に、前層において作用させる空間フィルタのそれぞれの値を更新せずに、後層における係数のそれぞれの値を更新するための学習部とを備える。
【０００８】
好ましくは、前層において空間フィルタを作用させる処理は、入力値である特徴量マップに対して空間フィルタにより畳みこみ演算処理を行なうことによりなされる。
【０００９】
好ましくは、後層において係数を作用させる処理は、入力値である特徴量に対して係数を積算する演算処理を行なうことによりなされる。
【００１０】
好ましくは、画像処理装置は、前層において作用させる空間フィルタのそれぞれの値と、後層における係数のそれぞれの値とを他の装置に更新させる命令を、当該他の装置に送信するための送信部をさらに備える。
【００１１】
好ましくは、送信部は、現在時刻が予め定められた時刻になったことに基づいて、命令を他の装置に送信する。
【００１２】
好ましくは、学習部は、後層における係数のそれぞれの値を最終層から順に更新し、更新後の係数を用いた分類結果が予め定められた基準を満たした時点で学習処理を終了する。
【００１３】
好ましくは、前層は、複数の層を含む。前層の各層における各処理ユニットは、前の層における各処理ユニットから出力される特徴量マップに対してそれぞれ異なる空間フィルタを作用させた結果を次段の層における各処理ユニットに出力する。
【００１４】
他の局面に従うと、各層に配置された複数の処理ユニットが多段接続された多層ニューラルネットワークを用いて、入力画像を登録されている複数のカテゴリーのいずれかに分類する、自動学習機能を備えた画像処理システムが提供される。多層ニューラルネットワークは、入力画像を最初の層の入力値である特徴量マップとして、各層における各処理ユニットが入力値である特徴量マップに対してそれぞれ異なる空間フィルタを作用させた結果に基づいて次段の層の処理ユニットに対して出力値を出力する処理を行なうことにより、最終的に複数の特徴量のそれぞれを生成するための前層と、複数の特徴量を最初の層の入力値である特徴量として、各層における各処理ユニットが入力値である特徴量に対してそれぞれ異なる係数を作用させた結果に基づいて次段の層の処理ユニットに対して出力値を出力する処理を行なうことにより、最終的に入力画像を複数のカテゴリーのいずれかに分類するための後層とを含む。後層において作用させる係数は、複数のカテゴリーのそれぞれに関連付けられている画像を学習することによって予め得られたものである。画像処理システムは、第１画像処理装置と、第２画像処理装置とを備える。第１画像処理装置は、複数のカテゴリーの更新を受け付けるための更新部と、複数のカテゴリーが更新された場合に、前層において作用させる空間フィルタのそれぞれの値を更新せずに、後層における係数のそれぞれの値を更新するための第１学習部とを含む。第２画像処理装置は、予め定められたタイミングで、前層において作用させる空間フィルタのそれぞれの値と、後層における係数のそれぞれの値とを更新するための第２学習部とを含む。
【００１５】
さらに他の局面に従うと、各層に配置された複数の処理ユニットが多段接続された多層ニューラルネットワークを用いて、入力画像を登録されている複数のカテゴリーのいずれかに分類する、自動学習機能を備えた画像処理方法が提供される。多層ニューラルネットワークは、入力画像を最初の層の入力値である特徴量マップとして、各層における各処理ユニットが入力値である特徴量マップに対してそれぞれ異なる空間フィルタを作用させた結果に基づいて次段の層の処理ユニットに対して出力値を出力する処理を行なうことにより、最終的に複数の特徴量のそれぞれを生成するための前層と、複数の特徴量を最初の層の入力値である特徴量として、各層における各処理ユニットが入力値である特徴量に対してそれぞれ異なる係数を作用させた結果に基づいて次段の層の処理ユニットに対して出力値を出力する処理を行なうことにより、最終的に入力画像を複数のカテゴリーのいずれかに分類するための後層とを含む。後層において作用させる係数は、複数のカテゴリーのそれぞれに関連付けられている画像を学習することによって予め得られたものである。画像処理方法は、複数のカテゴリーの更新を受け付けるステップと、複数のカテゴリーが更新された場合に、前層において作用させる空間フィルタのそれぞれの値を更新せずに、後層における係数のそれぞれの値を更新するステップとを備える。
【００１６】
さらに他の局面に従うと、各層に配置された複数の処理ユニットが多段接続された多層ニューラルネットワークを用いて、入力画像を登録されている複数のカテゴリーのいずれかに分類する、自動学習機能を備えた画像処理プログラムが提供される。多層ニューラルネットワークは、入力画像を最初の層の入力値である特徴量マップとして、各層における各処理ユニットが入力値である特徴量マップに対してそれぞれ異なる空間フィルタを作用させた結果に基づいて次段の層の処理ユニットに対して出力値を出力する処理を行なうことにより、最終的に複数の特徴量のそれぞれを生成するための前層と、複数の特徴量を最初の層の入力値である特徴量として、各層における各処理ユニットが入力値である特徴量に対してそれぞれ異なる係数を作用させた結果に基づいて次段の層の処理ユニットに対して出力値を出力する処理を行なうことにより、最終的に入力画像を複数のカテゴリーのいずれかに分類するための後層とを含む。後層において作用させる係数は、複数のカテゴリーのそれぞれに関連付けられている画像を学習することによって予め得られたものである。画像処理プログラムは、コンピュータに、複数のカテゴリーの更新を受け付けるステップと、複数のカテゴリーが更新された場合に、前層において作用させる空間フィルタのそれぞれの値を更新せずに、後層における係数のそれぞれの値を更新するステップとを実行させる。
【発明の効果】
【００１７】
ある局面において、登録されているカテゴリーが更新されたときにかかる多層ニューラルネットワークの学習時間を従来よりも短縮することができる。
【００１８】
本発明の上記および他の目的、特徴、局面および利点は、添付の図面と関連して理解される本発明に関する次の詳細な説明から明らかとなるであろう。
【図面の簡単な説明】
【００１９】
【図１】第１の実施の形態における画像処理装置における分類処理を概略的に示す図である。
【図２】第１の実施の形態におけるニューラルネットワークの構成を示した図である。
【図３】第１の実施の形態におけるニューラルネットワークの後層における処理を概略的に示した図である。
【図４】第１の実施の形態における画像処理装置が実行する部分学習処理を示すフローチャートである。
【図５】図２に示される状態から新たなカテゴリーが登録された場合のニューラルネットワークの構成を示した図である。
【図６】図２に示される状態からカテゴリーが削除された場合のニューラルネットワークの構成を示した図である。
【図７】第１の実施の形態における部分学習処理における誤差逆伝播法を示すフローチャートである。
【図８】第１の実施の形態におけるニューラルネットワークの後層の一部分を示す図である。
【図９】第１の実施の形態における画像処理装置が実行する全学習処理を示すフローチャートである。
【図１０】第１の実施の形態における全学習処理における誤差逆伝播法を示すフローチャートである。
【図１１】第１の実施の形態における画像処理装置の機能構成を示すブロック図である。
【図１２】第１の実施の形態における画像処理装置の主要なハードウェア構成を示すブロック図である。
【図１３】第２の実施の形態における画像処理システムの機能構成を示すブロック図である。
【図１４】第２の実施の形態におけるサーバの主要なハードウェア構成を示すブロック図である。
【図１５】第３の実施の形態におけるニューラルネットワークの後層を概略的に示した図である。
【図１６】第３の実施の形態におけるニューラルネットワークの構成を示した図である。
【図１７】第３の実施の形態における画像処理装置が実行する部分学習処理を示すフローチャートである。
【図１８】第３の実施の形態における部分学習処理の誤差逆伝播法を示すフローチャートである。
【発明を実施するための形態】
【００２０】
以下、図面を参照しつつ、本実施の形態について説明する。以下の説明では、同一の部品および構成要素には同一の符号を付してある。それらの名称および機能も同じである。したがって、これらについての詳細な説明は繰り返さない。また、以下で説明される各実施の形態は、選択的に組み合わされてもよい。
【００２１】
＜第１の実施の形態＞
［画像処理装置２００］
図１を参照して、第１の実施の形態に従う画像処理装置２００について説明する。図１は、画像処理装置２００における分類処理を概略的に示した図である。
【００２２】
画像処理装置２００は、たとえば、顔認証システムなどに応用される。画像処理装置２００は、カメラ２３０によってゲートを通過する人物の顔を撮影して得られた照合画像を予め登録されている顔画像と照合し、当該人物が登録されている人物であるか否かを判断する。画像処理装置２００は、当該人物が登録されている人物であると判断した場合に、当該人物がゲートを通過することを許可する。
【００２３】
以下では、顔認証システムとしての画像処理装置２００について説明を行なうが、画像処理装置２００は、顔認証システムに限定されない。たとえば、画像処理装置２００は、文字認識装置、工業製品の欠陥検査装置、またはその他の画像分類装置であってもよい。
【００２４】
［ニューラルネットワーク１００の概要］
登録対象の人物が写っている顔画像から特徴的な部分（すなわち、特徴量）を自動的に学習する方法として、ニューラルネットワークがある。以下では、図２および図３を参照して、ニューラルネットワーク１００について説明する。図２は、ニューラルネットワーク１００の構成を示した図である。図３は、ニューラルネットワーク１００の後層１５０における処理を概略的に示した図である。
【００２５】
ニューラルネットワーク１００は、たとえば、多層ニューラルネットワークの一種であるコンボリューショナルニューラルネットワーク（ＣＮＮ：Convolutional  Neural  Networks）として構成される。あるいは、ニューラルネットワーク１００は、制限ボルツマンマシン（Restricted  Boltzmann  Machine）として構成されてもよい。
【００２６】
図２に示されるように、ニューラルネットワーク１００は、前層１１０と、後層１５０とを含む。前層１１０は、フィルタ１０３，１０５などを用いたフィルタリング処理により入力画像１０１を顔画像の分類に適するように抽象化する。後層１５０は、入力画像１０１を抽象化した結果に対して重み係数ｗ1A〜ｗ3Nを積算して得られた結果に基づいて、入力画像１０１が属するカテゴリーを決定する。このように、後層１５０は、入力画像１０１が属するカテゴリーの決定に直接的に関わるため、カテゴリーが更新されたときの分類精度に対する影響は、前層１１０よりも後層１５０の方が大きい。
【００２７】
この点に着目して、画像処理装置２００は、カテゴリーが更新された場合に、前層１１０におけるフィルタ１０３，１０５のそれぞれの値を更新せずに、後層１５０における重み係数ｗ1A〜ｗ3Nのそれぞれの値のみを更新する。画像処理装置２００は、ニューラルネットワーク１００の全部ではなく一部のみを更新することにより、再学習にかかる時間を大幅に短縮することができる。
【００２８】
［画像処理装置２００の主要機能］
画像処理装置２００は、ニューラルネットワーク１００を構築するための学習機能と、ニューラルネットワーク１００に基づいて入力画像１０１が属するカテゴリーを特定するための分類機能とを有する。以下では、画像処理装置２００の分類機能と学習機能とについて説明する。
【００２９】
（画像処理装置２００の分類機能）
まず、図２および図３を再び参照して、画像処理装置２００の分類機能について説明する。上述したように、画像処理装置２００は、前層１１０と後層１５０とを含む。
【００３０】
前層１１０は、畳み込み層とサブサンプリング層とを有する。畳み込み層は、入力画像に対してフィルタ（空間フィルタ）を作用させるための処理ユニットを含む。処理ユニットのそれぞれは、分類対象物を含む入力画像１０１に対して互いに異なる複数のフィルタのそれぞれを作用させることで特徴量マップをそれぞれ生成する。フィルタを作用させる処理は、たとえば、入力画像にフィルタを畳み込む演算処理を行なうことでなされる。図２の例においては、畳み込み層は、入力画像１０１に対してフィルタ１０３を畳み込むことで特徴量マップ１２１を生成している。また、畳み込み層は、入力画像１０１に対してフィルタ１０５を畳み込むことで特徴量マップ１２２を生成している。特徴量マップ１２１，１２２は、二次元のデータである。より具体的には、特徴量マップ１２１，１２２において、座標情報（空間情報）と画素値とが互いに対応付けられている。フィルタ１０３，１０５の値は、後述する学習処理により予め決定されている。
【００３１】
次に、前層１１０は、特徴量マップ１２１，１２２に対してサンプリング処理を行なう。サンプリング処理の一例として、前層１１０は、特徴量マップ１２１，１２２を局所領域に分割し、各局所領域の平均値または最大値を算出する。図２の例では、前層１１０は、特徴量マップ１２１に対してサンプリング処理を実行することにより特徴量マップ１２３を生成し、特徴量マップ１２２に対してサンプリング処理を実行することにより特徴量マップ１２４を生成している。
【００３２】
後層１５０は、前層１１０から出力される特徴量マップ１２３，１２４のそれぞれから特徴量を抽出し、抽出した特徴量に対して重み係数ｗ1A〜ｗ3Nを積算した結果に基づいて、入力画像１０１を予め登録されている複数のカテゴリーのいずれかに分類する。重み係数ｗ1A〜ｗ3Nは、カテゴリーのそれぞれに関連付けられている画像（以下、「学習画像」ともいう。）を学習することによって予め得られたデータである。各カテゴリーは、たとえば人物の名前やＩＤ（Identification）などの個人の識別情報で示される。
【００３３】
図３を参照して、後層１５０における分類機能についてさらに詳細に説明する。図３には、前層１１０から出力される特徴量マップ１２３，１２４が示されている。後層１５０は、生物の神経回路を模したニューロン素子１５１〜１５４、１６１〜１６３（処理ユニット）を有する。ニューロン素子１６１〜１６３は、照合スコアを出力する層（出力層）であり、登録されているカテゴリー数に合わせて予め準備されている。ニューロン素子１５１〜１５４の数は、任意である。
【００３４】
ニューロン素子１５１〜１５４のそれぞれには互いに異なる行列を特徴量マップ１２３に積算して得られた値と、互いに異なる行列を特徴量マップ１２４に積算して得られた値とがニューロン素子１５１〜１５４のそれぞれに入力されている。ニューロン素子１５１は、自身に入力された値を加算した上で重み係数ｗ2Aを積算し、積算した結果ｘを活性化関数ｆ（ｘ）に代入した値を出力層のニューロン素子１６３に出力する。ニューロン素子１５２は、自身に入力された値を加算した上で重み係数ｗ2Bを積算し、積算した結果ｘを活性化関数ｆ（ｘ）に代入した値を出力層のニューロン素子１６３に出力する。ニューロン素子１５４は、自身に入力された値を加算した上で重み係数ｗ2Nを積算し、積算した結果を出力層のニューロン素子１６３に出力する。
【００３５】
ニューロン素子１６３は、自身に入力された値を加算した結果ｘを活性化関数ｆ（ｘ）に代入する。これにより、照合スコアｙが出力される。活性化関数ｆ（ｘ）は、任意の関数である。たとえば、活性化関数ｆ（ｘ）は、以下の式（２）〜（４）のいずれかで示される。なお、式（３）に示される活性化関数ｆ（ｘ）は、シグモナイド関数と呼ばれる。また、式（４）に示される活性化関数ｆ（ｘ）は、双曲線正接関数と呼ばれる。
【００３６】
ｙ＝ｆ（ｘ）・・・（１）
ｆ（ｘ）＝ｘ・・・（２）
ｆ（ｘ）＝１／（１＋ｅｘｐ（−ｘ）)・・・（３）
ｆ（ｘ）＝ｔａｎｈ（ｘ）・・・（４）
後層１５０は、出力層に含まれる全てのニューロン素子について上記の処理を実行する。これにより、画像処理装置２００は、各カテゴリーに対する入力画像１０１の照合スコアを算出する。後層１５０は、算出した照合スコアの中で最も高い照合スコアに対応するカテゴリーを入力画像１０１が属するカテゴリーとして特定する。このとき、後層１５０は、当該照合スコアが予め定められた値を超えない場合には、入力画像が属するカテゴリーが存在しないと判断してもよい。
【００３７】
（画像処理装置２００の学習機能）
次に、画像処理装置２００の学習機能について説明する。画像処理装置２００は、後述の記憶装置２２０（図１２参照）に格納されている学習画像群２２２（図１２参照）を学習する。学習画像群２２２に含まれる学習画像のそれぞれには、登録されているカテゴリーのうちのいずれかのカテゴリーが関連付けられている。すなわち、学習画像には、正解のカテゴリーが関連付けられている。画像処理装置２００は、各学習画像を正解のカテゴリーに分類されるように、前層１１０（図２参照）におけるフィルタの値と後層１５０（図２参照）における重み係数の値とを更新する。
【００３８】
画像処理装置２００は、学習機能として、ニューラルネットワーク１００の後層１５０のみを更新する部分学習機能と、ニューラルネットワーク１００の前層１１０および後層１５０の両方を更新する全学習機能とを有する。以下では、図４〜図９を参照して、画像処理装置２００の部分学習機能および全学習機能について説明する。
【００３９】
なお、図４〜図９に示される処理は、画像処理装置２００における後述のＣＰＵ（Central  Processing  Unit）２０２（図１２参照）がプログラムを実行することにより実現される。他の局面において、処理の一部または全部が、回路素子、その他のハードウェアによって実行されてもよい。
【００４０】
（ａ）部分学習機能
まず、図４を参照して、部分学習処理について説明する。図４は、画像処理装置２００が実行する部分学習処理を示すフローチャートである。部分学習処理は、要するに、前層１１０におけるフィルタの値を更新せずに、後層１５０における重み係数の値のみを更新する処理である。
【００４１】
より具体的には、ステップＳ１２において、ＣＰＵ２０２は、上述の後層１５０における重み係数（たとえば、図２の重み係数ｗ1A〜ｗ3N）の値を初期化する。一例として、ＣＰＵ２０２は、初期値として重み係数に乱数を設定する。
【００４２】
ステップＳ１４において、ＣＰＵ２０２は、後述の記憶装置２２０（図１２参照）に格納されている学習画像群２２２から１枚の学習画像をランダムに取得する。再度ステップＳ１４が実行される場合には、ＣＰＵ２０２は、学習画像群２２２のうちから前回とは異なる学習画像を取得する。
【００４３】
ステップＳ１６において、ＣＰＵ２０２は、ニューラルネットワーク１００に学習画像を入力し、上述の分類処理を実行する（図２参照）。ステップＳ１２で重み係数が初期化されているため、学習初期の時点における分類性能は、望ましいものではない。
【００４４】
ステップＳ１８において、ＣＰＵ２０２は、学習画像を正しいカテゴリーに分類するように後層１５０における重み係数の値を誤差逆伝播法により更新する。誤差逆伝播法の詳細については後述する。
【００４５】
ステップＳ２０において、ＣＰＵ２０２は、学習画像群２２２の全てをニューラルネットワーク１００に入力したか否かを判断する。ＣＰＵ２０２は、学習画像群２２２の全てをニューラルネットワーク１００に入力したと判断した場合（ステップＳ２０においてＹＥＳ）、制御をステップＳ２２に切り替える。そうでない場合には（ステップＳ２０においてＮＯ）、ＣＰＵ２０２は、ステップＳ１４の処理を再び実行する。
【００４６】
ステップＳ２２において、ＣＰＵ２０２は、入力画像に対するニューラルネットワーク１００の出力値（照合スコア）と、予め定められた望ましい出力値との間の誤差の平均値が予め定められた閾値以下になっているか否かを判断する。ステップＳ２２において、ＣＰＵ２０２は、当該平均値が予め定められた閾値以下であると判断した場合（ステップＳ２２においてＹＥＳ）、部分学習処理を終了する。そうでない場合には（ステップＳ２２においてＮＯ）、ＣＰＵ２０２は、制御をステップＳ２４に切り替える。
【００４７】
ステップＳ２４において、ＣＰＵ２０２は、学習回数が予め定められた回数以上になったか否かを判断する。ここでいう学習回数は、ステップＳ１４〜Ｓ２０の処理を繰り返した回数に相当する。ＣＰＵ２０２は、学習回数が予め定められた回数以上になったと判断した場合（ステップＳ２４においてＹＥＳ）、部分学習処理を終了する。そうでない場合には（ステップＳ２４においてＮＯ）、ＣＰＵ２０２は、ステップＳ１４の処理を再び実行する。
【００４８】
（ａ−１）部分学習処理の具体例１
図５を参照して、部分学習処理の具体例１について説明する。図５は、図２に示される状態から新たなカテゴリーが登録された場合のニューラルネットワーク１００の構成を示した図である。図５には、カテゴリー「人物Ｆ」が新たに登録された例が示されている。
【００４９】
画像処理装置２００は、カテゴリー「人物Ｆ」が新たに登録されたことに基づいて、カテゴリー「人物Ｆ」に対応するニューロン素子１６４を後層１５０の出力層に新たに追加する。ニューロン素子１６４は、前の層であるコネクト層のニューロン素子１５１〜１５４に接続される。その後、画像処理装置２００は、図４に示される部分学習処理を開始する。このとき、図４のステップＳ１２において、画像処理装置２００は、既存のニューロン素子１６１〜１６３に対する重みｗ1A〜ｗ3Nと同様に、ニューロン素子１６４に対する重みｗ4A〜ｗ4Nも初期化する。その後の処理（すなわち、ステップＳ１４〜Ｓ２４の処理）は、上述の通りであるので説明を繰り返さない。
【００５０】
（ａ−２）部分学習処理の具体例２
図６を参照して、部分学習処理の具体例２について説明する。図６は、図２に示される状態からカテゴリーが削除された場合のニューラルネットワーク１００の構成を示した図である。図６には、カテゴリー「人物Ｂ」が削除された例が示されている。
【００５１】
画像処理装置２００は、カテゴリー「人物Ｂ」が削除されたことに基づいて、カテゴリー「人物Ｂ」に対応するニューロン素子１６２を削除する。その後、画像処理装置２００は、前の層であるコネクト層のニューロン素子１５１〜１５４からニューロン素子１６２への接続を全て取り除いた状態で、図４に示される部分学習処理を開始する。
【００５２】
（ａ−３）誤差逆伝播法
図７および図８を参照して、図４のステップＳ１８における誤差逆伝播法について説明する。図７は、部分学習処理における誤差逆伝播法を示すフローチャートである。図８は、ニューラルネットワーク１００の後層１５０の一部分を示す図である。なお、以下では、後層１５０が複数の層で構成されているという前提で誤差逆伝播法について説明する。
【００５３】
誤差逆伝播法は、要するに、後層１５０の出力層（図２参照）からの出力値（照合スコア）と予め定められた望ましい出力値との間の誤差を算出し、重み係数の値に応じて当該誤差を前の層に繰り返し伝播し、伝播された誤差に応じて重み係数の値を更新する処理である。
【００５４】
より具体的な処理として、ステップＳ４２において、ＣＰＵ２０２は、注目する層番号ｂを後層１５０の出力層である第Ｌ層に設定する。
【００５５】
ステップＳ４４において、ＣＰＵ２０２は、ｂ層目の各ニューロン素子の局所誤差δを計算する。ＣＰＵ２０２は、出力層のｉ番目におけるニューロン素子の局所誤差δＬｉを以下の式（５）によって計算する。
【００５６】
δLi  ＝  Ｅ’(ｙLi)・ｆ’(ｘ)・・・（５）
式（５）におけるＥ’(ｙLi)は、各ニューロン素子の出力値と望ましい出力値との間の誤差を評価する関数である。当該関数には、たとえば、ユークリッド距離や交差エントロピーなどの尺度が用いられる。式（５）におけるｆ’(ｘ)は、出力層における活性化関数ｆ（ｘ）（上記式（２）〜（４）参照）の微分値である。
【００５７】
ステップＳ４６において、ＣＰＵ２０２は、後層１５０のｂ層目と（ｂ−１）層目の間における重み係数の修正量Δｗを計算する。修正量Δｗliは、以下の式（６）で算出される。なお、図８に示されるように、出力層の前の層である第（Ｌ−１）層目におけるｉ番目のニューロン素子からの出力値をｙi、第（Ｌ−１）層目と第Ｌ層目との間におけるｌ番目の重みをｗliとする。
【００５８】
Δｗｌｉ  ＝  αΔｗli(t-1)−ε(δl・ｙi)・・・（６）
式（６）におけるΔｗli(t-1)は、前回の修正量である。式（６）におけるαおよびεは、それぞれ、学習速度を調整するための任意のパラメータである。
【００５９】
ステップＳ４８において、ＣＰＵ２０２は、注目する層番号ｂを前の層であるｂ−１に設定する。すなわち、ＣＰＵ２０２は、注目する層を現在注目している層から前の層に移す。
【００６０】
ステップＳ５０において、ＣＰＵ２０２は、層番号ｂが後層１５０の第１層目であるか否かを判断する。ＣＰＵ２０２は、層番号ｂが後層１５０の第１層目であると判断した場合（ステップＳ５０においてＹＥＳ）、制御をステップＳ５２に切り替える。そうでない場合には（ステップＳ５０においてＮＯ）、ＣＰＵ２０２は、ステップＳ４４の処理を再び実行する。
【００６１】
なお、ＣＰＵ２０２は、ステップＳ４４〜Ｓ４８の処理を再び実行する場合において、ステップＳ４４で出力層以外について局所誤差δbiを算出するときには、以下の式（７）により局所誤差δbiを算出する。また、ＣＰＵ２０２は、ステップＳ４４〜Ｓ４８の処理を再び実行する場合において、ステップＳ４６における修正量Δｗliを算出するときには、上記式（６）を用いる。
【００６２】
δbi  ＝  ｆ’(ｘ)・Σl(δl・ｙi)・・・（７）
ステップＳ５２において、ＣＰＵ２０２は、ステップＳ４６で算出した修正量で重み係数の値を更新し、１回の更新処理を終了する。ＣＰＵ２０２は、図７に示される処理を繰り返すことで、入力画像に対して特徴抽出を行なうことなく、入力画像を正しいカテゴリーに分類する方法を学習できる。
【００６３】
（ｂ）全学習機能
次に、図９および図１０を参照して、画像処理装置２００のＣＰＵ２０２によって実行される全学習処理について説明する。全学習処理は、要するに、前層１１０におけるフィルタの値と、後層１５０における重み係数の値との両方を更新する処理である。図９は、画像処理装置２００が実行する全学習処理を示すフローチャートである。図１０は、全学習処理における誤差逆伝播法を示すフローチャートである。なお、図９のステップＳ１２Ａ，Ｓ１８Ａ以外の処理は、図４に示される各ステップの処理と同じであるので、説明を繰り返さない。
【００６４】
ステップＳ１２Ａにおいて、ＣＰＵ２０２は、上述の前層１１０におけるフィルタ（たとえば、図２のフィルタ１０３，１０５）の値と、上述の後層１５０における重み係数（たとえば、図２の重み係数ｗ1A〜ｗ3N）における値を初期化する。一例として、ＣＰＵ２０２、初期値として、フィルタおよび重み係数に乱数を設定する。
【００６５】
ステップＳ１８Ａにおいて、ＣＰＵ２０２は、ニューラルネットワーク１００が学習画像を正しいカテゴリーに分類するように、フィルタの値と重み係数の値とを誤差逆伝播法により更新する。
【００６６】
ここで、図１０を参照して、ステップＳ１８Ａにおける誤差逆伝搬法についてさらに詳細に説明する。なお、図１０のステップＳ５０Ａ，Ｓ５２Ａ以外の処理は、図７に示される各ステップの処理と同じであるので、説明を繰り返さない。
【００６７】
ステップＳ５０Ａにおいて、ＣＰＵ２０２は、層番号ｂが前層１１０の第１層目であるか否かを判断する。ＣＰＵ２０２は、層番号ｂが前層１１０の第１層目であると判断した場合（ステップＳ５０ＡにおいてＹＥＳ）、制御をステップＳ５２Ａに切り替える。そうでない場合には（ステップＳ５０ＡにおいてＮＯ）、ＣＰＵ２０２は、ステップＳ４４の処理を再び実行する。ステップＳ５０Ａの処理により、ステップＳ４４〜Ｓ４８の処理が前層１１０および後層１５０の層数の分だけ繰り返される。その結果、ＣＰＵ２０２は、後層１５０の重み係数の値の修正量だけでなく、前層１１０のフィルタの値の修正量を算出できる。
【００６８】
ステップＳ５２Ａにおいて、ＣＰＵ２０２は、ステップＳ４６で算出した修正量に基づいて、前層１１０のフィルタの値と後層１５０の重み係数の値とを更新する。
【００６９】
［画像処理装置２００の機能構成］
図１１を参照して、第１の実施の形態に従う画像処理装置２００の機能について説明する。図１１は、画像処理装置２００の機能構成を示すブロック図である。図１１に示されるように、画像処理装置２００は、その機能構成として、全学習部２５０と、更新部２５５と、部分学習部２６０と、入力部２７０と、出力部２７５とを含む。これらの機能は、たとえば、後述するＣＰＵ２０２（図１２参照）によって実現される。
【００７０】
全学習部２５０は、上述の全学習処理を実行する。すなわち、全学習部２５０は、ニューラルネットワーク１００の前層１１０におけるフィルタのそれぞれの値と、ニューラルネットワーク１００の後層１５０における重み係数の値との両方を更新する。ある局面において、全学習処理は、現在時刻が予め設定されている時刻になったとき、画像処理装置２００の操作者から全学習処理を実行するための操作を受け付けたときに実行される。他の局面において、全学習処理は、任意のタイミングで一度だけ実行される。すなわち、全学習処理は、一度実行された後には再度実行されない。
【００７１】
更新部２５５は、予め定め登録されているカテゴリーの更新を受け付ける。カテゴリーの更新は、たとえば、画像処理装置２００の操作者から新たな学習画像の登録を受け付けた場合に実行される。更新部２５５は、新たな学習画像の登録を受け付けると、当該学習画像を記憶装置２２０に格納し、部分学習処理を実行するための命令を部分学習部２６０に出力する。また、更新部２５５は、新たな学習画像の登録を受け付けると、現在のカテゴリーに、当該学習画像に関連付けられているカテゴリーを追加する。
【００７２】
部分学習部２６０は、上述の部分学習処理を実行する。すなわち、部分学習部２６０は、ニューラルネットワーク１００の前層１１０におけるフィルタの値を更新せずに、ニューラルネットワーク１００の後層１５０における重み係数の値のみを更新する。部分学習処理は、たとえば、画像処理装置２００の操作者によって新たな学習画像が登録される度に実行される。
【００７３】
入力部２７０は、上述のカメラ２３０（図１参照）から、分類処理を実行する対象となる照合画像の入力を受け付ける。入力部２７０は、照合画像の入力を受け付けたことに基づいて、分類処理を実行するための命令を出力部２７５に出力する。
【００７４】
出力部２７５は、ニューラルネットワーク１００を参照して、照合画像に対する分類処理を実行し、照合画像がカテゴリーに属する可能性を示す照合スコアを登録されているカテゴリーごとに出力する。出力部２７５は、最大の照合スコアに関連付けられているカテゴリーを照合画像が属するカテゴリーとして特定し、当該カテゴリーを照合結果として出力する。
【００７５】
［画像処理装置２００のハードウェア構成］
図１２を参照して、第１の実施の形態に従う画像処理装置２００のハードウェア構成の一例について説明する。図１２は、画像処理装置２００の主要なハードウェア構成を示すブロック図である。
【００７６】
図１２に示されるように、画像処理装置２００は、ＲＯＭ（Read  Only  Memory）２０１と、ＣＰＵ２０２と、ＲＡＭ（Random  Access  Memory）２０３と、ネットワークＩ／Ｆ（インタフェース）２０４と、カメラＩ／Ｆ２０５と、ディスプレイＩ／Ｆ２０６と、記憶装置２２０とを含む。
【００７７】
ＲＯＭ２０１は、オペレーティングシステム（ＯＳ：Operating  System）、画像処理装置２００で実行される制御プログラムなどを格納する。ＣＰＵ２０２は、オペレーティングシステムや画像処理装置２００の制御プログラムなどの各種プログラムを実行することで、画像処理装置２００の動作を制御する。ＲＡＭ２０３は、ワーキングメモリとして機能し、プログラムの実行に必要な各種データを一時的に格納する。
【００７８】
ネットワークＩ／Ｆ２０４は、アンテナ２０４Ａを介して、他の通信機器との間でデータを送受信する。他の通信機器は、たとえば、後述するサーバ３００、その他の通信機能を有する装置などを含む。画像処理装置２００は、アンテナ２０４Ａを介して、本実施の形態に従う各種の処理を実現するための画像処理プログラム２２４をダウンロードできるように構成されてもよい。
【００７９】
カメラＩ／Ｆ２０５は、たとえば、画像処理装置２００とカメラ２３０とを接続するための端子である。ＣＰＵ２０２は、カメラＩ／Ｆ２０５を介してカメラ２３０とデータ通信を行なう。カメラ２３０、たとえば、監視カメラ、デジタルカメラ、またはその他の被写体を撮影することが可能な撮像装置である。カメラ２３０は、被写体を撮像して生成した画像をＲＯＭ２０１、ＲＡＭ２０３、記憶装置２２０などにカメラＩ／Ｆ２０５を介して順次転送する。なお、カメラ２３０および画像処理装置２００は、一体として構成されてもよいし、図１２に示されるように別個に構成されてもよい。
【００８０】
ディスプレイＩ／Ｆ２０６は、たとえば、画像処理装置２００とディスプレイ２３２とを接続するための端子である。ディスプレイ２３２は、たとえば、液晶ディスプレイ、有機ＥＬ（Electro  Luminescence）ディスプレイ、またはその他の表示機器などを含む。ディスプレイ２３２は、ニューラルネットワーク１００における分類結果や学習結果を表示する。また、ディスプレイ２３２は、タッチセンサ（図示しない）と組み合わされてタッチパネルとして構成されてもよい。これにより、画像処理装置２００の操作者は、学習画像を登録するための操作や学習処理を実行するための操作をタッチ操作で行なうことが可能になる。
【００８１】
記憶装置２２０は、たとえば、ハードディスクや外付けの記憶装置などの記憶媒体である。一例として、記憶装置２２０は、学習対象の学習画像群２２２と、本実施の形態に従う各種の処理を実現するための画像処理プログラム２２４とを保持する。学習画像群２２２に含まれる学習画像は、たとえば、顔画像である。各学習画像には、個人の識別情報を示すカテゴリーが関連付けられている。
【００８２】
画像処理プログラム２２４は、単体のプログラムとしてではなく、任意のプログラムの一部に組み込まれて提供されてもよい。この場合、任意のプログラムと協働して本実施の形態に従う画像処理が実現される。このような一部のモジュールを含まないプログラムであっても、本実施の形態に従う画像処理装置２００の趣旨を逸脱するものではない。さらに、本実施の形態に従う画像処理プログラム２２４によって提供される機能の一部または全部は、専用のハードウェアによって実現されてもよい。さらに、画像処理装置２００と後述のサーバ３００とが協働して、本実施の形態に従う画像処理を実現するようにしてもよい。さらに、少なくとも１つのサーバが本実施の形態に従う画像処理を実現する、所謂クラウドサービスの形態で画像処理装置２００が構成されてもよい。
【００８３】
［小括］
以上のようにして、本実施の形態に従う画像処理装置２００は、カテゴリーが更新された場合に、ニューラルネットワーク１００の一部である後層１５０のみを学習する。その結果、画像処理装置２００は、ニューラルネットワーク１００の全部を再学習する場合に比べて、学習時間を短縮することができる。
【００８４】
＜第２の実施の形態＞
［概要］
第１の実施の形態に従う画像処理装置２００は、ニューラルネットワーク１００の全体を再学習する全学習処理を自身で行なっていた。ニューラルネットワーク１００の全体を再学習するためには、非常に大きな演算能力が必要となる。一般的に、セキュリティーシステムの末端のコンピュータは、それほど大きな演算能力を有していない可能性が高いため、全学習処理を実行することが困難である。そこで、第２の実施の形態に従う画像処理装置２００Ａは、サーバやワークステーションなどの演算能力の高い他の装置に全学習処理を実行させる。
【００８５】
［画像処理システム５００の機能構成］
図１３を参照して、画像処理システム５００の機能構成について説明する。図１３は、画像処理システム５００の機能構成を示すブロック図である。図１３に示されるように、画像処理システム５００は、画像処理装置２００Ａと、画像処理装置としてのサーバ３００とを備える。
【００８６】
画像処理装置２００Ａは、その機能構成として、更新部２５５と、部分学習部２６０と、入力部２７０と、送信部２８０と、受信部２８５とを含む。サーバ３００は、その機能構成として、受信部３５０と、全学習部３５５と、送信部３６０とを含む。更新部２５５と、部分学習部２６０と、入力部２７０と、出力部２７５とについては、図１１で説明した通りであるので説明を繰り返さない。
【００８７】
画像処理装置２００Ａの送信部２８０は、ニューラルネットワーク１００の前層１１０におけるフィルタの値とニューラルネットワーク１００の後層における重み係数の値とをサーバ３００に学習させる命令を、当該サーバ３００に送信する。ある局面において、当該命令は、現在時刻が予め定められた登録されている時刻になったことに基づいてサーバ３００に送信される。これにより、ニューラルネットワーク１００の全学習処理が定期的に実行される。予め定められた時刻は、たとえば、夜間の時刻である。他の局面において、上記命令は、画像処理装置２００Ａの操作者から全学習処理を実行するための操作を受け付けたときに送信される。
【００８８】
サーバ３００の全学習部３５５は、受信部３５０が学習命令を受信したことに基づいて、記憶装置３２０に格納されている学習画像群３２２を用いて上述の全学習処理を実行する。すなわち、全学習部３５５は、ニューラルネットワーク３３０の前層におけるフィルタのそれぞれの値と、ニューラルネットワーク３３０の後層における重み係数の値との両方を学習する。
【００８９】
サーバ３００の送信部３６０は、全学習部３５５による全学習処理が終了したことに基づいて、ニューラルネットワーク３３０を画像処理装置２００Ａの受信部２８５に送信する。受信部２８５がニューラルネットワーク３３０を受信すると、画像処理装置２００Ａは、既存のニューラルネットワーク１００を新たなニューラルネットワーク３３０に置き換える。
【００９０】
［サーバ３００のハードウェア構成］
上述したように、画像処理システム５００は、画像処理装置２００Ａとサーバ３００とを含む。以下では、図１４を参照して、サーバ３００のハードウェア構成の一例について説明する。図１４は、サーバ３００の主要なハードウェア構成を示すブロック図である。なお、画像処理装置２００Ａのハードウェア構成は、第１の実施の形態に従う画像処理装置２００と同じであるので、その説明については繰り返さない。
【００９１】
サーバ３００は、ＲＯＭ３０１と、ＣＰＵ３０２と、ＲＡＭ３０３と、ネットワークＩ／Ｆ３０４と、記憶装置３２０とを含む。
【００９２】
ＲＯＭ３０１は、オペレーティングシステム、サーバ３００で実行される制御プログラムなどを格納する。ＣＰＵ３０２は、オペレーティングシステムやサーバ３００の制御プログラムなどの各種プログラムを実行することで、サーバ３００の動作を制御する。ＲＡＭ３０３は、ワーキングメモリとして機能し、プログラムの実行に必要な各種データを一時的に格納する。
【００９３】
ネットワークＩ／Ｆ３０４は、ネットワーク４００を介して、他の通信機器との間でデータを送受信する。他の通信機器は、たとえば、画像処理装置２００Ａ、その他の通信機能を有する装置などを含む。サーバ３００は、ネットワーク４００を介して、本実施の形態に従う各種の処理を実現するための画像処理プログラム３２４をダウンロードできるように構成されてもよい。
【００９４】
記憶装置３２０は、たとえば、ハードディスクや外付けの記憶装置などの記憶媒体である。一例として、記憶装置３２０は、学習対象の学習画像群３２２と、本実施の形態に従う各種の処理を実現するための画像処理プログラム３２４とを保持する。学習画像群３２２に含まれる学習画像は、たとえば、顔画像である。学習画像には、個人の識別情報を示すカテゴリーが関連付けられている。
【００９５】
画像処理プログラム３２４は、単体のプログラムとしてではなく、任意のプログラムの一部に組み込まれて提供されてもよい。この場合、任意のプログラムと協働して本実施の形態に従う画像処理が実現される。さらに、画像処理プログラム３２４によって提供される機能の一部または全部は、専用のハードウェアによって実現されてもよい。さらに、サーバ３００と他の装置とが協働して、本実施の形態に従う画像処理を実現するようにしてもよい。
【００９６】
［小括］
以上のようにして、本実施の形態においては、画像処理装置２００Ａは、全学習処理をサーバ３００などの高性能なコンピュータに実行させる。そのため、画像処理装置２００Ａは、演算コストが低い部分学習処理を実行できる程度の性能を備えればよい。結果として、画像処理装置２００Ａの価格を下げることができる。
【００９７】
また、画像処理装置２００Ａは、ニューラルネットワークの一部を再学習（部分学習）する。その結果、画像処理装置２００Ａは、新たに顔画像が登録された場合に、ニューラルネットワークを短時間で更新することができる。一方で、画像処理装置２００Ａは、ニューラルネットワークの全体をサーバ３００に再学習（全学習）させる。これにより、画像処理装置２００Ａは、分類精度を改善することができる。
【００９８】
＜第３の実施の形態＞
［概要］
第１の実施の形態に従う画像処理装置２００は、ニューラルネットワーク１００の後層１５０における重み係数を全て再学習していた。これに対して、第３の実施の形態に従う画像処理装置２００Ｂは、ニューラルネットワーク１００の後層１５０の最終層から順に重み係数を再学習し、当該学習結果が予め定められた基準を満たした場合に学習処理を終了する。これにより、画像処理装置２００Ｂは、部分学習処理にかかる時間を短縮することができる。
【００９９】
以下では、図１５を参照して、第３の実施の形態に従う画像処理装置２００Ｂについて説明する。図１５は、第３の実施の形態における後層１５０を概略的に示した図である。まず、画像処理装置２００Ｂにおける後層１５０の分類機能について説明する。次に、後層１５０を構築するための学習機能について説明する。なお、画像処理装置２００Ｂのハードウェア構成などその他の点については第１の実施の形態に画像処理装置２００と同じであるので、それらの説明は繰り返さない。
【０１００】
（画像処理装置２００Ｂの分類機能）
ニューラルネットワーク１００の後層は、第１層目の層１５７と第２層目の層１７７と出力層とを含む。層１５７は、ニューロン素子１５１〜１５４を含む。ニューロン素子１５１〜１５４の数は、任意である。層１７７は、ニューロン素子１７２〜１７４を含む。ニューロン素子１７２〜１７４の数は、任意である。出力層は、照合スコアを出力する層であり、ニューロン素子１６２〜１６４を含む。ニューロン素子１６２〜１６４は、登録されているカテゴリー数に合わせて予め準備されている。
【０１０１】
層１５７のニューロン素子１５１〜１５４のそれぞれには、互いに異なる行列を特徴量マップ１２７に積算して得られた値と、互いに異なる行列を特徴量マップ１２８に積算して得られた値とが入力される。ニューロン素子１５１は、自身に入力された値を加算した上で重み係数ｗ4Aを積算し、積算した結果を特徴量として次段のニューロン素子１７３に出力する。ニューロン素子１５２は、自身に入力された値を加算した上で重み係数ｗ4Bを積算し、積算した結果を特徴量として次段のニューロン素子１７３に出力する。ニューロン素子１５４は、自身に入力された値を加算した上で重み係数ｗ4Nを積算し、積算した結果を特徴量として次段のニューロン素子１７３に出力する。重み係数ｗ4A〜ｗ4Nは、上述の学習処理により予め決定されている。
【０１０２】
ニューロン素子１７２は、自身に入力された値を加算した上で重み係数ｗ5Aを積算し、積算した結果を特徴量として出力層のニューロン素子１６３に出力する。ニューロン素子１７３は、自身に入力された値を加算した上で重み係数ｗ5Bを積算し、積算した結果を特徴量として出力層のニューロン素子１６３に出力する。ニューロン素子１５４は、自身に入力された値を加算した上で重み係数ｗ4Nを積算し、積算した結果を特徴量として出力層のニューロン素子１６３に出力する。重み係数ｗ5A〜ｗ5Nは、上述の学習処理により予め決定されている。
【０１０３】
このように、後層１５０は、前層１１０から出力される特徴量を最初の層の入力値である特徴量として、各層における各処理ユニットが入力値である特徴量に対してそれぞれ異なる重み係数を作用させた結果に基づいて次段の層の処理ユニットに対して出力値を出力する処理を行なう。後層１５０は、当該出力値に基づいて、最終的に入力画像１０１を複数のカテゴリーのいずれかに分類する。
【０１０４】
なお、上述のように、後層１５０において係数を作用させる処理は、入力値である特徴量に対して係数を積算する演算処理を行なうことによりなされる。
【０１０５】
（画像処理装置２００Ｂの学習機能）
次に、後層１５０を構築するための画像処理装置２００Ｂの学習機能について説明する。画像処理装置２００Ｂは、登録カテゴリーが更新された場合に、層１７７における重み係数ｗ5A〜ｗ5Nの値を再学習し、更新後の重み係数ｗ5A〜ｗ5Nを用いた分類結果が予め定められた基準を満たさないときに、層１５７における重み係数ｗ4A〜ｗ4Nの値をさらに更新する。すなわち、層１７７における重み係数ｗ5A〜ｗ5Nの値を更新した結果が予め定められた基準を満たした場合には、画像処理装置２００Ｂは、層１５７における重み係数ｗ4A〜ｗ4Nの値を再学習しない。予め定められた基準は、たとえば、入力画像に対するニューラルネットワーク１００の出力値と、望ましい出力値との間の誤差の平均値が予め定められた閾値以下であるときに満たされる。
【０１０６】
なお、後層１５０は、図１５に示されるよりも多くの層で構成されてもよい。この場合、画像処理装置２００Ｂは、後層１５０における重み係数のそれぞれの値を最終層から順に更新し、更新後の係数を用いた分類結果が予め定められた基準を満たした時点で学習処理を終了する。
【０１０７】
また、画像処理装置２００Ｂは、後層１５０の重み係数の学習を終えた時点で、分類結果が予め定められた基準を満たさないときには、前層１１０のフィルタの値をさらに再学習してもよい。このとき、画像処理装置２００Ｂは、前層１１０の最終層から前の層に向かって順にフィルタの値を再学習し、当該学習結果が予め定められた基準を満たした時点で学習処理を終了する。
【０１０８】
（前層１１０の変形例）
次に、前層１１０の変形例の変形例について説明する。前層１１０の層数は、任意である。たとえば、畳み込み層とサブサンプリング層とを含む層を１層として数えた場合に、前層１１０は、図２に示されるように１層で構成されてもよいし、図１６に示されるように２層で構成されてもよいし、３層以上で構成されてもよい。
【０１０９】
以下、図１６を参照して、前層１１０が２層で構成されている場合における前層１１０の処理ついて説明する。前層１１０は、第１層と第２層とを含む。前層１１０の各層における各処理ユニットは、前の層における各処理ユニットから出力される特徴量マップに対してそれぞれ異なる空間フィルタを作用させた結果を次段の層における各処理ユニットに出力する。
【０１１０】
より具体的には、第１層および第２層のそれぞれは、畳み込み層と、サブサンプリング層とを含む。第１層の畳み込み層は、入力画像１０１に対してフィルタ１０３を畳み込むことで特徴量マップ１２１を生成し、入力画像１０１に対してフィルタ１０５を畳み込むことで特徴量マップ１２２を生成する。
【０１１１】
次に、第１層のサブサンプリング層は、特徴量マップ１２１，１２２に対してサンプリング処理を行なう。一例として、サンプリング処理は、特徴量マップ１２１，１２２を局所領域に分割し、各局所領域の平均値または最大値を算出する処理を含む。図１６の例では、第１層のサブサンプリング層は、特徴量マップ１２１に対してサンプリング処理を実行することにより特徴量マップ１２３を生成し、特徴量マップ１２２に対してサンプリング処理を実行することにより特徴量マップ１２４を生成する。
【０１１２】
第２層の畳み込み層は、特徴量マップ１２３に対してフィルタ１３１を畳み込んだ結果と、特徴量マップ１２４に対してフィルタ１３３を畳み込んだ結果とを足し合わせた結果を新たな特徴量マップ１２５として生成する。同様に、第２層の畳み込み層は、特徴量マップ１２３に対してフィルタ１３２を畳み込んだ結果と、特徴量マップ１２４に対してフィルタ１３４を畳み込んだ結果とを足し合わせた結果を新たな特徴量マップ１２６として生成する。フィルタ１３１〜１３４の値は、上述の学習処理により予め決定されている。
【０１１３】
次に、第２層のサブサンプリング層は、特徴量マップ１２５，１２６に対してサンプリング処理を行なう。図１６の例では、第２層のサブサンプリング層は、特徴量マップ１２５に対してサンプリング処理を実行することにより特徴量マップ１２７を生成し、特徴量マップ１２６に対してサンプリング処理を実行することにより特徴量マップ１２８を生成している。
【０１１４】
以上のようにして、前層１１０は、入力画像１０１を最初の層の入力値である特徴量マップとして、各層における各処理ユニットが入力値である特徴量マップに対してそれぞれ異なるフィルタを作用させた結果に基づいて次段の層の処理ユニットに対して出力値を出力する処理を行なう。前層１１０は、最終的に複数の特徴量のそれぞれを生成し、生成した特徴量を後層１５０に出力する。
【０１１５】
［画像処理装置２００Ｂの制御構造］
図１７および図１８を参照して、第３の実施の形態に従う画像処理装置２００Ｂの制御構造について説明する。図１７は、画像処理装置２００Ｂが実行する部分学習処理を示すフローチャートである。図１８は、第３の実施の形態における部分学習処理の誤差逆伝播法を示すフローチャートである。図１７および図１８の処理は、画像処理装置２００ＢのＣＰＵ２０２（図１２参照）がプログラムを実行することにより実現される。他の局面において、処理の一部または全部が、回路素子、その他のハードウェアによって実行されてもよい。なお、図１７のステップＳ１２Ｂ，Ｓ１８Ｂ，Ｓ２６以外の処理は、図４に示される各ステップの処理と同じであるので、説明を繰り返さない。
【０１１６】
ステップＳ１２Ｂにおいて、ＣＰＵ２０２は、後層１５０における第（ｎ＋１）層目から最終層までの重み係数を初期化する。変数ｎの初期値としては、たとえば、０が設定される。
【０１１７】
ステップＳ１８Ｂにおいて、ＣＰＵ２０２は、後層１５０における第（ｎ＋１）層目から最終層までの重み係数の値を誤差逆伝播法により更新する。
【０１１８】
ここで、図１８を参照して、ステップＳ１８Ｂにおける誤差逆伝搬法についてさらに詳細に説明する。なお、図１８のステップＳ５０Ｂ，Ｓ５２Ｂ以外の処理は、図７に示される各ステップの処理と同じであるので、説明を繰り返さない。
【０１１９】
ステップＳ５０Ｂにおいて、ＣＰＵ２０２は、層番号ｂが後層１５０の第ｎ層目であるか否かを判断する。ＣＰＵ２０２は、層番号ｂが後層１５０の第ｎ層目であると判断した場合（ステップＳ５０ＢにおいてＹＥＳ）、制御をステップＳ５２Ｂに切り替える。そうでない場合には（ステップＳ５０ＢにおいてＮＯ）、ＣＰＵ２０２は、ステップＳ４４の処理を再び実行する。ステップＳ５０Ｂの処理により、ＣＰＵ２０２は、後層１５０のｎ層目から最終層までの重み係数の値の修正量を算出できる。
【０１２０】
ステップＳ５２Ｂにおいて、ＣＰＵ２０２は、ステップＳ４６で算出した修正量に基づいて、後層１５０のｎ層目から最終層までの重み係数の値の修正量を更新する。
【０１２１】
再び図１７を参照して、ステップＳ２６において、ＣＰＵ２０２は、現在のｎの値から１を減算する。すなわち、ＣＰＵ２０２は、後層１５０において部分学習の対象となる層を１層増加する。
【０１２２】
上記のような部分学習処理が成立する原理を説明する。図３および上記式（１）に示されるように、ニューラルネットワーク１００を構成する各ニューロン素子は、式（１）に示される活性化関数ｆ（ｘ）によって与えられた入力ｘ1〜ｘNを新たな変数ｙに変換している。したがって、第ｍ層にＮｍ個のニューロン素子が存在し、第（ｍ＋１）層にＮm+1個のニューロン素子が存在する場合には、第（ｍ＋１）層は、第ｍ層からのＮm個の出力値をＮm+1個の出力値に写像していることになる。その結果、画像処理装置２００Ｂは、後層１５０における出力層の１つ前の第（Ｌ−１）層までは、分類対象の画像の画素値を分類に適した特徴量を得るために、上記の演算により異なる特徴空間に繰り返し写像している。したがって、後層１５０における前方の層ほど、分類対象の画像と同種のデータを分類するのに適した特徴量への写像が形成される。
【０１２３】
一方、画像処理装置２００Ｂは、後層１５０の出力層である第Ｌ層においては、出力層からの出力値が最大となるニューロン素子に対応するカテゴリーに入力画像を分類する。そのため、出力層の各ニューロン素子は、１つ前の層の各ニューロン素子からの出力値を写像するのではなく、前の層の各ニューロン素子によって形成される特徴量に対して、入力画像を正確に分類するように閾値を設定していると解釈できる。したがって、分類精度に対する影響は、後層１５０における前方の層よりも後層１５０における後方の層の方が大きい。そのため、画像処理装置２００Ｂは、後層１５０の後方の層のみを更新すれば、十分な分類精度が得られる。
【０１２４】
［小括］
以上のようにして、本実施の形態に従う画像処理装置２００Ｂは、ニューラルネットワーク１００の後層１５０の最終層から順に重み係数を再学習し、当該学習結果が予め定められた基準を満たした場合に学習処理を終了する。これにより、画像処理装置２００Ｂは、意図する分類精度を実現しながら、部分学習処理にかかる時間を短縮することができる。
【０１２５】
＜第４の実施の形態＞
［概要］
再び図１３を参照して、第４の実施の形態に従う画像処理装置２００Ｃについて説明する。第２の実施の形態に従う画像処理装置２００Ａは、画像処理装置２００Ａの学習画像群２２２と、サーバ３００の学習画像群３２２とを互いに同期していなかった。これに対して、第４の実施の形態に従う画像処理装置２００Ｃは、サーバ３００が全学習処理を実行する前に、サーバ３００の学習画像群３２２を画像処理装置２００Ｃの学習画像群２２２に同期させる。これにより、画像処理装置２００Ｃは、新たに登録された学習画像をサーバ３００の学習画像群３２２に反映することが可能になり、分類精度をさらに向上することができる。
【０１２６】
より具体的には、画像処理装置２００Ｃの送信部２８０は、全学習処理を実行するための命令を受け付けたときに、画像処理装置２００Ｃの学習画像群２２２と、当該学習命令とをサーバ３００に送信する。このとき、送信部２８０は、学習画像群２２２の全部をサーバ３００に送信してもよいし、新たに登録された学習画像のみをサーバ３００に送信してもよい。
【０１２７】
受信部３５０が画像処理装置２００Ｃの学習画像群２２２と学習命令とを受信したことに基づいて、全学習部３５５は、サーバ３００の学習画像群３２２を画像処理装置２００Ｃの学習画像群２２２で更新する。これにより、サーバ３００の学習画像群３２２と、画像処理装置２００Ｃの学習画像群２２２とが同期される。全学習部３５５は、更新された学習画像群３２２を用いて上述の全学習処理を実行し、新たなニューラルネットワーク３３０を生成する。
【０１２８】
送信部３６０は、新たに生成されたニューラルネットワーク３３０を画像処理装置２００Ｃに送信する。受信部２８５がニューラルネットワーク３３０を受信すると、画像処理装置２００Ｃは、既存のニューラルネットワーク１００を新たなニューラルネットワーク３３０に置き換える。
【０１２９】
なお、第４の実施の形態に従う画像処理装置２００Ｃのハードウェア構成などその他の点については第１の実施の形態に画像処理装置２００と同じであるので、それらの説明は繰り返さない。
【０１３０】
［小括］
以上のようにして、本実施の形態に従う画像処理装置２００Ｃは、全学習処理を実行する前に、サーバ３００の学習画像群３２２と画像処理装置２００Ｃの学習画像群２２２とを同期する。これにより、画像処理装置２００Ｃは、新たに登録された学習画像をサーバ３００の学習画像群３２２に反映することが可能になり、全学習処理における学習精度をさらに向上することができる。結果として、分類精度がさらに改善される。
【０１３１】
今回開示された実施の形態は全ての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内での全ての変更が含まれることが意図される。
【符号の説明】
【０１３２】
１００，３３０  ニューラルネットワーク、１０１  入力画像、１０３，１０５  フィルタ、１１０  前層、１２１〜１２４  特徴量マップ、１５０  後層、１５１〜１５４，１６１〜１６４，１７２〜１７４  ニューロン素子、１５７，１７７  層、２００，２００Ａ〜２００Ｃ  画像処理装置、２０１，３０１  ＲＯＭ、２０２，３０２  ＣＰＵ、２０３，３０３  ＲＡＭ、２０４，３０４  ネットワークＩ／Ｆ、２０４Ａ  アンテナ、２０５  カメラＩ／Ｆ、２０６  ディスプレイＩ／Ｆ、２２０，３２０  記憶装置、２２２，３２２  学習画像群、２２４，３２４  画像処理プログラム、２３０  カメラ、２３２  ディスプレイ、２５０，３５５  全学習部、２５５  更新部、２６０  部分学習部、２７０  入力部、２７５  出力部、２８０，３６０  送信部、２８５，３５０  受信部、３００  サーバ、４００  ネットワーク、５００  画像処理システム。
【図１】
2016139176.tif 000003
【図２】
2016139176.tif 000004
【図３】
2016139176.tif 000005
【図４】
2016139176.tif 000006
【図５】
2016139176.tif 000007
【図６】
2016139176.tif 000008
【図７】
2016139176.tif 000009
【図８】
2016139176.tif 000010
【図９】
2016139176.tif 000011
【図１０】
2016139176.tif 000012
【図１１】
2016139176.tif 000013
【図１２】
2016139176.tif 000014
【図１３】
2016139176.tif 000015
【図１４】
2016139176.tif 000016
【図１５】
2016139176.tif 000017
【図１６】
2016139176.tif 000018
【図１７】
2016139176.tif 000019
【図１８】
2016139176.tif 000020