(57)【要約】【課題】効率的な学習を可能とする。【解決手段】ニューラルネットワーク（ＮＮ）を用いて画像識別処理を行う画像処理システムであって、前段のＮＮを用いて第１の処理を行う第１の処理手段と、後段のＮＮを用いて第２の処理を行う第２の処理手段と、第１の処理手段の出力層からの出力値に基づいて第１の処理手段の出力層の各ノードから第２の処理手段の入力層の各ノードへの結合係数を含むパラメータを学習する学習手段と、第１の処理手段と学習手段との間の通信帯域に応じて、第１の処理手段の出力層の各ノードの中から学習手段への出力値の送信を抑止するドロップアウトノードを決定する決定手段と、を有する。【選択図】図２
2020052689.tif 000002
【特許請求の範囲】
【請求項１】
Ｌ層のニューラルネットワーク（ＮＮ）を用いる画像処理システムであって、
Ｌ層のうちの前段のＭ層のＮＮを用いて第１の処理を行う第１の処理手段と、
Ｌ層のうちの後段の（Ｌ−Ｍ）層のＮＮを用いて第２の処理を行う第２の処理手段と、
前記第１の処理手段の出力層からの出力値に基づいて、前記第１の処理手段の出力層の各ノードから前記第２の処理手段の入力層の各ノードへの結合係数を含むパラメータを学習する学習手段と、
前記第１の処理手段と前記学習手段との間の通信帯域に応じて、前記第１の処理手段の出力層の各ノードの中から前記学習手段への出力値の送信を抑止するドロップアウトノードを決定する決定手段と、
を有し、
前記第１の処理手段は、前記決定手段により決定されたドロップアウトノードを除く前記第１の処理手段の出力層の各ノードからの出力値を前記学習手段に送信する
ことを特徴とする画像処理システム。
【請求項２】
前記決定手段は、前記第１の処理手段と前記学習手段との間の通信帯域に応じて、前記第１の処理手段の出力層におけるドロップアウト率を決定し、該ドロップアウト率に基づいて前記ドロップアウトノードを決定する
ことを特徴とする請求項１に記載の画像処理システム。
【請求項３】
前記第１の処理手段から前記学習手段に送信されるデータ量は、前記第１の処理手段で用いられるＭ層のＮＮの各層間で送信される何れのデータ量よりも少ない
ことを特徴とする請求項１又は２に記載の画像処理システム。
【請求項４】
前記決定手段は、前記第１の処理手段の出力層の全ノード数に対する前記ドロップアウトノードの数が前記ドロップアウト率以上となるように、前記ドロップアウトノードを決定する
ことを特徴とする請求項２に記載の画像処理システム。
【請求項５】
前記第１の処理手段におけるＭ層のＮＮは畳み込みフィルタ演算を行い、
前記第２の処理手段における（Ｌ−Ｍ）層のＮＮは全結合演算を行う
ことを特徴とする請求項１乃至４の何れか１項に記載の画像処理システム。
【請求項６】
前記第１の処理手段は第１の装置に配置され、
前記学習手段は前記第１の装置とは異なる第２の装置に配置され、
前記第１の装置と前記第２の装置とは通信ネットワークを介して相互に通信可能に接続されている
ことを特徴とする請求項１乃至５の何れか１項に記載の画像処理システム。
【請求項７】
前記第２の処理手段は、前記第１の装置に配置され、
前記第１の装置は、前記学習手段により学習されたパラメータを前記第２の処理手段の入力層の各ノードへ設定する設定手段を更に有する
ことを特徴とする請求項６に記載の画像処理システム。
【請求項８】
前記第１の装置は、前記第２の処理手段による正しい処理結果を示す教師データを提供する提供手段を更に有し、
前記第２の装置は、
前記第１の処理手段の出力層の各ノードから送信された出力値を蓄積する第１の蓄積手段と、
前記学習手段による学習結果を蓄積する第２の蓄積手段と、
前記提供手段により提供された教師データに基づいて、前記第１の蓄積手段に蓄積された出力値に関連する教師データを修正し、前記学習手段に対して再学習を指示する指示手段と、
を更に有する
ことを特徴とする請求項６又は７に記載の画像処理システム。
【請求項９】
前記第２の蓄積手段における学習結果の保持期間は、前記第１の蓄積手段における出力値の保持期間よりも長い
ことを特徴とする請求項８に記載の画像処理システム。
【請求項１０】
前記通信帯域に応じて、前記Ｍの値を変更する変更手段を更に有する
ことを特徴とする請求項１乃至９の何れか１項に記載の画像処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、多層構造のニューラルネットワークに関するものである。
【背景技術】
【０００２】
ディープネット或いはディープニューラルネットと呼ばれる多層構造のニューラルネットワーク、およびそのネットワークの学習方法であるディープラーニング（深層学習とも称される）が、近年非常に大きな注目を集めている。ディープネットは、特定の演算手法を指すものではないが、一般的には、入力データ（例えば画像）に対して、階層的な処理（ある階層の処理結果を、その後段の階層の処理の入力とする）を行うものを指す。
【０００３】
画像識別の分野では、畳み込みフィルタ演算を行う畳み込み層と、全結合演算を行う全結合層とから構成されるディープネットが主流になりつつある。特許文献１では、文字認識処理において、トレーニング部と認識部を分けて構成し、特徴ベクトルをＳＶＭ（support vector machine）にて分類する技術が開示されている。
【０００４】
また、非特許文献１および非特許文献２では、ディープネットにおける学習時のデータ削減に寄与する「ドロップアウト」という技法が言及されている。例えば、図１のような順伝播型のニューラルネットワークにおいて、実線部分の結合係数を誤差逆伝播法によって学習する際に、太い円で表されるノードからドロップアウトノードを決定する。そしてドロップアウトノードはその出力を常に０とする。ここで、ドロップアウトノードの決定は、ノードごとに、ドロップアウト率と呼ばれる所定の確率で決定する。例えばドロップアウト率が０．５の場合、各ノードはそれぞれ０．５の確率でドロップアウトノードとなる。このように構成することにより、学習データへの過適合が抑制され、識別器としての性能が向上することが確かめられている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９−４８６４１号公報
【非特許文献】
【０００６】
【非特許文献１】A. Krizhevsky, I. Sutskever and G.E. Hinton, "ImageNet Classification with Deep Convolutional Neural Networks", NIPS, 2012
【非特許文献２】G.E. Hinton, N. Srivastava, A. Krizhevsky, I. Sutskever and R.R. Salakhutdinov, "Improving neural networks by preventing co-adaptation of feature detectors", CoRR, 2012
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１では、トレーニング部と特徴ベクトル抽出部とを結ぶ通信路の帯域が十分でない場合には、学習を適切に行うことが出来ない。また、非特許文献１や非特許文献２に開示されるドロップアウトにおいては、ドロップアウト率は所与のものであることから、通信路の帯域が時間と共に変化する場合に適切な学習を行うことが出来ない。さらに、非特許文献１および非特許文献２では、ドロップアウトノードの決定を、ドロップアウト率に基づいて各ノードが独立して決定している。そのため、ドロップアウトノードの数を、目的とする数と一致するように制御することができない。その結果、ドロップアウトノードが多い場合は通信路の帯域を有効に活用して学習を行うことができず、またドロップアウトノードが少ない場合は十分な学習を行うことができない。
【０００８】
本発明は、このような問題に鑑みてなされたものであり、効率的な学習を可能とする技術を提供することを目的としている。
【課題を解決するための手段】
【０００９】
上述の問題点を解決するため、本発明に係る画像処理システムは以下の構成を備える。すなわち、Ｌ層のニューラルネットワーク（ＮＮ）を用いて画像識別処理を行う画像処理システムは、
Ｌ層のうちの前段のＭ層のＮＮを用いて第１の処理を行う第１の処理手段と、
Ｌ層のうちの後段の（Ｌ−Ｍ）層のＮＮを用いて第２の処理を行う第２の処理手段と、
前記第１の処理手段の出力層からの出力値に基づいて、前記第１の処理手段の出力層の各ノードから前記第２の処理手段の入力層の各ノードへの結合係数を含むパラメータを学習する学習手段と、
前記第１の処理手段と前記学習手段との間の通信帯域に応じて、前記第１の処理手段の出力層の各ノードの中から前記学習手段への出力値の送信を抑止するドロップアウトノードを決定する決定手段と、
を有し、
前記第１の処理手段は、前記決定手段により決定されたドロップアウトノードを除く前記第１の処理手段の出力層の各ノードからの出力値を前記学習手段に送信する。
【発明の効果】
【００１０】
本発明によれば、効率的な学習を可能とする技術を提供することができる。
【図面の簡単な説明】
【００１１】
【図１】ドロップアウト技法を説明する図である。
【図２】第１実施形態におけるシステムの構成を説明する図である。
【図３】ドロップアウト率の決定処理のフローチャートである。
【図４】システムにおけるデータ拡張部の配置の一例を示す図である。
【図５】ディープネットの一連の処理を例示的に示す図である。
【図６】ドロップアウトノードの決定処理のフローチャートである。
【図７】第５実施形態における画像識別システムの構成を説明する図である。
【図８】画像識別システムにおけるデータ拡張部の配置の一例を示す図である。
【図９】第６実施形態における画像識別システムの構成を説明する図である。
【図１０】再学習処理のフローチャートである。
【図１１】再学習処理の他のフローチャートである。
【図１２】第８実施形態における画像識別システムの構成を説明する図である。
【図１３】ディープネットの一連の処理を例示的に示す図である。
【図１４】学習データ振分部における再学習処理のフローチャートである。
【発明を実施するための形態】
【００１２】
以下に、図面を参照して、この発明の実施の形態の一例を詳しく説明する。なお、以下の実施の形態はあくまで例示であり、本発明の範囲を限定する趣旨のものではない。
【００１３】
（第１実施形態）
本発明に係る画像処理システムの第１実施形態として、ニューラルネットワークを用いたシステムを例に挙げて以下に説明する。
【００１４】
＜複数の筺体を用いたシステム＞
ディープネットを監視カメラ等に搭載される画像識別アルゴリズムとして見た場合、入力に近い層は特徴抽出を行っていると考えられ、出力に近い層、特に全結合層では抽出された特徴を元に識別処理を行っていると考えられる。カメラの設置環境や、人や車といった識別対象分野が、学習時と異なる場合、特徴抽出処理の性能はあまり変わらないが、識別処理は再学習により大きく性能が上がることが一般に知られている。
【００１５】
ここでディープネットによる画像識別の一連の処理を、層の区切りでふたつに分け、入力に近い側の処理を第一の処理、出力に近い側を第二の処理とする。そして、第一の処理は、監視カメラが用いられる設置環境や識別対象分野における典型的なデータを用いて事前にネットワークの学習を行っておき、設置後は第二の処理のネットワークのみ学習する。
【００１６】
前述の知見により、このように構成した場合でも、画像識別性能は、設置後に両方の処理を学習する場合と比べてあまり低下しないことが期待できる。このように識別性能に大きく影響する処理部分のみを対象としてネットワークの学習を行うことにより、識別性能をあまり落とさずに学習コストを下げることができる。そして、学習機能を監視カメラ本体とは別の筐体に持たせ、設置時作業内容に含めたり、有償あるいは無償のサービスとしたりすることで、監視カメラ本体の価格を抑えることができる。
【００１７】
第二の処理のネットワークの学習は、第一の処理を行う部分（以降、第一処理部と呼ぶ）から、第二の処理のネットワークの学習を行う部分（以降、第二処理学習部と呼ぶ）に向けて大量のデータを送信することにより行うことになる。
【００１８】
上述の構成の監視カメラシステムでは、第一処理部と第二処理学習部は異なる筐体に収められているため、上述の大量のデータはこれらをつなぐ通信路を介して送られる。ただし、異なる筺体間の通信路の通信帯域は、一般に筐体内部の通信路の通信帯域に比べ狭くなっている。そのため、第二のネットワークの学習において、第一処理部から第二処理学習部に送るデータ量を削減する必要がある。
【００１９】
＜システムの構成＞
図２は、第１実施形態におけるシステムの構成を説明する図である。システム２は、第一の筐体２１と第二の筐体２２から構成されている。第一の筐体２１と第二の筐体２２とは、それぞれの通信部（通信部２１１、通信部２２１）を用いて、通信ネットワークなどの通信路２３を介して相互に通信可能に構成されている。なお、以下の説明において、特に説明のない限り、第一の筐体２１内の各部と第二の筐体２２内の各部との間のデータの受け渡しは、通信部２１１、通信路２３、通信部２２１を経由して行われる。
【００２０】
第一の筐体２１は、画像取得部２１２、前処理部２１３、第一処理部２１４、データ転送制御部２１５を含む。また第二の筐体２２は、帯域推定部２２２、第二処理学習部２２３を含む。さらに、第二処理学習部２２３はドロップアウト率決定部２２３１を備える。なお、ここでは、各機能部は、ＣＰＵが所定のプログラムを実行することにより実現されることを想定する。ただし、１以上の機能部をＡＳＩＣなどのハードウェアを用いて実現してもよい。
【００２１】
画像取得部２１２は、ＣＣＤやＣＭＯＳセンサー等を用いて、デジタル画像を取得し、前処理部２１３に渡す。なお、画像取得部はデジタル画像を提供できるものであればよく、例えば記憶媒体に記録されたデジタル画像を読み出すものでもよい。例えば、ビデオサーバーや画像サーバーに蓄えられたデジタル画像を、不図示の通信部を用いて読み出すものでもよい。
【００２２】
前処理部２１３は、用途に応じて色調補正、明るさ補正、白黒化やエッジ強調等の処理を行うものであり、用途によっては省略してもよい。前処理部２１３が行う色調補正、明るさ補正、白黒化やエッジ強調等の処理は、画像処理分野において公知であるため、詳細は省略する。
【００２３】
第一処理部２１４は、背景技術で説明したとおり、第一の処理を行う。例えば、Ｌ層のニューラルネットワーク（ＮＮ）の前段のＭ層のＮＮを用いて第一の処理を行う。そして、第一の処理の全出力ノードの出力値をデータ転送制御部２１５に送る。
【００２４】
データ転送制御部２１５は、第一処理部２１４から受け取った全出力ノードの出力値のうち、第二処理学習部２２３から指示された、ドロップアウトされなかったノードの出力値のみを、第二処理学習部２２３に渡す。なお、以下の説明では、データ転送制御部２１５から第二処理学習部２２３に渡される前述のノードの出力値を「学習データ」と呼ぶ。
【００２５】
第二処理学習部２２３は、データ転送制御部２１５から受け取った、学習データから、誤差逆伝播法によって少なくとも第一の処理の最終層と第二の処理の最初層との間の結合係数を学習する。なお、第二の処理は、Ｌ層のニューラルネットワーク（ＮＮ）の後段の（Ｌ−Ｍ）層のＮＮを用いて実行される処理である。なお、第二処理学習部２２３は、さらに第二の処理の内部の結合係数等を学習しても構わない。
【００２６】
学習の際に用いる教師データは、予め対応する正解がわかっているなら、それを用いればよい。たとえば画像取得部２１２が録画済のビデオサーバーや画像サーバーの場合には、予め教師データを作成することが可能である。もし正解がわかっていなければ、たとえば推定値として第二処理学習部２２３で学習中のネットワークを順伝播評価して得た結果を用いればよい。
【００２７】
ある程度学習が進んだ第二の処理のネットワークでは、多くの場合、推定値と正解が一致することが期待できる。なお、推定値と正解が異なっていた場合の再学習の方法については、後述する他の実施形態において説明する。
【００２８】
帯域推定部２２２は、通信部２２１に通信状況を問い合わせて、通信路２３の通信帯域を推定する。帯域推定の方法は、公知の任意の手法が利用可能である。たとえば、「釘本健司，三宅茂樹，水谷后宏，"ソケットＡＰＩを備えるＴＣＰの可用帯域測定機能"，コンピュータソフトウェア Vol.31(2014) No.3 p.3_246-3_258，日本ソフトウェア科学会」に開示された手法が利用可能である。通信路２３の帯域推定結果は、ドロップアウト率決定部２２３１に渡される。
【００２９】
ドロップアウト率決定部２２３１は、通信路２３の推定通信帯域から、第一の処理の最終層のドロップアウト率を決定する。なお、確率的勾配降下法（ＳＧＤ：Stochastic Gradient Descent）でミニバッチを使う場合、ドロップアウト率は、ミニバッチ単位で変えればよい。ドロップアウト率の決定方法は、図３を参照して後述する。
【００３０】
第二処理学習部２２３は、ドロップアウト率決定部２２３１によって決定されたドロップアウト率に基づき、出力値の送信を抑止するドロップアウトノードを決定する。そして、データ転送制御部２１５に対して、第二処理学習部２２３に学習データとして渡すノードを指示する。
【００３１】
＜システムの動作＞
図３は、ドロップアウト率の決定処理のフローチャートである。当該処理は、ドロップアウト率決定部２２３１によって実行される。
【００３２】
ステップＳ３１では、ドロップアウト率決定部２２３１は、帯域推定部２２２から通信路２３の推定通信帯域を取得する。ステップＳ３２では、ドロップアウト率決定部２２３１は、通信路２３を圧迫しない最小のドロップアウト率p_dropout_minを計算する。例えば、以下の式（１）を満たす最小のp_dropout_cをp_dropout_minとすればよい。
【００３３】
（数１）
datasize_node * nodes_firstlayer * samplerate * (1 - p_dropout_c) ≦ bandwidth  ・・・（１）
【００３４】
ここで、
datasize_node：第一の処理の出力ノードの１ノードあたりの出力を送るのに必要なデータサイズ［Ｂｙｔｅｓ］；
nodes_firstlayer：第一の処理の全出力ノードの数；
samplerate：学習サンプルレート（１秒間に処理すべき学習サンプル数）［ｓａｍｐｌｅｓ／ｓｅｃ］；
p_dropout_c：ドロップアウト率；
bandwidth：推定通信帯域［Ｂｙｔｅｓ／ｓｅｃ］；
である。
【００３５】
なお、実際には通信に必要なヘッダや、データアライメントによる追加データ量等も考慮することが好適である。これらは、通信部２１１および通信部２２１が用いる通信プロトコルや、前述の出力ノードのデータを送るのに用いるデータ構造によるが、事前に推定可能な値である。
【００３６】
ステップＳ３３では、ドロップアウト率決定部２２３１は、次のミニバッチに対するドロップアウト率p_dropoutを決定する。例えば、式（２）に示すように決定するとよい。すなわち、通信路２３の通信帯域を考慮しない場合に最もよいと考えられるドロップアウト率p_dropout_bestと、通信路２３を圧迫しない最小のドロップアウト率p_dropout_minとの大きい方の値をp_dropoutとすればよい。なお、p_dropout_bestの値は任意に決定可能であるが、たとえば非特許文献２によれば、０．５が良いとされている。
【００３７】
（数２）
p_dropout := max(p_dropout_best, p_dropout_min)  ・・・（２）
【００３８】
ステップＳ３４では、ドロップアウト率決定部２２３１は、Ｓ３３で算出されたドロップアウト率p_dropoutを出力する。なお、学習をより効果的に行うために、データ拡張という技法を用いることがある。これは、入力画像に対して、トリミング、回転、コントラスト等の変更を行った画像に対しても学習を行う、という技法である。これにより、入力サンプル数（＝入力画像数）の数倍のサンプルに対しても学習を行い、精度の高いネットワークを学習できる。
【００３９】
図４は、システムにおけるデータ拡張部の配置の一例を示す図である。ここでは、データ拡張部４１１を、前処理部２１３と第一処理部２１４との間に配置する例を示している。データ拡張により学習データがｎ倍になる場合、式（１）の条件は、左辺にｎを乗じた式（３）となる。
【００４０】
（数３）
datasize_node * n * nodes_firstlayer * samplerate * (1 - p_dropout_c) ≦ bandwidth  ・・・（３）
【００４１】
以上説明したとおり第１実施形態によれば、ドロップアウトされるノードを第一の処理の最終層の出力ノードとする。この構成により、第一処理部から第二処理学習部へ渡される学習データ量は大幅に削減される。そのため、第一処理部と第二処理学習部とを異なる筐体に配置した構成においても好適に学習を行うことが可能となる。
【００４２】
また、通信路の通信帯域を考慮してドロップアウト率を決定しているため、通信路の帯域が比較的狭くても学習を効率的に行うことが可能となる。さらに、通信路の帯域が時間と共に変化する場合であっても、通信帯域に適合した学習を行うことが可能となる。
【００４３】
（第２実施形態）
第２実施形態では、第一の処理５１１と第二の処理５１２を分ける位置（層間）を決定する手法について説明する。
【００４４】
図５は、ディープネットの一連の処理を例示的に示す図である。なお、図５は一例であり、多層構造のニューラルネットワークであれば、どのようなものでも構わない。図５において、左端が入力層、右端が出力層である全９層（Ｌ＝９）のネットワークである。そのため、８箇所の層間５１〜５８が存在する。
【００４５】
まず、左端に１つの画像が入力された場合、各層間５１〜５８を通るデータ量を見積もる。データ量の見積もり方法は、１ノードあたりの出力データ幅と層間結合数等を乗じることで算出可能である。固定的なニューラルネットワークでは、各層間結合を通るデータ量は予見可能である。
【００４６】
次に見積もったデータ量を比較し、「条件１：より入力に近くいずれの層間を流れるデータ量よりも少ない」を満たす層間を探す。たとえば、層間５６を流れるデータ量は、層間５１〜５５を流れるいずれのデータ量よりも少ない場合、一連の処理を、層間５６の位置で、第一の処理５１１と第二の処理５１２に分割する。図５では、全９層のニューラルネットワーク（ＮＮ）の前段の６層（Ｍ＝６）のＮＮを用いて第一の処理を行う例を示している。そして、前段の３層のＮＮを用いて第二の処理を行う。
【００４７】
以上のようにして決定された位置（層間）で第一の処理５１１と第二の処理５１２を分けることで、通信路２３を流れるデータ量を低く抑えることが可能となる。その結果、より狭帯域の通信路２３にも適用可能となる。
【００４８】
（第３実施形態）
第３実施形態では、具体的なドロップアウトノードを決定方法について説明する。すなわち、第１実施形態において説明したドロップアウト率に基づくドロップアウトノードの決定方法について説明する。
【００４９】
図６は、ドロップアウトノードの決定処理のフローチャートである。当該処理は、第二処理学習部２２３により実行される。
【００５０】
ステップＳ６１では、第二処理学習部２２３は、ドロップアウト率決定部２２３１によって決定されたドロップアウト率p_drouputを取得する。
【００５１】
ステップＳ６２では、第二処理学習部２２３は、ドロップアウトノード数nodes_dropoutを算出する。これは、第一の処理の出力層の全ノード数nodes_firstlayerを用いて、式（４）に従って算出できる。なお、ceil()は、切り上げを表す関数である。
【００５２】
（数４）
nodes_dropout := ceil(nodes_firstlayer * p_dropout)  ・・・（４）
【００５３】
ステップＳ６３では、第二処理学習部２２３は、ドロップアウトノード数nodes_dropout分のノードを、第一の処理の全出力ノードから、ランダムに選択することで、ドロップアウトノードを決定する。
【００５４】
ステップＳ６４では、第二処理学習部２２３は、決定されたドロップアウトノードの情報を第一処理部２１４に通知する。
【００５５】
以上のように、ドロップアウトノードの決定を行うことで、ドロップアウトノードの数を正確に制御することが可能となる。そのため、ネットワークの学習において、通信路２３の通信帯域を超過することなく確実に学習を行うことが可能となる。
【００５６】
（第４実施形態）
第４実施形態では、第一の処理５１１と第二の処理５１２を分ける位置（層間）を決定する他の手法について説明する。
【００５７】
第２実施形態で説明した「条件１」を満たす層間は、必ずしも一箇所とは限らない。背景技術で述べたように、画像識別の分野では、畳み込みフィルタ演算を行う畳み込み層と、全結合演算を行う全結合層とから構成されるディープネットが主流になりつつある。この場合、畳み込み層は特徴抽出処理、全結合層は識別処理を行っていると考えられる。
【００５８】
さらに、カメラの設置環境や、人や車といった識別対象分野が、学習時と異なる場合、特徴抽出処理の性能はあまり変わらないが、識別処理は再学習により大きく性能が上がることが一般に知られている。
【００５９】
そこで、第２実施形態で示した「条件１」を満たす候補に、畳み込み層と全結合層の間の層間が含まれる場合、ディープネットの一連の処理を、この層間（位置）で、第一の処理５１１と第二の処理５１２に分割する。
【００６０】
以上のようにすることで、識別性能の低下を抑制しつつ、効果的に学習を行うことが可能となる。
【００６１】
（第５実施形態）
第５実施形態では、第二の処理により画像識別を行う画像識別システムについて説明する。
【００６２】
＜システムの構成＞
図７は、第５実施形態における画像識別システムの構成を説明する図である。図２に対し、第一の筐体２１内に、第二処理部７１１、認識結果処理部７１２、パラメータ設定部７１３が増えている。ここでは上述の実施形態との差異のみを説明する。
【００６３】
データ転送制御部２１５は、第一処理部２１４から受け取った全出力ノードの出力値のうち、第二処理学習部２２３から指示された学習データのみを、第二処理学習部２２３に渡す。さらに第二処理部７１１には、第一処理部２１４から受け取った全出力ノードの出力値を渡す。
【００６４】
第二処理部７１１は、第二の処理を行い画像識別を行う。第二処理部７１１で行う第二の処理で用いるネットワークは、第二処理学習部２２３で学習したパラメータを用いる。
【００６５】
なお、ここでは、ネットワークの学習とは誤差逆伝播法による層間結合の結合係数の学習を想定しており、ネットワークの構造自体は変わらない。そのため、学習の対象には「パラメータ」という表現を用いる。ただし、学習する対象として、ノードの活性化関数や、ネットワーク構造そのものとしてもよい。第二処理学習部２２３で学習したパラメータは、パラメータ設定部７１３に渡される。
【００６６】
パラメータ設定部７１３は、第二処理部７１１に対して、ミニバッチ単位にパラメータを設定する。なお、パラメータには、第一の処理と第二の処理の間の結合係数も含まれる。第二処理部７１１によって画像識別された結果は、識別結果処理部７１２に渡される。
【００６７】
識別結果処理部７１２は、第二処理部７１１によって画像識別された結果を用いて、画像識別システムの適用領域に応じた何らかの処理を行うものである。例えば、監視カメラであれば、人数をカウントしたり、不審者が映っていた場合にアラートを出したりする。また、不図示の通信部を用いて、不審者の画像を警備室のモニターに送ってもよい。
【００６８】
図８は、画像識別システムにおけるデータ拡張部の配置の一例を示す図である。すなわち、第１実施形態（図４）と同様に、データ拡張部４１１によるデータ拡張を行う構成とすることもできる。この場合、データ転送制御部２１５は、データ拡張前のデータに対しては、上述の通りの動作を行う。一方、データ拡張されたデータに対しては、学習データとして第二処理学習部２２３には送るが、第二処理部７１１には送らないようにすればよい。
【００６９】
以上のように構成することで、画像識別処理は第一の筐体２１内で完結することになる。そのため、第二の筐体２２は第二の処理の学習時にのみ設置すればよい。そのため、画像識別処理を行う部分（第一の筐体２１）の小型・低価格化が容易になるという効果がある。
【００７０】
また、１つの第二の筐体２２を用いて、複数の第一の筐体２１に対する学習を行うことができる。そのため、複数の第一の筐体２１を用いたトータルシステムの低価格化が実現可能となる。
【００７１】
さらに、「学習」自体を、画像識別システムの設置時サービスとしたり、別途有償サービスとしたりすることができ、さまざまなビジネスモデルに対応できる。たとえば、第二の筐体２２を構成する各機能部をすべてクラウド上に配置することで、学習部分を第一の筐体２１とは独立したサービスとすることができる。さらに、多くの第一の筐体２１からのデータを集めることが可能となり、学習アルゴリズムの改良が容易となる。
【００７２】
さらに、通信路２３を流れるデータは、第一の処理を経た特徴量相当のものである。そのため、入力画像をそのまま送る場合に比べてユーザの心理的抵抗が低く、プライバシーに配慮したものとなる。
【００７３】
（第６実施形態）
第６実施形態では、正しい教師データを付与して第二の処理を再学習させる手法について説明する。上述の実施形態では明示的に教師データは与えていなかった。しかし、例えば画像識別結果を監視している際に、誤識別が判明した場合には、正しい教師データを付与して第二の処理を再学習させる必要がある。
【００７４】
＜システムの構成＞
図９は、第６実施形態における画像識別システムの構成を説明する図である。図７に対し、第一の筐体２１内に教師データ修正指示部９１１が増え、第二の筐体２２内にパラメータ蓄積部９２１、学習データ蓄積部９２２、教師データ修正部９２３が増えている。ここでは上述の実施形態との差異のみを説明する。
【００７５】
データ転送制御部２１５から送られる学習データは、一旦学習データ蓄積部９２２に蓄えられる。後に説明するが、学習データは、対応する教師データと、学習データの時期を特定する情報とともに蓄積される。なお、以降の説明では、「学習データの時期を特定する情報」を単に「時期」と呼ぶ。
【００７６】
教師データは、少なくとも教師データ修正部９２３から渡される、修正された教師データのみを保持していればよい。なお、教師データ修正部９２３については後述する。なお、教師データが付与されていない学習データに関しては、第二処理学習部は上述の実施形態の通りに正解を推定して学習するが、教師データが付与されている学習データに関しては、推定値を用いずに教師データを用いて学習を行う。
【００７７】
学習データの時期を特定する情報とは、たとえばその学習データの元画像が撮影された時刻や、通算の撮像枚数（フレーム番号）とすればよく、時間の流れとともに単調増加する値であればよい。
【００７８】
学習データ蓄積部９２２に一旦蓄えられた学習データは、第二処理学習部２２３から読み出され、通常通り学習を行い、学習済みパラメータを算出する。算出された学習済みパラメータは、直接パラメータ設定部７１３には送らず、一旦パラメータ蓄積部９２１に蓄えられた後、パラメータ設定部７１３に送られる。なお、学習済みパラメータは、その学習データの時期を特定する情報、すなわち時期とともに蓄積される。
【００７９】
たとえば、時刻Ｔ０から時刻Ｔ１の間に撮影された画像をミニバッチとして、パラメータを学習したのであれば、その学習済みパラメータの時期としてＴ１を用いればよい。
【００８０】
教師データ修正指示部９１１は、画像識別結果が不正解であった場合に、教師データと、その時期を特定する情報を入力する。たとえば、識別結果処理部７１２が、監視モニターアプリケーションソフトウェアであった場合、そのモニター画面を見ていた監視員が、誤識別を発見した際に教師データを入力するものである。教師データとその時期は、教師データ修正指示部９１１から教師データ修正部９２３に渡される。
【００８１】
教師データ修正部９２３は、学習データ蓄積部９２２に蓄積された、該時期の学習データに教師データを関連付ける。また、該時期を第二処理学習部２２３に渡し、再学習を指示する。
【００８２】
＜システムの動作＞
図１０は、再学習処理のフローチャートである。当該処理は、第二処理学習部２２３により実行される。
【００８３】
ステップＳ１０１では、第二処理学習部２２３は、教師データ修正部９２３から再学習を指示されると、教師データの時期Ｔｔを取得する。ステップＳ１０２では、第二処理学習部２２３は、パラメータ蓄積部９２１に蓄積された学習済みパラメータのうち、時期Ｔｔ以降のものを削除する。これは、再学習のきっかけとなる教師データを含め、それ以降の学習済みパラメータは再学習を行うために不要となるからである。
【００８４】
ステップＳ１０３では、第二処理学習部２２３は、パラメータ蓄積部９２１から最後の学習済みパラメータを取得し、第二の処理ネットワークの初期状態とする。これは、再学習のきっかけとなる教師データを含むミニバッチを再学習するために、その時点で最新の学習済みのネットワークを初期状態とするためである。
【００８５】
ステップＳ１０４では、第二処理学習部２２３は、学習対象となるミニバッチとして、時期Ｔｔを含むものを選択する。
【００８６】
ステップＳ１０５では、第二処理学習部２２３は、選択したミニバッチの学習データを学習データ蓄積部から取得しつつ、ネットワークの学習を行う。これは、公知の学習の処理と同一であるため、詳細は割愛する。なお、学習の最後には、学習済みパラメータを、パラメータ蓄積部９２１に蓄積する。
【００８７】
ステップＳ１０６では、第二処理学習部２２３は、選択したミニバッチの次のミニバッチを選択する。もし、ミニバッチがあればＳ１０５に戻って、そのミニバッチの学習を行う。もし、ミニバッチがない場合、すなわち最後のミニバッチの学習が終わった場合はＳ１０７に進む。
【００８８】
ステップＳ１０７では、第二処理学習部２２３は、最後に学習した学習済みパラメータを、パラメータ設定部７１３に渡して、第二処理部７１１の第二の処理のネットワークを更新する。なお、ここではＳ１０７の処理を再学習の最後に行ったが、Ｓ１０５の後に毎回行う構成としてもよい。
【００８９】
以上説明したとおり第６実施形態によれば、画像識別結果が誤識別だった場合に、再学習を行うことが可能となる。再学習を行うことにより、より好適な画像識別結果を得ることが可能となる。
【００９０】
（第７実施形態）
第７実施形態では、学習データおよび学習済みパラメータの蓄積量を制御する手法について説明する。上述の実施形態において、学習データおよび学習済みパラメータは、再学習のために、それぞれ学習データ蓄積部９２２およびパラメータ蓄積部９２１に蓄積しておくことは述べた。
【００９１】
しかしながら、学習データも学習済みパラメータも、過去のものであればあるほど、再学習のために参照される可能性は低く、また蓄積すべきデータ量も莫大なものとなる。すなわち、ある程度古い学習データや学習済みパラメータは、破棄していくことが現実的である。また、一般に学習済みパラメータに比べて、学習データの方がデータ量は桁違いに大きい。
【００９２】
また、教師データ修正指示部９１１で、教師データの修正が指示された場合、誤学習結果を排除するため、再学習は該教師データの時期よりも前の学習済みパラメータを用いるべきである。そのため、パラメータ蓄積部９２１に蓄積する学習済みパラメータは、教師データ修正指示部９１１によって、指示される可能性のある次期よりも古いものまで保持しておくべきである。それに対して、学習データ蓄積部９２２に蓄積する学習データは、再学習が行われる可能性がある程度高い時期以降のもののみを保持することが現実的である。
【００９３】
そのため、パラメータ蓄積部９２１の学習済みパラメータ保持期間は、学習データ蓄積部９２２の学習データ保持期間よりも長くすることが望ましい。
【００９４】
＜システムの動作＞
パラメータ蓄積部９２１は、新たな学習済みパラメータが第二処理学習部２２３から渡される際に、所定の保持期間を経過した古い学習済みパラメータを削除する。なお、古い学習済みパラメータの削除は、不図示のタイマー等を用いて定期的に実行してもよい。
【００９５】
学習データ蓄積部９２２は、新たな学習データがデータ転送制御部２１５から渡される際に、所定の保持期間を経過した古い学習データを削除する。なお、古い学習データの削除は、不図示のタイマー等を用いて定期的に実行してもよい。
【００９６】
図１１は、再学習処理の他のフローチャートである。概ね図１０と同様であるが、Ｓ１０４がＳ１１４となっている点が異なる。
【００９７】
ステップＳ１１４では、第二処理学習部２２３は、学習対象となるミニバッチとして、時期Ｔｔを含むものを選択する。ただし、該ミニバッチが存在しなかった場合は、Ｓ１０６に進み、それ以降の最初のミニバッチを選択して再学習を行う。
【００９８】
なお、Ｓ１０３で選択すべき学習パラメータがあるよう、学習済みパラメータ保持期間は十分長く設定すべきであるが、最も古い学習済みパラメータは破棄しないようにしてもよい。
【００９９】
以上説明したとおり第７実施形態によれば、システムに蓄積されるデータの肥大化を防ぎつつ、再学習を行うことが可能となる。
【０１００】
（第８実施形態）
第８実施形態では、第一の処理５１１と第二の処理５１２を分ける位置（層間）を動的に変更する手法について説明する。
【０１０１】
上述の実施形態では、図５において、一連の処理を第一の処理５１１と第二の処理５１２を層間５６で分割した。そして、第一の処理の最終層のノードに対して、ドロップアウトを行い、学習を行った。しかし、もし、層間５７を流れるデータ量が、層間５６を流れるデータ量よりも少ない場合、一連の処理を層間５７で分割することも可能である。
【０１０２】
そこで、第８実施形態では、帯域推定部２２２による通信路２３の帯域の推定値により、第一の処理５１１と第二の処理５１２の分割を動的に切り替える。これは、システムに対して適用可能であるが、システムを含んだ画像識別システムにも適用可能である。
【０１０３】
＜システムの構成＞
図１２は、第８実施形態における画像識別システムの構成を説明する図である。なお、図中の丸付き番号（１〜４）は、対応する番号同士が接続されていることを示す。図９と比較して、第三処理部１２１１と第三処理学習部１２２２が増えており、さらに、第三処理決定部１２２１、学習データ振分部１２２３、そして第三処理学習部１２２２中のドロップアウト率決定部１２２２１が増えている。ここでは上述の実施形態との差異のみを説明する。
【０１０４】
図１３は、ディープネットの一連の処理を例示的に示す図である。図５とほぼ同様であるが、第一の処理５１１、第二の処理５１２、第三の処理５１３の３つに処理を分割している点が異なる。一連の処理を層間５６で分割する場合、第三の処理５１３は、第二の処理５１２と一体となる。一方、層間５７で分割する場合、第三の処理５１３は第一の処理５１１と一体となる。
【０１０５】
第一処理部２１４は、上述の実施形態と同様に、データ転送制御部２１５に第一の処理の全出力ノードの出力値を渡す。
【０１０６】
データ転送制御部２１５は、一連の処理が層間５６で分割されている場合は、第三処理学習部１２２２から指示されたノードの値を学習データ蓄積部９２２に送る。もし、一連の処理が層間５７で分割されている場合は、第一処理部から受け取った値を全て第三処理部１２１１に渡す。
【０１０７】
第三処理部１２１１は、第三の処理５１３を行い、その結果、すなわち第三の処理５１３の全出力ノードの出力値をデータ転送制御部２１５に渡す。そして、第二処理学習部２２３から指示されたノードの値を学習データ蓄積部９２２に送る。
【０１０８】
なお、データ転送制御部２１５において、一連の処理がいずれの層間で分割されているかは、学習データ蓄積部９２２に送るよう指示されたノードが、第一の処理５１１のものなのか、第三の処理５１３のものなのかで判断できる。すなわち、第一の処理５１１のノードを指示された場合は層間５６、第三の処理５１３のノードを指示された場合は層間５７で分割されたものと判断できる。帯域推定部２２２による、通信路２３の帯域推定結果は、第三処理決定部１２２１に渡される。
【０１０９】
第三処理決定部１２２１では、推定帯域が、所定の値よりも大きい（広い）場合は層間５６で、そうでない場合は層間５７で、一連の処理を分割する。層間５６で分割した場合は、推定帯域を第三処理学習部１２２２内のドロップアウト率決定部１２２２１に渡し、第二処理学習部２２３内のドロップアウト率決定部２２３１には十分大きい帯域を推定帯域として渡す。なお、十分大きい帯域とは、前述の式（２）において、式（５）を満たすような帯域を意味する。なお、p_dropoutがp_dropout_bestとなるような帯域であればよく、たとえば無限大としてもよい。
【０１１０】
（数５）
p_dropout_min ≦ p_dropout_best  ・・・（５）
【０１１１】
第三処理学習部１２２２の順伝播計算による結果は、第二処理学習部２２３に渡される。また、第二処理学習部２２３によるネットワークの学習結果は、学習済みパラメータとして、パラメータ蓄積部９２１に蓄積され、第三処理学習部１２２２の学習に用いるとともに、パラメータ設定部７１３を経由して、第二処理部７１１に設定する。
【０１１２】
第三処理学習部１２２２は、第二処理学習部２２３と同様の手順で第三の処理５１３の学習を行い、学習済みパラメータをパラメータ蓄積部９２１に蓄積する。そして、パラメータ設定部７１３を経由して、第三処理部１２１１に学習済みパラメータを設定する。
【０１１３】
第三処理決定部１２２１で、一連の処理を層間５７で分割した場合は、推定帯域を第二処理学習部２２３内のドロップアウト率決定部２２３１に渡す。
【０１１４】
第二処理学習部２２３によるネットワークの学習結果は、学習済みパラメータとして、パラメータ蓄積部９２１に蓄積され、パラメータ設定部７１３を経由して、第二処理部７１１に設定する。
【０１１５】
学習データ振分部１２２３は、学習データ蓄積部９２２に蓄積された学習データを、第二処理学習部２２３または第三処理学習部１２２２に渡し、学習を指示する。学習データが第一の処理５１１の出力ノードのものである場合は、第三処理学習部１２２２に学習データを渡し、第二処理学習部２２３と共に、第三の処理５１３および第二の処理５１２の学習を行うよう指示する。一方、学習データが第三の処理５１３の出力ノードのものである場合は、第二学習部２２３に学習データを渡し、第二の処理５１２の学習を行うよう指示する。
【０１１６】
教師データ修正指示部９１１は、教師データをその時期と共に教師データ修正部９２３に伝える。教師データ修正部９２３は、学習データ蓄積部９２２に蓄積された、該時期の学習データに教師データを関連付けると共に、該時期を学習データ振分部１２２３に渡し、再学習を指示する。
【０１１７】
＜システムの動作＞
図１４は、学習データ振分部における再学習処理のフローチャートである。当該処理は、学習データ振分部１２２３が、教師データ修正部から再学習の指示を受けた場合に実行する。
【０１１８】
ステップＳ１４１では、学習データ振分部１２２３は、教師データ修正部９２３から再学習を指示されると、教師データの時期Ｔｔを取得する。ステップＳ１４２では、学習データ振分部１２２３は、パラメータ蓄積部９２１に蓄積された学習済みパラメータのうち、時期Ｔｔ以降のものを削除する。これは、再学習のきっかけとなる教師データを含め、それ以降の学習済みパラメータは再学習を行うために不要となるからである。
【０１１９】
ステップＳ１４３では、学習データ振分部１２２３は、パラメータ蓄積部９２１から最後の学習済みパラメータを取得する。ここで取得するのは、第二処理学習部２２３および第三処理学習部１２２２の各々の最後の学習済みパラメータである。
【０１２０】
ステップＳ１４３１では、学習データ振分部１２２３は、学習済みパラメータを、第二処理学習部２２３、第三処理学習部１２２２のそれぞれに設定し、ネットワークの初期状態とする。これは、再学習のきっかけとなる教師データを含むミニバッチを再学習するために、その時点で最新の学習済みのネットワークを初期状態とするためである。
【０１２１】
ステップＳ１４４では、学習データ振分部１２２３は、学習対象となるミニバッチとして、時期Ｔｔを含むものを選択する。選択対象となるミニバッチがあった場合はＳ１４５１に進み、なかった場合はＳ１４６に進む。
【０１２２】
ステップＳ１４５１では、学習データ振分部１２２３は、ミニバッチの学習データは第一の処理５１１の出力であるか否かを判断する。第一の処理５１１の出力であった場合、一連の処理は層間５６で、そうでなかった場合は層間５７で分割されたものである。層間５６で分割された場合はＳ１４５２の処理を、そうでない場合はＳ１４５３の処理を行う。
【０１２３】
ステップＳ１４５２では、学習データ振分部１２２３は、第三処理学習部１２２２に対して、選択したミニバッチを用いて学習を行うよう指示する。この際、前述したように、学習は第二処理学習部２２３と連携して行う。一方、ステップＳ１４５３では、学習データ振分部１２２３は、第二処理学習部２２３に対して、選択したミニバッチを用いて学習を行うよう指示する。この場合は、第三処理学習部１２２２による学習は行わない。Ｓ１４５２、Ｓ１４５３いずれの場合も、学習の最後には、学習済みパラメータを、パラメータ蓄積部９２１に蓄積する。
【０１２４】
ステップＳ１４６では、学習データ振分部１２２３は、選択したミニバッチの次のミニバッチを選択する。もし、ミニバッチがあれば、Ｓ１４５１に戻って、そのミニバッチの学習を行う。もし、ミニバッチがない場合、すなわち最後のミニバッチの学習が終わった場合はＳ１４７に進む。
【０１２５】
ステップＳ１４７では、学習データ振分部１２２３は、最後に学習した学習済みパラメータを、パラメータ設定部７１３に渡して、第二処理部７１１の第二の処理のネットワーク、および第三処理部１２１１の第三の処理のネットワークを更新する。なお、ここではＳ１４７の処理を再学習の最後に行ったが、Ｓ１４５２およびＳ１４５３の後に毎回行う構成としてもよい。
【０１２６】
以上説明したとおり第８実施形態によれば、時間と共に通信路２３の帯域が変化する場合であっても、効率よく学習を行うことが可能となる。
【０１２７】
（その他の実施例）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【０１２８】
２  システム；  ２１  第一の筐体；  ２２  第二の筐体；  ２３  通信路；  ２１１  通信部；  ２２１  通信部；  ２１４  第一処理部；  ２１５  データ転送制御部；  ２２２  帯域推定部；  ２２３  第二処理学習部；  ２２３１  ドロップアウト率決定部
【図１】
2020052689.tif 000003
【図２】
2020052689.tif 000004
【図３】
2020052689.tif 000005
【図４】
2020052689.tif 000006
【図５】
2020052689.tif 000007
【図６】
2020052689.tif 000008
【図７】
2020052689.tif 000009
【図８】
2020052689.tif 000010
【図９】
2020052689.tif 000011
【図１０】
2020052689.tif 000012
【図１１】
2020052689.tif 000013
【図１２】
2020052689.tif 000014
【図１３】
2020052689.tif 000015
【図１４】
2020052689.tif 000016