(57)【要約】【課題】１画面の画像内に複数の注目領域が設定され、認識対象画像を含む領域を探索する、画像認識において、特徴量を算出する演算量の増大と算出された特徴量の記憶容量とをともに抑える。【解決手段】認識対象画像を含み複数のブロックから成る認識対象領域について、その領域を構成するブロックから算出される特徴量からなる辞書データを備える。画面内の１ブロックに着目して特徴量を算出し注目ブロック特徴量とする。当該ブロックを含む複数の注目領域のそれぞれについて、辞書データにおいて当該ブロックに対応するブロックから算出された特徴量と注目ブロック特徴量の内積を累積加算して、当該注目領域の評価値の中間データとする。注目領域毎に、当該注目領域を構成するすべてのブロックについての前記累積加算を終えた評価値に基づいて、当該注目領域が前記認識対象画像を含むか否かを判定する。着目するブロックは、画面内で順次走査する。【選択図】図１０
2016186703.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサとメモリとを備え、前記プロセッサによって実行されるプログラムによって、１画面の画像内に複数の注目領域が設定され、認識対象画像を含む領域を探索する、画像認識処理を実行する、画像認識装置であって、
前記画像認識処理において、複数の画素からなるブロックが定義され、
前記認識対象画像を含み、複数のブロックから成る認識対象領域に対応して、当該認識対象領域を構成するブロックからそれぞれ算出される複数の特徴量からなる辞書データが、前記メモリに保持され、
前記画像認識処理において、前記複数の注目領域のそれぞれは、前記認識対象領域を構成するブロックの数と同数のブロックから成り、
前記プロセッサは、前記１画面内のブロック毎に特徴量を算出して注目ブロック特徴量とし、当該ブロックを含む複数の注目領域のそれぞれについて、前記辞書データにおいて当該ブロックに対応するブロックから算出された特徴量と前記注目ブロック特徴量から算出されるスコアを累積加算して、当該注目領域毎の評価値の中間データとして前記メモリに一時的に保持し、前記注目領域毎に、当該注目領域を構成するすべてのブロックについての前記累積加算を終えた評価値に基づいて、当該注目領域が前記認識対象画像を含むか否かを判定する、
画像認識装置。
【請求項２】
請求項１において、前記特徴量はベクトルデータであり、
前記スコアは、前記辞書データにおいて当該ブロックに対応するブロックから算出された前記特徴量と前記注目ブロック特徴量との内積である、
画像認識装置。
【請求項３】
請求項２において、
前記特徴量は、対応するブロック内の画像におけるエッジの傾きの頻度分布である、
画像認識装置。
【請求項４】
請求項１において、
前記注目ブロック特徴量を算出する対象のブロックは、前記１画面内の順次走査によって選択される、
画像認識装置。
【請求項５】
請求項４において、
前記順次走査は、前記ブロックのサイズを刻み幅とする１画面分の走査と、前記走査とは始点が前記ブロックのサイズの整数分の１ずつ異なり刻み幅が同じである１画面分の他の複数の走査とを含む、
画像認識装置。
【請求項６】
請求項１において、前記プロセッサと前記メモリとが単一の半導体基板上に形成された、
画像認識装置。
【請求項７】
請求項４において、前記プロセッサは、同一命令を並列に実行可能な複数のプロセッサエレメントで構成され、前記メモリは、前記複数のプロセッサエレメントにそれぞれ接続される複数のローカルメモリと前記複数のプロセッサエレメントから共通にアクセス可能な共有メモリとで構成され、
前記辞書データは前記共有メモリに保持され、
前記中間データは、対応する注目領域毎に、前記複数のローカルメモリに分散して保持され、
前記順次走査によって、複数のブロックが並列に選択され、前記複数のプロセッサエレメントにそれぞれ割り当てられ、前記複数のプロセッサエレメントはそれぞれ、割り当てられたブロックについて、前記注目ブロック特徴量を算出し、当該ブロックを含む複数の注目領域のそれぞれについて、前記辞書データにおいて当該ブロックに対応するブロックから算出された特徴量と前記注目ブロック特徴量から算出されるスコアを算出し、算出された前記スコアを対応する中間データが保持されるローカルメモリに接続されるプロセッサエレメントに転送する、
画像認識装置。
【請求項８】
請求項７において、前記複数のプロセッサエレメントと前記複数のローカルメモリと前記共有メモリとが単一の半導体基板上に形成された、
画像認識装置。
【請求項９】
メモリが接続されたプロセッサによって実行されることによって、１画面の画像から認識対象画像を含む領域を探索する、画像認識プログラムであって、
前記１画面の画像内に複数の注目領域を設定し、複数の画素からなるブロックを定義し、
前記認識対象画像を含み、複数のブロックから成る認識対象領域に対応して、当該認識対象領域を構成するブロックからそれぞれ算出された複数の特徴量からなる辞書データを前記メモリ上に保持し、
前記複数の注目領域のそれぞれは、前記認識対象領域を構成するブロックの数と同数のブロックから成り、
前記１画面内のブロック毎に特徴量を算出して注目ブロック特徴量とし、当該ブロックを含む複数の注目領域のそれぞれについて、前記辞書データにおいて当該ブロックに対応するブロックから算出された特徴量と前記注目ブロック特徴量から算出されるスコアを累積加算して、当該注目領域毎の評価値の中間データとして前記メモリ上に保持し、前記注目領域毎に、当該注目領域を構成するすべてのブロックについての前記累積加算を終えた評価値に基づいて、当該注目領域が前記認識対象画像を含むか否かを判定する、
画像認識プログラム。
【請求項１０】
請求項９において、前記特徴量はベクトルデータであり、
前記スコアは、前記辞書データにおいて当該ブロックに対応するブロックから算出された前記特徴量と前記注目ブロック特徴量との内積である、
画像認識プログラム。
【請求項１１】
請求項１０において、前記特徴量は、対応するブロック内の画像におけるエッジの傾きの頻度分布である、
画像認識プログラム。
【請求項１２】
請求項９において、
前記注目ブロック特徴量を算出する対象のブロックは、前記１画面内の順次走査によって選択される、
画像認識プログラム。
【請求項１３】
請求項１２において、
前記順次走査は、前記ブロックのサイズを刻み幅とする１画面分の走査と、前記走査とは始点が前記ブロックのサイズの整数分の１ずつ異なり刻み幅が同じである１画面分の他の複数の走査とを含む、
画像認識プログラム。
【請求項１４】
１画面の画像内に複数の注目領域が設定され、認識対象画像を含む領域を探索する、画像認識方法であって、
複数の画素からなるブロックが定義され、
前記認識対象画像を含み、複数のブロックから成る認識対象領域に対応して、当該認識対象領域を構成するブロックからそれぞれ算出される複数の特徴量からなる辞書データを有し、
前記複数の注目領域のそれぞれは、前記認識対象領域を構成するブロックの数と同数のブロックから成り、
前記１画面内のブロック毎に特徴量を算出して注目ブロック特徴量とし、当該ブロックを含む複数の注目領域のそれぞれについて、前記辞書データにおいて当該ブロックに対応するブロックから算出された特徴量と前記注目ブロック特徴量から算出されるスコアを累積加算して、当該注目領域毎の評価値の中間データとし、前記注目領域毎に、当該注目領域を構成するすべてのブロックについての前記累積加算を終えた評価値に基づいて、当該注目領域が前記認識対象画像を含むか否かを判定する、
画像認識方法。
【請求項１５】
請求項１４において、前記特徴量はベクトルデータであり、
前記スコアは、前記辞書データにおいて当該ブロックに対応するブロックから算出された前記特徴量と前記注目ブロック特徴量との内積である、
画像認識方法。
【請求項１６】
請求項１５において、前記特徴量は、対応するブロック内の画像におけるエッジの傾きの頻度分布である、
画像認識方法。
【請求項１７】
請求項１４において、
前記注目ブロック特徴量を算出する対象のブロックは、前記１画面内の順次走査によって選択される、
画像認識方法。
【請求項１８】
請求項１７において、
前記順次走査は、前記ブロックのサイズを刻み幅とする１画面分の走査と、前記走査とは始点が前記ブロックのサイズの整数分の１ずつ異なり刻み幅が同じである１画面分の他の複数の走査とを含む、
画像認識方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像認識方法、画像認識装置および画像認識プログラムに関し、特に対象画像の探索に好適に利用できるものである。
【背景技術】
【０００２】
撮像された画像から対象物を高速に探索する画像認識技術が、注目されている。例えば、例えば、先進運転支援システム（ADAS: Advanced Driving Assistant System）において、自動車に搭載されたカメラで撮影される画像から、歩行者や他の車両を認識する。そのためには、撮像された画像から注目画像領域を選び、その領域の画像データから算出される特徴量データと、探索対象画像について予め算出された特徴量データである、辞書データとを比較することによって、一致の程度を評価する。このとき、特徴量を抽出するアルゴリズムとして、HOG（Histogram of Oriented Gradients）が知られている。HOGでは、画像を複数のブロックに分割し、輝度の勾配方向と濃度勾配を算出してヒストグラムを作成する。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
このような画像認識処理について本発明者が検討した結果、以下のような新たな課題があることがわかった。
【０００４】
対象物を探索する画像認識処理において、撮像された画像の１画面（例えば１フレーム、１フィールド）内に複数の注目領域を設定し、注目領域から算出される特徴量と辞書データと照合することによって評価値を算出して、探索対象画像との一致の程度を評価する。このときの画像処理には、具体的には２通りの実装態様がある。
【０００５】
第１の実装態様では、注目領域を画面内で走査しながら、順次、注目領域における特徴量を算出し、辞書データとともに評価関数に入力して評価値を算出する。評価値が所定の閾値を超える注目領域を、探索対象画像を含む画像として抽出する。このとき、特徴量を算出するために必要な演算量が非常に多く、全体の性能を圧迫する恐れがある。これに対して第２の実装態様は、撮像された画面を複数のブロックに分けて、画面全体についてブロック毎の特徴量を予め算出してメモリに記憶しておく。これにより、特徴量を算出するための演算量を抑えることができる一方、算出した特徴量を記憶するためのメモリ容量が非常に大きい。
【０００６】
以上のように、特徴量を算出する演算量の増大を抑えるという課題と、算出された特徴量を記憶するメモリの記憶容量を抑えるという課題とを同時に解決することが重要であることがわかった。
【０００７】
このような課題を解決するための手段を以下に説明するが、その他の課題と新規な特徴は、本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００８】
一実施の形態によれば、下記の通りである。
【０００９】
すなわち、１画面の画像内に複数の注目領域が設定され、認識対象画像を含む領域を探索する、画像認識方法であって、以下のように構成される。
【００１０】
複数の画素からなるブロックが定義されており、認識対象画像を含み、複数のブロックから成る認識対象領域に対応して、当該認識対象領域を構成するブロックからそれぞれ算出される複数の特徴量からなる辞書データを備えている。また、複数の注目領域のそれぞれは、認識対象領域を構成するブロックの数と同数のブロックから成る。
【００１１】
本画像認識方法では、１画面内のブロック毎に特徴量を算出して注目ブロック特徴量とする。当該ブロックを含む複数の注目領域のそれぞれについて、辞書データにおいて当該ブロックに対応するブロックから算出された特徴量と注目ブロック特徴量から算出されるスコアを累積加算して、当該注目領域毎の評価値の中間データとする。注目領域毎に、当該注目領域を構成するすべてのブロックについての前記累積加算を終えた評価値に基づいて、当該注目領域が前記認識対象画像を含むか否かを判定する。
【発明の効果】
【００１２】
前記一実施の形態によって得られる効果を簡単に説明すれば下記のとおりである。
【００１３】
すなわち、特徴量を算出する演算量の増大を抑えながらも、算出された特徴量を記憶するメモリの記憶容量を抑えることができる。
【図面の簡単な説明】
【００１４】
【図１】図１は、画像認識処理のフローを模式的に示す説明図である。
【図２】図２は、特徴量と辞書データの対応関係を模式的に示す説明図である。
【図３】図３は、特徴量マップ作成による画像認識処理方式（比較例１）のフローを模式的に示す説明図である。
【図４】図４は、特徴量マップ作成による画像認識処理方式（比較例１）のフローチャートである。
【図５】図５は、注目領域単位の特徴量作成による画像認識処理方式（比較例２）のフローを模式的に示す説明図である。
【図６】図６は、注目領域単位の特徴量作成による画像認識処理方式（比較例２）のフローチャートである。
【図７】図７は、評価値（ROIスコア）を算出するための中間データであるブロックスコアの計算方法を模式的に示す説明図である。
【図８】図８は、ROIスコアの中間データを記憶するROI単位スコアマップのデータ形式を模式的に示す説明図である。
【図９】図９は、ROI単位スコアマップの計算方法を模式的に示す説明図である。
【図１０】図１０は、実施形態１に係る画像認識処理の一例を示すフローチャートである。
【図１１】図１１は、各種パラメータの定義を示す説明図である。
【図１２】図１２は、HOGによる特徴量抽出に関わるパラメータの数値例を示す説明図である。
【図１３】図１３は、ROIの構成例を示す説明図である。
【図１４】図１４は、HOGを実装するときの各種パラメータの数値例を示す説明図である。
【図１５】図１５は、各方式における演算回数とデータ容量（記憶容量または転送量）の評価結果を示す説明図である。
【図１６】図１６は、特徴量マップ作成による画像認識処理方式（比較例１）のフローにおける、演算回数とデータ容量（記憶容量または転送量）の評価結果を示す説明図である。
【図１７】図１７は、注目領域単位の特徴量作成による画像認識処理方式（比較例２）のフローにおける、演算回数とデータ容量（記憶容量または転送量）の評価結果を示す説明図である。
【図１８】図１８は、実施形態１のフローにおける演算回数とデータ容量（記憶容量または転送量）の評価結果を示す説明図である。
【図１９】図１９は、各方式の画像認識処理をソフトウェアで実装するときのAPIを比較する説明図である。
【図２０】図２０は、実施形態１の画像認識処理が実行されるシングルプロセッサの構成例を示す概念図である。
【図２１】図２１は、実施形態１の画像認識処理が実行されるSIMDプロセッサの構成例を示す概念図である。
【発明を実施するための形態】
【００１５】
実施の形態について詳述するに先立って、上述の「発明が解決しようとする課題」について、より詳しく説明する。第１の実装態様の一例として特徴量マップ作成による画像認識処理方式（比較例１）、及び、第２の実装態様の一例として注目領域単位の特徴量作成による画像認識処理方式（比較例２）をそれぞれ引用して説明する。
【００１６】
図１は、画像認識処理のフローを模式的に示す説明図である。撮像された１画面（例えば１フレーム、１フィールド）の画像（入力画像）が入力される。入力画像は例えば車載カメラによって撮像された動画像に含まれる１フレームの画像であって、車道の両脇を示す白線と車両と歩行者が写っているものとして描かれている。画像認識処理では、入力画像の１画面内に注目領域（ROI: Region Of Interest）を順次設定し、その注目領域に認識対象が存在するか否かを検定する。ROIは入力画像を走査する形で複数回設定される、即ち、複数個のROIが順次設定される。認識対象の画像に対応して、辞書データが準備されている。辞書データは、例えば、事前の機械学習によって得られる。画像認識処理では、入力画像の中に設定されたROIを切出し（ステップ１）、切り出されたROIを複数のブロックに分割する（ステップ２）。ここでブロックとは互いに隣接する複数の画素からなる領域であり、例えば、１ブロックは８画素×８画素の領域であり、１個のROIは横４ブロック×縦８ブロックの３２個のブロックに分割される。次にブロック毎の特徴量を記述し（ステップ３）、注目領域（ROI）単位の特徴量Xを算出する（ステップ４）。ここで、特徴量Xは、n個の要素（x1, x2, …, xn）であり（nは正の整数）、例えばHOGのような特徴量抽出アルゴリズムを用いて算出される。一方、辞書データも特徴量と同じくn個の要素（w1, w2, …, wn）で構成される。検定処理において、ROI単位の特徴量Xと辞書データWを評価関数f(x, w)に代入し、評価値（スコア）sを算出して認識対象がROI内に存在するか否かの判定を行う（ステップ５）。
【００１７】
図２は、特徴量と辞書データの対応関係を模式的に示す説明図である。事前に用意された辞書データW（w1, w2, …, wn）の要素数と、順次設定される注目領域(ROI)毎に算出されるROI単位の特徴量データX（x1, x2, …, xn）の要素数とは同数である。認識対象の画像が横iブロック×縦jブロックで規定される領域に含まれ（iとjはそれぞれ正の整数）、その領域で辞書データW（w1, w2, …, wn）が準備されているときには、注目領域（ROI）も同じ横iブロック×縦jブロックで規定される領域とされる。即ち、特徴量データ及び辞書データはROI内におけるブロック単位の画像データを基に算出された値を連結したデータである。このとき、ROI単位の特徴量データX（x1, x2, …, xn）の各要素は、辞書データW（w1, w2, …, wn）の各要素と１：１対応する。評価関数が線形SVM（Support Vector Machine）の場合、データの配列順に基づいて内積が計算され、評価値s = f(x, w)とされる。
【００１８】
図３は、特徴量マップ作成による画像認識処理方式（比較例１）のフローを模式的に示す説明図である。この比較例１の実装態様では、入力画像全体を複数のブロックに分割し、ブロック毎に特徴量を算出して、特徴量マップを作成する（ステップ１）。次に、作成された特徴量マップから、入力画像の中に設定されたROIに対応する範囲を選択して、その範囲のブロック毎の特徴量を参照することにより、その注目領域（ROI）単位の特徴量データX1を生成する（ステップ２）。次に、ROI単位の特徴量X1と辞書データWを評価関数f(x1, w)に代入し、評価値（ROIスコア）s1を算出して認識対象がROI内に存在するか否かの判定を行う（ステップ３）。下式に評価値s１を算出するための評価関数の一例を示す。
【００１９】
【数１】
2016186703.tif 000003
【００２０】
評価値s1は、例えば、上に示す式のように、特徴量データXと辞書データWの内積値として算出される。
【００２１】
図４は、この比較例１のフローチャートである。入力画像、特徴量マップ、辞書データ、ROIスコア、しきい値、検定結果は入出力または中間生成データであり、コンピュータ内のメモリ（ROM: Read Only MemoryまたはRAM: Random Access Memory）に記録される。特徴量記述部S11、ROI探索部S13、ROIスコア値算出部S14、スコア検定部S16は、ROMまたはRAMに保存されたプログラムをCPU(Central Processing Unit)などのプロセッサで実行することにより、その機能が実現される。まず、入力画像の輝度データを基に特徴量記述部S11において、HOG等のアルゴリズムを用い、画像の輝度データからブロック毎の特徴量を求め、特徴量マップに保存する。入力画像内の全てのブロックについて、特徴量記述が終了するまで繰り返す（S12）。ROIごとの特徴量データは、そのROIを構成するブロックの特徴量を連結したものであるから、特徴量マップには入力画像全体のROIの特徴量データが保存されていることになる。次にROI探索部S13にて特徴量マップから検定対象のROIを選択し、その特徴量データをROIスコア値算出部S14に渡す。ROIスコア値算出部S14は、辞書データとスコア探索部S13から選択された単一のROI特徴量データを受け取り、その演算結果をROIスコアとして保存する。ROIスコアは、ROIの特徴量データと辞書データとの一致の程度を評価する評価値であって、例えば上述の数１に例示した数式によって算出される。スコア検定部S16は、算出されたROIスコアとしきい値を入力として、選択されたROIに認識対象の画像が存在するか否かの検定を行い、その結果を検定結果に保存としてメモリに記録する。入力画像内における次のROIに対して同様の処理を繰り返し（S17）、入力画像の画面全体に対して検定を行う。
【００２２】
図５は、注目領域（ROI）単位の特徴量作成による画像認識処理方式（比較例２）のフローを模式的に示す説明図である。この比較例２の実装態様では、まず、入力画像の中に検定対象のROIを設定する。ROIは入力画像の画面内を走査されるような形で、順次設定される。図５にはROI-1が設定された場合（ステップ１−１）と、ROI-2が設定された場合（ステップ１−２）とが示される。ROI-1が設定された場合（ステップ１−１）、その領域内がブロック分割されてブロック毎の特徴量が算出され、それらが連結されて特徴量データX1（x11, x12, …, x1n）が求められる（ステップ２−１）。次に、ROI単位の特徴量X1と辞書データWを評価関数f(x1, w)に代入し、評価値（ROIスコア）s1を算出して認識対象がROI-1内に存在するか否かの判定を行う（ステップ３−１）。その後、次の探索対象としてROI-2が設定された場合（ステップ１−２）、その領域内がブロック分割されてブロック毎の特徴量が算出され、それらが連結されて特徴量データX2（x21, x22, …, x2n）が求められる（ステップ２−２）。次に、ROI単位の特徴量X2と辞書データWを評価関数f(x2, w)に代入し、評価値（ROIスコア）s2を算出して認識対象がROI-2内に存在するか否かの判定を行う（ステップ３−２）。
【００２３】
図６は、比較例２のフローチャートである。入力画像、ROI特徴量、辞書データ、ROIスコア、しきい値、検定結果は入出力または中間生成データであり、コンピュータ内のメモリに記録される。ROI探索部S21、特徴量記述部S22、ROIスコア値算出部S24、スコア検定部S26は、ROMまたはRAMに保存されたプログラムをCPUなどのプロセッサで実行することにより、その機能が実現される。まず、入力画像から、ROI探索部S21が検定対象のROIを選択し、選択した領域の画像データを特徴量記述部S22の入力とする。次に特徴量記述部S22は、選択されたROIを構成するブロックの特徴量の算出を繰り返す(S23)ことにより、そのROI単位の特徴量データを生成し、ROI特徴量として保存する。ROIスコア値算出部S24はROI特徴量と辞書データを受け取り、その演算結果をROIスコアとして保存する。ROIスコアは、ROIの特徴量データと辞書データとの一致の程度を評価する評価値であって、例えば上述の数１に例示した数式によって算出される。スコア検定部S26は、導出されたROIスコアとしきい値を入力として、選択されたROIに認識対象の画像が存在するか否かの検定を行い、その結果を検定結果に保存としてメモリに記録する。入力画像内における次のROIに対して同様の処理を繰り返し(S27)、入力画像の画面全体に対して検定を行う。
【００２４】
以上説明したように、図３と図４に示した特徴量マップ作成による画像認識処理方式（比較例１）では、中間データとして作成される「特徴量マップ」を保存するためのメモリサイズが大きく、大容量のワークメモリが必要となる。このため、ワークメモリをLSI(Large Scale Integrated circuit)にオンチップ実装するとチップ面積を著しく増大させ、チップコストを上昇させる。または、外部メモリをワークメモリとして、中間データを保存する場合には、外部アクセスのための余計な転送サイクルが必要となり、画像認識演算に要する時間を著しく増加させることになる。一方、図５と図６に示した、注目領域(ROI)単位の特徴量作成による画像認識処理方式（比較例２）は、比較例１のように入力画像全体に対して前もって一括して特徴量計算処理をするのではなく、ROIを選択する度に選択されたROIに対して特徴量計算を行い、画像全体を探索する方式である。このため、大量の中間データが発生せず、メモリ容量またはデータ転送量を抑えることができるという特徴を持つ。しかし、探索において複数のROIの画像領域が部分的にオーバーラップしており（図５参照）、オーバーラップした領域のブロックに対する特徴量計算は複数回行われ、冗長となるため処理時間の増大につながる。
【００２５】
例えば、先進運転支援システムADAS等の画像認識処理は、限られたハードウェアリソースでの実時間動作が求められるため、ワークメモリに格納される中間データの量を抑えることと、冗長な演算を省くことの両立が求められる。
【００２６】
次に、実施の形態について詳述する。なお、発明を実施するための形態を説明するための全図において、同一の機能を有する要素には同一の符号を付して、その繰り返しの説明を省略する。
【００２７】
〔実施形態１〕
上述の課題を解決するために、本実施形態１では、注目領域（ROI）を構成するブロックに着目する。図２に示したように、１個のROIは同一サイズの複数のブロックから構成されている。ROI単位の特徴量はブロックの特徴量を、予め定義された順番に従って連結することで導出される。ここで、ブロックごとの特徴量は数十〜数百個のデータ配列で構成され、ROI単位の特徴量データはそのブロック数倍の百〜千数百個データ配列で構成される。上述の特徴量マップ作成による画像認識処理方式（比較例１）において生成される「特徴量マップ」は、入力画像全体のデータをこのブロック特徴量データに変換したデータ配列である。本実施形態１は、中間データとして、この特徴量マップではなく、ブロックごとに導出されたスコア（スカラー値）をROI単位スコアマップとして保存する方法である。
【００２８】
図７は、評価値（ROIスコア）を算出するための中間データであるブロックスコアの計算方法を模式的に示す説明図である。選択されたROIの特徴量データと、周辺のROIの特徴量データとの関係が示される。ROIは縦８ブロック×横４ブロックの合計３２ブロックで構成されるものとし、左上から行方向、さらには列方向に順次、第１ブロックblock1、第２ブロックblock2、…、第３２ブロックblock32で構成されるものとする。ブロック単位の特徴量はm個のデータ列で構成され、ROI単位の特徴量データは、そのROIを構成するすべてのブロックの特徴量が連結されたもので、合計n=32m個で構成される。辞書データW（w1, w2, …, wn）も同数であり、w1, w2, …, wmは第１ブロックblock1に、次のwm+1, wm+2, …, w2mは第２ブロックblock2に、その後順次、最後のwn-m+1,wn-m+2, …, wnは第３２ブロックblock32に、それぞれ対応する。
【００２９】
着目する注目領域をROI-0とし、その左上のブロック（第１ブロックblock1）に着目する。このブロック（着目ブロック）の特徴量を（x01, x02, …, x0m）とする。ROI-0においてこの着目ブロックは第１ブロックblock1なので、ROI-0の特徴量データX0においてはblock1の位置に連結される。即ち、X0＝（x01, x02, …, x0m，xm+1, xm+2, …, x2m，…, xn）となる。ここで、着目ブロックの特徴量（x01, x02, …, x0m）を算出し、合せてROI-0についての評価値（ROIスコア）の計算を開始する。ROI-0の評価値（ROIスコア）は下式で表される。
【００３０】
【数２】
2016186703.tif 000004
【００３１】
このうち、着目ブロックに関する項のみを下式で計算しブロックスコア（blkscore）を得る。
【００３２】
【数３】
2016186703.tif 000005
【００３３】
評価値（ROIスコア）は、ROIを構成する全てのブロックのブロックスコア（blkscore）の合計として算出することができる。
【００３４】
着目ブロックは、ROI-0の周辺の他のROIにも含まれる。例えば、ROI-1の第２ブロックであり、ROI-2の第１５ブロックであり、ROI-3の第３２ブロックであるとする。着目ブロックの特徴量（x01, x02, …, x0m）が算出された時、上述のようにROI-0の評価値（ROIスコア）の計算を開始するのと合せて、周辺の他のROIの評価値（ROIスコア）の計算を行う。即ち、ROI-1については、着目ブロックの特徴量（x01, x02, …, x0m）を第２ブロックblock2の特徴量として、辞書データの第２ブロックに対応するデータ列との間の内積を取ってブロックスコアを算出し、ROI-1のROIスコアの一部として既に算出されている中間データに累積的に加算する。同様にROI-2については、着目ブロックの特徴量（x01, x02, …, x0m）を第１５ブロックblock15の特徴量として、辞書データの第１５ブロックに対応するデータ列との間の内積を取ってブロックスコアを算出し、ROI-2のROIスコアの一部として既に算出されている中間データに累積的に加算する。またROI-3については、着目ブロックの特徴量（x01, x02, …, x0m）を第３２ブロックblock32の特徴量として、辞書データの第３２ブロックに対応するデータ列との間の内積を取ってブロックスコアを算出し、ROI-2のROIスコアの一部として既に算出されている中間データに累積的に加算する。
【００３５】
図８は、ROIスコアの中間データを記憶するROI単位スコアマップのデータ形式を模式的に示す説明図である。ROI単位スコアマップ（roi_score）は、入力画像の１画面内の全てのROIについて、１個のROIに１個の中間データの記憶領域が割り付けられる。図８ではこれを入力画像の１画面内の横方向のROIの数と縦方向のROIの数により２次元的に表現している。プログラム上では２次元配列でも１次元配列でも良い。上述したように、ブロック特徴量は一般的に数十〜百数十程度の要素で構成されたベクトルデータであり、単一のROIが数十程度のブロック特徴量で構成されているので、図３に示した特徴量マップを保存するには、大容量のワークメモリが必要となる。これに対して、本実施形態１では、生成されたROIスコアは１個のROIに対して１個のスカラ値として保存される。すなわち、ブロック特徴量が生成された直後にROI単位のスコアマップを更新することにより、保持すべき中間データの量を大幅に削減することが可能となる。
【００３６】
ROI単位スコアマップの更新方法についてさらに詳しく説明する。図９は、ROI単位スコアマップの計算方法を模式的に示す説明図である。入力画像内の１個のブロックを着目ブロックとして、そのブロックのブロック特徴量を算出する（ステップ１）。算出されたブロック特徴量から、着目ブロックを含むすべてのROIについて、ブロックスコアを算出する（ステップ２）。ブロックスコアは下式によって算出される。
【００３７】
【数４】
2016186703.tif 000006
【００３８】
着目ブロックのブロック特徴量をx_blk、辞書データにおけるj番目のブロックに対応するデータ列をw_blk_j、ROI内のブロック数をk個とする。ブロックスコアblkscore[j]はブロック内の要素の内積として算出される。
【００３９】
ROIスコアは下式によって算出される。
【００４０】
【数５】
2016186703.tif 000007
【００４１】
探索によって発生するROI座標のオフセットをlとし、roi_socreにはブロックスコアの値が累積加算される。
【００４２】
例えば、着目ブロックがROI-iの第１ブロックであるとすると、ブロックスコアblkscore1は、算出されたブロック特徴量と辞書データのうちの第１ブロックに対応するデータ列との内積として算出される。算出されたブロックスコアblkscore1は、ROI単位スコアマップにおけるROI-iに対応する中間データroi_score[i]に、累積加算される。同じ着目ブロックがROI-i-1の第２ブロックでもあるとすると、ブロックスコアblkscore2が、算出されたブロック特徴量と辞書データのうちの第２ブロックに対応するデータ列との内積として算出される。算出されたブロックスコアblkscore2は、ROI単位スコアマップにおけるROI-i-1に対応する中間データroi_score[i-1]に、累積加算される。同じ着目ブロックがさらに、ROI-i-2の第３ブロックでもあるとすると、ブロックスコアblkscore3が、算出されたブロック特徴量と辞書データのうちの第３ブロックに対応するデータ列との内積として算出される。算出されたブロックスコアblkscore3は、ROI単位スコアマップにおけるROI-i-2に対応する中間データroi_score[i-2]に、累積加算される。以下同様に、当該着目ブロックを含むすべてのROIについて、それぞれブロックスコアが算出され、ROI単位スコアマップにおける当該着目ブロックに対応する中間データに、累積加算される。
【００４３】
図１０は、本実施形態１に係る画像認識処理の一例を示すフローチャートである。入力画像、ブロック特徴量、辞書データ、ROI単位スコアマップ、しきい値、検定結果は入出力または中間生成データであり、コンピュータ内のメモリに記録される。ブロック探索部S1、特徴量記述部S2、ブロック・ROI対応決定部S3、ブロックスコア値算出部S4、スコア検定部S7は、ROMまたはRAMに保存されたプログラムをCPUなどのプロセッサで実行することにより、その機能が実現される。
【００４４】
ブロック探索部S1により、着目ブロックが選択される。例えば、入力画像をブロック分割し、走査によって順次選択されるブロックを着目ブロックとする。始点となるブロックの位置を任意の刻み幅でずらしながら、同じ入力画面を複数回に渡って走査して、順次、着目ブロックを選択する。刻み幅を細かくする程、画像認識の精度を向上することができる。ただし、これに伴って保存すべき中間データの容量と演算量は増大するので、トレードオフを考慮して適切に設定する。或いは、入力画像の状態や動作環境に応じて適宜変更しても良い。例えば、この画像認識システムが自動車に搭載される場合に、高速道路を巡航走行していることが想定される高速走行中と、混雑した雑踏を走行していることが想定される低速走行中とで刻み幅を変更することができる。
【００４５】
ブロック特徴量記述部S2は、ブロック探索部S1によって指定される着目ブロックの輝度データを入力データから読み出し、HOG等のアルゴリズムを用いて、読み出した輝度データを特徴量データに変換し、ブロック特徴量として保存する。ブロック特徴量にはROIの中の一部分であるブロックの特徴量が保存される。次にブロック・ROI対応決定部S3が、ブロック特徴量から検定時に参照されるROIの座標及び各ROI内における着目ブロックの座標を導出する。ブロックスコア算出部S4はブロック・ROI対応決定部S3から各ROI内における着目ブロックの座標を受け取り、辞書データの中の対応するデータ列と保存されているブロック特徴量からブロックスコアを導出し、ROI単位スコアマップに累積加算していく。算出終了判定ブロックS5にて、ROI単位スコアマップにROI中における全ブロックのスコアが加算されるまでブロックスコア算出は繰り返される。１ROI分のスコア算出が完了したか否かの判定をROI判定部S6にて行う。ROI中の全ブロックのスコアの累積加算が完了したブロックについて、しきい値を入力として、スコア検定部S7にて選択されたROIに認識対象の画像が存在するか否かの検定を行う。スコア検定部S7の結果を検定結果としてメモリに保存し、入力画像内における次のブロックに対して同様の処理を繰り返し(S8)、画面全体に対して検定を行う。
【００４６】
本実施形態１の効果について説明する。上述の特徴量マップ作成による画像認識処理方式（比較例１）、注目領域単位の特徴量作成による画像認識処理方式（比較例２）、及び、本実施形態１について、演算回数とデータ容量（記憶容量または転送量）を評価して比較する。特徴量抽出のためのアルゴリズムをHOGとし、各種パラメータの定義を図１１に、HOGによる特徴量抽出に関わるパラメータの数値例を図１２に、ROIの構成例を図１３に、HOGを実装するときの各種パラメータの数値例を図１４に、それぞれ示す。
【００４７】
図１１には各種パラメータの定義が示されている。入力画像のサイズを、横Image_width×縦Image_heightとし、ROIのサイズを、横block_widthブロック×縦block_heightブロックとし、探索時のステップ幅として、横方向のステップ幅をstep_I_width、縦方向のステップ幅をstep_I_heightとする。探索時のステップ幅は、例えば、ブロックの幅の整数分の１で規定される。
【００４８】
図１２にはHOGを実装するときの各種パラメータの数値例が示される。ROIのサイズを16×32画素(pixel)とし、セルのサイズを4×4画素、ブロックのサイズを2×2cell=8×8画素とする。ここで１個のROIは、図１３に示すように、横方向に３個、縦方向に７個のブロックで構成される。１個のROIの横方向のサイズは16画素であるので、8×8画素のブロックを横方向に4画素ずつずらした3種類のブロックが含まれ、縦方向のサイズは32画素であるので、8×8画素のブロックを縦方向に4画素ずつずらした7種類のブロックが含まれる。したがって、1個のROIを構成するブロックの数は21（=3×7）個となる。ここでHOGにおける、勾配方向を8方向に量子化する（# of bins = 8）ものとすると、特徴量次元数（feature-dimension）は672（=8×2×2×21）となる。
【００４９】
図１４にはHOGを実装するときの各種パラメータの数値例が示される。入力画像のサイズを、横(Image_width)1920画素×縦(Image_height)1080画素とし、横方向の探索ステップを２、縦方向の探索ステップを４とする。このとき、ROIの数は、行方向に953個、列方向に5個、合計4765個となり、ブロックの数は、行方向に957個、列方向11個、合計10527個となる。
【００５０】
図１５には、特徴量マップ作成による画像認識処理方式（比較例１）、注目領域単位の特徴量作成による画像認識処理方式（比較例２）、及び、本実施形態１それぞれにおける演算回数とデータ容量（記憶容量または転送量）の評価結果が表形式で示される。１段目にはループ構成が高級言語による記述を使って例示され、２段目にはループによる演算回数が示され、３段目には生成される中間データのデータ量が示され、４段目と５段目には、それぞれの比較結果が示される。
【００５１】
特徴量マップ作成による画像認識処理方式（比較例１）のループは、特徴量記述と特徴量マップの作成・書込みための２重のループと、特徴量マップを読込み、スコアを導出するための４重のループによって構成される。前段の２重のループは、入力画像の走査を横方向のステップ幅step_I_widthと、縦方向のステップ幅step_I_heightそれぞれ繰り返す２重のループである。後段の４重のループは、ブロックの走査を横方向と縦方向にそれぞれ１画素のステップ幅で繰り返す２重のループと、入力画像の走査を横方向のステップ幅step_I_widthと、縦方向のステップ幅step_I_heightでそれぞれ繰り返す、外側の２重ループで構成される。なお、判定は内側の２重ループの外、外側の２重ループ内で行う。その結果、ブロック特徴量を作成するための演算回数はA×B、スコア導出のための演算回数はA×B×C×D、判定のための演算回数はA×Bとなる。また、生成される中間データ（この比較例１では特徴量マップ）のデータ量は、673,728Byte（=10527×31×2）である。ここでA=Image_hight/step_I_h、B=Image_width/step_I_w、C=Block_height、D=Block_widthである。
【００５２】
図１６は、特徴量マップ作成による画像認識処理方式（比較例１）のフローにおける、演算回数とデータ容量（記憶容量または転送量）の評価結果を示す説明図である。図４と同様のフローチャートが示され、合せて演算回数と中間データのデータ容量（記憶容量または転送量）が示される。各ステップは図４と同様であるのでその説明を省略する。特徴量記述部S11を含むループは、上述した前段の２重ループであり、演算回数はA×Bである。ROIスコア算出部S14を含むループは、上述した後段の４重ループであり、演算回数はA×B×C×Dである。スコア検定部S16を含むループは、上述した後段の４重ループの外側の２重ループであり、演算回数はA×Bである。このとき、全ブロック数（10,527）に対して1ブロックを構成する次元数（ここでは32）分のデータが必要となるため、1次元あたりの特徴量を2Bとすると、特徴量マップのデータ容量は673,728Byteである。
【００５３】
注目領域単位の特徴量作成による画像認識処理方式（比較例２）のループは、ブロック特徴量作成のための４重ループで構成される。スコア導出と判定は、この４重ループを構成する内側の２重ループの外側に配置される。外側の２重ループは、入力画像の走査を横方向のステップ幅step_I_widthと、縦方向のステップ幅step_I_heightとでそれぞれ繰り返す２重ループである。内側の２重ループは、ブロックの走査を横方向と縦方向にそれぞれ１画素のステップ幅で繰り返す２重ループである。その結果、ブロック特徴量を作成するための演算回数はA×B×C×D、スコア導出のための演算回数はA×B×C×D、判定のための演算回数はA×Bとなる。また、生成される中間データ（この比較例２ではROI特徴量）のデータ量は、ブロック特徴量のデータサイズ×C×Dで算出され、1,344Byte（=10527×31×2）である。
【００５４】
図１７は、注目領域単位の特徴量作成による画像認識処理方式（比較例２）のフローにおける、演算回数とデータ容量（記憶容量または転送量）の評価結果を示す説明図である。図６と同様のフローチャートが示され、合せて演算回数と中間データのデータ容量（記憶容量または転送量）が示される。各ステップは図６と同様であるのでその説明を省略する。特徴量記述部S21を含むループは、上述した４重ループ内にあり、演算回数はA×B×C×Dである。ROIスコア値算出部S24を含むループも、上述した４重ループ内にあり、演算回数はA×B×C×Dである。スコア検定部S28を含むループは、上述した４重ループの外側の２重ループであり、演算回数はA×Bである。また、上述のようにROI特徴量のデータ量は1,344Byteである。
【００５５】
本実施形態１のループは、スコア導出のための２重ループと、その外側のブロック特徴量作成と判定を含む２重ループで構成される。外側の２重ループは、入力画像の走査を横方向のステップ幅step_I_widthと、縦方向のステップ幅step_I_heightとでそれぞれ繰り返す２重ループである。内側の２重ループは、ブロックの走査を横方向と縦方向にそれぞれ１画素のステップ幅で繰り返す２重ループである。その結果、ブロック特徴量を作成するための演算回数はA×B、スコア導出のための演算回数はA×B×C×D、判定のための演算回数はA×Bとなる。また、生成される中間データ（本実施形態１ではROI単位スコアマップ）のデータ量は、スコアデータサイズ×ROI数で算出され、19,060Byte（=4765×4）である。
【００５６】
図１８は、実施形態１のフローにおける演算回数とデータ容量（記憶容量または転送量）の評価結果を示す説明図である。図１０と同様のフローチャートが示され、合せて演算回数と中間データのデータ容量（記憶容量または転送量）が示される。各ステップは図１０と同様であるのでその説明を省略する。ブロック特徴量記述部S2を含むループは、上述した内側の２重ループの外にあり、演算回数はA×Bである。ブロックスコア値算出部S4を含むループは、上述した内側の２重ループ内にあり、演算回数はA×B×C×Dである。スコア検定部S28を含むループは、上述した内側の２重ループの外側の２重ループであり、演算回数はA×Bである。また、上述のようにROI単位スコアマップのデータ量は19,060Byteである。
【００５７】
以上のように、本実施形態１の演算量は、ブロック特徴量を作成するための演算回数A×Bが、比較例２の場合のA×B×C×Dよりも大幅に抑えられ、比較例１と同等である。本実施形態１のデータ容量（記憶容量または転送量）は、比較例２の場合のROI特徴量のデータ量は1,344Byteよりは多いが、比較例１の場合の特徴量マップのデータ容量は673,728Byteと比較して、ROI単位スコアマップのデータ量19,060Byteとなり、生成される中間データのサイズを2.8%にまで縮小することが可能となる。
【００５８】
以上の各方式の画像認識処理をソフトウェアで実装するときの、API（Application Programming Interface）の一例について説明する。APIは、要素的な処理を実行する各種の関数と、その関数を呼び出して実行する全体のプログラムで把握される。例えば各関数はライブラリとして提供され、それを呼び出して実行する全体のプログラムをユーザが作成する。
【００５９】
図１９は、各方式の画像認識処理をソフトウェアで実装するときのAPIを比較する説明図である。
【００６０】
特徴量マップ作成による画像認識処理方式（比較例１）では、特徴量マップを作成する関数［１］と、特徴量マップからROI領域のデータを取り出し、連結する関数［２］と、ROI特徴量と辞書データを入力として、評価値を導出する関数［３］とを備え、それらを［１］［２］［３］の順に呼び出して実行する。関数［１］は、入力画像から特徴量マップを作成する関数であって、例えば、「create_feature_map(<入力画像>,<特徴量マップ>,<その他>)」と記述される。関数［２］は、特徴量マップからROI領域のデータを取り出し、連結する関数であって、例えば、「create_roi_feature(<特徴量マップ>,<ROI特徴量>,<その他>)」と記述される。関数［３］は、ROI特徴量と辞書データを入力として、評価値を導出する関数であって、例えば、「detector(<ROI特徴量>,<辞書データ>,<評価値>,<その他>)」と記述される。比較例１では、特徴量マップを作成する関数（群）を実行後、特徴量マップから探索を行うROIの領域に対応する特徴量を計算・連結し、最後に辞書データを用いた検定処理を行う関数を呼び出す流れとなる。
【００６１】
注目領域単位の特徴量作成による画像認識処理方式（比較例２）では、ROI特徴量を作成する関数［１］と評価値を導出する関数［２］とを備え、それらを［１］［２］の順に呼び出して実行する。関数［１］は、画像および画像中における切り取り座標を入力として、ROI特徴量を作成する関数であり、例えば、「create_roi_feature(<入力画像>、<座標>,<ROI特徴量>,<その他>)」と記述される。関数［２］は、ROI特徴量と辞書データを入力として、評価値を導出する関数であり、例えば、「detector(<ROI特徴量>,<辞書データ>,<評価値>,<その他>)」と記述される。比較例２では、矩形領域の画像を入力として特徴量を計算する関数を呼び出したのち、辞書データを用いた検定処理を行う関数を呼び出す流れとなる。
【００６２】
これに対して本実施形態１では、関数としてはROI単位での切り分けは行わず、画像の探索範囲全体を指定し、特徴量抽出、ROI毎の検定を並列で行う関数を一度呼び出すようなユーザインターフェイスとなる。画像および辞書データを入力として、検出された座標を返す関数［１］を備えそれを実行する。関数［１］は、例えば、「scan_detector(<入力画像>,<辞書データ>,<検出結果の座標データ配列>,<ROI単位スコアマップ>)」と記述される。
【００６３】
〔実施形態２〕
実施形態１で説明した画像認識処理は、一般的なシングルプロセッサで実装することが可能である。図２０は、実施形態１の画像認識処理が実行されるシングルプロセッサの構成例を示す概念図である。１個のCPUとRAMやROM等のメモリで構成される。ブロック探索部S1、特徴量記述部S2、ブロック・ROI対応決定部S3、ブロックスコア値算出部S4、スコア検定部S7は、RAMやROM等のメモリにプログラムとして保存する。また、入力画像、辞書データ、しきい値、ROI単位スコアマップもメモリに保存し、入出力処理に応じて読み書きを行う。上記データ及びプログラムを基に、１個のCPUが搭載されているシングルプロセッサで実施形態１の画像認識処理を実現することができる。
【００６４】
このようなシングルプロセッサは、特に制限されないが、例えば、公知のＣＭＯＳ（Complementary Metal-Oxide-Semiconductor）ＬＳＩの製造技術を用いて、シリコンなどの単一半導体基板上に形成される。
【００６５】
〔実施形態３〕
実施形態１の画像認識処理は、画像処理のアクセラレータとして利用されるSIMD(Single Instruction Multiple Data)構成プロセッサにおいて、その並列性を活かした処理を実装することが可能となる。図２１は、実施形態１の画像認識処理が実行されるSIMDプロセッサの構成例を示す概念図である。SIMDプロセッサは、それぞれがローカルメモリを持つ４個のプロセッシングエレメントPE（Processing Element）0〜3と、全てのPEから参照可能な共有メモリとを備える。データ保存方法の具体例としては、プログラムや入力画像データは全PE参照可能な共有メモリに保存し、辞書データやしきい値などのデータは全PEのローカルメモリに同一の値をそれぞれ保存する。ROI単位スコアマップはPE数で分割し、それぞれローカルで保存する。SIMDプロセッサに実装する場合、１PEに対して１ブロックの特徴量計算と部分評価値計算を割り当て、部分評価値を各PE間で転送することで、ROI単位スコアマップを生成する。一般的なCPUでは単一の部分ブロックにおける特徴量計算から部分評価値計算を行う作業をシーケンシャルに行う必要があるが、SIMDプロセッサで実装した場合、PEの並列数分の部分特徴量計算及び評価値計算を並列に実行することで、さらなる高速化が可能となる。
【００６６】
図２１には4個のPEを備えるSIMDプロセッサを例示したが、PEの数は任意である。また、MIMD (Multiple Instruction Multiple Data)プロセッサなど他のアーキテクチャを採用する並列プロセッサに実装しても良い。このようなSIMDプロセッサも、特に制限されないが、例えば、公知のＣＭＯＳＬＳＩの製造技術を用いて、シリコンなどの単一半導体基板上に形成される。
【００６７】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【符号の説明】
【００６８】
ＲＯＩ  注目領域（Region Of Interest）
ｒｏｉ＿ｓｃｏｒｅ  注目領域（ROI）単位スコアマップ
Ｓ１  ブロック探索部
Ｓ２  ブロック特徴量記述部
Ｓ３  ブロック・ROI対応決定部
Ｓ４  ブロックスコア値算出部
Ｓ５  算出終了判定ブロック
Ｓ６  ROI判定部
Ｓ１１、Ｓ２２  特徴量記述部
Ｓ１３、Ｓ２１  ROI探索部
Ｓ１４、Ｓ２４  ROIスコア値算出部
Ｓ７、Ｓ１６、Ｓ２６  スコア検定部
【図１】
2016186703.tif 000008
【図２】
2016186703.tif 000009
【図３】
2016186703.tif 000010
【図４】
2016186703.tif 000011
【図５】
2016186703.tif 000012
【図６】
2016186703.tif 000013
【図７】
2016186703.tif 000014
【図８】
2016186703.tif 000015
【図９】
2016186703.tif 000016
【図１０】
2016186703.tif 000017
【図１１】
2016186703.tif 000018
【図１２】
2016186703.tif 000019
【図１３】
2016186703.tif 000020
【図１４】
2016186703.tif 000021
【図１５】
2016186703.tif 000022
【図１６】
2016186703.tif 000023
【図１７】
2016186703.tif 000024
【図１８】
2016186703.tif 000025
【図１９】
2016186703.tif 000026
【図２０】
2016186703.tif 000027
【図２１】
2016186703.tif 000028