【解決手段】物体検出装置1において、検出窓設定部12は、グレースケール画像22に対して検出窓23を設定する。尤度算出部13は、前又は後ろを向いた歩行者が検出窓23内に存在するであろう前後尤度Lfbを検出窓23から算出する。尤度算出部13は、右又は左を向いた歩行者が検出窓23内に存在するであろう側面尤度Lsを検出窓23から算出する。尤度算出部13は、斜めを向いた歩行者が検出窓23内に存在するであろう斜め尤度Ldを検出窓23から算出する。判断部14は、尤度算出部13により算出された前後尤度Lfbと側面尤度Lsと斜め尤度Ldとに基づいて、検出窓23内に歩行者が存在するか否かを判断する。
【発明を実施するための形態】
【0024】
以下、図面を参照し、本発明の実施の形態を詳しく説明する。図中同一又は相当部分には同一符号を付してその説明は繰り返さない。
【0025】
[第1の実施の形態]
{1.物体検出装置1の構成}
図1は、本発明の第1の実施の形態に係る物体検出装置1の構成を示す機能ブロック図である。物体検出装置1は、カメラ100が撮影したカラーの撮影画像21から、検出対象を検出する。物体検出装置1は、カメラ100とともに自動車などの車両に搭載される。本実施の形態では、検出対象は、歩行者である。ただし、検出対象は歩行者に限られるものではなく、他の物体(自動車、道路標識など)を検出対象としてもよい。
【0026】
カメラ100は、自動車のダッシュボード上に設置され、前方の景色を撮影して画像データ20を生成する。画像データ20は、複数のフレームにより構成される動画像であり、フレーム単位で物体検出装置1に入力される。1つのフレームが1つの撮影画像21に相当する。物体検出装置1は、撮影画像21内に歩行者が存在するか否かを判定する。
【0027】
図1に示すように、物体検出装置1は、画像変換部11と、検出窓設定部12と、尤度算出部13と、判断部14と、学習部15と、記憶部16とを備える。画像変換部11は、カラーの撮影画像21をグレースケール画像22に変換する。
【0028】
検出窓設定部12は、グレースケール画像22に対して検出窓を設定し、設定した検出窓をグレースケール画像22から切り出す。検出窓は、撮影画像21から歩行者を検出するための単位領域である。
【0029】
尤度算出部13は、検出窓に歩行者が存在するであろう尤度を算出する。尤度算出部13は、前後尤度算出部13aと、側面尤度算出部13bと、斜め尤度算出部13cとを備える。
【0030】
前後尤度算出部13aは、ニューラルネットワークを用いて、前後尤度Lfbを算出する。前後尤度Lfbは、前又は後ろ向きの歩行者が検出窓内に存在するであろう度合いを示す数値である。前向き、後ろ向きの定義については、後述する。前後尤度Lfbは、0以上1以下の数値であり、前又は後ろを向く歩行者が検出窓内に存在する可能性が高いほど、1に近い値を有する。
【0031】
側面尤度算出部13bは、ニューラルネットワークを用いて、側面尤度Lsを算出する。側面尤度Lsは、右又は左向きの歩行者が検出窓内に存在するであろう度合いを示す数値である。右向き、左向きの定義については、後述する。側面尤度Lsは、0以上1以下の数値であり、左又は右を向く歩行者が存在する可能性が高いほど、1に近い値を有する。
【0032】
斜め尤度算出部13cは、ニューラルネットワークを用いて、斜め尤度Ldを算出する。斜め尤度Ldは、斜めを向いている歩行者が検出窓内に存在するであろう度合いを示す数値である。「斜め」とは、前、後ろ、右及び左のいずれでもない方向である。斜め尤度Ldは、0以上1以下の数値であり、斜めを向く歩行者が存在する可能性が高いほど、1に近い値を有する。
【0033】
判断部14は、前後尤度Lfb、側面尤度Ls及び斜め尤度Ldを用いて、歩行者が検出窓内に存在するか否かを判断する。判断部14は、歩行者が検出窓内に存在するか否かを示す結果データ25を生成する。
【0034】
物体検出装置1は、判断部14により生成された結果データ25を出力する。後述するように、1つの撮影画像21において、複数の検出窓が設定される。物体検出装置1の後段に接続される後処理部(図示省略)は、例えば、各検出窓に対応する結果データ25を用いて歩行者が検出された検出窓の分布図を作成し、分布図に基づいて撮影画像21内に存在する歩行者の位置を特定する。
【0035】
学習部15は、前後学習部15aと、側面学習部15bと、斜め学習部15cとを含む。前後学習部15aと、側面学習部15bと、斜め学習部15cとは、ニューラルネットワークを用いて、歩行者のパターンを学習する
【0036】
前後学習部15aは、学習グループ31に含まれる学習画像を用いて、前又は後ろを向いた歩行者のパターンを学習する。前後学習部15aは、学習の結果を反映させた特徴データ35aを生成する。特徴データ35aは、前後尤度Lfbの算出に用いられる。
【0037】
側面学習部15bは、学習グループ32に含まれる学習画像を用いて、右又は左を向いた歩行者のパターンを学習する。側面学習部15bは、学習の結果を反映させた特徴データ35bを生成する。特徴データ35bは、側面尤度Lsの算出に用いられる。
【0038】
斜め学習部15cは、学習グループ33に含まれる学習画像を用いて、斜めを向いた歩行者のパターンを学習する。斜め学習部15cは、学習の結果を反映させた特徴データ35cを生成する。特徴データ35cは、斜め尤度Ldの算出に用いられる。
【0039】
記憶部16は、例えば、ハードディスク装置やフラッシュメモリなどである。記憶部16は、特徴データ35a〜35cを格納する。特徴データ35a〜35cについては、後述する。
【0040】
{2.向きの定義}
図2は、画像変換部11により生成されるグレースケール画像22の一例を示す図である。
図2に示すように、グレースケール画像22は、左上頂点を原点とし、横方向をx軸、縦方向をy軸とした座標系を有する。グレースケール画像22上に配置された検出窓23,23,・・・については、後述する。
【0041】
前向き及び後ろ向きの定義について説明する。前向きは、
図2に示すグレースケール画像22の撮影方向と反対方向を指す。前向きの歩行者は、正面を向いて立つ人物である。後ろ向きは、
図2に示すグレースケール画像22の撮影方向を指す。後ろ向きの歩行者は、撮影画像21において、背中を向けて立つ人物である。
【0042】
右向き及び左向きの定義について説明する。右向きは、撮影画像21において、+x方向である。右向きの歩行者は、
図2に示すグレースケール画像22において、左から右へ進む人物である。左向きは、撮影画像21において、−x方向である。左向きの歩行者は、
図2に示すグレースケール画像22において、右から左へ進む人物である。
【0043】
斜め向きは、上述のように、前、後ろ、右、左のいずれでもない方向であり、右斜め前向き、左斜め前向き、右斜め後ろ向き、左斜め後ろ向きを含む。
【0044】
以下、物体検出装置1の動作を、歩行者の学習と、歩行者の検出処理とに分けて説明する。
【0045】
{3.歩行者の学習}
物体検出装置1は、撮影画像21から歩行者を検出する処理を開始する前に、検出対象となる歩行者を含む画像を歩行者の向きごとに学習する。
【0046】
具体的には、前又は後ろを向いた歩行者の学習と、右又は左を向いた歩行者の学習と、斜めを向いた歩行者の学習とが、物体検出装置1において個別に実行される。なお、学習用の画像は、グレースケールであり、学習用の画像のサイズは、検出窓のサイズと同じである。
【0047】
図3は、前後学習部15aにより学習される画像の一例を示す図である。
図3に示すように、学習グループ31は、学習画像31a〜31fを含む。
【0048】
学習画像31a〜31c,31eは、前を向いた歩行者を含み、学習画像31dは、後ろを向いた歩行者を含む。学習画像31fに含まれる歩行者は、前又は後ろ向きに近い斜めを向いている。前又は後ろ向きに近い斜めの向きとは、例えば、前後方向を基準にして±30度の範囲内にある方向である。前後学習部15aが学習画像31a〜31fを学習することにより、特徴データ35aが生成される。
【0049】
このように、前後学習部15aは、前又は後ろを向いた歩行者を含む画像の他に、前又は後ろの向きに近い斜めを向く歩行者を含む画像を学習する。特徴データ35aには、前又は後ろを向いた歩行者のパターンだけでなく、前又は後ろ向きに近い斜めを向く歩行者のパターンが反映される。前後尤度算出部13aは、前後尤度Lfbを算出する際に、特徴データ35aを参照する。このため、前後尤度算出部13aは、斜めを向く歩行者を含む検出窓が入力された場合、0に近い値ではなく、中間的な範囲(0.5〜0.7)内の値を有する前後尤度Lfbを算出する。
【0050】
図4は、側面学習部15bにより学習される画像の一例を示す図である。
図4に示すように、学習グループ32は、学習画像32a〜32eを含む。
【0051】
学習画像32a,32bは、左を向いた歩行者を含み、学習画像32cは、右を向いた歩行者を含む。学習画像32d、32eに含まれる歩行者は、右又は左向きに近い斜めを向いている。右又は左向きに近い斜めの方向とは、例えば、左右方向を基準にして±30度の範囲内にある方向である。側面学習部15bが、学習画像32a〜32eを学習することにより、特徴データ35bが生成される。
【0052】
このように、側面学習部15bは、右又は左を向いた歩行者を含む画像の他に、右又は左向きに近い斜めを向く歩行者を含む画像を学習する。特徴データ35bには、右又は左を向いた歩行者のパターンだけでなく、右又は左向きに近い斜めを向く歩行者のパターンが反映される。側面尤度算出部13bは、側面尤度Lsを算出する際に、特徴データ35bを参照する。このため、側面尤度算出部13bは、斜めを向く歩行者を含む検出窓が入力された場合、0に近い値ではなく、中間的な範囲内の値を有する側面尤度Lsを算出する。
【0053】
図5は、斜め学習部15cにより学習される画像の一例を示す図である。
図5に示すように、学習グループ33は、学習画像33a〜33c,31f,32eを含む。学習画像33a〜33cに含まれる歩行者はいずれも、斜めを向いており、前、後ろ、右、及び左のいずれの方向を向いていない。斜め学習部15cは、学習グループ33に含まれる学習画像33a〜33c,31f,31eをそれぞれ学習することにより、斜めを向いた歩行者の特徴を示す特徴データ35cを生成する。
【0054】
図3〜
図5に示すように、学習画像31fは、学習グループ31,33にそれぞれ含まれる。学習画像32eは、学習グループ32,33にそれぞれ含まれる。つまり、前後学習部15aにより学習される一部の画像は、斜め学習部15cにより学習される一部の画像に一致する。側面学習部15bにより学習される一部の画像は、斜め学習部15cにより学習される一部の画像に一致する。
【0055】
ただし、前後学習部15aにより学習される画像は、側面学習部15bにより学習される画像と一致しない。つまり、学習グループ31に属する学習画像に含まれる歩行者の向きの範囲が、学習グループ33に属する学習画像に含まれる歩行者の向きの範囲と重複しない。
【0056】
これにより、歩行者を含む検出窓から算出される前後尤度Lfb及び側面尤度Lsが、ともに1に近い値を有しないようにしている。この理由については、後述する。
【0057】
{4.歩行者の検出処理}
図6は、物体検出装置1の動作を示すフローチャートである。物体検出装置1が
図6に示す処理を開始する前に、尤度算出部13は、特徴データ35a〜35cを生成して記憶部16に格納する。物体検出装置1は、カメラ100から撮影画像21が入力されるたびに、
図6に示す処理を実行して、入力された撮影画像21から歩行者を検出する。
【0058】
{4.1.動作概略}
物体検出装置1がカメラ100から撮影画像21を入力した場合、画像変換部11が、撮影画像21を変換してグレースケール画像22を生成する(ステップS1)。
【0059】
検出窓設定部12は、画像変換部11により生成されたグレースケール画像22を入力する。検出窓設定部12は、入力されたグレースケール画像22に対して、歩行者を検出するための検出窓23(
図2参照)を設定する(ステップS2)。つまり、ステップS2が実行されるたびに、検出窓23が1つ設定される。検出窓設定部12は、設定された検出窓23をグレースケール画像22から切り出す。切り出された検出窓23が、尤度算出部13へ供給される。
【0060】
図6に示すように、ステップS2〜S5が繰り返されることにより、グレースケール画像22に対して複数の検出窓23が設定される。グレースケール画像22(
図2参照)の左上頂点に位置する検出窓23が、最初に設定される。検出窓設定部12は、撮影画像21を左上から右下にかけてスキャンするように検出窓を設定する。新たに検出窓が設定される場合、検出窓設定部12は、既に設定された検出窓の一部と重複するように新しい検出窓を設定することが望ましい。
【0061】
尤度算出部13において、検出窓設定部12から供給される検出窓23に対応する前後尤度Lfb、側面尤度Ls、及び斜め尤度Ldが算出される(ステップS3)。具体的には、前後尤度算出部13aが、特徴データ35aを用いて、検出窓23から前後尤度Lfbを算出する。側面尤度算出部13bが、特徴データ35bを用いて、検出窓23から側面尤度Lsを算出する。斜め尤度算出部13cが、特徴データ35cを用いて、検出窓23から斜め尤度Ldを算出する。
【0062】
判断部14は、尤度算出部13から出力される前後尤度Lfb、側面尤度Ls及び斜め尤度Ldに基づいて、検出窓23に歩行者が存在するか否かを判定する(ステップS4)。判断部14は、検出窓23における歩行者の有無を示す結果データ25を出力する。判定処理(ステップS4)の詳細については、後述する。
【0063】
次に、物体検出装置は、グレースケール画像22に対する検出窓23の設定が終了したか否かを確認する(ステップS5)。検出窓23の設定が終了していない場合(ステップS5においてNo)、物体検出装置1は、新たな検出窓23を設定するために、ステップS2に戻る。一方、検出窓23の設定が終了した場合(ステップS5においてYes)、物体検出装置1は、
図6に示す処理を終了する。物体検出装置1は、新たな撮影画像21が入力された場合、
図6に示す処理を再び実行する。
【0064】
{4.2.前後尤度Lfb、側面尤度Ls、斜め尤度Ldの関係}
図7は、様々な検出窓から算出される前後尤度Lfb、側面尤度Ls、斜め尤度Ldの一例を示す図である。
図7を参照しながら、各検出窓から算出される前後尤度Lfb、側面尤度Ls、斜め尤度Ldの関係について説明する。なお、
図7において、検出窓23a〜23dは、
図2に示す撮影画像21と別の撮影画像21から切り出された画像である。
【0065】
以下の説明において、「検出窓23」を、検出窓23a〜23dを含む複数の検出窓の総称として使用する。
【0066】
検出窓23aは、前を向く歩行者を含む。このため、検出窓23aから算出される前後尤度Lfbは、0.95であり、1に近い値(0.7以上)を有する。特徴データ35cには、斜め学習部15cが前又は後ろ向きに近い斜めを向く歩行者の画像を学習した結果が反映されている。このため、検出窓23aの斜め尤度Ldは、0.69であり、中間的な範囲(0.5〜0.7)内の値を有する。側面学習部15bにより生成される特徴データ35bには、前又は後ろを向く歩行者の画像、前又は後ろ向きに近い斜めを向く歩行者の画像を学習した結果が反映されていない。このため、検出窓23aの側面尤度Lsは、0.12であり、0に近い値(0.5以下)を有する。
【0067】
検出窓23bは、右を向く歩行者を含む。このため、検出窓23bの側面尤度Lsは、0.88であり、1に近い値を有する。特徴データ35cには、斜め学習部15cが右又は左向きに近い斜めを向く歩行者の画像を学習した結果が反映されている。このため、検出窓23bの斜め尤度Ldは、0.62であり、中間的な範囲内の値を有する。前後学習部15aにより生成される特徴データ35aには、右又は左を向く歩行者の画像、及び右又は左向きに近い斜めを向く歩行者の画像を学習した結果が反映されていない。このため、検出窓23bの前後尤度Lfbは、0.21であり、0に近い値を有する。
【0068】
検出窓23cは、右斜め前を向く歩行者を含む。このため、検出窓23cの斜め尤度Ldは、0.82であり、1に近い値を有する。特徴データ35aには、前後学習部15aが前又は後ろ向きに近い斜めを向く歩行者の画像を学習した結果が反映されている。特徴データ35bには、側面学習部15bが右又は左向きに近い斜めを向く歩行者の画像を学習した結果が反映されている。従って、検出窓23cの前後尤度Lfb及び側面尤度Lsは、それぞれ中間的な範囲内の値(0.59、0.51)を有する。
【0069】
検出窓23dは、歩行者を含まない。従って、検出窓23dの前後尤度Lfb、側面尤度Ls、斜め尤度Ldは、いずれも0に近い値(0.13、0.27、0.09)を有する。
【0070】
このように、検出窓が歩行者を含む場合、歩行者が前、後ろ、右、左、斜めのいずれかの方向を向いていたとしても、前後尤度Lfb、側面尤度Ls、斜め尤度Ldのうち、少なくとも2つの尤度が、中間的な値よりも大きい値(0.5以上)となる。また、1つの検出窓23から算出される前後尤度Lfb及び斜め尤度Ldが、ともに1に近い値(0.7以上)を有することはない。判断部14は、これらの関係を踏まえて、3つの尤度に基づいて、検出窓23に歩行者が存在するか否かを判断する。
【0071】
{4.3.判定処理(ステップS4)}
図8は、判定処理(ステップS4)のフローチャートである。
図8に示すように、判断部14は、尤度算出部13により算出された3つの尤度の積算値を用いて、検出窓23に歩行者がいるか否かを判定する初期判定処理を実行する(ステップS41)。
【0072】
初期判定処理(ステップS41)により、検出窓23に歩行者が存在しないと判定された場合(ステップS42においてNo)、判断部14は、検出窓23に歩行者が存在しないことを示す結果データ25を生成し、
図8に示す処理を終了する。
【0073】
一方、検出窓23に歩行者が存在する可能性があると判定された場合(ステップS42においてYes)、判断部14は、差分比較処理(ステップS43)を実行する。差分比較処理(ステップS43)により、歩行者が検出窓23に存在するか否かが最終的に判断される。
【0074】
以下、初期判定処理(ステップS41)及び差分比較処理(ステップS43)のそれぞれについて詳しく説明する。
【0075】
{4.4.初期判定処理(ステップS41)}
図9は、初期判定処理(ステップS41)のフローチャートである。
図7及び
図9を参照しながら、初期判定処理(ステップS41)を詳しく説明する。
【0076】
判断部14は、尤度算出部13により算出された3つの尤度を積算して、積算値Saを算出する(ステップS51)。判断部14は、積算値Saを予め設定されたしきい値Th1と比較する(ステップS52)。積算値Saがしきい値Th1以上である場合(ステップS52においてYes)、判断部14は、検出窓23に歩行者が存在する可能性があると判断する(ステップS53)。
【0077】
上述のように、検出窓23が歩行者を含む場合、前後尤度Lfb、側面尤度Ls、斜め尤度Ldのうち少なくとも2つの尤度が、0.5以上の値を有する。従って、しきい値Th1を1.0に設定し、しきい値Th1を積算値Saと比較することにより、検出窓23に歩行者が存在するか否かを判定することができる。なお、しきい値Thは、1.0以外であってもよい。
【0078】
具体例として、検出窓23aを対象として初期判定処理(ステップS41)を実行する場合を説明する。検出窓23aの3つの尤度を積算した積算値Saは、1.76であり、検出窓23aの積算値Saは、しきい値Th1よりも大きい(ステップS52においてYes)、この場合、判断部14は、検出窓23aに歩行者が存在する可能性があると判断する(ステップS53)。
【0079】
同様に、検出窓23b,23cは歩行者を含む。判断部14は、検出窓23b,23cを対象として初期判定処理(ステップS41)を実行する場合においても、検出窓23b,23cに歩行者が存在する可能性があると判断する。
【0080】
一方、検出窓23dは、歩行者を含まない。検出窓23dにおける3つの尤度の積算値Saは、0.49であり、しきい値Th1よりも小さい(ステップS52においてNo)。判断部14は、検出窓23dに歩行者が存在しないと判断する(ステップS54)。この場合、検出窓23dを対象とした差分比較処理(ステップS43)は、実行されない。
【0081】
{4.5.差分比較処理(ステップS43)}
図10は、差分比較処理(ステップS43)のフローチャートである。
図7及び
図10を参照しながら、差分比較処理(ステップS43)を説明する。以下、検出窓23a〜23dのそれぞれに対して差分比較処理(ステップS43)を実行するときの判断部14の動作を説明する。
【0082】
(検出窓23aの3つの尤度を用いる場合)
判断部14は、検出窓23aの3つの尤度のうち、最大尤度として前後尤度Lfbを特定する(ステップS601)。ステップS601は、差分値を計算するための基準となる尤度を特定するために実行される。
【0083】
判断部14は、最大尤度が前後尤度Lfbである場合(ステップS602においてYes)、ステップS603〜S606を実行して、検出窓23aに歩行者が存在するか否かを判断する。
【0084】
具体的には、判断部14は、検出窓23aの前後尤度Lfbから斜め尤度Ldを減算して差分値D1を算出する。
図7に示す検出窓23aの前後尤度Lfb及び斜め尤度Ldから、差分値D1は、0.26となる。しきい値Th3は、例えば、0.3に設定される。差分値D1がしきい値Th3以下であるため(ステップS603においてYes)、判断部14は、ステップS604に進む。一方、差分値D1がしきい値Th3よりも大きい場合(ステップS603においてNo)、判断部14は、検出窓23aに歩行者が存在しないと判断する(ステップS606)。
【0085】
ステップS603を実行する理由について説明する。検出窓23が前又は後ろを向く歩行者を含む場合、上述のように、前後尤度Lfbは、1に近い値となり、斜め尤度Ldは、中間的な範囲(0.5〜0.7)内の値となる。従って、検出窓23が前又は後ろを向く歩行者を含む場合、前後尤度Lfb及び斜め尤度Ldから得られる差分値D1は、0に近い値(0.3以下の範囲内の値)となると考えられる。判断部14は、差分値D1がこの範囲内にあるか否かを判断するために、差分値D1をしきい値Th3と比較する。
【0086】
ステップS604において、判断部14は、前後尤度Lfbから側面尤度Lsを減算して差分値D2を算出する。
図7に示す検出窓23aの前後尤度Lfb及び斜め尤度Ldから、差分値D2は、0.83となる。しきい値Th4は、例えば、0.5に設定される。差分値D2がしきい値Th4以上であるため(ステップS604においてYes)、判断部14は、検出窓23aに歩行者が存在すると判断する(ステップS605)。一方、差分値D2がしきい値Th4よりも小さい場合(ステップS604においてNo)、判断部14は、検出窓23aに歩行者が存在しないと判断する(ステップS606)。
【0087】
ステップS604を実行する理由について説明する。検出窓が前又は後ろを向く歩行者を含む場合、上述のように、前後尤度Lfbは、1に近い値となり、側面尤度Lsは、0に近い値となる。従って、検出窓が前又は後ろを向く歩行者を含む場合、差分値D2は、一定の値(例えば、0.5)以上となると考えられる。この考えに基づいて、判断部14は、差分値D2をしきい値Th4と比較する。
【0088】
(検出窓23bの3つの尤度を用いる場合)
検出窓23bに関して、側面尤度Lsが、
図7に示す3つの尤度の中で最も大きい(ステップS602においてNo、ステップS607においてYes)。この場合、判断部14は、ステップS608〜S611を実行して、検出窓23bに歩行者が存在するか否かを判断する。
【0089】
具体的には、判断部14は、検出窓23bの側面尤度Lsから斜め尤度Ldを減算して差分値D3を算出する。
図7に示す検出窓23bの側面尤度Ls及び斜め尤度Ldから、差分値D3は、0.26となる。しきい値Th3が0.3に設定されているため、差分値D3は、しきい値Th3以下である(ステップS608においてYes)。このため、判断部14は、ステップS609に進む。一方、差分値D3がしきい値Th3よりも大きい場合(ステップS608においてNo)、判断部14は、検出窓23bに歩行者が存在しないと判断する(ステップS611)。
【0090】
ステップS608を実行する理由について説明する。検出窓23が右又は左を向く歩行者を含む場合、上述のように、側面尤度Lsは、1に近い値となり、斜め尤度Ldは、中間的な範囲内の値となる。従って、右又は左を向く歩行者を含む検出窓における差分値D3は、0に近い値(0.3以下の範囲内の値)となると考えられる。判断部14は、差分値D3がこの範囲内にあるか否かを判断するために、差分値D3をしきい値Th3と比較する。
【0091】
ステップS609において、判断部14は、側面尤度Lsから前後尤度Lfbを減算して差分値D4を算出する。
図7に示す検出窓23bの側面尤度Ls及び前後尤度Lfbから、差分値D3は、0.67となる。しきい値Th4が0.5に設定されているため、差分値D4は、しきい値Th4以上である(ステップS609においてYes)。このため、判断部14は、検出窓23bに歩行者が存在すると判断する(ステップS610)。一方、差分値D4がしきい値Th4よりも小さい場合(ステップS609においてNo)、判断部14は、検出窓23bに歩行者が存在しないと判断する(ステップS611)。
【0092】
ステップS609を実行する理由について説明する。検出窓が右又は左を向く歩行者を含む場合、上述のように、前後尤度Lfbは、0に近い値となり、側面尤度Lsは、1に近い値となる。従って、検出窓が右又は左を向く歩行者を含む場合、差分値D4は、0.5以上の値となると考えられる。判断部14は、この考えに基づいて、差分値D4をしきい値Th4と比較する。
【0093】
(検出窓23cの3つの尤度を用いる場合)
検出窓23cに関して、斜め尤度Lsが、3つの尤度(
図7参照)の中で最も大きい(ステップS602においてNo、ステップS607においてNo)。この場合、判断部14は、ステップS612〜S615を実行して、検出窓23cに歩行者が存在するか否かを判断する。
【0094】
検出窓23が斜め方向を向く歩行者を含む場合、上述のように、斜め尤度Ldが1に近い値を有し、前後尤度Lfb及び側面尤度Lsが中間的な範囲(0.5〜0.7)内の値を有する。従って、斜め尤度Ldから前後尤度Lfbを減算した差分値D5と、斜め尤度Ldから側面尤度Lsを減算した差分値D6とは、一定の範囲(例えば、0.4以下)内の値となると考えられる。この考えに基づいて、判断部14は、検出窓23cに歩行者が存在するか否かを判定する。
【0095】
判断部14は、差分値D5をしきい値Th5と比較する(ステップS612)。
図7に示す検出窓23cの斜め尤度Ld及び前後尤度Lfbから、差分値D5は、0.23である。しきい値Th5は、例えば、0.4に設定される。判断部14は、差分値D5がしきい値Th5以下であるため(ステップS612においてYes)、ステップS613に進む。一方、差分値D5がしきい値Th5よりも大きい場合(ステップS612においてNo)、判断部14は、検出窓23cに歩行者が存在しないと判断する(ステップS615)。
【0096】
図7に示す検出窓23cの斜め尤度Ld及び側面尤度Lsから、差分値D6は、0.31である。差分値D6がしきい値Th5以下であるため(ステップS613においてNo)、判断部14は、検出窓23cに歩行者が存在すると判断する(ステップS614)。一方、差分値D6がしきい値Th5よりも大きい場合(ステップS612においてNo)、判断部14は、検出窓23cに歩行者が存在しないと判断する(ステップS615)。
【0097】
このように、物体検出装置1は、検出窓23から前後尤度Lfb、側面尤度Ls,斜め尤度Ldを算出し、斜め尤度Ldと前後尤度Lfbとの差分値、又は、斜め尤度Ldと側面尤度Lsとの差分値に基づいて、検出窓内に歩行者が存在するか否かを判断する。検出窓内に歩行者が存在するか否かを判断する際に、前、後ろ、右及び左以外を向く歩行者の尤度を用いることにより、歩行者を高精度で検出することができる。
【0098】
[第2の実施の形態]
図11は、本発明の第2の実施の形態に係る物体検出装置2の構成を示す機能ブロック図である。
図11に示すように、物体検出装置2は、
図1に示す物体検出装置1と比較して、判断部14に代えて判断部54を備える。
【0099】
以下、上記実施の形態に係る物体検出装置1と異なる点を中心に、物体検出装置2を説明する。
【0100】
物体検出装置2は、物体検出装置1と同様に、
図6に示す処理を実行して、グレースケール画像22に設定された検出窓23から歩行者を検出する。ただし、判断部54は、判定処理(ステップS4)において、
図8に示す処理と異なる処理を実行する。
【0101】
図12は、判断部54により実行される判定処理(ステップS4)のフローチャートである。
図12に示すように、判断部54は、差分比較処理(ステップS43)に代えて、部分積算値比較処理(ステップS70)を実行する。部分積算値比較処理(ステップS70)は、前後尤度Lfbと側面尤度Lsと斜め尤度Ldとから算出される3種類の部分積算値に基づいて、検出窓23内に歩行者が存在するか否かを判定する処理である。
【0102】
(部分積算値比較処理(ステップS70))
図13は、部分積算値比較処理(ステップS70)のフローチャートである。以下、検出窓23aから算出された前後尤度Lfb、側面尤度Ls、斜め尤度Ldを用いる場合を例にして、
図13に示す処理を説明する。
【0103】
判断部54は、3種類の部分積算値Ps1〜Ps3を算出する(ステップS71)。具体的には、部分積算値Ps1は、前後尤度Lfbと斜め尤度Ldとを積算することにより算出される。部分積算値Ps2は、側面尤度Lsと斜め尤度Ldとを積算することにより算出される。部分積算値Ps3は、前後尤度Lfbと側面尤度Lsとを積算することにより算出される。
【0104】
図7に示す検出窓23aの前後尤度Lfb、側面尤度Ls、斜め尤度Ldは、それぞれ0.95、0.12、0.69であるため、部分積算値Ps1、PS2、Ps3は、それぞれ、1.64、0.81、1.07である。
【0105】
判断部54は、部分積算値Ps1をしきい値Th6と比較する(ステップS72)。しきい値Th6は、例えば、1.1に設定される。部分積算値Ps1がしきい値Th6以上であるため(ステップS72においてYes)、判断部54は、ステップS73に進む。一方、部分積算値Ps1がしきい値Th6よりも小さい場合(ステップS72においてNo)、判断部54は、ステップS75に進む。ステップS75については、後述する。
【0106】
検出窓23aのように、検出窓23が前又は後ろを向く歩行者を含む場合、前後尤度Lfbが1に近い値となり、斜め尤度Ldが、中間的な範囲(0.5〜0.7)内の値となる。従って、部分積算値Ps1は、一定の値(例えば、1.1)以上となると想定される。この考えに基づいて、しきい値Th6が設定される。
【0107】
ステップS73において、判断部54は、部分積算値Ps3をしきい値Th7と比較する。しきい値Th7は、例えば、1.7に設定される。検出窓23aの部分積算値Ps3は、1.07であり、しきい値Th7以下である(ステップS73においてNo)。このため、判断部54は、検出窓23aに歩行者が存在すると判断する(ステップS74)。一方、検出窓23aの部分積算値Ps3がしきい値Th7よりも大きい場合(ステップS73においてYes)、判断部54は、検出窓23aに歩行者が存在しないと判断する(ステップS76)。
【0108】
前又は後ろを向く歩行者を含む検出窓23において、前後尤度Lfbが1に近い値となり、側面尤度Lsが0に近い値となる。従って、部分積算値Ps3がとり得る最大の値は2であるが、前又は後ろを向く歩行者を含む検出窓の部分積算値Ps3は、1程度の値になると想定される。ステップS73では、部分積算値Ps3が1程度の値を有しているか否かを判定するために、しきい値Th7が設定される。
【0109】
次に、検出窓23bから算出された3つの尤度を用いる場合を例にして、部分積算値比較処理(ステップS70)を説明する。
【0110】
判断部54は、検出窓23bの部分積算値Ps1〜Ps3を算出する(ステップS71)。
図7に示すように、検出窓23bから算出された前後尤度Lfb、側面尤度Ls、斜め尤度Ldは、それぞれ0.21、0.88、0.62である。検出窓23bの部分積算値Ps1〜Ps3は、それぞれ、0.83、1.5、1.09である。
【0111】
部分積算値Ps1が0.83であり、しきい値Th6が1.1であるため、部分積算値Ps1は、しきい値Th6よりも小さい(ステップS72においてNo)。この場合、判断部54は、部分積算値Ps2をしきい値Th6と比較する(ステップS75)。部分積算値Ps2が1.5であり、しきい値Th6が1.1であるため、部分積算値Ps2は、しきい値Th6よりも大きい(ステップS75にいてYes)。この場合、判断部54は、ステップS73に進む。
【0112】
検出窓23bのように、検出窓23が右又は左を向く歩行者を含む場合、側面尤度Lsが1に近い値となり、斜め尤度Ldが、中間的な範囲(0.5〜0.7)内の値となる。従って、部分積算値Ps2は、一定の値(例えば、1.1)以上となると想定される。この考えに基づいて、部分積算値Ps2がしきい値Th6と比較される(ステップS75)。
【0113】
判断部54は、検出窓23bの部分積算値Ps3をしきい値Th7と比較する。部分積算値Ps3が0.83であり、しきい値Th7が1.7であるため、部分積算値Ps3は、しきい値Th7よりも小さい(ステップS73においてNo)。この場合、判断部54は、検出窓23bに歩行者が存在すると判断する(ステップS74)。
【0114】
一方、部分積算値Ps3がしきい値Th7よりも大きい場合(ステップS73においてYes)、判断部54は、検出窓23bに歩行者が存在しないと判断する(ステップS76)。
【0115】
次に、検出窓23cから算出された3つの尤度を用いる場合における、部分積算値比較処理(ステップS70)を説明する。
【0116】
判断部54は、検出窓23cの部分積算値Ps1〜Ps3を算出する(ステップS71)。
図7に示すように、検出窓から算出された前後尤度Lfb、側面尤度Ls、斜め尤度Ldは、それぞれ0.59、0.51、0.82である。検出窓23cの部分積算値Ps1〜Ps3は、それぞれ、1.41、1.33、1.1である。
【0117】
部分積算値Ps1が1.41であり、しきい値Th6が1.1である。このため、判断部54は、部分積算値Ps1がしきい値Th6以上であると判断し(ステップS72においてYes)、ステップS73に進む。部分積算値Ps3が1.1であり、しきい値Th7が1.7である。このため、判断部54は、部分積算値Ps3がしきい値Th7よりも小さいと判断し(ステップS73においてNo)、検出窓23cに歩行者が存在すると判断する(ステップS74)。
【0118】
検出窓23cのように、検出窓が斜めを向く歩行者を含む場合、上述のように、斜め尤度Ldが1に近い値を有し、前後尤度Lfb及び側面尤度Lsが中間的な範囲(0.5〜0.7)内の値を有する。従って、部分積算値Ps1、Ps2は、共に、しきい値Th6以上となると考えられる(ステップS72においてYes、又は、ステップS75においてYes)。また、部分積算値Ps3は、中間的な範囲内の値を有する前後尤度Lfbと側面尤度Lsとから算出されるため、しきい値Th7(1.7)よりも小さくなると考えられる(ステップS73においてYes)。このように、部分積算値比較処理(ステップS70)において、斜めを向く歩行者を含む検出窓の3つの尤度を用いても、この検出窓に歩行者が存在すると判断することができる。
【0119】
このように、物体検出装置2は、前後尤度Lfbと斜め尤度Ldとを積算した部分積算値Ps1と、側面尤度Lsと斜め尤度Ldとを積算した部分積算値Ps2と、前後尤度Lfbと側面尤度Lsとを積算した部分積算値Ps3とを用いて、検出窓内に歩行者が存在するか否かを判断する。検出窓内に歩行者が存在するか否かを判断する際に、前、後ろ、右、左以外を向く歩行者の尤度を用いることにより、上記実施の形態と同様に、歩行者を高精度で検出することができる。
[その他の実施の形態]
【0120】
判断部14及び判断部54は、前後尤度Lfb、側面尤度Ls、斜め尤度Ldのうち、少なくとも1つを重み付けした上で、判定処理(ステップS4)を実行してもよい。例えば、判断部14は、自動車の現在位置を取得し、取得した現在位置を地図データと照合する。自動車の現在位置が交差点の手前である場合、右又は左を向く歩行者が撮影画像21内に存在する可能性が高い。この場合、判断部14は、側面尤度Lsに1以上の重み付け係数を乗算してもよい。あるいは、自動車の現在位置が交差点のない一本道である場合、前又は後ろを向く歩行者が撮影画像21内に存在する可能性が高い。この場合、判断部14は、前後尤度Lfbに1以上の重み付け係数を乗算してもよい。
【0121】
上記実施の形態において、前後尤度算出部13a、側面尤度算出部13b、斜め尤度算出部13c、前後学習部15a、側面学習部15b、及び斜め学習部15cがニューラルネットワークを用いる例を説明したが、これに限られない。前後学習部15a、側面学習部15b、及び斜め学習部15cは、ニューラルネットワーク以外のアルゴリズムを用いてもよい。例えば、サポートベクターマシンなどのアルゴリズムの利用が考えられる。また、前後学習部15a、側面学習部15b、及び斜め学習部15cには、互いに異なるアルゴリズムが実装されていてもよい。この場合、前後尤度算出部13aには、前後学習部15aに実装されるアルゴリズムと同じアルゴリズムが実装される。同様に、側面尤度算出部13b及び斜め尤度算出部13cには、側面学習部15b及び斜め学習部15cに実装されたアルゴリズムと同じアルゴリズムがそれぞれ実装される。
【0122】
上記実施の形態において、学習画像及び検出窓がグレースケールである場合を例にして説明したが、これに限られない。例えば、物体検出装置1,2は、学習画像から特徴量を抽出する処理を実行して、学習用の特徴抽出データを生成してもよい。前後学習部15aは、特徴抽出データを学習して、前又は後ろを向く歩行者のパターンを学習する。特徴量を抽出する処理は、例えば、エッジを強調する処理や、HOG(Histograms of Oriented Gradients)特徴量を抽出する処理である。検出窓23には、学習画像に対して実行された特徴量を抽出する処理と同じ処理が実行される。例えば、学習グループ31に含まれる学習画像31a〜31fに対してエッジを強調処理が実行された場合、前後尤度算出部13aに入力される検出窓23に対して、エッジを強調する処理が実行される。学習グループ32に含まれる学習画像32a〜32eに対してHOG特徴量を抽出する処理が実行された場合、側面尤度算出部13bに入力される検出窓23に対して、HOG特徴量を抽出する処理が実行される。
【0123】
なお、上記実施の形態において、初期判定処理(ステップS41)の後に差分比較処理(ステップS43)又は部分積算値比較処理(ステップS70)を実行する例を説明したが、これに限られない。判断部14は、初期判定処理(ステップS41)、差分比較処理(ステップS43)、部分積算値比較処理(ステップS70))のいずれか1つを実行して、検出窓23に歩行者が存在するか否かを判断してもよい。
【0124】
なお、上記実施の形態において、物体検出装置1,2に入力される学習画像のサイズが検出窓のサイズと同じである例を説明したが、これに限られない。物体検出装置1,2に入力される学習画像のアスペクト比が検出窓23のアスペクト比に一致していれば、物体検出装置1,2に入力される学習画像のサイズが検出窓のサイズと同じでなくてもよい。この場合、検出窓23から尤度を算出する前、又は、検出窓23に対して特徴量を抽出する処理を実行する前に、検出窓23のサイズを学習画像のサイズに一致するように変更すればよい。
【0125】
上記実施の形態で説明した物体検出装置1,2において、各機能部は、LSIなどの半導体装置により個別に1チップ化されても良いし、一部又は全部を含むように1チップ化されてもよい。集積回路化の手法はLSIに限るものではなく、専用回路又は汎用プロセッサーで実現してもよい。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用しても良い。
【0126】
また、上記実施の形態の各機能ブロックの処理の一部または全部は、プログラムにより実現されるものであってもよい。そして、上記実施の形態の各機能ブロックの処理の一部または全部は、コンピュータにおいて、中央演算装置(CPU)により行われる。また、それぞれの処理を行うためのプログラムは、ハードディスク、ROMなどの記憶装置に格納されており、ROMにおいて、あるいはRAMに読み出されて実行される。
【0127】
また、上記実施形態の各処理をハードウェアにより実現してもよいし、ソフトウェア(OS(オペレーティングシステム)、ミドルウェア、あるいは、所定のライブラリとともに実現される場合を含む。)により実現してもよい。さらに、ソフトウェアおよびハードウェアの混在処理により実現しても良い。
【0128】
前述した方法をコンピュータに実行させるコンピュータプログラム及びそのプログラムを記録したコンピュータ読み取り可能な記録媒体は、本発明の範囲に含まれる。ここで、コンピュータ読み取り可能な記録媒体としては、例えば、フレキシブルディスク、ハードディスク、CD−ROM、MO、DVD、DVD−ROM、DVD−RAM、BD(Blu−ray Disc)、半導体メモリを挙げることができる。
【0129】
上記コンピュータプログラムは、上記記録媒体に記録されたものに限られず、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク等を経由して伝送されるものであってもよい。