(57)【特許請求の範囲】
【請求項１】
入力画像に基づくマップに対して、非線形化処理およびプーリング処理を行い、前記入力画像の水平方向の解像度を保ったまま、前記入力画像における検出対象物の水平方向位置を示す行ベクトルを出力する水平方向処理部と、
前記入力画像に基づくマップに対して、非線形化処理およびプーリング処理を行い、前記入力画像の垂直方向の解像度を保ったまま、前記入力画像における前記検出対象物の垂直方向位置を示す列ベクトルを出力する垂直方向処理部と、を備えるニューラルネットワーク処理装置。
【請求項２】
前記水平方向処理部は、前記入力画像に基づくマップに対して、垂直方向のみのプーリング処理を行う第１プーリング部を有し、
前記垂直方向処理部は、前記入力画像に基づくマップに対して、水平方向にのみプーリング処理を行う第２プーリング部を有する、請求項１に記載のニューラルネットワーク処理装置。
【請求項３】
前記水平方向処理部は、第１水平方向マップ生成部および第２水平方向マップ生成部を有し、
前記垂直方向処理部は、第１垂直方向マップ生成部および第２垂直方向マップ生成部を有し、
前記第１水平方向マップ生成部は、前記入力画像に基づくマップに対して、非線形化処理および垂直方向のみのプーリング処理を行って、第１出力マップを生成し、
前記第１垂直方向マップ生成部は、前記入力画像に基づくマップに対して、非線形化処理および水平方向のみのプーリング処理を行って、第２出力マップを生成し、
前記第２水平方向マップ生成部は、前記第１出力マップおよび前記第２出力マップに対して、非線形化処理およびプーリング処理を行って、前記第１出力マップと水平方向の解像度が等しい第３出力マップを生成し、
前記第２垂直方向マップ生成部は、前記第１出力マップおよび前記第２出力マップに対して、非線形化処理およびプーリング処理を行って、前記第２出力マップと垂直方向の解像度が等しい第４出力マップを生成し、
前記第３出力マップに基づいて前記行ベクトルが生成され、
前記第４出力マップに基づいて前記列ベクトルが生成される、請求項１または２に記載のニューラルネットワーク処理装置。
【請求項４】
前記第２水平方向マップ生成部は、
前記第１出力マップおよび前記第２出力マップに対して畳み込み演算を行って前記第１出力マップと解像度が等しい第１中間マップおよび第２中間マップをそれぞれ生成し、前記第１中間マップおよび前記第２中間マップを加算して第３中間マップを生成する第１非線形化処理部と、
前記第３中間マップに対して、垂直方向のみのプーリング処理を行って前記第３出力マップを生成する第３プーリング部と、
を有し、
前記第２垂直方向マップ生成部は、
前記第１出力マップおよび前記第２出力マップに対して畳み込み演算を行って前記第２出力マップと解像度が等しい第４中間マップおよび第５中間マップをそれぞれ生成し、前記第４中間マップおよび前記第５中間マップを加算して第６中間マップを生成する第２非線形化処理部と、
前記第６中間マップに対して、水平方向のみのプーリング処理を行って前記第４出力マップを生成する第４プーリング部と、
を有する、請求項３に記載のニューラルネットワーク処理装置。
【請求項５】
前記第２中間マップの水平方向および垂直方向の解像度は、前記第２出力マップの水平方向および垂直方向の解像度のそれぞれｐ１倍および１／ｑ１倍（ｐ１，ｑ１は整数）であり、
前記第１非線形化処理部は、前記第２出力マップのある一部の画素値と、第１フィルタのフィルタ係数との内積を、前記第２出力マップのある一部と対応する前記第２中間マップにおける画素およびその右の（ｐ１−１）個の画素の値に設定する処理を、前記第２出力マップの垂直方向においてはｑ１画素ずつ前記第１フィルタをシフトしながら行うことで、前記第２中間マップを生成し、
前記第４中間マップの水平方向および垂直方向の解像度は、前記第１出力マップの水平方向および垂直方向の解像度のそれぞれ１／ｐ２倍およびｑ２倍（ｐ２，ｑ２は整数）であり、
前記第２非線形化処理部は、前記第１出力マップのある一部の画素値と、第２フィルタのフィルタ係数との内積を、前記第１出力マップのある一部と対応する前記第４中間マップにおける画素およびその下の（ｑ２−１）個の画素の値に設定する処理を、前記第１出力マップの水平方向においてはｐ２画素ずつ前記第２フィルタをシフトしながら行うことで、前記第４中間マップを生成する、請求項４に記載のニューラルネットワーク処理装置。
【請求項６】
サンプル画像における前記検出対象物の上下左右端に対応する画素が第１値で他の画素が第２値である画像を前記入力画像とし、
前記水平方向処理部および前記垂直方向処理部は、中央が前記第１値であり他が前記第２値であるフィルタを用いた畳み込み演算を含む前記非線形化処理を行って、正解データとしての前記行ベクトルおよび前記列ベクトルを出力する、請求項１乃至５のいずれかに記載のニューラルネットワーク処理装置。
【請求項７】
サンプル画像における前記検出対象物がある画素が第１値で他の画素が第２値である画素を前記入力画像とし、
前記水平方向処理部および前記垂直方向処理部は、中央が前記第１値であり他が前記第２値であるフィルタを用いた畳み込み演算を含む前記非線形化処理を行って、正解データとしての前記行ベクトルおよび前記列ベクトルを出力する、請求項１乃至５のいずれかに記載のニューラルネットワーク処理装置。
【請求項８】
前記サンプル画像および前記正解データに基づいて、前記非線形化処理で用いられるニューラルネットワークパラメータが生成される、請求項６または７に記載のニューラルネットワーク処理装置。
【請求項９】
前記水平方向処理部が、前記検出対象物の左端および右端に対応する列が前記第１値であり、前記左端より左側および前記右端より右側に対応する列が前記第２値である前記行ベクトルを出力し、かつ、
前記垂直方向処理部が、前記検出対象物の上端および下端に対応する行が前記第１値であり、前記上端より上側および前記下端より下側に対応する行が前記第２値である前記列ベクトルを出力するよう、前記ニューラルネットワークパラメータが生成される、請求項８に記載のニューラルネットワーク処理装置。
【請求項１０】
前記サンプル画像は、第１検出対象物を含むサンプル画像と、前記第１検出対象物とは異なる第２検出対象物を含むサンプル画像と、を含む、請求項６乃至９のいずれかに記載のニューラルネットワーク処理装置。
【請求項１１】
前記サンプル画像は、前記検出対象物の一部のみを含むサンプル画像を含む、請求項６乃至１０のいずれかに記載のニューラルネットワーク処理装置。
【請求項１２】
前記行ベクトルに基づいて、前記入力画像から前記検出対象物を含む領域を特定する領域特定部を備え、
前記垂直方向処理部は、前記入力画像に基づくマップとして、前記特定された領域に対して、非線形処理およびプーリング処理を行う、請求項１または２に記載のニューラルネットワーク処理装置。
【請求項１３】
前記行ベクトルに基づいて、前記入力画像に前記検出対象物が含まれないと判断される場合、前記垂直方向処理部は非線形処理およびプーリング処理を行わない、請求項１２に記載のニューラルネットワーク処理装置。
【請求項１４】
請求項１乃至１３のいずれかに記載のニューラルネットワーク処理装置と、
前記ニューラルネットワーク装置によって出力された前記行ベクトルおよび前記列ベクトルに基づいて、前記入力画像における前記検出対象物の位置を特定する特定部と、を備える検出装置。
【請求項１５】
前記特定部は、
前記行ベクトルにおける列であって、その値が第１閾値条件を満たす列を前記検出対象物の左端候補または右端候補とし、
前記列ベクトルにおける行であって、その値が第２閾値条件を満たす行を前記検出対象物の上端候補または下端候補とする、請求項１４に記載の検出装置。
【請求項１６】
前記特定部が特定する前記前記検出対象物の左端候補と右端候補は、第１画素数以上離れており、
前記特定部が特定する前記前記検出対象物の上端候補と下端候補は、第２画素数以上離れている、請求項１４または１５に記載の検出装置。
【請求項１７】
車両本体と、
車両本体に取り付けられたカメラと、
前記カメラからの画像を前記入力画像として処理する請求項１４乃至１６のいずれかに記載の検出装置と、を備える車両。
【請求項１８】
入力画像に基づくマップに対して、非線形化処理およびプーリング処理を行い、前記入力画像の水平方向の解像度を保ったまま、前記入力画像における検出対象物の水平方向位置を示す行ベクトルを出力するステップと、
前記入力画像に基づくマップに対して、非線形化処理およびプーリング処理を行い、前記入力画像の垂直方向の解像度を保ったまま、前記入力画像における前記検出対象物の垂直方向位置を示す列ベクトルを出力するステップと、を備える、ニューラルネットワーク処理方法。
【請求項１９】
入力画像に基づくマップに対して、非線形化処理およびプーリング処理を行い、前記入力画像の水平方向の解像度を保ったまま、前記入力画像における検出対象物の水平方向位置を示す行ベクトルを出力するステップと、
前記入力画像に基づくマップに対して、非線形化処理およびプーリング処理を行い、前記入力画像の垂直方向の解像度を保ったまま、前記入力画像における前記検出対象物の垂直方向位置を示す列ベクトルを出力するステップと、
前記行ベクトルおよび前記列ベクトルに基づいて、前記入力画像における前記検出対象物の位置を特定するステップと、を備える検出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、検出対象物を検出するためのニューラルネットワーク処理装置、ニューラルネットワーク処理方法、検出装置および検出方法、ならびに、そのような検出装置を有する車両に関する。
【背景技術】
【０００２】
車載カメラを用いて道路上の物体（先行車など）を検出することで、自動車の安全運転を支援できる。そのため、物体の有無およびその位置を検出することが１つの技術課題となっている。物体検出の１つの手法として、畳み込みニューラルネットワーク（Convolution Neural Network）を用いた画像認識手法が知られている（例えば、非特許文献１）。
【０００３】
畳み込みニューラルネットワークでは、入力画像に対する畳み込み演算と、プーリングと呼ばれる縮小処理とを繰り返し、十分に解像度が小さくなった段階で、全結合型ネットワーク（多層パーセプトロン）へと信号が入力されて最終的な出力が得られる。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】Y. LeCun, B. Boser, J. S. Denker, D. Henderson, R. E. Howard, W. Hubbard, and L. D. Jackel, "Handwritten Digit Recognition with a Back-Paopagation Network", Advances in Neural Information Processing Systems (NIPS), pp. 396-404, 1990.
【発明の概要】
【０００５】
しかしながら、このような畳み込みニューラルネットワークには以下のような問題点が挙げられる。
【０００６】
まずは、検出精度の問題である。通常の畳み込みニューラルネットワークでは、入力画像を水平方向および垂直方向にプーリングするため、解像度が低下する。物体の特定精度は解像度に依存するが、解像度が低下するために必ずしも精度よく物体の位置を検出できるとは限らない。かといって、プーリングを一切行わないと、全結合型ネットワークに入力される信号におけるベクトルの次元が著しく大きくなってメモリを逼迫するだけでなく、過学習が起こりやすくなる。そのため、プーリングを行わないのは非現実的である。
【０００７】
また、処理負荷の問題もある。通常の畳み込みニューラルネットワークでは、入力画像のサイズを予め決めておく必要がある。しかしながら、どのようなサイズの画像が物体の位置検出に最適であるかは分からない。よって、車載カメラからの画像をいくつかのサイズにリサイズして複数のピラミッド画像を生成し、そのそれぞれに対してスライディングウィンドウを適用する必要がある。そのため、処理負荷が大きくならざるを得ない。
【発明が解決しようとする課題】
【０００８】
本発明はこのような問題点に鑑みてなされたものであり、本発明の課題は、処理負荷が小さく、かつ、高い精度で検出対象物の位置を検出するためのニューラルネットワーク処理装置、ニューラルネットワーク処理方法、検出装置および検出方法を提供すること、また、そのような検出装置を有する車両を提供することである。
【課題を解決するための手段】
【０００９】
本発明の一態様によれば、入力画像に基づくマップに対して、非線形化処理およびプーリング処理を行い、前記入力画像の水平方向の解像度を保ったまま、前記入力画像における検出対象物の水平方向位置を示す行ベクトルを出力する水平方向処理部と、前記入力画像に基づくマップに対して、非線形化処理およびプーリング処理を行い、前記入力画像の垂直方向の解像度を保ったまま、前記入力画像における前記検出対象物の垂直方向位置を示す列ベクトルを出力する垂直方向処理部と、を備えるニューラルネットワーク処理装置が提供される。
【００１０】
この構成によれば、入力画像の水平方向および垂直方向の解像度を保ったまま行ベクトルおよび列ベクトルが出力されるので、高い精度で検出対象物の位置を検出できる。
【００１１】
前記水平方向処理部は、前記入力画像に基づくマップに対して、垂直方向のみのプーリング処理を行う第１プーリング部を有し、前記垂直方向処理部は、前記入力画像に基づくマップに対して、水平方向にのみプーリング処理を行う第２プーリング部を有するのが望ましい。
【００１２】
この構成によれば、第１プーリング部が垂直方向にみのプーリング処理を行うので水平方向の解像度を保ったまま行ベクトルを出力でき、かつ、第２プーリング部が水平方向にみのプーリング処理を行うので垂直方向の解像度を保ったまま列ベクトルを出力できる。
【００１３】
望ましくは、前記水平方向処理部は、第１水平方向マップ生成部および第２水平方向マップ生成部を有し、前記垂直方向処理部は、第１垂直方向マップ生成部および第２垂直方向マップ生成部を有し、前記第１水平方向マップ生成部は、前記入力画像に基づくマップに対して、非線形化処理および垂直方向のみのプーリング処理を行って、第１出力マップを生成し、前記第１垂直方向マップ生成部は、前記入力画像に基づくマップに対して、非線形化処理および水平方向のみのプーリング処理を行って、第２出力マップを生成し、前記第２水平方向マップ生成部は、前記第１出力マップおよび前記第２出力マップに対して、非線形化処理およびプーリング処理を行って、前記第１出力マップと水平方向の解像度が等しい第３出力マップを生成し、前記第２垂直方向マップ生成部は、前記第１出力マップおよび前記第２出力マップに対して、非線形化処理およびプーリング処理を行って、前記第２出力マップと垂直方向の解像度が等しい第４出力マップを生成し、前記第３出力マップに基づいて前記行ベクトルが生成され、前記第４出力マップに基づいて前記列ベクトルが生成される。
【００１４】
この構成によれば、第１水平マップ生成部が生成する第１出力マップも使って列ベクトルが生成され、かつ、第１垂直マップ生成部が生成する第２出力マップも使って行ベクトルが生成される。そのため、検出精度が向上する。
【００１５】
具体的には、前記第２水平方向マップ生成部は、前記第１出力マップおよび前記第２出力マップに対して畳み込み演算を行って前記第１出力マップと解像度が等しい第１中間マップおよび第２中間マップをそれぞれ生成し、前記第１中間マップおよび前記第２中間マップを加算して第３中間マップを生成する第１非線形化処理部と、前記第３中間マップに対して、垂直方向のみのプーリング処理を行って前記第３出力マップを生成する第３プーリング部と、を有し、前記第２垂直方向マップ生成部は、前記第１出力マップおよび前記第２出力マップに対して畳み込み演算を行って前記第２出力マップと解像度が等しい第４中間マップおよび第５中間マップをそれぞれ生成し、前記第４中間マップおよび前記第５中間マップを加算して第６中間マップを生成する第２非線形化処理部と、前記第６中間マップに対して、水平方向のみのプーリング処理を行って前記第４出力マップを生成する第４プーリング部と、有してもよい。
【００１６】
さらに具体的には、前記第２中間マップの水平方向および垂直方向の解像度は、前記第２出力マップの水平方向および垂直方向の解像度のそれぞれｐ１倍および１／ｑ１倍（ｐ１，ｑ１は整数）であり、前記第１非線形化処理部は、前記第２出力マップのある一部の画素値と、第１フィルタのフィルタ係数との内積を、前記第２出力マップのある一部と対応する前記第２中間マップにおける画素およびその右の（ｐ１−１）個の画素の値に設定する処理を、前記第２出力マップの垂直方向においてはｑ１画素ずつ前記第１フィルタをシフトしながら行うことで、前記第２中間マップを生成し、前記第４中間マップの水平方向および垂直方向の解像度は、前記第１出力マップの水平方向および垂直方向の解像度のそれぞれ１／ｐ２倍およびｑ２倍（ｐ２，ｑ２は整数）であり、前記第２非線形化処理部は、前記第１出力マップのある一部の画素値と、第２フィルタのフィルタ係数との内積を、前記第１出力マップのある一部と対応する前記第４中間マップにおける画素およびその下の（ｑ２−１）個の画素の値に設定する処理を、前記第１出力マップの水平方向においてはｐ２画素ずつ前記第２フィルタをシフトしながら行うことで、前記第４中間マップを生成してもよい。
【００１７】
また、サンプル画像における前記検出対象物の上下左右端に対応する画素が第１値で他の画素が第２値である画像を前記入力画像とし、前記水平方向処理部および前記垂直方向処理部は、中央が前記第１値であり他が前記第２値であるフィルタを用いた畳み込み演算を含む前記非線形化処理を行って、正解データとしての前記行ベクトルおよび前記列ベクトルを出力してもよい。
この構成により、サンプル画像から正解データを生成でき、学習処理に用いることができる。
【００１８】
また、前記サンプル画像における前記検出対象物がある画素が前記第１値で他の画素が前記第２値である画素を前記入力画像とし、前記水平方向処理部および前記垂直方向処理部は、中央が前記第１値であり他が前記第２値であるフィルタを用いた畳み込み演算を含む前記非線形化処理を行って、正解データとしての前記行ベクトルおよび前記列ベクトルを出力してもよい。
この構成により、サンプル画像から正解データを生成でき、学習処理に用いることができる。特に、検出対象物が複数ある場合に有効である。
【００１９】
前記サンプル画像および前記正解データに基づいて、前記非線形化処理で用いられるニューラルネットワークパラメータが生成されてもよい。
【００２０】
前記水平方向処理部が、前記検出対象物の左端および右端に対応する列が前記第１値であり、前記左端より左側および前記右端より右側に対応する列が前記第２値である前記行ベクトルを出力し、かつ、前記垂直方向処理部が、前記検出対象物の上端および下端に対応する行が前記第１値であり、前記上端より上側および前記下端より下側に対応する行が前記第２値である前記列ベクトルを出力するよう、前記ニューラルネットワークパラメータが生成されるのが望ましい。
これにより、行ベクトルにおける各列の値および列ベクトルにおける各行の値によって、検出対象物の位置を示すことができる。
【００２１】
前記サンプル画像は、第１検出対象物を含むサンプル画像と、前記第１検出対象物とは異なる第２検出対象物を含むサンプル画像と、を含むのが望ましい。
この構成によれば、複数種類の検出対象物を検出できる。
【００２２】
また、前記サンプル画像は、前記検出対象物の一部のみを含むサンプル画像を含むのが望ましい。
この構成によれば、入力画像に検出対象物の一部のみしか含まれない場合でも、当該検出対象物を検出できる。
【００２３】
前記行ベクトルに基づいて、前記入力画像から前記検出対象物を含む領域を特定する領域特定部を備え、前記垂直方向処理部は、前記入力画像に基づくマップとして、前記特定された領域に対して、非線形処理およびプーリング処理を行ってもよい。
この構成によれば、検出対象物が縦長である場合に、検出精度を向上できる。
【００２４】
前記行ベクトルに基づいて、前記入力画像に前記検出対象物が含まれないと判断される場合、前記垂直方向処理部は非線形処理およびプーリング処理を行わないのが望ましい。
この構成によれば、検出対象物がない場合には垂直方向処理部が処理を行わず、演算量を削減できる。
【００２５】
また、本発明の別の態様によれば、上記のニューラルネットワーク装置と、前記ニューラルネットワーク装置によって出力された前記行ベクトルおよび前記列ベクトルに基づいて、前記入力画像における前記検出対象物の位置を特定する特定部と、を備える検出装置が提供される。
【００２６】
前記特定部は、前記行ベクトルにおける列であって、その値が第１閾値条件を満たす列を前記検出対象物の左端候補または右端候補とし、前記列ベクトルにおける行であって、その値が第２閾値条件を満たす行を前記検出対象物の上端候補または下端候補とするのが望ましい。
この構成によれば、出力される行ベクトルおよび列ベクトルのノイズを除去でき、検出精度が向上する。
【００２７】
また、前記特定部が特定する前記前記検出対象物の左端候補と右端候補は、第１画素数以上離れており、前記特定部が特定する前記前記検出対象物の上端候補と下端候補は、第２画素数以上離れているのが望ましい。
この構成によれば、やはり、出力される行ベクトルおよび列ベクトルのノイズを除去でき、検出精度が向上する。
【００２８】
また、本発明の別の態様によれば、車両本体と、車両本体に取り付けられたカメラと、前記カメラからの画像を前記入力画像として処理する上記の検出装置と、を備える車両が提供される。
【００２９】
また、本発明の別の態様によれば、入力画像に基づくマップに対して、非線形化処理およびプーリング処理を行い、前記入力画像の水平方向の解像度を保ったまま、前記入力画像における検出対象物の水平方向位置を示す行ベクトルを出力するステップと、前記入力画像に基づくマップに対して、非線形化処理およびプーリング処理を行い、前記入力画像の垂直方向の解像度を保ったまま、前記入力画像における前記検出対象物の垂直方向位置を示す列ベクトルを出力するステップと、を備えるニューラルネットワーク処理方法が提供される。
【００３０】
また、本発明の別の態様によれば、入力画像に基づくマップに対して、非線形化処理およびプーリング処理を行い、前記入力画像の水平方向の解像度を保ったまま、前記入力画像における検出対象物の水平方向位置を示す行ベクトルを出力するステップと、前記入力画像に基づくマップに対して、非線形化処理およびプーリング処理を行い、前記入力画像の垂直方向の解像度を保ったまま、前記入力画像における前記検出対象物の垂直方向位置を示す列ベクトルを出力するステップと、前記行ベクトルおよび前記列ベクトルに基づいて、前記入力画像における前記検出対象物の位置を特定するステップと、を備える検出方法が提供される。
【発明の効果】
【００３１】
入力画像の水平方向の解像度を保ったまま、入力画像における検出対象物の水平方向位置を示す行ベクトルを出力するとともに、入力画像の垂直方向の解像度を保ったまま、入力画像における検出対象物の垂直方向位置を示す行ベクトルを出力するため、精度よく検出対象物の位置を検出できる。さらに、検出対象物の大きさや縦横比に何らの制限もないため、処理負荷を軽減できる。
【図面の簡単な説明】
【００３２】
【図１】第１の実施形態に係るニューラルネットワーク処理部１の処理動作の概要を説明する図。
【図２】第１の実施形態に係る検出装置１００の概略構成を示すブロック図。
【図３】第１の実施形態に係るニューラルネットワーク処理部１の概略構成を示すブロック図。
【図４】ニューラルネットワーク処理部１の処理動作の概略を説明する図。
【図５】非線形化処理部１２１ｈの処理を説明する図。
【図６】非線形化処理部１２１ｈにおける畳み込み演算を説明する図。
【図７】水平方向マップ生成部１２ｈにおけるプーリング部１２２ｈのプーリング処理を説明する図。
【図８】サンプル画像から正解データを生成するための入力画像を説明する図。
【図９】正解データ生成時のニューラルネットワーク処理部１の処理を模式的に示す図。
【図１０】第２の実施形態に係るニューラルネットワーク処理部１’の概略構成を示すブロック図。
【図１１】水平方向マップ生成部１２ｈ’および垂直方向マップ生成部１２ｖ’の概略構成を示すブロック図。
【図１２】水平方向マップ生成部１２ｈ’および垂直方向マップ生成部１２ｖ’の処理動作の概略を説明する図。
【図１３】マップ９３の生成法を説明する図。
【図１４】マップ６４’の生成法を説明する図。
【図１５】第２の実施形態に係るニューラルネットワーク処理部１’の処理動作を模式的に示す図。
【図１６】特定部３による、検出対象物の左右端位置の特定を説明する図。
【図１７】特定部３による、検出対象物の上下端の特定を説明する図。
【図１８】特定部３の処理動作の第１例を示す図。
【図１９】特定部３によるノイズ除去を説明する図。
【図２０】ノイズ除去の手順を示すフローチャート。
【図２１】特定部３の処理動作の第２例を示す図。
【図２２】特定部３の処理動作の第３例を示す図。
【図２３】特定部３の処理動作の第４例を示す図。
【図２４】特定部３の処理動作の第５例を示す図。
【図２５】特定部３の処理動作の第６例を示す図。
【図２６】車載カメラ１０１と検出対象物１０２との進行方向の距離Ｚを算出する手法を説明する図。
【図２７】車載カメラ１０１と検出対象物１０２との横方向の距離ＸL，ＸRを算出する手法を説明する図。
【図２８】第４の実施形態に係るニューラルネットワーク処理部１’’の概略構成を示すブロック図。
【図２９】第５の実施形態に係るニューラルネットワーク処理部１の処理動作の概要を説明する図。
【図３０】サンプル画像から正解データを生成するための入力画像を説明する図。
【図３１】別のサンプル画像から正解データを生成するための入力画像を説明する図。
【図３２】領域特定部１３の処理動作を説明する図。
【発明を実施するための形態】
【００３３】
以下、本発明に係る実施形態について、図面を参照しながら具体的に説明する。
【００３４】
（第１の実施形態）
第１の実施形態では、入力画像における検出対象物の上下左右端の位置、より詳しくは、左端位置ｘｌ、右端位置ｘｒ、上端位置ｙｔおよび下端位置ｙｂを、入力画像の解像度を損なうことなく特定する。
【００３５】
そのために、入力画像と解像度が等しい仮想的な２値画像を考える。この２値画像は、画素（ｘｌ，ｙｔ），（ｘｒ，ｙｔ），（ｘｌ，ｙｂ），（ｘｒ，ｙｂ）の値のみが１であり、他の画素の値は０である。入力画像を処理して上記のような２値画像が得られれば、検出対象物の上下左右端が自ら明らかとなる。
【００３６】
さらに、この２値画像を行列とみなせば、この２値画像は、ｙｔ行およびｙｂ行の値のみ１であり他行の値はすべて０である列ベクトルと、ｘｌ列およびｘｒ列の値のみ１であり他列の値はすべて０である行ベクトルとの積に分解される。列ベクトルの行数および行ベクトルの列数が、入力画像の垂直方向および水平方向の解像度とそれぞれ等しければ、入力画像の解像度を損なうことなく、検出対象物の上下左右端の位置を特定できる。
【００３７】
そこで、本実施形態では、入力画像をニューラルネットワーク処理して、その解像度を損なうことなく、上記のような列ベクトルおよび行ベクトルを出力するニューラルネットワーク処理装置（ニューラルネットワーク処理部）を開示する。
【００３８】
図１は、第１の実施形態に係るニューラルネットワーク処理部１の処理動作の概要を説明する図である。図１（ａ）に示すように、入力画像の垂直方向画素数がａ、水平方向画素数がｂ（以下、このことを単に「入力画像の画素数がｂ×ａ」ともいう）であるとする。具体的な処理内容は後述するが、この場合、ニューラルネットワーク処理部１は、要素数（列数）がｂの行ベクトル５１と、要素数（行数）がａの列ベクトル５２とを出力する。
【００３９】
図１（ｂ）に示すように、入力画像における検出対象物の境界を矩形で定めたとき、その左上、右上、左下および右下の画素位置がそれぞれ（ｘｌ，ｙｔ），（ｘｒ，ｙｔ），（ｘｌ，ｙｂ），（ｘｒ，ｙｂ）であったとする。このとき、ニューラルネットワーク処理部１は、ｘｌ列およびｘｒ列のみの値が１であり他列の値が０である行ベクトル５１、および、ｙｔ行およびｙｂ行のみの値が１であり他行の値が０である列ベクトル５２を出力するよう、入力画像に対してニューラルネットワーク処理を行う。
【００４０】
行ベクトル５１において値が１である列が検出対象物の左端位置および／または右端位置を示している。列ベクトル５２において値が１である行が検出対象物の上端位置および／または下端位置を示している。よって、このような行ベクトル５１および列ベクトル５２に基づいて、検出対象物の位置を特定できる。
【００４１】
以下、具体例として、車載カメラで車両の前方を撮影し、得られた画像を入力画像として検出対象物（例えば、人、他の車両、標識）の上下左右端の位置を検出する検出装置を説明する。
【００４２】
図２は、第１の実施形態に係る検出装置１００の概略構成を示すブロック図である。検出装置１００は、ニューラルネットワーク処理部１と、学習部２と、特定部３とを備えている。本検出装置１００は、予めニューラルネットワーク処理部１および学習部２が、サンプル画像を用いてニューラルネットワークパラメータを生成する（このことを「学習処理」ともいう）。そして、ニューラルネットワーク処理部１および特定部３が、生成されたニューラルネットワークパラメータを用いて、入力画像から検出対象物を検出する（このことを「検出処理」ともいう）。
【００４３】
学習処理において、まずニューラルネットワーク処理部１は、学習処理用のニューラルネットワークパラメータを用い、事前に用意されたサンプル画像を加工して得られた入力画像に対してニューラルネットワーク処理を行い、正解データを生成する。続いて、ニューラルネットワーク処理部１は、同サンプル画像を入力画像としてニューラルネットワーク処理し、行ベクトル５１および列ベクトル５２を出力する。そして、学習部２は、これら行ベクトル５１および列ベクトル５２が上記正解データにできるだけ近づくよう、検出処理用のニューラルネットワークパラメータを生成する。
【００４４】
検出処理において、ニューラルネットワーク処理部１には、車載カメラからの画像が入力画像として入力される。そして、ニューラルネットワーク処理部１は、学習部２によって生成された検出処理用のニューラルネットワークパラメータを用いて入力画像に対してニューラルネットワーク処理を行い、検出対象物の位置を示す行ベクトル５１および列ベクトル５２を出力する。特定部３は、出力された行ベクトル５１および列ベクトル５２を解釈して、検出対象物の位置を特定する。
【００４５】
なお、学習処理および検出処理において、ニューラルネットワーク処理部１におけるニューラルネットワーク構造は共通している。そこで、まずはニューラルネットワーク構造を説明し、続いて学習処理および検出処理について詳しく説明する。
【００４６】
図３は、第１の実施形態に係るニューラルネットワーク処理部１の概略構成を示すブロック図である。図３に示すように、ニューラルネットワーク処理部１は、非線形化処理部１１と、水平方向処理部１２０ｈと、垂直方向処理部１２０ｖとを有する。水平方向処理部１２０ｈは１以上の水平方向マップ生成部１２ｈを有し、垂直方向処理部１２０ｖは１以上の垂直方向マップ生成部１２ｖを有する。
【００４７】
なお、非線形化処理部１１はなくてもよいし、２以上の非線形化処理部１１が縦続接続されていてもよい。また、水平方向マップ生成部１２ｈや垂直方向マップ生成部１２ｖの数にも制限はないが、両者の数は等しい。
【００４８】
初段の非線形化処理部１１は入力画像をマップとして畳み込み演算および活性化処理を行い、新たなマップを出力する。入力画像がグレースケールである場合、マップの数は１つである。入力画像がＲ画像、Ｇ画像およびＢ画像で構成される場合、マップの数はＲ画像、Ｇ画像およびＢ画像の３つであってもよい。非線形化処理部１１が複数段ある場合、前段の非線形化処理部１１から出力されるマップを、次段の非線形化処理部１１が同様の処理をする。具体的な処理内容は、次に説明する水平方向マップ生成部１２ｈの非線形化処理部１２１ｈなどにおける処理と同様である。非線形化処理部１１による処理には、物体のエッジなどを抽出する役割がある。
【００４９】
水平方向処理部１２０ｈおよび垂直方向処理部１２０ｖには、入力画像に基づくマップ、すなわち、最終段の非線形化処理部１１から出力されるマップか、非線形化処理部１１がない場合には入力画像が入力される。検出対象物が１種類である場合、水平方向処理部１２０ｈは１つのマップ（すなわち行ベクトル５１）を出力し、垂直方向処理部１２０ｖは１つのマップ（すなわち列ベクトル５２）を出力する。
【００５０】
水平方向処理部１２０ｈにおける各水平方向マップ生成部１２ｈは、非線形化処理部１２１ｈと、プーリング部１２２ｈとを有する。非線形化処理部１２１ｈは、マップに対して非線形化処理を行う。非線形化処理によってマップの数は変化し得るが、マップの解像度は不変である。プーリング部１２２ｈは、マップに対して垂直方向にのみのプーリングを行う。この処理によって、マップの垂直方向の解像度は減るが、水平方向の解像度は不変である。
【００５１】
垂直方向処理部１２０ｖにおける各垂直方向マップ生成部１２ｖも、非線形化処理部１２１ｖと、プーリング部１２２ｖとを有する。非線形化処理部１２１ｖは、マップに対して非線形化処理を行う。非線形化処理によってマップの数は変化し得るが、マップの解像度は不変である。プーリング部１２２ｖは、マップに対して水平方向にのみのプーリングを行う。この処理によって、マップの水平方向の解像度は減るが、垂直方向の解像度は不変である。
【００５２】
図４は、ニューラルネットワーク処理部１の処理動作の概略を説明する図であり、マップの解像度の変遷に特に着目したものである。同図において、実線矢印は非線形化処理部１１，１２１ｈ，１２１ｖによる非線形化処理を意味しており、破線矢印はプーリング部１２２ｈ，１２２ｖによるプーリング処理を意味している。図４の表現によれば、入力画像のマップ数がｍ０であり、ｋ段目（最終段を除く）の非線形化処理後のマップ数がｍｋであり、最終段の非線形化処理後のマップ数が１であることが明示される。また、プーリング処理の度にマップの解像度が垂直方向または水平方向にのみ変化していく様子も明示される。
【００５３】
図５は、非線形化処理部１２１ｈの処理を説明する図である。非線形化処理部１１，１２１ｈ，１２１ｖの処理は共通しているため、特に断らない限り非線形化処理部１２１ｈについて説明する。
【００５４】
非線形化処理部１２１ｈは、マップ６１〜６３に対して、畳み込み演算、活性化処理およびバイアス加算処理を行い、中間マップ７１〜７３を生成する。同図では、３つのマップ６１〜６３から３つの中間マップ７１〜７３を生成する例を示しているが、入力されるマップおよび中間マップの数に制限はない。ただし、初段の非線形化処理部１２１ｈが生成する中間マップ数と、初段の非線形化処理部１２１ｖが生成する中間マップ数は等しい。２段目以降も同様である。そして、最終段の非線形化処理部１２１ｈ，１２１ｖは１つの中間マップを生成する。
【００５５】
図５において、実線矢印は畳み込み演算および活性化処理を示している。畳み込み演算の詳細は図６を用いて後述するが、畳み込み演算に用いられるフィルタの係数は実線矢印ごとに異なり得る。活性化処理は、シグモイド関数などの活性化関数を用い、畳み込み演算の結果を活性化する処理である。また、一点鎖線矢印はバイアス加算処理を示しており、スカラーであるバイアスが１と掛け合わされて、活性化処理の結果の全要素に足される。バイアスは一点鎖線矢印ごとに異なり得る。
【００５６】
図５の例では、非線形化処理部１２１ｈにはマップ６１〜６３が入力され、マップ６１に対する畳み込み演算および活性化処理の結果と、マップ６２に対する畳み込み演算および活性化処理の結果と、マップ６３に対する畳み込み演算および活性化処理の結果と、が加算され、さらにバイアスが加算されて、引き続くプーリング部１２２ｈに入力される中間マップ７１が生成されることなどが示されている。
【００５７】
上記フィルタ係数およびバイアスがニューラルネットワークパラメータである。学習処理用ニューラルネットワークパラメータは予め定められた固定値であり、検出処理用ニューラルネットワークパラメータは学習部２によって生成される。
【００５８】
図６は、非線形化処理部１２１ｈにおける畳み込み演算を説明する図である。図６（ａ）はマップのサイズが減少する畳み込み演算であり、図６（ｂ）はマップのサイズが不変である畳み込み演算である。
【００５９】
図６（ａ）の畳み込み演算では、非線形化処理部１２１ｈは、まず畳み込み演算前のマップ６４の画素（１，１）を左上とする例えば３×３画素の領域にフィルタ８０を設定する。そして、非線形化処理部１２１ｈは、フィルタ係数とマップ６４の画素値との内積を、畳み込み演算後のマップ８１の画素（１，１）の値とする。以下、非線形化処理部１２１ｈはフィルタ８０の位置を１画素ずつ右にシフトしながら、畳み込み演算後のマップ８１の各画素値を算出する。この場合、畳み込み演算後のマップ８１における右端２列および下端２行の値は算出されない。よって、畳み込み演算後のマップ８１は、畳み込み演算前のマップ６４に比べて、水平方向および垂直方向とも２画素ずつサイズが減少する。
【００６０】
一方、図６（ｂ）の畳み込み演算では、非線形化処理部１２１ｈは、畳み込み演算前のマップ６４の画素（１，１）を中央とする例えば３×３画素の領域にフィルタ８０を設定する。そして、非線形化処理部１２１ｈは、フィルタ係数とマップ６４の画素値との内積を、畳み込み演算後のマップ８２の画素（１，１）の値とする。ただし、畳み込み演算前のマップ６４からはみ出る領域の画素の値は０とする（Zero paddingと呼ばれる）。以下、非線形化処理部１２１ｈはフィルタ８０の位置を１画素ずつ右にシフトしながら、畳み込み演算後のマップ８２の各画素値を算出する。この場合、畳み込み演算後のマップ８２のサイズは、畳み込み演算前のマップ６４のサイズと等しい。
【００６１】
いずれの場合でもマップ６４が縮小されるわけではないので、マップのサイズ（画素数）が変化するか否かに関わらず、畳み込み演算の前後でマップの解像度は等しいと考えることができる。
【００６２】
なお、フィルタ８０のサイズに特に制限はないが、以下の具体例では、フィルタ８０の水平方向画素数および垂直方向画素数を互いに等しい奇数とし、かつ、すべての非線形化処理部１２１ｈ，１２１ｖで共通のサイズとする。各フィルタ８０の係数は学習処理によって生成されるものであり、非線形化処理部１２１ｈ，１２１ｖごとに異なり得る。また、図６（ｂ）のマップサイズが不変である畳み込み演算が行われるものとする。
【００６３】
図７は、水平方向マップ生成部１２ｈにおけるプーリング部１２２ｈのプーリング処理を説明する図である。このプーリング部１２２ｈは、水平方向の解像度を変えることなく、言い換えると、水平方向の画素数を保ったまま、垂直方向にのみマップをプーリング（縮小）する。以下、垂直方向の画素数を１／２にプーリングする例を具体的に説明する。
【００６４】
まず、プーリング部１２２ｈは非線形化処理部１２１ｈからの中間マップ７１を水平方向１画素×垂直方向２画素のグリッド８４に分割する（図７（ａ））。グリッド８４の総数は中間マップ７１の１／２となる。次いで、プーリング部１２２ｈは各グリッド８４内で最大値を有する画素を選択する（図７（ｂ）の黒塗り画素が選択された画素を示す）。そして、プーリング部１２２ｈは、各グリッド８４内において、選択された画素で他の画素を埋めてプーリング処理後のマップ８５を生成する（図７（ｃ））。これにより、非線形化処理部１２１ｈが生成した中間マップ７１は垂直方向にのみプーリングされる。
【００６５】
なお、図７（ｂ）において、プーリング部１２２ｈは、各グリッド８４内での最大値を選択するのではなく、グリッド８４内画素の平均値を用いてもよい。また、プーリング部１２２ｈは垂直方向の画素数を（１／２）n（ｎは１以上の整数）にプーリングするのが望ましいが、１／３や１／５などにプーリングしてもよい。
【００６６】
一方、垂直方向マップ生成部１２ｖにおけるプーリング部１２２ｖは、垂直方向の解像度を変えることなく、言い換えると、垂直方向の画素数を保ったまま、水平方向にのみマップをプーリングする。その他は水平方向マップ生成部１２ｈのプーリング部１２２ｈと同様である。
【００６７】
このように、１つのプーリング部１２２ｈ，１２２ｖを経るごとにマップの垂直方向画素数および水平方向画素数はそれぞれ１／２になる。例えば、８段ずつのプーリング部１２２ｈ，１２２ｖが設けられ、入力画像の画素数が５１２×２５６である場合、最終的には１つの行ベクトル５１および２つの列ベクトル５２が出力される。
続いて、学習処理について説明する。
【００６８】
学習処理を行うためには、あるサンプル画像に対する理想的な行ベクトル５１および列ベクトル５２を正解データとして予め用意する必要がある。ニューラルネットワーク処理部１によって正解データを生成する手法を説明する。
【００６９】
図８は、サンプル画像から正解データを生成するための入力画像を説明する図である。同図（ａ）はサンプル画像の例であり、人手によって検出対象物の上下左右端の位置を特定し、同図（ｂ）に示す入力画像を生成する。入力画像は、サンプル画像と同じ画素数を有し、検出対象物の上下左右端における画素の値のみ１で、他の画素の値は０とする。
【００７０】
図８（ｂ）に示す入力画像がニューラルネットワーク処理部１に入力される。学習処理において、マップ数は１とする。そして、学習用ニューラルネットワークパラメータのうち、バイアスはすべて０とする。また、フィルタ係数は、フィルタの中央の値のみ１とし、他の値は０とする。なお、学習処理時と検出処理時において、フィルタのサイズは共通にしておく。
【００７１】
図９は、正解データ生成時のニューラルネットワーク処理部１の処理を模式的に示す図である。図示のように、非線形化処理部１１，１２１ｈ，１２１ｖ，プーリング部１２２ｈ，１２２ｖの処理を経て、行ベクトル５１および列ベクトル５２が出力される。これら行ベクトル５１および列ベクトル５２が正解データであり、サンプル画像と正解データとの組が得られる。
【００７２】
検出精度を高めるためには、できるだけ多種多様のサンプル画像を用いる。例えば、検出対象物が一部だけ含まれるサンプル画像を用いるのが望ましい。これにより、検出対象物が一部だけしか入力画像に写っていない場合であっても、検出対象物を精度よく検出できる。また、検出対象物を囲う矩形の縦横比が様々なサンプル画像を用いるのが望ましい。これにより、検出対象物が撮影された方向によって縦横比が異なる場合（例えば検出対象物が車両である場合）であっても、検出対象物を精度よく検出できる。
【００７３】
その他、画素数が多いサンプル画像や少ないサンプル画像、検出対象物が中央にあるサンプル画像や端にあるサンプル画像、対象検出物が大きいサンプル画像や小さいサンプル画像、検出対象物が正面を向いているサンプル画像や斜めを向いているサンプル画像などを用いるのが望ましい。
【００７４】
学習部２には、上記の処理によって得られた正解データ（つまり行ベクトル５１および列ベクトル５２）ｔim（ｉはサンプル画像のインデックスであり、ｍは行ベクトルであるか列ベクトルであるかを示すインデックス）、および、ニューラルネットワークパラメータをＷとしてサンプル画像ｘiをニューラルネットワーク処理部１が処理したときの出力（つまり行ベクトル５１および列ベクトル５２）ｆm（ｘi；Ｗ）が入力される。
そして、学習部２は下記（１）式のように目的関数Ｅ（Ｗ）を定義する。
【数１】
0006360802.tif 000002
【００７５】
ここで、ｎはサンプル画像の数である。目的関数Ｅ（Ｗ）はニューラルネットワークパラメータＷ（つまり、フィルタ係数およびバイアス）の関数であり、出力ｆm（ｘi；Ｗ）と正解データｔimとが一致する場合のみ０となり、一致しない場合は０より大きくなる。
【００７６】
そこで、学習部２は、目的関数Ｅ（Ｗ）が可能な限り小さくなるようニューラルネットワークパラメータＷを生成する。目的関数Ｅ（Ｗ）を最小化するには、例えば公知の誤差逆伝搬法を適用することができ、具体的には目的関数Ｅ（Ｗ）が収束するまで、下記（２）式に示す更新則を最終段の水平方向マップ生成部１２ｈ側および垂直方向マップ生成部１２ｖ側から順に適用すればよい。
【数２】
0006360802.tif 000003
【００７７】
このようにして生成されたフィルタ係数およびバイアスが、検出処理用ニューラルネットワークパラメータとして、検出処理に用いられる。
続いて、検出処理について説明する。
【００７８】
検出処理時は、ニューラルネットワーク処理部１の各非線形化処理部１１，１２１ｈ，１２１ｖには、検出処理用ニューラルネットワークパラメータが設定されている。また、車載カメラからの画像が入力画像としてニューラルネットワーク処理部１に入力される。そして、図１に示すように、ニューラルネットワーク処理部１は行ベクトル５１および列ベクトル５２を生成する。
【００７９】
検出処理用ニューラルネットワークパラメータが適切であれば、行ベクトル５１および列ベクトル５２において、検出対象物の上下左右端に対応する列および行の値が１（あるいは１に近い値）となり、他の値が０（あるいは０に近い値）となる。よって、特定部３は、行ベクトル５１および列ベクトル５２に基づいて、入力画像における検出対象物の上下左右端の位置を特定できる。なお、特定部３ついては、第３の実施形態で詳述する。
【００８０】
このように、第１の実施形態では、行ベクトル５１を生成する水平方向処理部１２０ｈと、列ベクトル５２を生成する垂直方向処理部１２０ｖとを別々に設ける。そして、水平方向処理部１２０ｈにおけるプーリング部１２２ｈは、マップを水平方向にはプーリングせず垂直方向にのみプーリングする。垂直方向処理部１２０ｖにおけるプーリング部１２２ｖは、マップを垂直方向にはプーリングせず水平方向にのみプーリングする。
【００８１】
そのため、入力画像の水平方向の解像度を保ったまま検出対象物の水平方向の位置を示す行ベクトル５１を生成できるとともに、入力画像の垂直方向の解像度を保ったまま検出対象物の垂直方向の位置を示す列ベクトル５２を生成できる。したがって、高精度に検出対象物の位置を検出できる。
【００８２】
また、本実施形態によれば、検出対象物の大きさや縦横比に何らの制限もないため、ピラミッド画像の生成やスライディングウィンドウの適用が不要であり、ニューラルネットワーク処理部１の処理負荷を軽減できる。
【００８３】
（第２の実施形態）
次に説明する第２の実施形態では、垂直方向処理部１２０ｖで生成されるマップも使用して水平方向処理部１２０ｈが行ベクトル５１を生成するとともに、水平方向処理部１２０ｈで生成されるマップも使用して垂直方向処理部１２０ｖが列ベクトル５２を生成するものである。
【００８４】
図１０は、第２の実施形態に係るニューラルネットワーク処理部１’の概略構成を示すブロック図である。図３との相違点として、少なくとも２つの水平方向マップ生成部１２ｈ，１２ｈ’および垂直方向マップ生成部１２ｖ，１２ｖ’が設けられる。初段の水平方向マップ生成部１２ｈおよび垂直方向マップ生成部１２ｖは第１の実施形態で説明したものと同様である。これに対し、２段目以降の水平方向マップ生成部１２ｈ’は、前段の水平方向マップ生成部１２ｈ（１２ｈ’）から出力されるマップのみならず、前段の垂直方向マップ生成部１２ｖ（１２ｖ’）から出力されるマップも用いて、新たなマップを出力する。また、２段目以降の垂直方向マップ生成部１２ｖ’は、前段の垂直方向マップ生成部１２ｖ（１２ｖ’）から出力されるマップのみならず、前段の水平方向マップ生成部１２ｈ（１２ｈ’）から出力されるマップも用いて、新たなマップを出力する。
【００８５】
図１１は、水平方向マップ生成部１２ｈ’および垂直方向マップ生成部１２ｖ’の概略構成を示すブロック図である。図示のように、２段目の水平方向マップ生成部１２ｈ’は非線形化処理部１２１ｈ’を有し、初段の水平方向マップ生成部１２ｈからの出力マップおよび初段の垂直方向マップ生成部１２ｖからの出力マップに対して非線形化処理を行って中間マップを生成する。また、垂直方向マップ生成部１２ｖ’は同様の非線形化処理部１２１ｖ’を有する。なお、プーリング部１２２ｈ，１２２ｖは図３と同様である。
【００８６】
図１２は、水平方向マップ生成部１２ｈ’および垂直方向マップ生成部１２ｖ’の処理動作の概略を説明する図である。同図において、水平方向マップ生成部１２ｈ’に入力されるのは、初段の水平方向マップ生成部１２ｈから出力される２つのマップ６４，６５であり、水平方向マップ生成部１２ｈ’が出力するのは２つのマップ９１，９２とする。また、垂直方向マップ生成部１２ｖ’に入力されるのは、初段の垂直方向マップ生成部１２ｖから出力される２つのマップ６６，６７であり、垂直方向マップ生成部１２ｖ’が出力するのは２つのマップ９３，９４とする。
【００８７】
図示のように、非線形化処理部１２１ｈ’はマップ６４〜６７から中間マップ７４を生成する。中間マップ７４の解像度はマップ６４，６５の解像度と等しい。そして、プーリング部１２２ｈは中間マップ７４を垂直方向にのみプーリングしてマップ９１を生成する。すなわち、マップ９１の水平方向の解像度は、マップ６４の水平方向の解像度と等しい。同様に、非線形化処理部１２１ｈ’はマップ６４〜６７から中間マップ７５を生成する。そして、プーリング部１２２ｈは中間マップ７５からマップ９２を生成する。
【００８８】
一方、非線形化処理部１２１ｖ’はマップ６４〜６７から中間マップ７６を生成する。中間マップ７６の解像度はマップ６６，６７の解像度と等しい。そして、プーリング部１２２ｖは中間マップ７６を水平方向にのみプーリングしてマップ９３を生成する。すなわち、マップ９３の垂直方向の解像度は、マップ６６の垂直方向の解像度と等しい。同様に、非線形化処理部１２１ｖ’はマップ６４〜６７から中間マップ７７を生成する。そして、プーリング部１２２ｖは中間マップ７７からマップ９４を生成する。
マップ９１〜９４の生成法は共通しているため、以下、代表してマップ９３の生成について詳しく説明する。
【００８９】
図１３は、マップ９３の生成法を説明する図である。ここで、入力画像の画素数はＣ×Ｒであるとする。初段の水平方向マップ生成部１２ｈの処理により、垂直方向マップ生成部１２ｖ’に入力されるマップ６４，６５の画素数はＣ×Ｒ／２になっている。また、初段の垂直方向マップ生成部１２ｖの処理により、垂直方向マップ生成部１２ｖ’に入力されるマップ６６，６６の画素数はＣ／２×Ｒになっている。
【００９０】
非線形化処理部１２１ｖ’ はマップ６６，６７を畳み込み演算してそれぞれ中間マップ６６’，６７’を生成する。中間マップ６６’，６７’の画素数は、マップ６６，６７の画素数と同じく、Ｃ／２×Ｒである。ここでの畳み込み演算は、例えば図５（ｂ）に示す処理である。
【００９１】
一方、非線形化処理部１２１ｖ’はマップ６４，６５を畳み込み演算してそれぞれ中間マップ６４’，６５’を生成する。ここで、非線形化処理部１２１ｖ’は、次のようにしてマップ６４，６５の水平方向画素数を１／２倍にするとともに垂直方向画素数を２倍にして、中間マップ６４’，６５’をそれぞれ生成する。
【００９２】
図１４は、マップ６４’の生成法を説明する図である。同図では、フィルタの画素数を３×３としている。同図（ａ）に示すように、まず非線形化処理部１２１ｖ’はフィルタの中心がマップ６４の画素（１，１）と重なるようフィルタを設定する。そして、非線形化処理部１２１ｖ’は、マップ６４のフィルタが設定された部分の画素値とフィルタ係数との内積を、中間マップ６４’の左上の画素（１，１）およびその下の画素（１，２）の値とする。つまり、１つの内積を、中間マップ６４’の垂直方向に並ぶ２つの画素に設定する。
【００９３】
続いて、図１４（ｂ）に示すように、非線形化処理部１２１ｖ’はフィルタを２画素右にシフトし、フィルタの中心がマップ６４の画素（３，１）に重なるようフィルタを設定する。そして、非線形化処理部１２１ｖ’は、マップ６４のフィルタが設定された部分の画素値とフィルタ係数との内積を、中間マップ６４’の画素（２，１）およびその下の画素（２，２）の値とする。
このようにフィルタを２画素ずつ右にずらしながらマップ６４の１行を処理することで、中間マップ６４’の２列の値が定まる。
【００９４】
マップ６４の１行目に対する処理終了後、図１４（ｃ）に示すように、非線形化処理部１２１ｖ’はフィルタを１画素下にシフトし、フィルタの中心がマップ６４の画素（１，２）と重なるようフィルタを設定し、内積を算出して中間マップ６４’の画素（１，３）およびその下の画素（１，４）の値とする。
【００９５】
このようにフィルタをシフトしながら処理を行うことで、画素数がＣ×Ｒ／２であるマップ６４から、画素数がＣ／２×Ｒである中間マップ６４’が生成される。
【００９６】
より一般的には、マップ６４の水平方向画素数および垂直方向画素数をそれぞれ１／ｐ倍、ｑ倍（ｐ，ｑは任意の整数）して中間マップ６４’を生成するためには、非線形化処理部１２１ｖ’は、マップ６４のフィルタが設定された部分の画素値と、フィルタ係数との内積を、中間マップ６４’における対応画素およびその下の（ｑ−１）個の画素の値に設定する。この処理を、マップ６４の水平方向においてはｐ画素ずつフィルタをシフトしながら、マップ６４の垂直方向においては１画素ずつフィルタをシフトしながら行うことで、中間マップ６４’を生成できる。
【００９７】
以上のようにして、図１３における中間マップ６４’，６５’が生成される。そして、非線形化処理部１２１ｖ’は、中間マップ６４’〜６７’の各画素値を足し合わせて、画素数がＣ／２×Ｒである中間マップ７６を生成する（図１３の２点鎖線）。なお、図示していないが、足し合わせた後にバイアスが加算される。そして、プーリング部１２２ｖが中間マップ７６に対してプーリング処理を行って、画素数がＣ／４×Ｒのマップ９３が生成される。同様にして、非線形化処理部１２１ｖ’は図１２のマップ９４を生成できる。
また、以上の説明の水平方向と垂直方向を入れ替えることで、非線形化処理部１２１ｈ’はマップ９１，９２を生成できる。
【００９８】
すなわち、マップ６６の水平方向画素数および垂直方向画素数をそれぞれｐ倍、１／ｑ倍（ｐ，ｑは任意の整数）して中間マップ（不図示。図１３および図１４の中間マップ６４’に相当）を生成するためには、非線形化処理部１２１ｈ’は、マップ６６のフィルタが設定された部分の画素値と、フィルタ係数との内積を、中間マップにおける対応画素およびその右の（ｐ−１）個の画素の値に設定する。この処理を、マップ６６の水平方向においては１画素ずつフィルタをシフトしながら、マップ６６の垂直方向においてはｑ画素ずつフィルタをシフトしながら行うことで、中間マップを生成できる。
【００９９】
このように、水平方向処理部１２０ｈが垂直方向処理部１２０ｖで生成されるマップも使用し、垂直方向処理部１２０ｖが水平方向処理部１２０ｈで生成されるマップも使用することで、検出対象物の検出精度が向上することを説明する。
【０１００】
図１５は、第２の実施形態に係るニューラルネットワーク処理部１’の処理動作を模式的に示す図である。簡略化のために、図１３において、初段の水平方向マップ生成部１２ｈから出力される１つのマップ６４と、初段の垂直方向マップ生成部１２ｖから出力される１つのマップ６６から、中間マップ７６を生成することを示している。そして、検出対象物が人であるとしている。
【０１０１】
入力画像に人が写っていた場合、マップ６４には垂直方向に潰された人の特徴が配置され、マップ６６には水平方向に潰された人の特徴が配置される。本実施形態では、これら２つのマップ６４，６６から中間マップ７６が生成される。中間マップ７６の画素７６ａは、マップ６４の矩形領域６４ａにおける内積と、マップ６６の矩形領域６６ａにおける内積と、から生成される。画素７６ａが矩形領域６６ａのみを用いて生成される場合、マップ６６における人の左足の先あたりの画像のみから、画素７６ａが生成されることになる。
【０１０２】
しかしながら、人の体のごく一部である足の先のみの画像から人の位置を精度よく検出するのは困難な場合もある。足の先と似た領域は画像内に多々存在し得るためである。
【０１０３】
これに対し本実施形態では、画素７６ａは、矩形領域６６ａのみならず、矩形領域６４ａも用いて生成される。そのため、足の先よりも縦に広い範囲（具体的には、足の付け根から腰、腹あたり）の画像から、画素７６ａが生成される。その結果、人のより広い領域の情報を使って人を検出することとなり、検出の精度が向上する。
【０１０４】
このように、第２の実施形態では、垂直方向処理部１２０ｖで生成されるマップも使用して水平方向処理部１２０ｈが行ベクトル５１を生成するとともに、水平方向処理部１２０ｈで生成されるマップも使用して垂直方向処理部１２０ｖが列ベクトル５２を生成する。そのため、より高精度に検出対象物の位置を検出できる。
【０１０５】
（第３の実施形態）
第３の実施形態では、特定部３について詳しく説明する。なお、本実施形態では、検出対象物が１種類であると仮定する。
【０１０６】
図１６は、特定部３による、検出対象物の左右端位置の特定を説明する図である。入力画像を処理した結果、２つの行ベクトル５１ａ，５１ｂが出力される例を示している。
【０１０７】
行ベクトル５１ａには、水平方向処理部１２０ｈ内のプーリング部１２２ｈのプーリング処理により、入力画像の上半分の領域５１Ａの情報が含まれている。同様に、行ベクトル５１ｂには、入力画像の下半分の領域５１Ｂの情報が含まれている。つまり、行ベクトル５１ａおよび行ベクトル５１ｂは、それぞれ入力画像の上半分の領域５１Ａおよび下半分の領域５１Ｂに対応している。
【０１０８】
よって、行ベクトル５１ａに１値（あるいは１値に近い値、以下同様）が含まれる場合（図１６の例ではｘｌａ，ｘｒａ列）、入力画像の上半分の領域５１Ａに検出対象物の左端候補および／または右端候補が含まれることを意味する。一方、行ベクトル５１ａに１値が含まれない場合、入力画像の上半分の領域５１Ａには左右端候補が含まれないことを意味する。
【０１０９】
同様に、行ベクトル５１ｂに１値が含まれる場合（図１６の例ではｘｌｂ，ｘｒｂ列）、入力画像の下半分の領域５１Ｂに検出対象物の左端候補および／または右端候補が含まれることを意味する。行ベクトル５１ｂに１値が含まれない場合、入力画像の下半分の領域５１Ｂには左右端候補が含まれないことを意味する。
【０１１０】
図１７は、特定部３による、検出対象物の上下端の特定を説明する図である。入力画像を処理した結果、３つの列ベクトル５２ａ〜５２ｃが出力される例を示している。
【０１１１】
列ベクトル５２ａには、垂直方向処理部１２０ｖ内のプーリング部１２２ｖのプーリング処理により、入力画像を垂直方向に３等分したうちの左の領域５２Ａの情報が含まれている。同様に、列ベクトル５２ｂ，５２ｃには、入力画像を垂直方向に３等分したうちの中央の領域５２Ｂおよび右の領域５２Ｃの情報がそれぞれ含まれている。つまり、列ベクトル５２ａ〜５２ｃは、それぞれ入力画像を垂直方向に３等分したうちの左の領域５２Ａ、中央の領域５２Ｂおよび右の領域５２Ｃに対応している。
【０１１２】
よって、列ベクトル５２ａに１値が含まれる場合、入力画像の左の領域５２Ａに検出対象物の上端候補および／または下端候補が含まれることを意味する。一方、列ベクトル５２ａに１値が含まれない場合、入力画像の左の領域５２Ａには上下端候補が含まれないことを意味する。
【０１１３】
同様に、列ベクトル５２ｂに１値が含まれる場合（図１７の例ではｙｔｂ，ｙｂｂ列）、入力画像の中央の領域５２Ｂに検出対象物の上端候補および／または下端候補が含まれることを意味する。列ベクトル５２ｂに１値が含まれない場合、入力画像の中央の領域５２Ｂには上下端候補が含まれないことを意味する。
【０１１４】
また、列ベクトル５２ｃに１値が含まれる場合（図１７の例ではｙｔｃ，ｙｂｃ列）、入力画像の右の領域５２Ｃに検出対象物の上端候補および／または下端候補が含まれることを意味する。列ベクトル５２ｃに１値が含まれない場合、入力画像の右の領域５２Ｃには上下端候補が含まれないことを意味する。
【０１１５】
図１８は、特定部３の処理動作の第１例を示す図である。入力画像を処理した結果、２つの行ベクトル５１ａ，５１ｂと、３つの列ベクトル５２ａ〜５２ｃが出力される例を示している。
【０１１６】
図１８では、行ベクトル５１ａ，５２ｂの共通する２つの列ｘｌ，ｘｒの値が１でる。これらの列ｘｌ，ｘｒに対応する画素位置が検出対象物の左端右候補である。また、列ベクトル５２ａ〜５２ｃの共通する２つの行ｙｔ，ｙｂの値が１である。これらの行ｙｔ，ｙｂに対応する画素位置が検出対象物の上下端候補である。
【０１１７】
図１８は単純な例であり、特定部３は、座標（ｘｌ，ｙｔ），（ｘｒ，ｙｔ），（ｘｌ，ｙｂ），（ｘｒ，ｙｂ）で囲まれる矩形領域に検出対象物があることを特定できる。
【０１１８】
実際には、行ベクトル５１および列ベクトル５２にはノイズが含まれ得る。そのため、行ベクトル５１および列ベクトル５２における各値は０と１の間の値になることもある。値が１に近い列または行ほど検出対象物の端に対応する可能性が高いが、検出対象物の端に近い列または行の近傍の値も１に近くなることもある。そこで、特定部３は次のようにしてノイズを除去してもよい。
【０１１９】
図１９は、特定部３によるノイズ除去を説明する図である。同図は、２つの行ベクトル５１ａ，５２ｂのノイズを除去する例を示している。また、図２０は、ノイズ除去の手順を示すフローチャートである。
【０１２０】
まず、特定部３は１つの行ベクトル５１ａの各列のうちの最大値を選択する（図２０のステップＳ１）。図１９の例では、列ｘ１の値が最大値であったとする。そして、特定部３は最大値と所定の閾値とを比較する（図２０のステップＳ２）。
【０１２１】
最大値が閾値より小さい場合（ステップＳ２のＮＯ）、特定部３は、行ベクトル５１ａには検出対象物の左端および右端がないと判断し、パラメータｆｌａｇをｆａｌｓｅに設定する。そして、特定部３は次の行ベクトル５１ｂの処理に進む（ステップＳ５）。
【０１２２】
最大値が閾値以上であれば（ステップＳ２のＹＥＳ）、特定部３は最大値をとる列（図１９の例では列ｘ１）を検出対象物の左右端候補とし（図２０のステップＳ３）、パラメータｆｌａｇをｔｒｕｅに設定する。そして、特定部３はその列の近傍の所定領域（図１９の例では列ｘ１の左右２列ずつ）にマスクを設定する（図２０のステップＳ４）。次いで、特定部３は、行ベクトル５１ａのマスクが設定されていない列のうちの最大値を選択する（ステップＳ５）。図１９の例では、列ｘ２の値が最大値であったとする。
以降、選択された最大値が閾値より小さくなるまで（パラメータｆｌａｇがｆａｌｓｅに設定されるまで）、ステップＳ２〜Ｓ５を繰り返す。
【０１２３】
そして、行ベクトル５１ａの処理が完了すると、同様の処理を行ベクトル５１ｂに対しても行う（ステップＳ６）。列ベクトル５２対するノイズ除去も同様である。
２つの左右端候補が検出された場合、特定部３は、左側を左端候補とし、右側を右端候補とすることができる。
【０１２４】
マスクを設定することで、検出対象物の左端候補と右端候補は、マスクのサイズに応じた画素数分以上離れた位置に検出される。同様に、検出対象物の上端候補と下端候補は、マスクのサイズに応じた画素数分以上離れた位置に検出される。以下、このようにして検出対象物の左右端候補が行ベクトル５１から検出され、上下端候補が列ベクトル５２から検出されたものとする。
【０１２５】
なお、この処理によれば、左右端候補がみつからない場合もあるし、１つだけ見つかる場合もあるし、３つ以上見つかる場合もある。アプリケーションによって、１つの検出対象物が入力画像内に収まることが分かっている場合などには、ステップＳ２の閾値処理を行わず、最大値が選択された順に２つの列を左右端候補としてもよい。上下端候補についても同様である。
【０１２６】
図２１は、特定部３の処理動作の第２例を示す図である。同図では、行ベクトル５１ａに左右端候補ｘｌａ，ｘｒａが検出され，行ベクトル５１ｂに左右端候補ｘｌｂ，ｘｒｂが検出されている。また、列ベクトル５２ｂに上下端候補ｙｔｂ，ｙｂｂが検出され、列ベクトル５２ｃ上下端候補ｙｔｃ，ｙｂｃが検出されている。この場合、各候補に対応する位置に合計８本の線を引くと、十字（クロスポイント）が４点、すなわち、（ｘｌａ，ｙｔｂ），（ｘｒａ，ｙｔｃ），（ｘｌｂ，ｙｂｂ），（ｘｒｂ，ｙｂｃ）に形成される。この４点が検出対象物の左上、右上、左下および右下の候補点である。
【０１２７】
ただし、これら４点を結んで得られる矩形の各辺は水平方向および垂直方向と平行にはならない。そこで、特定部３は、例えば下式のように各点の平均値を用いて得られる４点（ｘｌ，ｙｔ），（ｘｒ，ｙｔ），（ｘｌ，ｙｂ），（ｘｒ，ｙｂ）を結んだ矩形を検出対象物の位置と特定することができる。
ｘｌ＝（ｘｌａ＋ｘｌｂ）／２
ｘｒ＝（ｘｒａ＋ｘｒｂ）／２
ｙｔ＝（ｙｔｂ＋ｙｔｃ）／２
ｙｂ＝（ｙｂｂ＋ｙｂｃ）／２
【０１２８】
図２２は、特定部３の処理動作の第３例を示す図である。同図では、行ベクトル５１ａに左右端候補ｘｌａ，ｘｒａが検出され，行ベクトル５１ｂに左右端候補ｘｌｂ，ｘｒｂが検出されている。また、列ベクトル５２ｂに上下端候補ｙｔｂ，ｙｂｂが検出される。この場合も、十字（クロスポイント）が４点、すなわち、（ｘｌａ，ｙｔｂ），（ｘｒａ，ｙｔｂ），（ｘｌｂ，ｙｂｂ），（ｘｒｂ，ｙｂｂ）に形成される。この４点が検出対象物の左上、右上、左下および右下の候補点である。
そして、特定部３は、例えば平均値を用いて得られる４点を結んだ矩形を検出対象物の位置と特定することができる。
【０１２９】
図２１および図２２に示すように、十字が４点に形成される場合、特定部３は検出対象物が入力画像に含まれる、と判断できる。
【０１３０】
図２３は、特定部３の処理動作の第４例を示す図である。同図では、行ベクトル５１ａも左右端候補ｘａが検出され，行ベクトル５１ｂに左右端候補ｘｂが検出されている。また、列ベクトル５２ａに上下端候補ｙｔ，ｙｂが検出されている。よって、十字（クロスポイント）は２点、すなわち、（ｘａ，ｙｔ），（ｘｂ，ｙｂ）に形成される。
【０１３１】
この場合、検出対象物の上端、下端および右端が入力画像に含まれており、左端のみが入力画像の外側にある、との解釈が成立し得る。よって、特定部３は、検出対象物（図２３の例では車両）の一部のみが入力画像の領域５２Ａに含まれているとし、例えば検出対象物の右上の座標（（ｘａ＋ｘｂ）／２，ｙｔ）および右下の座標（（ｘａ＋ｘｂ）／２，ｙｂ）を特定する。
【０１３２】
図２４は、特定部３の処理動作の第５例を示す図である。同図では、列ベクトル５２ｃに上下端候補ｙｔ，ｙｂが検出されている。一方、行ベクトル５１ａ，５１ｂに左右端候補は検出されていない。よって、十字は形成されない。この場合、特定部３は、上下端候補ｙｔ，ｙｂが誤検出であると解釈して、検出対象物が入力画像に含まれない、と判断できる。
【０１３３】
図２５は、特定部３の処理動作の第６例を示す図である。同図では、行ベクトル５１ａに左右端候補ｘｌａ，ｘｒａが検出され、行ベクトル５１ｂに左右端候補ｘｌｂ，ｘｒｂが検出されている。一方、列ベクトル５２ａ〜５２ｃに上下端候補は検出されていない。よって、十字は形成されない。
【０１３４】
しかしながら、この場合、検出対象物の左右端が入力画像に含まれており、上下端が入力画像の外側にある、との解釈が成立し得る。よって、特定部３は、検出対象物（図２５の例では人）の一部が入力画像に含まれるとし、例えば検出対象物の左端の座標（ｘｌａ＋ｘｌｂ）／２および右端の座標（ｘｒａ＋ｘｒｂ）／２を特定できる。
【０１３５】
なお、図２３〜図２５では、形成される十字は４点未満であり、この場合は種々の解釈が成立し得る。例えば、図２４において、特定部３は、本来行ベクトル５１ａ，５１ｂに左右端候補が検出されるべきところが検出エラーであると解釈し、検出対象物の上端の座標ｙｔおよび下端の座標ｙｂのみを特定することも可能である。また、図２５において、特定部３は、左右端候補が誤検出であると解釈して、検出対象物が入力画像に含まれない、と判断することも可能である。
【０１３６】
そのため、本検出装置１００のアプリケーションや検出対象物の形状（例えば、人であれば縦長であることが想定される）などに応じて、形成される十字が４点未満の場合の解釈を予め定めておけばよい。
【０１３７】
ところで、特定部３は、検出された検出対象物の上下左端位置（の少なくとも一部）に基づいて、車載カメラと検出対象物との位置関係をさらに算出してもよい。
【０１３８】
図２６は、車載カメラ１０１と検出対象物（ここでは先行車両）１０２との進行方向の距離Ｚを算出する手法を説明する図である。同図において、車両１１０は、車両本体１１１と、これに取り付けられた車載カメラ１０１と、検出装置１００とを備えている。車載カメラ１０１は既知の高さｈ（例えば１３０ｃｍ）に設置されているとする。また、車載カメラ１０１の焦点距離ｆ画素の位置に仮想の画像平面を設定する。この画像平面において、その中心を原点、水平方向（車両１１０の進行方向）をｘ軸、垂直方向（鉛直方向下方向）をｙ軸とする。
【０１３９】
そして、検出装置１００の特定部３によって特定された、検出対象物１０２の下端位置の座標がｙｂであったとする。このとき、図示のように、三角形の相似関係から、特定部３は下式に基づいて車載カメラ１０１と検出対象物１０２との進行方向の距離Ｚを算出できる。
Ｚ＝ｆｈ／ｙｂ
【０１４０】
図２７は、車載カメラ１０１と検出対象物１０２との横方向の距離ＸL，ＸRを算出する手法を説明する図である。図２６と同様に座標軸を設定し、特定部３によって特定された検出対象物１０２の左端位置および右端位置の座標がそれぞれｘｌ，ｘｒであったとする。
このとき、図示のように、三角形の相似関係から、特定部３は下式に基づいて車載カメラ１０１と検出対象物１０２との横方向の距離ＸL，ＸRを算出できる。
ＸL＝Ｚｘｌ／ｆ
ＸR＝Ｚｘｒ／ｆ
【０１４１】
このように、第３の実施形態では、特定部３が行ベクトル５１および列ベクトル５２に応じて適切な解釈を行うため、検出対象物の一部のみが入力画像に含まれるような場合であっても、柔軟に検出対象物の位置を特定できる。
【０１４２】
（第４の実施形態）
上述した第１〜３の実施形態は、検出対象物が１種類（例えば人）であることを念頭に置いていた。これに対し、以下に説明する第４の実施形態では、複数種類の検出対象物（例えば人と車両）の位置を特定するものである。
【０１４３】
図２８は、第４の実施形態に係るニューラルネットワーク処理部１’’の概略構成を示すブロック図である。検出対象物がｎ種類（検出対象物１〜ｎという）である場合、第１の実施形態（図３）との相違点として、水平方向処理部１２０ｈおよび垂直方向処理部１２０ｖがそれぞれ出力する行ベクトル５１および列ベクトル５２のマップ数はｎである。そして、ｉ（ｉ＝１〜ｎ）番目のマップにおける行ベクトル５１および列ベクトル５２が、検出対象物ｉの検出結果を示す。
なお、入力画像の画素数およびプーリング部１２２ｈの段数に応じて、１つのマップにつき複数の行ベクトル５１や列ベクトル５２が出力され得る。
【０１４４】
学習処理においては、検出対象物１〜ｎのそれぞれが写った複数のサンプル画像を用いる。そして、正解データを生成するために、１つのサンプル画像に対して、ｎ枚の入力画像１〜ｎをニューラルネットワーク処理部１’’に入力する。サンプル画像に検出対象物ｉが含まれる場合、入力画像ｋ（ｋ＝１〜ｎかつｋ≠ｉ）の全画素は０値であり、入力画像ｉは検出対象物の上下左右端における画素のみ１値で他の画素は０値とする。その他は第１の実施形態と同様である。
【０１４５】
検出処理においては、マップごとに検出対象物の位置特定を行う。すなわち、検出対象物ｉを検出する場合、特定部３は、ｉ番目のマップにおける行ベクトル５１および列ベクトル５２に基づいて、検出対象物ｉの位置を特定する。
【０１４６】
このように、第４の実施形態では、ニューラルネットワーク処理部１’’が出力する行ベクトル５１および列ベクトル５２のマップ数をｎとし、各検出対象物を含むサンプル画像を用いて学習処理を行うことで、ｎ種類の検出対象物を別個に検出できる。なお、本実施形態を第２，３の実施形態に適用することも可能である。
【０１４７】
（第５の実施形態）
次に説明する第５の実施形態は、ニューラルネットワーク構造自体は第１の実施形態などと変わらないが、出力される行ベクトルおよび列ベクトルの形態が第１〜４の実施形態とは異なるものである。そして、入力画像における検出対象物を、必ずしも上下左右端の矩形でなく、任意の形状で特定するものである。
【０１４８】
図２９は、第５の実施形態に係るニューラルネットワーク処理部１の処理動作の概要を説明する図であり、図１（ｂ）と対応している。入力画像において検出対象物が図１（ｂ）と同じ矩形である場合、ニューラルネットワーク処理部１は、ｘｌ〜ｘｒ列のみの値が１であり他列の値が０である行ベクトル５１’、および、ｙｔ行〜ｙｂ行のみの値が１であり他行の値が０である列ベクトル５２’を出力する。すなわち、行ベクトル５１’および列ベクトル５２’において、検出対象物がある位置に対応する行および列の値が１であり、検出対象物がない位置に対応する列および行の値が０である。
このような行ベクトル５１’および列ベクトル５２’を出力するためには、学習処理を次のようにすればよい。
【０１４９】
図３０は、サンプル画像から正解データを生成するための入力画像を説明する図であり、図８と対応している。本実施形態では、図２８（ａ）に示すサンプル画像に対して、人手によって同図（ｂ）に示す入力画像を生成する。すなわち入力画像は、検出対象物がある画素の値を１とし、検出対象物がない画素の値を０である。
【０１５０】
図３１は、別のサンプル画像から正解データを生成するための入力画像を説明する図である。図３１（ａ）に示すサンプル画像では複数の検出対象物が含まれている。この場合の入力画像（同図（ｂ））は、少なくとも１つの検出対象物がある画素の値を１とし、他の画素の値を０とする。このような入力画像の場合、画素の値が１となる領域は矩形には限られない。
【０１５１】
以上のような入力画像がニューラルネットワーク処理部１に入力される。学習用ニューラルネットワークパラメータは上述した通りである。このようにして学習処理を行って検出用ニューラルネットワークパラメータを生成することで、車載カメラからの入力画像に対して検出処理を行うと、図２９に示すような行ベクトル５１’および列ベクトル５２’が出力される。
【０１５２】
本実施形態においては、特定部３は、それほど複雑な解釈をすることなく、行ベクトル５１’および列ベクトル５２’における値が１である列および行の位置に、検出対象物があると判断できる。
【０１５３】
アプリケーションによっては、検出対象物のそれぞれの位置を詳細に特定する必要はなく、大雑把な位置さえ把握できればよいこともある。例えば、検出結果が「左側に人の集団がある」程度であっても、十分に安全運転に寄与できる。よって、特に検出対象物が複数ある場合には、特に本実施形態のようにするのも有効である。
【０１５４】
（第６の実施形態）
次に説明する第６の実施形態では、検出対象物が二輪車や人など縦長であることを想定している。そして、検出装置におけるニューラルネットワーク処理部は、入力画像において、まず検出対象物の水平方向位置を検出し、続いて垂直方向位置を検出するものである。
【０１５５】
図３１は、第６の実施形態に係るニューラルネットワーク処理部１’’’の概略構成を示すブロック図である。このニューラルネットワーク処理部１’’’は次のようにして検出処理を行う。なお、まずは検出対象物は２つ以上存在しないと仮定する。また、以下では、上述した実施形態との相違点を主に説明する。
【０１５６】
非線形処理部１１によって入力画像から生成されたマップは、垂直方向処理部１２０ｖには入力されず、水平方向処理部１２０ｈにのみ入力される。なお、水平方向処理部１２０ｈと垂直方向処理部１２０ｖは直接情報をやりとりしない。
【０１５７】
水平方向処理部１２０ｈは１つの行ベクトル５１を出力する。行ベクトル５１は、図２９に示すように、検出対象物がある位置に対応する列の値が１である。出力される行ベクトル５１の数を１つにするためには、種々の手法が考えられる。例えば、垂直方向の画素数を１／２にプーリングするプーリング部１２２ｈをｎ段設け、水平方向処理部１２０ｈには、垂直方向画素数が２n画素である入力画像を入力してもよいし、垂直方向画素数が２n画素となるよう予めリサイズや切り出しを行った入力画像を入力してもよい。あるいは、入力画像の垂直方向画素数は任意とし、垂直方向画素数に応じてプーリング部１２２ｈでの縮小率を調整して、最終的に１つの行ベクトル５１が出力されるようにしてもよい。
【０１５８】
本実施形態のニューラルネットワーク処理部１’’’は、行ベクトルに基づいて、入力画像から検出対象物を含む領域を特定する領域特定部１３を有する。以下では、領域特定部１３は矩形領域を特定するものとする。
【０１５９】
図３２は、領域特定部１３の処理動作を説明する図である。領域特定部１３は次のような矩形領域を特定する。矩形領域の中心は、行ベクトル５１において１値である列の中央と一致する。矩形領域の水平方向画素数（幅）は、予め定めた固定値（例えば６４画素）としてもよいし、予め定めた選択肢（例えば、３２画素、１２８画素および５１２画素の３つ）から入力画像の画素数に応じて選択してもよいし、１値の連続数が多いほど多くしてもよい。矩形領域の垂直方向画素数（高さ）は入力画像の垂直方向画素数と一致する。
【０１６０】
図３１に戻り、領域特定部１３によって特定された矩形領域は、入力画像に基づくマップとして、垂直方向処理部１２０ｖに入力される。なお、領域特定部１３と垂直方向処理部１２０ｖとの間に１以上の非線形処理部を設けてもよい。また、行ベクトル５１に１値がない場合、すなわち、検出対象物が検出されない場合、領域特定部１３は矩形領域を特定せず、したがって垂直方向処理部１２０ｖは処理を行わない。
【０１６１】
矩形領域が入力された垂直方向処理部１２０ｖは、矩形領域を処理して、１つの列ベクトル５２を出力する。列ベクトル５２は、図２９に示すように、検出対象物がある位置に対応する行の値が１である。
【０１６２】
なお、矩形領域の水平方向画素数が固定値であれば、その数に合わせた段数のプーリング部１２２ｖを設ければよい。矩形領域の水平方向画素数が複数の選択肢から選択される場合、プーリング部１２２ｖの段数が互いに異なる垂直方向処理部１２０ｖを選択肢の数だけ設けておき、そのいずれかが矩形領域を処理するようにしてもよい。例えば、選択肢が３２（＝２5）画素、１２８（＝２7）画素および５１２（＝２9）画素の場合、５段のプーリング部１２２ｖを有する垂直方向処理部１２０ｖ、７段のプーリング部１２２ｖを有する垂直方向処理部１２０ｖ、および、９段のプーリング部１２２ｖを有する垂直方向処理部１２０ｖの３つを設け、選択された水平方向画素数に応じた垂直方向処理部１２０ｖが処理を行うことが考えられる。また、水平方向画素数が任意である場合、やはりプーリング部１２２ｖでの縮小率を調整してもよい。
【０１６３】
以上のようにして得られた１つずつの行ベクトル５１および列ベクトル５２に基づいて、特定部３（図２）は入力画像から検出対象物を検出する。
【０１６４】
検出対象物が２つ以上ある場合、領域特定部１３は各検出対象物について矩形領域を特定し、そのそれぞれについて垂直方向処理部１２０ｖが処理を行えばよい。
【０１６５】
このように処理する利点を説明する。検出対象物が二輪車や歩行者である場合、検出対象物が垂直方向に並んで存在することはまずあり得ない。よって、まず行ベクトル５１を生成して検出対象物の水平方向の位置を特定し、矩形領域を特定することで、その中央付近に検出対象物が位置する。そのため、垂直方向処理部１２０ｖでの処理において、検出対象物の特徴が充分に抽出され、検出精度の向上が期待できる。さらに、行ベクトル５１に基づいて検出対象物が存在しないと判断される場合には、垂直方向処理部１２０ｖは処理を行う必要がなく、演算量を減らすことができる。
【０１６６】
本実施形態のニューラルネットワーク処理部１’’’では、水平方向処理部１２０ｈにおけるニューラルネットワークパラメータと、垂直方向処理部１２０ｖにおけるニューラルネットワークパラメータを、別個に学習することができる。すなわち、第１の実施形態で説明した学習処理用ニューラルネットワークパラメータを用いた水平方向処理部１２０ｈの処理によって、行ベクトル５１の正解データを生成する。そして、学習部２（図２）は行ベクトル５１が正解データに近づくよう検出処理用のニューラルネットワークパラメータを生成すればよい。垂直方向処理部１２０ｖのニューラルネットワークパラメータも同様である。
【０１６７】
このように、第６の実施形態では、まず垂直方向のプーリングを行って行ベクトル５１を生成し、行ベクトル５１に基づいて検出対象物を含む矩形領域を特定する。続いて、矩形領域に対して水平方向のプーリングを行って列ベクトル５２を生成する。矩形領域には検出対象物の特徴が含まれているため、検出精度を向上できる。また、垂直方向のプーリングを行った時点で検出対象物が存在しないことが分かった場合には水平方向のプーリングを行わないため、演算量の削減を図れる。
【０１６８】
なお、本実施形態では検出対象物が縦長であることを想定していたため、まず垂直方向のプーリングを行ったが、検出対象物が横長である場合には、まず水平方向のプーリングを行ってもよい。
【０１６９】
また、上述した第１〜６の実施形態では、車載カメラからの画像から人や車両などを検出することを主に説明したが、他の用途にも適用可能である。
【０１７０】
上述した実施形態は、本発明が属する技術分野における通常の知識を有する者が本発明を実施できることを目的として記載されたものである。上記実施形態の種々の変形例は、当業者であれば当然になしうることであり、本発明の技術的思想は他の実施形態にも適用しうることである。したがって、本発明は、記載された実施形態に限定されることはなく、特許請求の範囲によって定義される技術的思想に従った最も広い範囲とすべきである。
【符号の説明】
【０１７１】
１，１’，１’’，１’’’  ニューラルネットワーク処理部
２  学習部
３  特定部
１１  非線形化処理部
１２ｈ，１２ｈ’  水平方向マップ生成部
１２ｖ，１２ｖ’  垂直方向マップ生成部
１２１ｈ，１２１ｈ’，１２１ｖ，１２１ｖ’  非線形化処理部
１２２ｈ，１２２ｖ  プーリング部
１２０ｈ  水平方向処理部
１２０ｖ  垂直方向処理部
１３  領域設定部
５１，５１ａ，５１ｂ，５１’  行ベクトル
５２，５２ａ〜５２ｃ，５２’  列ベクトル
１００  検出装置
１０１  車載カメラ
１０２  検出対象物
１１０  車両
１１１  車両本体
【図１】
0006360802.tif 000004
【図２】
0006360802.tif 000005
【図３】
0006360802.tif 000006
【図４】
0006360802.tif 000007
【図５】
0006360802.tif 000008
【図６】
0006360802.tif 000009
【図７】
0006360802.tif 000010
【図８】
0006360802.tif 000011
【図９】
0006360802.tif 000012
【図１０】
0006360802.tif 000013
【図１１】
0006360802.tif 000014
【図１２】
0006360802.tif 000015
【図１３】
0006360802.tif 000016
【図１４】
0006360802.tif 000017
【図１５】
0006360802.tif 000018
【図１６】
0006360802.tif 000019
【図１７】
0006360802.tif 000020
【図１８】
0006360802.tif 000021
【図１９】
0006360802.tif 000022
【図２０】
0006360802.tif 000023
【図２１】
0006360802.tif 000024
【図２２】
0006360802.tif 000025
【図２３】
0006360802.tif 000026
【図２４】
0006360802.tif 000027
【図２５】
0006360802.tif 000028
【図２６】
0006360802.tif 000029
【図２７】
0006360802.tif 000030
【図２８】
0006360802.tif 000031
【図２９】
0006360802.tif 000032
【図３０】
0006360802.tif 000033
【図３１】
0006360802.tif 000034
【図３２】
0006360802.tif 000035