【解決手段】実施形態の物体検出装置は、検出部と、推定処理部と、を備える。検出部は、撮影画像から物体候補領域を検出する。推定処理部は、少なくとも前記物体候補領域を含む前記撮影画像を用いた推定処理を行って、少なくとも前記物体候補領域内の物体の姿勢を表す情報を含む物体情報を出力する。前記推定処理は、前記物体に外接する直方体の路面に接する頂点のうち、前記撮影画像の視点位置から視認可能な少なくとも2つの頂点の前記撮影画像上の位置を推定する第1の処理と、前記少なくとも2つの頂点が前記物体の右前、左前、右後、左後のいずれであるかを推定する第2の処理と、を含む。
前記第1の処理は、前記物体に外接する1または複数の矩形を含む直方体の路面に接する頂点のうち、最も左に視認される頂点と最も右に視認される頂点の前記撮影画像上の位置をそれぞれ推定する
請求項1に記載の物体検出装置。
前記第2の処理は、前記第1の処理で位置を推定した頂点の組み合わせが、左に位置する頂点から順に、前記物体の(右前、左前、左後)、(右前、左前)、(右後、右前、左前)、(右後、右前)、(左後、右後、右前)、(左後、右後)、(左前、左後、右後)、(左前、左後)の組み合わせのいずれかであるかを推定する
請求項2または3に記載の物体検出装置。
前記第1の処理は、前記物体に外接する1または複数の矩形を含む直方体の路面に接する頂点であって、前記物体とは異なる他の物体により隠れた頂点の位置をさらに推定する
請求項1乃至6のいずれか一項に記載の物体検出装置。
【発明を実施するための形態】
【0007】
以下に添付図面を参照して、実施形態の物体検出装置、物体検出方法およびプログラムについて詳しく説明する。実施形態の物体検出装置は、単眼カメラで撮影された撮影画像を元に撮影範囲内に存在する物体を検出し、少なくとも検出した物体の姿勢の情報を含む物体情報を出力する。以下では、車両に搭載された物体検出装置を例に挙げて説明する。この場合、物体検出装置が検出する物体としては、例えば、当該物体検出装置が搭載された車両(以下、「自車両」と呼ぶ)の周辺に存在する他の車両(以下、「他車両」と呼ぶ)、歩行者、自転車やバイクなどの二輪車、信号機、標識、電柱、看板などの路側設置物など、自車両の走行の妨げになり得る障害物が挙げられる。物体検出装置は、自車両に設置された単眼カメラ(以下、「車載カメラ」と呼ぶ)により撮影された撮影画像を取得して、車載カメラの撮影範囲内の障害物を検出して物体情報を出力する。
【0008】
図1は、本実施形態の物体検出装置1の構成例を示すブロック図である。この物体検出装置1は、例えば専用または汎用コンピュータを用いて構成され、
図1に示すように、処理回路10、記憶回路20、通信部30、各部を接続するバス40を備える。この物体検出装置1には、車載カメラ2、ディスプレイ3、車両制御部4などが有線または無線により接続されている。
【0009】
処理回路10は、取得機能11と、検出機能12と、推定処理機能13とを有する。これらの各処理機能の具体的な内容については後述する。なお、
図1では、本実施形態に関わる主要な処理機能を例示しているが、処理回路10が有する処理機能はこれらに限られるものではない。
【0010】
物体検出装置1において実行される各処理機能は、例えば、コンピュータによって実行可能なプログラムの形態で記憶回路20に記憶されている。処理回路10は、記憶回路20からプログラムを読み出して実行することで、各プログラムに対応する処理機能を実現するプロセッサである。各プログラムを読み出した状態の処理回路10は、
図1に示した各処理機能を有することになる。
【0011】
なお、
図1では、単一の処理回路10により取得機能11、検出機能12、推定処理機能13の各処理機能が実現されるものとして図示しているが、複数の独立したプロセッサを組み合わせて処理回路10を構成しても構わない。この場合、各処理機能がプログラムとして構成されてもよいし、特定の機能が専用の独立したプログラム実行回路に実装されてもよい。
【0012】
上述の「プロセッサ」は、例えば、CPU(Central Processing Unit)やGPU(Graphical Processing Unit)などの汎用プロセッサ、あるいは、特定用途向け集積回路(Application Specific Integrated Circuit:ASIC)、プログラマブル論理デバイス(例えば、単純プログラマブル論理デバイス(Simple Programmable Logic Device:SPLD)、複合プログラマブル論理デバイス(Complex Programmable Logic Device:CPLD)、フィールドプログラマブルゲートアレイ(Field Programmable Gate Array:FPGA))などの回路を意味する。プロセッサは記憶回路20に保存されたプログラムを読み出し実行することで機能を実現する。なお、記憶回路20にプログラムを保存する代わりに、プロセッサの回路内にプログラムを直接組み込むよう構成しても構わない。この場合、プロセッサは回路内に組み込まれたプログラムを読み出し実行することで機能を実現する。
【0013】
記憶回路20は、処理回路10の各処理機能に伴うデータなどを必要に応じて記憶する。本実施形態の記憶回路20は、プログラムと、各種の処理に用いられるデータとを記憶する。例えば、記憶回路20は、RAM(Random Access Memory)、フラッシュメモリなどの半導体メモリ素子、ハードディスク、光ディスクなどである。また、記憶回路20は、物体検出装置1の外部の記憶装置で代替されてもよい。記憶回路20は、LAN(Local Area Network)やインターネットなどにより伝達されたプログラムをダウンロードして記憶または一時記憶した記憶媒体であってもよい。また、記憶媒体は1つに限らず、複数の媒体から構成されてもよい。
【0014】
通信部30は、有線または無線で接続された外部装置と情報の入出力を行うインタフェースである。通信部30は、ネットワークに接続して通信を行ってもよい。
【0015】
車載カメラ2は、例えば、自車両の前方の車幅の中心位置近くに取り付けられた小型で安価な単眼カメラである。車載カメラ2は、モノクロ画像を撮像するカメラであってもよいし、カラー画像を撮像するカメラであってもよい。また、車載カメラ2は、可視光カメラであっても、赤外光の情報を取得できるカメラであってもよい。また、車載カメラ2は、自車両の後方や側方を撮影できるように取り付けられていてもよい。
【0016】
ディスプレイ3は、例えば液晶表示器などの表示デバイスであり、各種の情報を表示する。本実施形態では、物体検出装置1が出力する物体情報を用いて描画された画像などをディスプレイ3に表示することができる。
【0017】
車両制御部4は、自車両のアクセル量、ブレーキ量、操舵角などの制御を行う。本実施形態では、物体検出装置1が出力する物体情報を用いて車両制御部4が自車両周辺の障害物の自車両に対する挙動(相対的な動き)を推定し、障害物を回避するような制御を行うことができる。
【0018】
次に、処理回路10が有する各処理機能について説明する。取得機能11は、車載カメラ2により撮影された撮影画像を取得する。取得機能11は、例えば、毎秒Nフレームの間隔で車載カメラ2から連続的に撮影画像を取得して、取得した撮影画像を検出機能12と推定処理機能13とに随時出力する。なお、本実施形態では車載用途を想定しているため、取得機能11は車載カメラ2から撮影画像を取得するが、取得機能11は、例えば監視用途であれば建物内や電柱などの定置カメラとして取り付けられた単眼カメラから撮影画像を取得するなど、用途に応じて最適な単眼カメラから撮影画像を取得する構成であればよい。また、頭部装着型装置などに取り付けられて装着者の前方や側方、後方などを撮影する単眼カメラから撮影画像を取得する構成であってもよい。
【0019】
検出機能12は、取得機能11から受け取った車載カメラ2の撮影画像から、検出の対象となる物体が映っている可能性がある領域(以下、「物体候補領域」と呼ぶ)を検出する。検出機能12は、1フレームの撮影画像から多数の物体候補領域を検出することが一般的であるが、1つの物体候補領域が検出されてもよい。検出の対象となる物体は、他車両、歩行者、二輪車、路側設置物のいずれかでもよいし、これらのうち複数の物体を同時に検出の対象としてもよい。以下では、検出の対象となる物体が他車両であることを想定して、検出機能12による処理の概要を説明する。
【0020】
検出機能12による物体候補領域の検出は、車載カメラ2の撮影画像上で、検出の対象となる物体の大きさに相当する走査矩形を用いて物体の有無を判断することを基本とする。ここで、検出の対象となる物体として想定する他車両(車両)は路面上にあり、かつ、その大きさも車種によって違いはあるものの標準的な大きさからの乖離は小さい。したがって、標準的な車両の大きさと車載カメラ2のパラメータから、撮影画像上の位置に応じた走査矩形の大きさを設定することができる。
【0021】
例えば、
図2に示すように、車載カメラ2に近い場所に対応する撮影画像100上の位置においては、車載カメラ2に近い場所に存在する他車両Vを想定した大きさの走査矩形101を用いる。また、車載カメラ2から離れた場所に対応する撮影画像100上の位置においては、車載カメラ2から離れた場所に存在する他車両Vを想定した大きさの走査矩形102を用いる。そして、走査矩形101,102内の画像領域に対し、例えばHOG(Histograms of Oriented Gradients)やCoHOG(Co-occurrence Histograms of Oriented Gradients)などの画像特徴量を算出し、予め学習した識別器を用いて、走査矩形101,102内に他車両Vがあるか否かを判別するか、他車両Vらしさを示す尤度を出力する。ここで、画像特徴量はここに挙げたものだけではなく、画像から算出される特徴であれば何でも構わない。
【0022】
また、上述のような走査矩形に対して画像特徴量を算出し、例えば予め学習したニューラルネットワークを用いて他車両であるか否かを示す尤度を出力してもよい。また、走査矩形内の画像を予め学習したニューラルネットワークに直接入力し、他車両であるか否かを示す尤度を出力してもよい。また、車載カメラ2の撮影画像の全体あるいは一部を予め学習したニューラルネットワークに入力して走査矩形に相当する位置の出力のみを取り出し、それらに対してさらにニューラルネットワークを用いた処理を行って他車両であるか否かを示す尤度を出力してもよい。このような構成のニューラルネットワークとしては、例えばSSD(Wei Liu et al.ECCV 2016)やYOLO(arXiv:1612.08242)などの既存のディープニューラルネットワークを用いることができる。
【0023】
また、他車両と歩行者など、複数の物体を検出の対象とする場合には、走査矩形の形状や大きさのバリエーションをそれぞれの物体に対応させて複数に増やしてよい。また、例えば他車両だけを検出の対象としている場合であっても、縦向きの他車両を検出するための走査矩形の形状と、横向きの他車両を検出するための走査矩形の形状など、バリエーションを複数に増やしてもよい。
【0024】
検出機能12は、例えば、走査矩形に対する尤度が予め設定された閾値以上の撮影画像上の領域を物体候補領域として検出し、その物体候補領域の撮影画像上の位置を示す情報や尤度などを含む候補領域情報を推定処理機能13に出力する。あるいは、検出機能12は、走査矩形に対する尤度が高い順に撮影画像上の領域を並び替え、予め決められた上位N個の領域を物体候補領域として検出して候補領域情報を出力してもよい。また、走査矩形に対する尤度が高い撮影画像上の領域について、一定の重なりを持つものをグルーピングし、その中から尤度の高い順にN個、あるいは一定の閾値以上の尤度を持つものを物体候補領域として候補領域情報を出力してもよい。これは例えばNMS(Non-Maximum Suppression)という手法を用いて実現できる。撮影画像上の領域をグルーピングする際に、車載カメラ2からの距離がほぼ同じとみなせる領域のみをグルーピングの対象としてもよい。
【0025】
推定処理機能13は、少なくとも検出機能12により検出された物体候補領域を含む画像(撮影画像の一部または全部)を用いて推定処理を行って、少なくとも物体候補領域内の物体の姿勢を表す情報を含む物体情報を出力する。推定処理機能13による推定処理は、物体候補領域内の物体に外接する直方体の路面に接する頂点のうち、撮影画像の視点位置から視認可能な少なくとも2つの頂点の撮影画像上の位置を推定する第1の処理と、これらの頂点が物体の右前、左前、右後、左後のいずれであるかを推定する第2の処理と、を含む。以下では、上述の検出機能12の説明と同様に、検出の対象となる物体が他車両であることを想定して、推定処理機能13による推定処理の概要を説明する。
【0026】
第1の処理では、
図3に示すように、物体候補領域内の物体(他車両V)に外接する直方体の路面と接する頂点のうち、撮影画像の視点位置(車載カメラ2の視点位置)から視認可能な2つ以上の頂点の撮影画像上の位置を推定する。以下では、これらの頂点を「端点」と呼び、特に、1つの物体に対応する端点のうち撮影画像上で最も左に視認されるものを「左端点」、最も右に視認されるものを「右端点」、左端点と右端点との間に視認されるものを「下端点」と呼ぶ。また、各端点の撮影画像上の位置(水平・垂直座標)を「端点位置」と呼ぶ。
図3(a)は、左端点L、下端点Bおよび右端点Rの端点位置がそれぞれ推定された例を示している。また、
図3(b)および
図3(c)は、下端点Bが存在せず、左端点Lおよび右端点Rの端点位置のみが推定された例を示している。
【0027】
第2の処理では、第1の処理で得られた端点が、物体候補領域内の物体(他車両V)の右前、左前、右後、左後のいずれであるかを推定する。第1の処理では、上述のように、左端点L、下端点Bおよび右端点Rの端点位置、あるいは、左端点Lおよび右端点Rの端点位置が推定される。したがって、第2の処理では、第1の処理で端点位置を推定した(左端点L、下端点B、右端点R)または(左端点L、右端点R)の組み合わせが、
図4の(1)〜(8)に示す8通りの組み合わせのいずれであるかを推定する。すなわち、第2の処理では、(左端点L、下端点B、右端点R)または(左端点L、右端点R)の組み合わせが、
図4の(1)に示す物体の(右前、左前、左後)に該当するか、
図4の(2)に示す物体の(右前、左前)に該当するか、
図4の(3)に示す物体の(右後、右前、左前)に該当するか、
図4の(4)に示す物体の(右後、右前)に該当するか、
図4の(5)に示す物体の(左後、右後、右前)に該当するか、
図4の(6)に示す物体の(左後、右後)に該当するか、
図4の(7)に示す物体の(左前、左後、右後)に該当するか、
図4の(8)に示す物体の(左前、左後)に該当するかを推定する。以下では、これら物体の右前、左前、右後、左後の組み合わせを「向きの種類」と呼ぶ。
図3(a)の例では、第2の処理によって、
図4の(1)に示す向きの種類が推定される。また、
図3(b)の例では、第2の処理によって、
図4の(8)に示す向きの種類が推定される。また、
図3(c)の例では、第2の処理によって、
図4の(2)に示す向きの種類が推定される。
【0028】
なお、第2の処理により推定する向きの種類は、
図4に示す8通りに限らない。例えば、撮影画像において物体の前面のみが写る領域や、物体の背面のみが写る領域、物体の側面のみが写る領域などが検出機能12により物体候補領域として検出されない構成であれば、第1の処理で下端点Bの端点位置が推定されるので、第2の処理においては、第1の処理で端点位置を推定した(左端点L、下端点B、右端点R)の組み合わせが、(右前、左前、左後)、(右後、右前、左前)、(左後、右後、右前)、(左前、左後、右後)の4通りの向きの種類のいずれであるかを推定すればよい。また、車載カメラ2の位置などによって、物体の見え方は異なるため、場合に応じてこれらの組み合わせの数や内容を変更してもよい。
【0029】
上述の第1の処理と第2の処理の少なくとも一方は、事前に学習されたニューラルネットワークを用いて実施することができる。例えば、端点位置を推定するように学習されたニューラルネットワークと、向きの種類を推定するように学習されたニューラルネットワークの一方または双方を用いてもよいし、端点位置と向きの種類を同時に推定するように学習されたニューラルネットワークを用いてもよい。なお、推定処理機能13の実現方法はニューラルネットワークに限らず、端点位置と向きの種類を推定できる処理であれば、どのような方法で実現しても構わない。以下では、端点位置と向きの種類を同時に推定するように学習されたニューラルネットワークを用いる例を想定して、推定処理機能13をさらに詳しく説明する。
【0030】
まず、推定処理に用いるニューラルネットワークの入力について説明する。ニューラルネットワークへの入力としては、取得機能11からある時刻に受け取った1フレームの撮影画像の全体を入力としてもよいし、撮影画像の一部を入力としてもよい。例えば、車載カメラ2が自車両の前方を撮影した撮影画像であれば、画像の上側の領域は他車両や歩行者が写っていないと仮定して、この上側の領域をトリミングしてニューラルネットワークに入力してもよい。また、検出機能12から受け取った候補領域情報に基づいて撮影画像上における物体候補領域の位置を特定し、その物体候補領域の画像のみをクリッピングしてニューラルネットワークに入力してもよい。
【0031】
また、例えば
図5に示すように、撮影画像100に含まれる物体候補領域111,112に対して、これら物体候補領域111,112よりもK倍大きな領域121,122をクリッピングしてニューラルネットワークに入力してもよい。このとき、領域121,122は一部が撮影画像100からはみ出してよい。その場合は、はみ出した領域を例えば黒に相当する画素値で埋めてもよいし、はみ出した領域を撮影画像100の端部の画素値で埋めてもよい。なお、はみ出した領域を埋める方法はここで示しただけでなく、別の方法でも構わない。
【0032】
また、ニューラルネットワークに入力する画像のデータは、R,G,Bのカラー画像でもよいし、色空間を変換した例えばY,U,Vのカラー画像でもよい。また、カラー画像をモノクロ化した1チャンネルの画像としてニューラルネットワークに入力しても構わない。また、画像そのままではなく、例えばR,G,Bのカラー画像であれば、各チャンネルの画素値の平均値を引いた画像、平均値を引いて分散で割った正規化画像などをニューラルネットワークに入力しても構わない。また、ある時刻の1フレームの撮影画像あるいはその一部をニューラルネットワークに入力してもよいし、ある時刻を基準に前後数時刻分の複数フレームの撮影画像、あるいは複数フレームの撮影画像それぞれの一部をニューラルネットワークに入力してもよい。
【0033】
次に、ニューラルネットワークによる推定処理について説明する。ニューラルネットワークは、入力された画像データに対して推定処理を行い、検出機能12によって撮影画像から検出された物体候補領域内に含まれる物体に対応する端点位置と向きの種類を推定するための特徴マップを得る。そして、得られた特徴マップを用いて物体候補領域内の物体に対応する端点位置と向きの種類を推定し、結果を出力する。
【0034】
検出機能12によって検出された物体候補領域の画像だけでなく、車載カメラ2の撮影画像の全体あるいは不要な部分をトリミングした画像がニューラルネットワークに入力される場合は、その画像に対応する特徴マップが得られる。この場合、推定処理機能13は、検出機能12から受け取った候補領域情報に基づいて、
図6に示すように、物体候補領域111に対応する特徴マップを切り出して端点位置と向きの種類の推定に用いる。特徴マップの切り出しは、例えば、ROI−Pooling(Fast R-CNN、Ross Girshick、ICCV2015)という手法を用いて実現できる。このとき、例えば
図7に示すように、物体候補領域111に対応する特徴マップだけでなく、物体候補領域111に対してK倍大きな領域121に対応する特徴マップを切り出し、双方あるいはいずれか一方の特徴マップを端点位置と向きの種類の推定に用いてもよい。
【0035】
一方、例えば
図8に示すように、車載カメラ2の撮影画像100から検出機能12によって検出された物体候補領域111の画像をクリッピングしてニューラルネットワークに入力する場合には、物体候補領域111に対応する特徴マップが得られる。したがって、この場合は、得られた特徴マップをそのまま端点位置と向きの種類の推定に用いればよい。また、例えば
図9に示すように、物体候補領域111よりもK倍大きな領域121の画像をクリッピングしてニューラルネットワークに入力した場合は、この領域121に対応する特徴マップが得られる。この場合は、この領域121に対応する特徴マップをそのまま端点位置と向きの種類の推定に用いてもよいし、例えば
図10に示すように、領域121に対応する特徴マップから物体候補領域111に対応する特徴マップを切り出して、領域121に対応する特徴マップと物体候補領域111に対応する特徴マップの双方あるいはいずれか一方を端点位置と向きの種類の推定に用いてもよい。
【0036】
次に、ニューラルネットワークの出力について説明する。ニューラルネットワークの出力は、例えば、物体候補領域内に含まれる物体に対応する端点位置(左端点、右端点、下端点の撮影画像上の水平および垂直座標)と、向きの種類それぞれに対する尤度である。尤度の最も高い向きの種類のみを端点位置とともに出力してもよい。また、向きの種類の尤度の最も高い値を、向きの種類の推定の信頼度としてさらに出力してもよい。
【0037】
また、ニューラルネットワークの出力として、さらに、検出機能12によって検出された物体候補領域を、その物体候補領域内に含まれる物体に正確に外接する別の矩形により囲まれた、より正確な物体候補領域に修正する値をさらに出力してもよい。また、推定処理機能13が用いるニューラルネットワークは、さらに、物体候補領域内に物体が含まれる確からしさを示す尤度をさらに出力してもよい。また、撮影画像上で物体に外接する矩形の上端の垂直座標をさらに出力してもよい。この場合、撮影画像における左端点L、右端点R、下端点Bの水平・垂直座標と、上端の垂直座標とから、最も左の水平座標、最も上の垂直座標、最も右の水平座標、最も下の垂直座標を特定して、撮影画像上で物体に正確に外接する矩形を推定することができる。
【0038】
推定処理機能13が用いるニューラルネットワークとしては、以上説明した入力のバリエーションや出力のバリエーションに応じて、入力された画像および物体候補領域に対して予め与えられた正解データとニューラルネットワークの出力とから計算される損失を小さくするように学習されたものを用いる。ここで、正解データとは、例えば、物体候補領域内に含まれる物体のラベルと、その物体に正しく外接する矩形を示す情報、物体の左端点L、右端点R、下端点Bの水平・垂直座標を示す情報、向きの種類を示す情報を含むデータである。この際、
図3(b)や
図3(c)に示したように、向きによって見えない下端点Bは正解として設定しなくてもよい。一方、端点が別の物体で隠れている場合や、画像の範囲外にある場合でも、正しく教示されているデータであれば、正解として設定してもよい。別の物体で隠れている端点や画像の範囲外にある端点の水平・垂直座標を正解として設定した正解データを用いて学習されたニューラルネットワークを用いて上述の第1の処理を行う場合、別の物体で隠れている端点や撮影画像の範囲外にある端点についても、端点位置を推定することが可能となる。また、物体候補領域外に端点が存在する場合でも、正しく教示されているデータであれば、正解として設定しても構わない。物体候補領域外に存在する端点の水平・垂直座標を正解として設定した正解データを用いて学習されたニューラルネットワークを用いて上述の第1の処理を行う場合、物体候補領域外に存在する端点についても、端点位置を推定することが可能となる。
【0039】
また、左端点、右端点、下端点の水平・垂直座標を示す情報として、物体に外接する直方体が画像上で正しく特定できない場合には、
図11に示すように、物体の前面あるいは背面に正しく外接する矩形Sと、前面あるいは背面とは反対側に位置し、かつ視認可能な物体に外接する直方体の頂点Cを教示しておき、矩形の下辺の両端および頂点Cの水平・垂直座標を、画像の左から順にそれぞれ左端点L、下端点B、右端点Rの水平・垂直座標の正解データとしてもよい。このような正解データを用いて学習されたニューラルネットワークを用いて上述の第1の処理を行う場合、撮影画像上で物体候補領域内の物体に外接する直方体が正しく特定できない場合であっても、左端点L、下端点B、右端点Rそれぞれの端点位置を推定することが可能となる。
【0040】
物体のラベルは、ニューラルネットワークが他車両のみを検出の対象とし、他車両に対応する端点位置と向きの種類とを推定することを目的としているのであれば、例えば、物体候補領域と最も重なり率の高い他車両の外接矩形と、物体候補領域を示す矩形の重なり率が一定の閾値以上である場合には1、そうでない場合には0などとして与えることができる。
【0041】
本実施形態の推定処理機能13は、以上のように、端点位置と向きの種類を推定するように予め学習されたニューラルネットワークを用いることで、物体がどのような姿勢であっても、その物体に対応する端点位置と向きの種類を正しく推定することができる。なお、物体のラベルや向きの種類に対する損失は、例えば交差エントロピー誤差、外接矩形や端点位置については、二乗誤差やSmooth L1誤差などで定義することができる。物体ラベル、外接矩形、端点位置、向きの種類などのそれぞれの損失を足し合わせることにより、ニューラルネットワーク全体の損失を計算することができ、誤差伝搬法などによりニューラルネットワークの重みを共有しながら、それぞれの損失を最小化するように学習することが可能となる。
【0042】
また、画像の入力から特徴マップを得るまでの処理と、特徴マップから端点位置と向きの種類を推定して出力するまでの処理とを異なるニューラルネットワークとしてそれぞれ予め学習しておいてもよいし、画像の入力から端点の位置と向きの種類の出力までを1つのニューラルネットワークとして予め学習しておいてもよい。また、検出機能12での物体候補領域の検出にニューラルネットワークを用いる場合、検出機能12で用いるニューラルネットワークと推定処理機能13で用いるニューラルネットワークとを1つのネットワークとして予め学習しておいてもよい。
【0043】
また、複数種類の物体(例えば他車両と歩行者など)を同時に検出の対象とする場合は、検出の対象となる物体ごとに異なるニューラルネットワークを予め学習して用いてもよいし、同じニューラルネットワークを予め学習して用いてもよい。また、検出の対象となる物体が他車両であっても、乗用車とトラック、バスなどの車種ごとに異なるニューラルネットワークを予め学習して端点位置や向きの種類の推定に用い、例えばもっとも尤度が高い結果を出力としてもよい。
【0044】
また、1フレームの撮影画像から多数の物体候補領域が検出された場合、ニューラルネットワークが上述のように物体候補領域を修正する値や物体らしさを示す尤度をさらに出力する構成であれば、例えばニューラルネットワークが出力した物体らしさを示す尤度と修正後の物体候補領域の情報をもとに、一定の重なりを持つ物体候補領域をグルーピングし、その中から尤度の高い順にN個、あるいは一定の閾値以上の尤度を持つ物体候補領域に対する推定結果のみを出力してもよい。これは例えば上述のNMSという手法を用いて実現できる。
【0045】
ニューラルネットワークが出力する端点位置と向きの種類の情報は、撮影画像から検出された物体の姿勢を表す情報である。推定処理機能13は、ニューラルネットワークが出力する端点位置と向きの種類の情報をそのまま物体情報として出力してもよいし、ニューラルネットワークの出力を加工して物体情報として出力してもよい。例えば、端点位置と向きの種類の情報から、
図11に示したような、他車両Vの前面あるいは背面に外接する矩形Sを特定する座標(例えば、矩形Sの左上と右下の座標)と、矩形とは反対側の頂点Cの座標と、矩形が他車両の前面であるか背面であるかを示す情報(例えば、前面が0で背面が1など)を出力してもよい。
【0046】
また、推定処理機能13は、ニューラルネットワークが出力する端点位置と向きの種類の情報を用いて物体の3次元位置と向きを計算し、物体の3次元位置と向きを含む物体情報を出力してもよい。例えば、自車両の進行方向を撮影するように取り付けられた車載カメラ2の撮影画像から他車両を検出する場合、推定処理機能13は、ニューラルネットワークが出力する端点位置と向きの種類の情報を用いて他車両が自車両に対してどの位置にいるかを計算し、他車両の3次元位置と自車両に対する向きを物体情報として出力してもよい。これは、例えば、推定処理機能13のニューラルネットワークの出力から、撮影画像中の他車両を囲む外接矩形の左上の座標(x1,y1)と右下の座標(x2,y2)、端点位置と向きの種類が得られる場合に、これらの値と、別途求められた路面平面のパラメータ、車載カメラ2のパラメータ行列を用いると、他車両が路面平面に接地している条件で、公知の手法を用いて他車両の3次元位置と上面から見た時の他車両の向きを求めることが可能である。
【0047】
推定処理機能13が出力する物体情報は、例えば、本実施形態の物体検出装置1に接続された車両制御部4が自車両の車両制御を行うために利用することができる。車両制御部4は、例えば、衝突回避システムや自動ブレーキシステム、車間自動制御システム、自動運転制御システムなどを含む。例えば、衝突回避システムは、車載カメラ2の撮影画像のフレームごとに出力される物体情報を用いて、自車両に対する他車両の動きを表す軌跡を推定し、m秒後に衝突する確率を計算することが可能である。また、その結果に基づいて、自動ブレーキシステムを作動させるか否かの判定に用いることもできる。また、車間自動制御システムは、車載カメラ2の撮影画像のフレームごとに出力される物体情報を用いて、障害物を避けて現在走行中の車線を保ち、かつ前方を走行する他車両との車間距離を所定距離以上保つように自車両の制御を行うことができる。また、自動運転制御システムは、車載カメラ2の撮影画像のフレームごとに出力される物体情報を用いて、障害物を回避した走行経路を計算し、その走行経路に従って自律走行するように自車両の制御を行うことができる。
【0048】
また、推定処理機能13が出力する物体情報は、例えば、本実施形態の物体検出装置1に接続されたディスプレイ3に障害物の情報を画像として表示するために利用することができる。例えば
図12に示すように、推定処理機能13が出力する物体情報に基づいて自車両V0に対する他車両V1,V2,V3の位置と姿勢を示す画像200を描画してディスプレイ3に表示することができる。
図12に示す画像例では、自車両V0の位置を基準として、他車両V1,V2,V3を示す矩形の描画位置によりこれら他車両V1,V2,V3までの距離が示され、矩形の描画角度によりこれら他車両V1,V2,V3の姿勢が示されている。なお、矩形の太線部分が他車両V1,V2,V3の前方(進行方向)を表している。
【0049】
図13は、以上説明した本実施形態の物体検出装置1(処理回路10)の動作例を示すフローチャートである。なお、
図13の各ステップの具体的な内容は上述した通りであるので、詳細な説明は適宜省略する。
【0050】
まず、処理回路10の取得機能11が、車載カメラ2(単眼カメラ)により撮影された撮影画像を取得する(ステップS101)。次に、処理回路10の検出機能12が、ステップS101で取得された撮影画像から、少なくとも1つの物体候補領域を検出する(ステップS102)。次に、処理回路10の推定処理機能13が、ステップS101で取得された撮影画像と、ステップS102で検出された物体候補領域を示す候補領域情報とに基づいて、物体候補領域内の物体に対応する端点位置と向きの種類を推定する(ステップS103)。このとき、推定処理機能13は、例えば、予め学習されたニューラルネットワークを用いて物体候補領域内の物体に対応する端点位置と向きの種類を推定する。そして、推定処理機能13は、少なくとも物体の姿勢を表す情報を含む物体情報を出力する(ステップS104)。
【0051】
以上説明したように、本実施形態の物体検出装置1は、車載カメラ2(単眼カメラ)により撮影された撮影画像から物体候補領域を検出し、例えば予め学習されたニューラルネットワークを用いて、物体候補領域内の物体に対応する端点位置と向きの種類を推定する。したがって、本実施形態の物体検出装置1によれば、車載カメラ2(単眼カメラ)で撮影した画像を用いて物体の姿勢を精度良く推定することができる。
【0052】
例えば、検出の対象となる物体を他車両とした場合、本実施形態の物体検出装置1によれば、車載カメラ2の撮影画像に写る他車両の端点位置と向きの種類を推定した結果を用いて、走行車線前方の他車両の自車両に対する位置や向きを正確に推定することができ、衝突回避や自動ブレーキ、経路生成などに利用することができる。
【0053】
なお、本実施形態の物体検出装置1の上述の処理機能は、上述したように、例えばコンピュータを用いて構成される物体検出装置1がプログラムを実行することにより実現される。この場合、本実施形態の物体検出装置1で実行されるプログラムを、インターネットなどのネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するようにしてもよい。また、本実施形態の物体検出装置1で実行されるプログラムを、インターネットなどのネットワーク経由で提供または配布するようにしてもよい。さらに、本実施形態の物体検出装置1で実行されるプログラムを、ROMなどの不揮発性の記録媒体に予め組み込んで提供するようにしてもよい。
【0054】
以上、本発明の実施形態を説明したが、上述の実施形態は例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら新規な実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。