IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ アイシン精機株式会社の特許一覧 ▶ 国立大学法人九州工業大学の特許一覧

特開2022-102379勾配方向量子化装置、画像認識装置、勾配方向量子化プログラム、及び画像認識プログラム
<>
  • 特開-勾配方向量子化装置、画像認識装置、勾配方向量子化プログラム、及び画像認識プログラム 図1
  • 特開-勾配方向量子化装置、画像認識装置、勾配方向量子化プログラム、及び画像認識プログラム 図2
  • 特開-勾配方向量子化装置、画像認識装置、勾配方向量子化プログラム、及び画像認識プログラム 図3
  • 特開-勾配方向量子化装置、画像認識装置、勾配方向量子化プログラム、及び画像認識プログラム 図4
  • 特開-勾配方向量子化装置、画像認識装置、勾配方向量子化プログラム、及び画像認識プログラム 図5
  • 特開-勾配方向量子化装置、画像認識装置、勾配方向量子化プログラム、及び画像認識プログラム 図6
  • 特開-勾配方向量子化装置、画像認識装置、勾配方向量子化プログラム、及び画像認識プログラム 図7
  • 特開-勾配方向量子化装置、画像認識装置、勾配方向量子化プログラム、及び画像認識プログラム 図8
  • 特開-勾配方向量子化装置、画像認識装置、勾配方向量子化プログラム、及び画像認識プログラム 図9
  • 特開-勾配方向量子化装置、画像認識装置、勾配方向量子化プログラム、及び画像認識プログラム 図10
  • 特開-勾配方向量子化装置、画像認識装置、勾配方向量子化プログラム、及び画像認識プログラム 図11
  • 特開-勾配方向量子化装置、画像認識装置、勾配方向量子化プログラム、及び画像認識プログラム 図12
  • 特開-勾配方向量子化装置、画像認識装置、勾配方向量子化プログラム、及び画像認識プログラム 図13
  • 特開-勾配方向量子化装置、画像認識装置、勾配方向量子化プログラム、及び画像認識プログラム 図14
  • 特開-勾配方向量子化装置、画像認識装置、勾配方向量子化プログラム、及び画像認識プログラム 図15
  • 特開-勾配方向量子化装置、画像認識装置、勾配方向量子化プログラム、及び画像認識プログラム 図16
  • 特開-勾配方向量子化装置、画像認識装置、勾配方向量子化プログラム、及び画像認識プログラム 図17
  • 特開-勾配方向量子化装置、画像認識装置、勾配方向量子化プログラム、及び画像認識プログラム 図18
  • 特開-勾配方向量子化装置、画像認識装置、勾配方向量子化プログラム、及び画像認識プログラム 図19
  • 特開-勾配方向量子化装置、画像認識装置、勾配方向量子化プログラム、及び画像認識プログラム 図20
  • 特開-勾配方向量子化装置、画像認識装置、勾配方向量子化プログラム、及び画像認識プログラム 図21
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022102379
(43)【公開日】2022-07-07
(54)【発明の名称】勾配方向量子化装置、画像認識装置、勾配方向量子化プログラム、及び画像認識プログラム
(51)【国際特許分類】
   G06T 7/49 20170101AFI20220630BHJP
   G06T 7/00 20170101ALI20220630BHJP
【FI】
G06T7/49
G06T7/00 300F
【審査請求】未請求
【請求項の数】12
【出願形態】OL
(21)【出願番号】P 2020217071
(22)【出願日】2020-12-25
(71)【出願人】
【識別番号】000000011
【氏名又は名称】株式会社アイシン
(71)【出願人】
【識別番号】504174135
【氏名又は名称】国立大学法人九州工業大学
(74)【代理人】
【識別番号】100096655
【弁理士】
【氏名又は名称】川井 隆
(74)【代理人】
【識別番号】100091225
【弁理士】
【氏名又は名称】仲野 均
(72)【発明者】
【氏名】山田 英夫
(72)【発明者】
【氏名】柴田 雅聡
(72)【発明者】
【氏名】田向 権
(72)【発明者】
【氏名】榎田 修一
(72)【発明者】
【氏名】長嶺 佑哉
【テーマコード(参考)】
5L096
【Fターム(参考)】
5L096AA06
5L096EA39
5L096FA67
5L096GA07
5L096GA30
5L096JA11
(57)【要約】
【課題】計算リソースを抑えつつ、少ない分岐条件で高精度な勾配方向の計算を行う。
【解決手段】着目画素のx方向の輝度勾配をfx、y方向の輝度勾配をfyとすると、fy/fxの範囲とθの範囲を対応させることができる。そこで、θを10°ごとの9方向に区分すると、これに応じてfy/fxの範囲も区分することができ、fy/fxを9方向に量子化することができる。この9方向による量子化を4つの各象限について行うと、象限決定4条件×角度決定9条件=36方向に勾配方向を量子化することができる。fxtanθ=fyとし、fxtanθを境界値として範囲を可変的に設定すると、fyを量子化したθに対応させることができ、fy/fxによる除算を回避することができる。tanθ=fy/fxの区分の境界値を固定小数点で近似すると精度を小数部のビット幅で調節することができる。
【選択図】図7
【特許請求の範囲】
【請求項1】
画像上に配列した各画素の輝度を取得する輝度取得手段と、
前記取得した輝度の配列に基づいて、前記各画素ごとに輝度の勾配の正接の分母成分と分子成分を取得する正接成分取得手段と、
前記取得した分母成分と分子成分を、量子化した所定数の勾配方向に対応させた正接の値の範囲に適用して前記輝度の勾配方向を量子化する量子化手段と、
前記量子化した勾配方向を出力する出力手段と、
を具備したことを特徴とする勾配方向量子化装置。
【請求項2】
前記量子化手段は、
前記取得した分母成分と分子成分で構成される正接の値を、前記範囲に適用して前記輝度の勾配方向を量子化する、
ことを特徴とする請求項1に記載の勾配方向量子化装置。
【請求項3】
前記量子化手段は、
前記取得した分母成分に応じて前記範囲の境界値を設定し、
前記取得した分子成分を、前記設定した境界値の範囲に適用して前記輝度の勾配方向を量子化する、
ことを特徴とする請求項1の記載の勾配方向量子化装置。
【請求項4】
前記範囲の境界値は、固定小数点による近似値であることを特徴とする請求項1、請求項2、又は請求項3に記載の勾配方向量子化装置。
【請求項5】
前記固定小数点の小数部のビット幅は、0ビットから7ビットまでのうちの何れかであることを特徴とする請求項4に記載の勾配方向量子化装置。
【請求項6】
前記固定小数点の小数部のビット幅は、4ビットであることを特徴とする請求項4に記載の勾配方向量子化装置。
【請求項7】
前記画素の輝度の勾配方向を、当該勾配方向の象限に応じた所定角度だけ回転する回転手段と、
前記量子化した勾配方向を、前記回転手段で回転した所定角度に応じて補正する勾配方向補正手段と、を備え、
前記正接成分取得手段は、前記回転した輝度の勾配の正接の分母成分と分子成分を取得し、
前記出力手段は、前記補正後の量子化した勾配方向を出力する、
ことを特徴とする請求項1から請求項6のうちのいずれか1の請求項に記載の勾配方向量子化装置。
【請求項8】
前記回転手段は、前記勾配方向を、前記量子化を行う所定の象限に回転し、
前記補正手段は、前記量子化した勾配方向を、前記所定角度だけ逆方向に回転する補正を行う、
ことを特徴とする請求項7までのうちの何れか1の請求項に記載の勾配方向量子化装置。
【請求項9】
画像を取得する画像取得手段と、
請求項1から請求項7までのうちの何れか1の請求項に記載の勾配方向量子化装置によって、前記取得した画像を構成する各画素の輝度の勾配方向を取得する勾配方向取得手段と、
前記取得した勾配方向の分布に基づいて前記取得した画像の特徴量を取得する特徴量取得手段と、
前記取得した特徴量を用いて画像認識する画像認識手段と、
を具備したことを特徴とする画像認識装置。
【請求項10】
前記特徴量取得手段は、前記勾配方向の共起の分布を混合ガウス分布で表した負担率によって前記特徴量を取得することを特徴とする請求項9に記載の画像認識装置。
【請求項11】
画像上に配列した各画素の輝度を取得する輝度取得機能と、
前記取得した輝度の配列に基づいて、前記各画素ごとに輝度の勾配の正接の分母成分と分子成分を取得する正接成分取得機能と、
前記取得した分母成分と分子成分を、量子化した所定数の勾配方向に対応させた正接の値の範囲に適用して前記輝度の勾配方向を量子化する量子化機能と、
前記量子化した勾配方向を出力する出力機能と、
をコンピュータで実現することを特徴とする勾配方向量子化プログラム。
【請求項12】
画像を取得する画像取得機能と、
請求項1から請求項7までのうちの何れか1の請求項に記載の勾配方向量子化装置によって、前記取得した画像を構成する各画素の輝度の勾配方向を取得する勾配方向取得機能と、
前記取得した勾配方向の分布に基づいて前記取得した画像の特徴量を取得する特徴量取得機能と、
前記取得した特徴量を用いて画像認識する画像認識機能と、
をコンピュータで実現することを特徴とする画像認識プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、勾配方向量子化装置、画像認識装置、勾配方向量子化プログラム、及び画像認識プログラムに関し、画像を構成する画素の輝度の勾配方向を量子化するものに関する。
【背景技術】
【0002】
歩行者などの対象を画像認識するアルゴリズムには、HOG、CoHOG、MRCoHOGといった、画像を構成する画素の輝度の勾配方向に着目して対象の特徴量を抽出するものがある。
勾配方向θは、x、y方向の輝度の勾配をfx、fyとすると、tanθ=fy/fxの関係から、θ=arctan(fy/fx)によって求めることができる。
【0003】
例えば、非特許文献1の技術では、θの逆正接によって勾配方向を計算し、これを8方向に量子化している。
ところで、逆正接の計算は、多くの計算リソースを使用するため、FPGAなどの計算リソースが限られた機器へ実装する場合、fx、fyに分岐条件を課して勾配方向を量子化することにより、三角関数の計算を回避するのが望ましい。
ところが、量子化する方向を36方向など多くの方向に拡張した場合、求める勾配方向の精度によっては分岐条件が多く発生してしまい、リソース増加につながるという問題があった。
【先行技術文献】
【非特許文献】
【0004】
【非特許文献1】小林駿也、その他著「小規模FPGAによる実時間歩行者検出」 情報処理学会第82回全国大会、 1-121,122、 2020
【発明の概要】
【発明が解決しようとする課題】
【0005】
本発明は、計算リソースを抑えつつ、少ない分岐条件で高精度な勾配方向の計算を行うことを目的とする。
【課題を解決するための手段】
【0006】
(1)請求項1に記載の発明では、画像上に配列した各画素の輝度を取得する輝度取得手段と、前記取得した輝度の配列に基づいて、前記各画素ごとに輝度の勾配の正接の分母成分と分子成分を取得する正接成分取得手段と、前記取得した分母成分と分子成分を、量子化した所定数の勾配方向に対応させた正接の値の範囲に適用して前記輝度の勾配方向を量子化する量子化手段と、前記量子化した勾配方向を出力する出力手段と、を具備したことを特徴とする勾配方向量子化装置を提供する。
(2)請求項2に記載の発明では、前記量子化手段は、前記取得した分母成分と分子成分で構成される正接の値を、前記範囲に適用して前記輝度の勾配方向を量子化する、ことを特徴とする請求項1に記載の勾配方向量子化装置を提供する。
(3)請求項3に記載の発明では、前記量子化手段は、前記取得した分母成分に応じて前記範囲の境界値を設定し、前記取得した分子成分を、前記設定した境界値の範囲に適用して前記輝度の勾配方向を量子化する、ことを特徴とする請求項1の記載の勾配方向量子化装置を提供する。
(4)請求項4に記載の発明では、前記範囲の境界値は、固定小数点による近似値であることを特徴とする請求項1、請求項2、又は請求項3に記載の勾配方向量子化装置を提供する。
(5)請求項5に記載の発明では、前記固定小数点の小数部のビット幅は、0ビットから7ビットまでのうちの何れかであることを特徴とする請求項4に記載の勾配方向量子化装置を提供する。
(6)請求項6に記載の発明では、前記固定小数点の小数部のビット幅は、4ビットであることを特徴とする請求項4に記載の勾配方向量子化装置を提供する。
(7)請求項7に記載の発明では、前記画素の輝度の勾配方向を、当該勾配方向の象限に応じた所定角度だけ回転する回転手段と、前記量子化した勾配方向を、前記回転手段で回転した所定角度に応じて補正する勾配方向補正手段と、を備え、前記正接成分取得手段は、前記回転した輝度の勾配の正接の分母成分と分子成分を取得し、前記出力手段は、前記補正後の量子化した勾配方向を出力する、ことを特徴とする請求項1から請求項6のうちのいずれか1の請求項に記載の勾配方向量子化装置を提供する。
(8)請求項8に記載の発明では、前記回転手段は、前記勾配方向を、前記量子化を行う所定の象限に回転し、前記補正手段は、前記量子化した勾配方向を、前記所定角度だけ逆方向に回転する補正を行う、ことを特徴とする請求項7までのうちの何れか1の請求項に記載の勾配方向量子化装置を提供する。
(9)請求項9に記載の発明では、画像を取得する画像取得手段と、請求項1から請求項7までのうちの何れか1の請求項に記載の勾配方向量子化装置によって、前記取得した画像を構成する各画素の輝度の勾配方向を取得する勾配方向取得手段と、前記取得した勾配方向の分布に基づいて前記取得した画像の特徴量を取得する特徴量取得手段と、前記取得した特徴量を用いて画像認識する画像認識手段と、を具備したことを特徴とする画像認識装置を提供する。
(10)請求項10に記載の発明では、前記特徴量取得手段は、前記勾配方向の共起の分布を混合ガウス分布で表した負担率によって前記特徴量を取得することを特徴とする請求項9に記載の画像認識装置を提供する。
(11)請求項11に記載の発明では、画像上に配列した各画素の輝度を取得する輝度取得機能と、前記取得した輝度の配列に基づいて、前記各画素ごとに輝度の勾配の正接の分母成分と分子成分を取得する正接成分取得機能と、前記取得した分母成分と分子成分を、量子化した所定数の勾配方向に対応させた正接の値の範囲に適用して前記輝度の勾配方向を量子化する量子化機能と、前記量子化した勾配方向を出力する出力機能と、をコンピュータで実現することを特徴とする勾配方向量子化プログラムを提供する。
(12)請求項12に記載の発明では、画像を取得する画像取得機能と、請求項1から請求項7までのうちの何れか1の請求項に記載の勾配方向量子化装置によって、前記取得した画像を構成する各画素の輝度の勾配方向を取得する勾配方向取得機能と、前記取得した勾配方向の分布に基づいて前記取得した画像の特徴量を取得する特徴量取得機能と、前記取得した特徴量を用いて画像認識する画像認識機能と、をコンピュータで実現することを特徴とする画像認識プログラムを提供する。
【発明の効果】
【0007】
本発明によれば、量子化した勾配方向に対応させた正接の値を用いることにより、計算リソースを抑えつつ、少ない分岐条件で高精度な勾配方向の計算を行うことができる。
【図面の簡単な説明】
【0008】
図1】HOG特徴量の概念を説明するための図である。
図2】CoHOG特徴量の概念を説明するための図である。
図3】MRCoHOG特徴量の概念を説明するための図である。
図4】tanθを固定小数点で近似する方法を説明するための図である。
図5】tanθの近似値を用いたθの量子化方法を説明するための図である。
図6】fy/fxによる割り算を回避する方法を説明するための図である。
図7】勾配方向量子化装置の回路構成を説明するための図である。
図8】勾配方向を量子化する手順を説明するためのフローチャートである。
図9】リソース使用量などを説明するための図である。
図10】基準となるGMMを作成する方法を説明するための図である。
図11】基準GMMの近似を説明するための図である。
図12】負担率の計算に用いるパラメータなどについて説明するための図である。
図13】負担率の計算式を説明するための図である。
図14】基底関数をより詳細に説明するための図である。
図15】負担率の具体的な計算を説明するための図である。
図16】負担率の量子化を説明するための図である。
図17】画像処理装置のハードウェア的な構成の一例を示した図である。
図18】画像認識処理の手順を説明するためのフローチャートである。
図19】プロット処理の手順を説明するためのフローチャートである。
図20】負担率計算処理を説明するためのフローチャートである。
図21】実験結果を説明するための図である。
【発明を実施するための形態】
【0009】
(1)実施形態の概要
着目画素のx方向の輝度勾配をfx、y方向の輝度勾配をfyとすると、勾配方向θは、fy/fxの逆正接、即ち、θ=arctan(fy/fx)となる。このθの計算処理は困難である。
本実施形態では、fy/fxはθの正接なので、fy/fx=tanθを使用する。これは、図5に示したように、tanθは単調増加関数であり、θとtanθの増減関係は一致する。このため、fy/fxの範囲とθの範囲を対応させることができるためである。
そこで、θを10°ごとの9方向に区分すると、これに応じてfy/fxの範囲も区分することができ、fy/fxを9方向に量子化することができる。この9方向による量子化を4つの各象限について行うと、象限決定4条件×角度決定9条件=36方向に勾配方向を量子化することができる。
【0010】
また、fxtanθ=fyとし、図6に示したように、fxtanθを境界値として範囲を可変的に設定すると、fyを量子化したθに対応させることができ、fy/fxによる除算を回避して乗算により計算することができる。
更に、tanθ=fy/fxの区分の境界値を図4(c)に示したような固定小数点で近似すると、その精度を小数部のビット幅で調節することができる。
このように、fy/fxがθと相関関係にあることを利用して、計算リソースを抑えつつ、少ない分岐条件で高精度な勾配方向の計算を行うことができる。
【0011】
(2)実施形態の詳細
まず、HOG特徴量、CoHOG特徴量、及びMRCoHOG特徴量について説明する。
図1は、HOG特徴量の概念を説明するための図である。
HOG特徴量は、次の手順により画像から抽出される。
図1(a)左図に示した画像101は、対象を観測する観測窓などによる注目画像領域とする。
まず、画像101を矩形のセル102a、102b、・・・に分割する。
次に、図1(a)右図に示したように、セル102ごとに各画素(ピクセル)の輝度の勾配方向(低輝度から高輝度に向かう方向)を所定の角度ごとに複数の方向に量子化する。以下では、輝度の勾配方向を単に勾配方向と呼ぶことにする。また、CoHOG特徴量やMRCoHOG特徴量でも同様な量子化した勾配方向を用いる。
【0012】
次に、図1(b)に示したように、量子化した勾配方向を階級とし、出現回数を度数とするヒストグラムを生成することにより、セル102に含まれる勾配方向のヒストグラム106をセル102ごとに作成する。
そして、セル102をいくつか集めたブロック単位でヒストグラム106の合計度数が1となるように正規化する。
【0013】
図1(a)左図の例では、セル102a、102b、102c、102dから1ブロックが形成されている。
このようにして正規化したヒストグラム106a、106b、・・・を図1(c)のように一列に並べたヒストグラムが画像101のHOG特徴量107である。
【0014】
図2は、CoHOG特徴量を説明するための図である。
CoHOG特徴量は、局所領域における2画素間の勾配ペアに着目した特徴量であり、次の手順により画像から抽出される。
図2(a)に示したように、画像101を矩形のセル102a、102b、・・・に分割する。なお、セルは、ブロックとも呼ばれる。
【0015】
CoHOG特徴量では、セル102a、102b、・・・に注目画素110を設定し、注目画素110の勾配方向と、注目画素110から距離1~4にある画素の勾配方向との組合せにより共起行列(注目画素110に関するヒストグラム)を作成する。なお、注目画素110との組合せに係る画素はオフセットと呼ばれる。
【0016】
例えば、注目画素110からの距離は、数式で表されるが、当該数式を適用すると、図2(a)に示したように、距離1の画素として、注目画素110に隣接する画素1a~1dが得られる。
なお、注目画素110の上と左の画素が組合せに含まれないのは、一番上の画素行の左端から右方向に向けて順に注目画素110を設定して処理していくため、既に処理が終了しているからである。
【0017】
次に、注目画素110と画素1aの輝度勾配方向を観察する。図では勾配方向を矢線で示してある。
注目画素110の輝度勾配方向は、右方向で画素1aの勾配方向は、右上方向である。
そこで、図2(b)の共起行列113で、(行番号、列番号)=(右方向、右上方向)の要素に一票を投じる。
図2(b)の例では、注目画素110と画素1aの勾配方向の組みとして、行番号として右方向の矢印が記載された行と、列番号として右上方向の矢印が記載された列の要素に1が加算された結果、当該要素の値が10になっている。
【0018】
なお、本来は、共起行列113を立体的なヒストグラムで描き、票数を高さ方向の棒グラフで表すべきであるが、図を簡略化するため票数を数値で表している。
以下、同様に注目画素110と画素1b、1c、1dとの組合せによる投票(計数)を行う。
【0019】
図2(c)に示したように、注目画素110を中心に、距離2の画素は画素1a~1dの外周にある画素2a~2f、距離3の画素は更にその外周の画素3a~3h、距離4の画素は更にその外周の画素4a~4lと規定されている。
これらについても同様に注目画素110と組合せて共起行列113に投票する。
【0020】
以上の投票処理をセル102を構成する全画素について行い、画素ごとの共起行列が得られる。
更に、これを全てのセル102で行い、全ての共起行列の成分を図2(d)に示したように一列に並べたヒストグラムが画像101のCoHOG特徴量117である。
【0021】
図3は、MRCoHOG特徴量を説明するための図である。
MRCoHOG特徴量は、同じ画像の異なる解像度間で共起をみることでオフセット数を大幅に削減する。
まず、図3(a)に示したように、元画像から解像度(画像サイズ)の異なる画像を生成することにより高解像度画像120(元画像)、中解像度画像121、低解像度画像122を得る。画像中の升目は、画素を表している。図示しないが、これら各解像度画像にもセル(ブロックとも呼ばれる)が設定されている。
そして、高解像度画像120、中解像度画像121、及び低解像度画像122のそれぞれの画素について勾配方向を計算する。
【0022】
MRCoHOG特徴量の抽出には、中解像度画像121、低解像度画像122を用いるが、分かり易くするために、図3(b)に示したように、中解像度画像121と低解像度画像122を中解像度画像121aと低解像度画像122aに引き延ばし、高解像度画像120と同じサイズにする。
【0023】
次に、図3(c)に示したように、CoHOG特徴量と同様に、高解像度画像120の注目画素125における勾配方向と、その周囲の高解像度画像120の画素1a~1dの勾配方向との共起(輝度勾配方向の組合せ)を取って、図示しない共起行列に投票する。
【0024】
次に、高解像度画像120の注目画素125と、画素1a~1dの外周にある中解像度画像121aの画素2a~2dとの共起に従って共起行列に投票し、更に、注目画素125と、画素2a~2dの外周にある低解像度画像122aの画素3a~3dとの共起に従って共起行列に投票する。
【0025】
このようにして、高解像度画像120の注目画素125に対して、高解像度画像120内での組合せ、中解像度画像121aとの組合せ、低解像度画像122aとの組合せで共起を取った共起行列が得られる。
この処理を、高解像度画像120のセル内の各画素に対して行い、更に、全てのセルについて行う。
これにより、高解像度画像120の画素ごとの共起行列が得られる。
【0026】
同様にして、更に、中解像度画像121aに注目画素を設定した場合の各解像度画像との共起行列、低解像度画像122aに注目画素を設定した場合の各解像度画像との共起行列を計算し、全ての共起行列の成分を図3(d)に示したように一列に並べたヒストグラムが高解像度画像120のMRCoHOG特徴量127である。
【0027】
なお、この例では、高解像度画像120に注目画素を設定した場合の共起行列、中解像度画像121aに注目画素を設定した場合の共起行列、低解像度画像122aに注目画素を設定した場合の共起行列を連結したヒストグラムをMRCoHOG特徴量としたが、何れか1つ、例えば、高解像度画像120に注目画素を設定した場合の共起行列によるヒストグラムをMRCoHOG特徴量とすることも可能である。
また、何れか2つを組合せてもよいし、更に、解像度を増やして4種類以上の解像度画像で共起をとってもよい。
MRCoHOG特徴量は、CoHOGより大幅に特徴量を減らすことができる一方、頑健性がCoHOGよりもよいという特徴がある。
【0028】
以上のアルゴリズムでは、各画素の勾配方向に基づいて特徴量を抽出しているが、これらの勾配方向は、図7で説明する勾配方向量子化装置7によって取得することができる。ここでは、勾配方向量子化装置7が行う勾配方向の角度の計算方法について説明する。
【0029】
図4は、tanθを固定小数点で近似する方法を説明するための図である。
後述するように、本実施形態では、正接の値を利用して勾配方向を量子化するが、これをハードウェアへの実装に適した固定小数点によって近似する。
【0030】
図4(a)に示したfx、fyは、それぞれ、x方向(水平方向・横方向)とy方向(垂直方向・縦方向)の輝度の勾配強度を表している。
fx、fyは、数学的には、輝度をx方向、y方向に偏微分して求めるが、本実施形態では、式(41)で示したように、fxを着目画素の水平方向(左右横方向)両隣に隣接する画素の輝度の差分で表し、fyを着目画素の垂直方向(上下縦方向)両隣に隣接する画素の輝度の差分で表す。式(41)で、Yは輝度、x、yは、注目画素の座標値を表す。
【0031】
これにより、輝度の勾配は点Tから点Sに向かうベクトルで表され、勾配方向θは、当該ベクトルとfxの成す角度で表される。
勾配方向θは、図4(b)の式(42)で示したように、fyをfxで除した値の逆正接で表される。これにより、式(43)で表したようにtanθ=fy/fxとなる。更に、式(44)で示したようにfx×tanθ=fyの関係も成り立つ。式(43)、(44)は、それぞれ図5、6で勾配方向を量子化するのに用いる。
【0032】
本実施形態では、図4(c)に示したように、量子化に用いるtanθの範囲の境界値を、整数部のビット幅が3ビット、小数部のビット幅が0~7ビットの固定小数点を用いて近似的に表す。
固定小数点を用いることにより、計算リソースを節約すると共に、シフト演算などの高速な演算も可能となる。
このように、勾配方向量子化装置7は、量子化に対応させた正接の範囲の境界値を、小数部のビット幅が0ビットから7ビットまでのうちの何れかである固定小数点によって近似値している。
【0033】
小数部のビット幅は、ビット幅が大きいほど近似の精度が上がるが、その分だけ計算リソースを使用する。
そこで、精度と使用する計算リソースとの兼ね合いから適当なビット幅を設定する。本実施形態では、後述の実験に基づき4ビットとした。
以下では、小数部のビット幅を4ビットとした場合について説明し、当該4ビット幅による値を単に近似値と記す。
このように、勾配方向量子化装置7は、一例として、固定小数点の小数部のビット幅を4ビットとしている。
【0034】
図4(d)は、tanθの値の近似値を10°ごとに示している。
図に示したように、tanθの値は10°から80°まで、10°ごとに、0.176、0.364、0.577、0.839、1.19、1.73、2.75、5.67であり、これら対応する近似値は、0.1875、0.375、0.5625、0.8425、1.1875、1.75、2.75、5.6875となる。
【0035】
図5は、tanθの近似値を用いたθの量子化方法を説明するための図である。
図に示したグラフは、0°≦θ<90°の範囲におけるtanθ=fy/fxとθの関係を表している。
図に示したように、tanθは、単調増加関数であるため、図4(b)で示した式(43)のtanθ=fy/fxをθに重複なく対応させることができる。
そこで、tanθ=fy/fxを複数の範囲に分割し、これらをθの範囲に対応させることにより、これらの範囲を量子化の単位とすることができる。
【0036】
本実施形態では、tanθ軸をθが10°ごとの近似値を境界値とする範囲で区分し、それらを10°ごとのθに対応させた。
具体的には、tanθ軸を、0≦tanθ<0.1875、0.1875≦tanθ<0.375、・・・、5.6875≦θの各範囲に区分し、これらをそれぞれ、1番目のθ、2番目のθ、・・・9番目のθに対応させる。
【0037】
n番目のθは、n番目の方向に対応しており(nは1から9までの整数)、これにより、0°から90°までの角度を9方向に量子化することができる。
例えば、図に示したようにtanθ=fy/fxが1.75≦tanθ<2.75の範囲にあった場合、7番目のθ、即ち、7番目の方向に量子化する。
以上は、θが第1象限にある場合であるが、後述する手法によって、他の3象限についても、10番目のθ、11番目のθ、・・・、36番目のθと量子化し、勾配方向を合計36方向に量子化する。
【0038】
このように、勾配方向量子化装置7は、輝度の勾配方向の正接の分母成分であるfxと分子成分であるfyを、量子化した所定数の勾配方向に対応させた正接の値の範囲に適用して輝度の勾配方向θを量子化する量子化手段を備えており、当該量子化手段は、分母成分と分子成分で構成される正接の値であるfy/fxを当該範囲に適用して輝度の勾配方向を量子化することができる。
【0039】
図6は、fy/fxによる割り算を回避する方法を説明するための図である。
図5の例に従って勾配方向を量子化してもよいが、fy/fxを計算する必要がある。
図6の例では、式(d)のfx×tanθ=fyの関係を用いてfxによるfyの除算を回避して乗算によりθを量子化する。除算を回避することにより計算リソースの使用を節約することができる。
【0040】
この例では、tanθの近似値をfx倍した値を境界値とし、これによる範囲を量子化したθに対応させる。これにより、fyを量子化したθに対応させることができる。
例えば、図に示したように、1.75fx≦fy<2.75fxであった場合、これを7番目のθに量子化する。
tanθ軸で範囲をfxに応じて可変的に設定することにより、fyを量子化したθに対応させることができ、乗算によって勾配方向を量子化することができる。
【0041】
この例における量子化手段は、勾配方向の正接の分母成分であるfxに応じて量子化の範囲の境界値を設定し、分子成分であるfyを、当該設定した境界値の範囲に適用して輝度の勾配方向を量子化している。
【0042】
図7は、勾配方向量子化装置7の回路構成を説明するための図である。
勾配方向量子化装置7は、例えば、FPGA(field-programmable gate array)をプログラミングすることにより構成することができる。
FPGAは、利用者が回路構成をプログラムできる集積回路であり、多数のLUT(look-up table)やFF(flip-flop)などから構成されている。
【0043】
まず、勾配方向量子化装置7は、fx、fyの入力を受け付ける。
図5に示した手法も可能であるが、ここでは、勾配方向量子化装置7は、図6に示した手法を用いて勾配方向を量子化する。
これにより多くの計算リソースを要する除算や逆正接の計算を避けるとともに、少ない条件分岐で10°ごとの36方向に勾配方向を量子化することができる。
【0044】
象限選択部74は、fx、fyの入力を受け付けて勾配方向の象限を判定し、判定結果を回転選択部71とオフセット選択部75に出力する。
図6の関係は、勾配方向が第1象限(0≦θ<90°)にある場合の量子化であるため、勾配方向が第2象限~第4象限にある場合、勾配方向量子化装置7は、これを回転して第1象限に写像して量子化した後、これを逆回転方向にオフセットして第2象限~第4象限の勾配方向を計算する。象限選択部74は、そのための象限判定を行う。
【0045】
より具体的には、象限選択部74は、第1象限~第4象限に、それぞれ対応させた0~3の数値の入力を受け付け、fx、fyの値に応じて、対応する象限の数値を選択して出力する。
fx、fyと、勾配方向の象限の対応関係は、fx、fyの符号に基づいており、例えば、fx>0、fy≧0の場合は第1象限、fx≦0、fy>0の場合は第2象限、fx<0、fy≦0の場合は第3象限、fx≧0、fy<0の場合は第4象限とする。
【0046】
回転選択部71は、勾配方向が第2象限~第4象限にある場合に、これを象限に応じた角度で回転して第1象限に写像する。写像した勾配方向が量子化対象となる。
より具体的には、回転選択部71は、fx、fyと、符号を反転した-fx、-fyの入力を受け付けるとともに、象限選択部74から0~3の数値によって勾配方向の象限を受け付ける。
例えば、象限選択部74から受け取った象限が第1象限であった場合、回転選択部71は、fxと-fxのうち0以上の方を選択し(fxは正負の値をとるため、選択した値はfxの絶対値となる)、かつ、fyと-fyのうち0以上の方を選択してこれら回転後のfx、fyとして出力する。この場合、回転角度は0°である。
【0047】
勾配方向が第2象限、第3象限、第4象限にあった場合は、これらをそれぞれ時計方向に90°、180°、270°回転するような回転後のfx、fyをfx、-fx、fy、-fyから選択して出力する。
具体的には、勾配方向が第2象限か第4象限にある場合、fy、-fyのうち、0以上の方を選択して回転後のfxとし、fx、-fxのうち、0以上の方を選択してfyとする。
勾配方向が第3象限にある場合、fx、-fxのうち、0以上の方を選択して回転後のfxとし、fy、-fyのうち、0以上の方を選択してfyとする。
【0048】
このように、勾配方向量子化装置7は、画素の輝度の勾配方向を、当該勾配方向の象限に応じた所定角度だけ回転する回転手段を備えている。
また、勾配方向量子化装置7は、取得した輝度の配列に基づいて、各画素ごとに輝度の勾配の正接の分母成分と分子成分を取得する正接成分取得手段を備えており、当該回転手段は、勾配方向を、量子化を行う所定の象限に回転している。
【0049】
オフセット選択部75は、象限選択部74から勾配方向の象限の入力を受け付けて、これに応じたオフセット値を選択して加算部77に出力する。
より具体的には、オフセット選択部75は、第1象限~第4象限にそれぞれ対応させたオフセット値0、9、18、27の入力を受け付け、象限選択部74が判別した象限に対応するオフセット値を選択して加算部77に出力する。
【0050】
1つの象限で勾配方向を9方向に量子化するため、勾配方向が第2象限にあった場合、回転後のfx、fyで量子化した方向を表す数値にオフセット値として9を加算すれば、反時計方向に90°回転して第2象限に戻した方向となる。同様に、勾配方向が第1象限、第3象限、第4象限の場合は、量子化した方向の数値に、それぞれオフセット値として0、18、27を加算すれば、元の象限での量子化した方向となる。
このように、勾配方向量子化装置7は、量子化した勾配方向を、回転前の勾配方向の象限に応じた方向に補正する補正手段を備えており、当該補正手段は、量子化した勾配方向を、回転した所定角度だけ逆方向に回転する補正を行う。
【0051】
tanθテーブル72は、図5に示した10°ごとのtanθの近似値を記憶しており、これらを乗算部73に出力する。
乗算部73は、tanθテーブル72が出力した近似値に回転後のfxを乗じて図6のfxtanθを計算して方向選択部76に出力する。
【0052】
方向選択部76は、回転によって第1象限に写像した勾配方向を量子化し、その方向に対応する数値を選択して加算部77に出力する。
より具体的には、方向選択部76は、1番目のθ~9番目のθに、それぞれ対応する0~8の数値の入力を受け付けると共に、tanθテーブル72と回転選択部71からそれぞれfxtanθと回転後のfyの入力を受け付ける。
そして、方向選択部76は、fxtanθを境界値とする範囲のうち、fyがある範囲に対応する方向の数値を選択して出力する。
例えば、fyが1番目のθの範囲にあるとき、方向選択部76は、0を出力する。
【0053】
加算部77は、方向選択部76が出力した数値に、オフセット選択部75が出力したオフセット値を加算することにより、36方向に量子化した勾配方向に対応する数値を出力する。
以上のようにして、勾配方向量子化装置7は、36方向に量子化した勾配方向を、1番目のθから36番目のθに対応する0から35までの整数値によって出力する。
このように、勾配方向量子化装置7は、元の象限に戻す回転により補正した勾配方向を出力する出力手段を備えている。
【0054】
図8は、勾配方向量子化装置7が勾配方向を量子化する手順を説明するためのフローチャートである。
まず、勾配方向量子化装置7は、fxとfyの入力を受け付ける(ステップ305)。
次に、象限選択部74が入力されたfxとfyから勾配方向の象限に対応する数値を選択して出力する(ステップ310)。
次に、オフセット選択部75が象限選択部74が選択した数値に応じてオフセット値を選択して出力する(ステップ315)。
【0055】
一方、回転選択部71は、fx、fy、-fx、-fyから回転後のfx、fyを選択して出力する(ステップ320)。
次に、乗算部73が回転後のfxとtanθテーブルの近似値を乗算してfxtanθの範囲を生成して出力する(ステップ325)。
【0056】
次に、乗算部73が出力したfxtanθの範囲と回転選択部71が出力した回転後のfyに基づいて、方向選択部76が量子化した方向に対応する数値を選択して出力する(ステップ330)。
そして、加算部77が、方向選択部76が出力した数値とオフセット選択部75が出力したオフセット値を加算して量子化した勾配方向に対応する数値を出力し(ステップ335)、後述するメインルーチン(図19)にリターンする。
【0057】
図9は、勾配方向量子化装置7をFPGAに実装した場合のリソース使用量などを説明するための図である。
図9(a)は、小数部のビット幅を0から7まで変化させたときの、LUTとFFのリソースの使用数を示している。
LUTについては、ビット幅が0の時に97個であり、ビット幅が6の時の297個までビット幅が増えるにつれて増えている。ビット幅が7で284個に減少するが、これは次に説明するDSPの使用によって演算の一部が肩代わりされたためと考えられる。
FFについても、ビット幅が0の時の52個からビット幅が6の時の183個まで増えて、ビット幅が7で175個に減少している。
【0058】
ちなみに、逆正接を高位まで計算した場合、LUTは、10,000個程度、FFは6000個程度必要である。
比較のために行った、fxとfyを多数の分岐条件によって分岐させて36方向に量子化する場合についても実験した。
この量子化は、単に、fxとfyの大きさの範囲と、fxとfyの和と差の範囲の組み合わせによって、16の分岐条件によって36方向を場合分けすることにより行った。
この例では、1条件につき、LUTを3,087個、FFを76個使用した。
このように、勾配方向量子化装置7のtanθの近似値を用いた分岐では、多くの計算リソースを節約することができる。
【0059】
図9(b)は、小数部のビット幅を0から7まで変化させたときの、DSP(Digital Signal Processor)リソースの使用数を示している。DSPは、デジタル信号を算術演算する回路である。図に示したように小数のビット幅が0から6までは、DSPを使用せず、7ビットの時に1個使用している。
【0060】
図9(c)は、勾配方向量子化装置7による36方向角度計算の精度を評価したグラフである。
ここでは、全261、121通りの角度に対する一致率を検証した。
角度の一致率は、小数部のビット幅が0の場合から7の場合まで、順に46.7%、57.6%、79.5%、90.1%、96%、97.1%、98.7%、98.8%であった。また、上記の比較のための実験では、91%であった。
また、角度の最大誤差(本来の量子化された角度の隣の角度に分類された場合の数)は、ビット幅が0の場合は2件であったが、1~7では1件であった。
【0061】
このように、小数部のビット幅を増やすと精度が高まるが、ビット幅が4以上ではほぼ横ばいであるため、リソースの使用量を考慮すると、4ビットのビット幅が適当であると思われる。
【0062】
次に、勾配方向量子化装置7を画像認識装置に適用する例について説明する。
この例では、同じ画像の異なる解像度間に渡る勾配方向の共起の出現頻度を特徴量とするMRCoHOG特徴量を混合ガウスモデル(Gaussian Mixture Model、以下GMMと記す)によって抽出する。
本実施形態では、36方向の多方向に勾配方向を量子化するため、共起行列に投票すると次元が大きくなり、多くの計算リソースを必要とする。そのため、以下に説明するGMMによる方法を採用し、FPGAなどの小型の装置にも実装できるようにした。
まず、このような勾配方向から画像認識の基準となるGMMを作成する方法について説明する。
【0063】
図10は、基準となるGMMを作成する方法を説明するための図である。
図10(a)に示したように、画像処理装置8(図17)は、基準となるGMMを作成するための画像2の入力を受け付け、これを複数の同じ矩形形状のブロック領域3A、3B、・・・に区分する。画像2は、例えば、画像認識対象である歩行者を写した画像である。
図では、図示しやすいように4×4に区分しているが、標準的な値は、例えば、4×8である。
なお、ブロック領域3A、3B、・・・を特に区別しない場合は、単にブロック領域3と記す。
【0064】
画像処理装置8は、画像2をブロック領域3に区分すると共に、画像2の解像度を変換し、図10(b)に示したように解像度(画像サイズ)の異なる高解像度画像11、中解像度画像12、低解像度画像13を生成する。画像2の解像度が適当な場合は、画像2をそのまま高解像度画像として使用する。
図では、ブロック領域3Aの部分の高解像度画像11、中解像度画像12、低解像度画像13を示しており、升目は画素を模式的に表している。
【0065】
そして、画像処理装置8は、勾配方向量子化装置7を用いることにより、高解像度画像11、中解像度画像12、低解像度画像13のそれぞれの画素について勾配方向を10°ごとの36方向に量子化して計算する。
画像処理装置8は、このようにして勾配方向を算出すると、注目画素と、これから離れた位置にある画素(以下、オフセット画素)の勾配方向の共起を次のようにして取得する。
【0066】
まず、画像処理装置8は、図10(c)に示したように、高解像度画像11に注目画素5を設定し、高解像度画像11で注目画素5からオフセット距離1(即ち、高解像度において隣接する)にあるオフセット画素1a~1dに着目する。
なお、画素n個分の距離をオフセット距離nと呼ぶことにする。
【0067】
そして、画像処理装置8は、注目画素5とオフセット画素1a~オフセット画素3dとの各勾配方向の共起(勾配方向の組合せ)を取得し、これに対応する点を共起対応点51、51、・・・として、図10(d)に示す特徴面15(1a)~15(3d)にプロットする。図3の例では、共起行列に投票したが、GMMを用いた方式では特徴面15にプロットすることにより投票する。
なお、画像処理装置8は、図10(d)に示した12の特徴面15(1a)~15(3d)を、図10(a)で区分したブロック領域3A、3B、・・・ごとに作成する。
以下、複数の特徴面全体をさす場合には特徴面15という。
【0068】
例えば、図10(c)において、注目画素5とオフセット画素1aの共起をプロットする場合、注目画素5の勾配方向が3番目のθ(勾配方向量子化装置7が出力する数値は2)で、オフセット画素1aの勾配方向が14番目のθ(勾配方向量子化装置7が出力する数値は13)であったとすると、画像処理装置8は、オフセット画素1a用の特徴面15(1a)の横軸(x軸)が3番目のθで縦軸(y軸)が14番目のθである位置に共起対応点51をプロットする。
【0069】
なお、特徴面15のx軸、y軸は10°ごとの36区間に量子化されており、特徴面15は、36×36個の升目からできている。図ではプロットした点を密集した群で表しているが、画像処理装置8は、この量子化した升目ごとにプロットして投票する。
【0070】
そして、画像処理装置8は、高解像度画像11内で、注目画素5を順次移動しながら、注目画素5とオフセット画素1aとの共起を取って特徴面15(1a)にプロットする。
このように特徴面15は、画像中にある特定のオフセット(注目画素5からの相対位置)を持つ2つの勾配方向ペアがどのような出現頻度を持つかを表現している。
【0071】
なお、図10(c)で、図面に向かって注目画素5の右側の画素について共起を観察するのは、まず、注目画素5を図面に向かって左上端の画素から、順次右方向の画素に移動し、右端に達すると、1段下で左端の画素から右方向に移動させるという移動経路を設定しているので、注目画素5の移動に伴って重複する共起の組合せを取得しないようにするためである。
【0072】
また、注目画素5の移動はブロック領域3A内(同一のブロック領域内)で行うが、オフセット画素の選択は、ブロック領域3Aを超える場合でも行われる。
画像2の端部では、勾配方向を算出することができないが、これについては、適当な任意の方法で処理する。
【0073】
次に、画像処理装置8は、注目画素5とオフセット画素1b(図10(c)参照)との勾配方向の共起を取得して、これに対応する共起対応点51を特徴面15(1b)にプロットする。
なお、画像処理装置8は、先に注目画素5とオフセット画素1aで使用した特徴面15(1a)とは、異なる新たな特徴面15を用意し、これに投票する。このように、画像処理装置8は、注目画素5とオフセット画素の相対的な位置関係の組合せごとに特徴面15を生成する。
そして、高解像度画像11内で注目画素5を順次移動しながら、注目画素5とオフセット画素1bとの共起を取って共起対応点51を当該特徴面15(1b)にプロットする。
【0074】
以下同様に画像処理装置8は、注目画素5とオフセット画素1cとの組合せ、及び注目画素5とオフセット画素1dの組合せについても、それぞれに個別の特徴面15(1c)、15(1d)を用意して勾配方向の共起をプロットする。
【0075】
このようにして、画像処理装置8は、注目画素5と、注目画素5からオフセット距離1のオフセット画素1a~1dについての4つの特徴面15を生成すると、次に、高解像度画像11における注目画素5と、オフセット距離2にある中解像度画像12のオフセット画素2a~2dに着目する。
【0076】
そして、上記の手法と同じ手法により、注目画素5とオフセット画素2aの組合せによる特徴面15(2a)、同様にオフセット画素2b、2c、2dの組合せによる特徴面15(2b)~15(2d)を作成する。
【0077】
そして、画像処理装置8は、高解像度画像11における注目画素5と、オフセット距離3にある低解像度画像13のオフセット画素3a~3dについても同様に、注目画素5とオフセット画素3a~3dの相対的な位置関係の組合せごとの特徴面15(3a)~15(3d)を生成する。
画像処理装置8は、以上の処理をブロック領域3B、3C、・・・に対しても行い、画像2の特徴を抽出した複数の特徴面15を生成する。
このように画像処理装置8は、ブロック領域3A、3B、3C・・・ごとに、複数の特徴面15(1a)~15(3d)を生成する。
【0078】
そして、画像処理装置8は、これら特徴面15の各々について、以下のようにしてGMMを生成する。
なお、ここでは、説明を簡単にするため、画像2から作成した特徴面15からGMMを生成するが、より詳細には、多数の学習画像から取得した特徴面15を重ね合わせたものに対してGMMを生成する。
【0079】
図10(e)は、これら複数の特徴面15のうちの1つを表しており、まず、画像処理装置8は、これらの共起対応点51を近いもの同士を組合せることにより混合数K個のクラスタ(グループ)にクラスタリングする。
混合数は、GMMを生成するに際して混合するガウス分布の個数を表しており、これを適当に指定すると、画像処理装置8は、自動的に指定された個数に共起対応点51をクラスタリングする。
【0080】
混合数は、K=6、K=16、K=32、K=64などと、各種の値を設定することができ、混合数の値は、実験などにより決定する。
図10(e)の例では、簡単化のため、K=3とし、共起対応点51は、クラスタ60-1~60-3にクラスタリングしている。
特徴面15にプロットされた共起対応点51、51、・・・は、画像の特徴に応じて集まる傾向があり、クラスタ60-1、60-2、・・・は、画像の特徴を反映したものとなる。
【0081】
図10(f)に示したように、画像処理装置8は、共起対応点51をクラスタリングした後、K個のガウス分布(ガウス分布54-1、54-2、54-3)を線形に重ね合わせた確率密度関数p(x|θ)によって、特徴面15における共起対応点51の確率密度関数53を表す。このようにガウス分布を基底関数(線形和の対象となっている関数であってGMMを構成する要素となっている関数)とし、これによる線形和で表された確率密度関数53がGMMである。
画像処理装置8は、学習した対象と被写体の類否を判断するための基準GMM55として確率密度関数53を使用する。
【0082】
確率密度関数p(x|θ)の具体的な数式は、図10(g)のようになる。
ここで、xは、共起対応点51の分布を表すベクトル量でありθは母数(μj、Σj)(ただし、j=1、2、・・・、K)を表すベクトル量である。
πjは、混合係数と呼ばれ、j番目のガウス分布を選択する確率を表している。μj、Σjは、それぞれ、j番目のガウス分布の平均値と、分散共分散行列を表している。πjとθにより確率密度関数53、即ち、基準GMM55が一意的に定まる。
【0083】
zは、EMアルゴリズムや負担率を計算するのに用いられる潜在パラメータであり、混合するK個のガウス分布に対応してz1、z2、・・・、zKが用いられる。xの分布から事後的にzの確率を計算したものが負担率となる。
EMアルゴリズムは、説明は省略するが、尤度を最大化するπjと母数(μj、Σj)を推定するアルゴリズムであり、画像処理装置8は、EMアルゴリズムを適用することによりπj、θを決定し、これによってp(x|θ)を求める。
【0084】
基準GMM55は、クラスタ60-1、60-2、60-3の位置にあるガウス分布54-1、54-2、54-3(図示せず)を基底関数とし、これらを混合して形成される。
そして、基準GMM55を用いて各共起対応点51のガウス分布54-1、54-2、54-3に対する負担率を計算し、これをガウス分布54-1、54-2、54-3に投票したガウス分布54ごとの合計値がMRCoHOG特徴量となる。
なお、以下では、ガウス分布54-1、54-2、54-3を特に区別しない場合は、単にガウス分布54と記すことにし、他の構成要素についても同様とする。
【0085】
このようにして生成したMRCoHOG特徴量を用いて画像認識を行うのであるが、基準GMM55を直接適用して負担率を計算する場合、計算能力の高い計算機を要する。
そのため、計算リソースが限られた機器へ実装する場合、従来は、基準GMM55を用いて予め作成した負担率テーブルをメモリに用意し、このテーブルを参照することにより各ガウス分布54に対する負担率を取得していた。
これには、大きなメモリ資源を要し、画像認識装置をFPGAやICチップなどの小型・安価な半導体装置で実現するには不向きであった。
【0086】
そこで、本実施形態では、計算が容易な基準GMM55の近似式を画像処理装置8に実装することにより、負担率テーブルを参照せずに、少数のパラメータを用いたハードウェア指向の簡単な計算で負担率を計算できるようにした。以下、その方法について説明する。
【0087】
図11の各図は、基準GMM55の近似を説明するための図である。
図11(a)の楕円62-1、62-2、62-3は、基準GMM55の本来の基底関数であるガウス分布54-1、54-2、54-3を適当な高さ(p(x|θ))で輪切りにして基準GMM55の定義域であるxy平面上に投影したものである。
【0088】
これら楕円62-1、62-2、62-3は、クラスタ60-1、60-2、60-3の位置に対応して形成されている。
これら楕円62は、ガウス分布54から求めてもよいし、あるいは、クラスタ60をバランスよく囲む形を適当に設定してもよい。
【0089】
ガウス分布54は、2変数の正規分布であるため、所定のp(x|θ)で輪切りにしたラインの幅は、これら2変数の標準偏差の幅を反映し、主軸(長軸)と副軸(短軸)が直行すると共に任意の方向に回転した楕円62となる。
【0090】
本実施形態の基準GMM55は、楕円62と後述の計算式の組み合わせによってガウス分布54を近似したものを基底関数とする。
そして、xy平面上に形成された個別の楕円62を規定するパラメータを当該計算式に代入すると個別のガウス分布54を近似する個別の基底関数が形成されるようになっている。
これにより基準GMM55を用いた負担率の計算が容易になる。
【0091】
楕円62は、式(1)で表され、画像処理装置8が楕円62を特定するために記憶すべきパラメータは、楕円62ごとの係数A、B、Cと楕円62の中心の座標値(x0、y0)だけである。
必要とするメモリは、1つの楕円62あたり、5×64=320ビットであり、画像認識に要するメモリは、合計で39.4KB程度と少量で済む。
なお、x0などの下付文字0は、文字の誤変換を防止するため全角文字で表してある。以下、他の数式も同様とする。
【0092】
このように主軸が基準GMM55の座標軸から任意の角度だけ回転した状態の楕円62を用いて負担率を計算することも可能であるが、計算が複雑となるため、本実施形態では、図11(b)に示したように、最大幅の方向(主軸の方向)が基準GMM55の座標軸と平行、又は直角となるように楕円62-1、62-2、62-3を回転して楕円63-1、63-2、63-3を設定し、これに基づいて基準GMM55の基底関数を構成した。
【0093】
最大幅の方向をx軸、y軸の何れに平行にするかは、回転角度の少ない方に合わせるが、実験によって回転方向を決定してもよい。
また、回転に伴って、楕円63を大きくしたり扁平にしたりなど、適度に整形することも可能である。
実験によると、楕円62を用いた場合と楕円63を用いた場合では、画像認識精度に大きな差は見られず、楕円63を用いることができることが確認された。
このように、本実施形態で使用する楕円の最大幅の方向は、混合ガウスモデルを定義する直交座標軸に平行又は直角となっている。
【0094】
楕円63は、式(2)で表され、画像処理装置8が楕円63を特定するために記憶すべきパラメータは、楕円63ごとの係数A、Bと楕円62の中心の座標値(x0、y0)だけである。
必要とするメモリは、1つの楕円63あたり、4×64=256ビットであり、画像認識に要するメモリは、合計で31.5KB程度である。
なお、実際に負担率の計算に使用するパラメータは、後述するように、主軸半径(主軸方向のガウス分布の幅)、副軸半径(副軸方向のガウス分布の幅)、及び中心の座標値であるが、この場合も記憶するパラメータは4個なので、メモリ消費量は同じである。
【0095】
次に、基底関数に用いる計算式と負担率の計算方法について説明する。
図12の各図は、負担率の計算に用いるパラメータや変数について説明するための図である。
図12(a)楕円63-i(i番目の楕円63で、楕円63-1、63-2、・・・のうちの何れか、以下、他の構成要素も同様とする)の中心をwiとし、共起対応点51とwiの距離をx軸方向の距離であるdi_xと、y軸方向の距離であるdi_yで表す。
このような座標軸に沿って計測した距離はマンハッタン距離と呼ばれ、ユーグリッド距離に比べてハードウェアでの計算が容易になる。
【0096】
また、図12(b)に示したように、楕円63-iのx軸方向の半径(幅)とy軸方向の半径(幅)を2のn乗(nは0以上の整数、0以上の整数による2の冪乗とも言えるし、あるいは0乗を含む2の累乗とも言える)で表し、それぞれの幅を、2のri_x乗、2のri_y乗で量子化する。ri_xとri_yは、0、1、2、・・・となる0以上の整数である。
【0097】
この量子化は、図12(c)の幅量子化テーブルに従って近似することにより得られたものである。例えば、楕円の半径はガウス分布の幅である標準偏差σに対応するが、1<σ≦2の場合は2の1乗、2<σ≦4の場合は2の2乗、・・・、などと近似する。
このように楕円63の半径を2のn乗で近似・量子化することによりビットシフトによる演算が可能となる。
【0098】
図13は、負担率の計算式を説明するための図である。
負担率とは、潜在変数zの事後分布であり(共起対応点51が与えられたときのzの分布)、p(kz=1|x)で表される。
共起対応点51の分布がガウス分布54-1、ガウス分布54-2、・・・の形成に寄与し、GMMはガウス分布の線形和であるため、これが積み重なって(その合計として)基準GMM55の確率密度関数53が構成されている。
そのとき、ある共起対応点51が、ガウス分布54-1、ガウス分布54-2、・・・に属する確率(寄与している割合)が当該共起対応点51の各ガウス分布54に対する負担率となる。
【0099】
ここでは、コンピュータによる計算を容易にするため、図13に示した式(3)で定義されるsi_x,i_yで混合ガウス分布を構成するガウス分布を近似し、式(4)のziによる計算式によって負担率を近似する。即ち、楕円63-iのパラメータで規定されるsi_x,i_yが基底関数に相当し、ziが、当該基底関数に対応する特徴量の計算式に相当する。
これらの式は、ハードウェアへの実装を容易にするために新たに考案したものである。
共起の分布とパラメータをziの式に代入することにより、混合ガウスモデルを用いた画像の特徴量であるところの負担率を近似的に容易に計算することができる。
【0100】
図14は、基底関数をより詳細に説明するための図である。
図13に示した式(3)、(4)は、x軸、y軸方向の2変数に対する式を1つにまとめたものとなっており、分かりやすくするためにこれを1変数にしたのが図14(a)の式(5)、(6)である。
【0101】
図のグラフに示したように、ziは、共起対応点51と楕円63-iの中心の間の距離diが0のとき1となり、diが中心から離れるに従って徐々に小さくなる。そして、ziは、siが1のとき(即ち、di=2の(ri-log2a乗)のとき)、1/2となり、更にdiが大きくなると、次第に0に近づいていく。
ziの広がり具合は、楕円63-iの半径riによって規定され、riが小さいほど急峻な形状となる。
【0102】
なお、2を底とするlog2aの項aは、計算精度を規定する項であり、ハードウェア化を行う場合は、通常a=8ビット、又は16ビットに設定する。この項を無視するなら、diが楕円63の幅に等しいときziは1/2となる。
【0103】
このように、ziは、ガウス分布と似た性質を有しており、当該計算式によりガウス分布を好適に近似することができる。
また、siにおいてdiは、2の(ri-log2a)乗で除しているが、2のn乗による除算はビットシフトによりハードウェアできわめて容易にできるため、ziを用いることによりガウス分布の近似をビットシフトで行うことができる。
そこで、ガウス分布54-iをziで近似し、ガウス分布54-iに属する確率を近似的に表すziを負担率として採用する。
【0104】
以上は、負担率を計算するための計算式を図13の式(4)で定義したが、これに限定するものではなく、楕円63に基づいて共起対応点51のガウス分布54への属する割合を割り振ることができるものであれば基底関数として適用できる。
【0105】
例えば、図14(b)に示したように、0≦di<2のri乗でzi=1であり、1≦riでzi=0となる関数や(2次元の場合は半径の幅が2のri_x乗と、2のri_y乗の楕円柱となる)、図14(c)に示したように、diが0からriに増えるにつれてziが直線的に減少し、1≦2のri乗でzi=0となる関数や(2次元では、底面の半径の幅が2のri_x乗と、2のri_y乗の楕円となる楕円錐)、その他、楕円63に局在したウェーブレット型やガボール型の関数を使用することなどができる。
これらの基底関数が画像認識にどの程度利用できるかは、実験により検証される。
【0106】
図15の各図は、負担率の具体的な計算を説明するための図である。
図15(a)に示したように、楕円63-iの内部にある共起対応点51を考え、この点の楕円63-iに対する負担率を求める。
図15(b)に示したように、楕円63-iのx軸方向の半径2のri_x乗を2の5乗、y軸方向の半径2のri_y乗を2の3乗とする。
また、楕円63-iの中心wiの座標値を(10、25)、共起対応点51の座標値を(25、20)とする。
【0107】
図15(c)に示したように、x軸方向に関しては、di_x=15、ri_x=5である。これらを図13の式(3)に代入して計算するとsi_x=3.75となる。
一方、図に示したようにdi_xをビット列(000000001111)で表し、これを2の2乗で割るため-2だけシフトすると(即ち、2だけ右にシフトすると)si_xに対応するビット列(000000000011)が得られる。
このビット列が表す値を10進数に変換すると、図に示したように3となり、先に計算した値の小数点以下を切り捨てた値となる。なお、小数点以下の誤差は無視する。
【0108】
図15(d)に示したように、y軸方向に関しては、di_y=5、ri_y=3である。これらを図13の式(3)に代入して計算するとsi_y=5となる。
一方、図に示したようにdi_yをビット列(000000000101)で表し、これを2の0乗で割るため0だけ右にシフトすると(即ちシフトしないと)si_yに対応するビット列(000000000101)が得られる。
このビット列が表す値を10進数に変換すると、図に示したように5となり、先に計算した値と等しくなる。
【0109】
このため、図15(e)に示したように、共起対応点51のガウス分布54-i(楕円63-iに対応するガウス分布54-i)に対する負担率ziは、zi_xとzi_yを加えて0.1406・・・と近似される。
同様にして、楕円63-(i+1)やその他の楕円63に対しても図13の式(4)を適用して共起対応点51のこれらガウス分布54に対する負担率(の近似値)も計算することができる。
【0110】
このようにしてある共起対応点51の各ガウス分布54に対する負担率を計算することができるが、これを全ての共起対応点51に対して計算して得られた負担率をガウス分布54ごとに集計(投票)すると共に、これを全ての特徴面15について行って連結し、更に正規化するとMRCoHOG特徴量が得られる。
【0111】
図16は、負担率の量子化を説明するための図である。
画像処理装置8は、図13の式(4)によって負担率を計算した後、更に、これを2のn乗に量子化することによりメモリ消費を節約する。
図16(a)は、量子化しない場合のガウス分布54-iに対する負担率の例を示している。
なお、この例では混合数K=6とし、iは1から6までの値をとる。
負担率を量子化しない場合、例えば、ガウス分布54-1における負担率が0.4、ガウス分布54-2における負担率が0.15、・・・などと64ビット表現になる。
【0112】
図16(b)は、負担率の量子化テーブル21の例を示している。
量子化テーブル21は、負担率の64ビット表現を0.875以上の場合、0.75以上0.875未満の場合、0.625以上0.75未満の場合、・・・の8段階に区分し、これらを、それぞれ、(2の0乗)+(2の-3乗)、(2の-1乗)+(2の-2乗)、・・・のシフト加算(2のn乗の加算)による3ビット表現に近似している。
【0113】
画像処理装置8は、負担率を計算すると、量子化テーブル21を参照してこれを3ビット表現に近似することによりメモリ消費を節約する。
なお、試算によると、例えば、64ビット表現の場合は20412KBのメモリを消費するが、3ビット表現の場合のメモリ消費量は319KBである。
また、負担率をシフト加算の形に量子化すると、後のハードウェアによる計算が容易となる。
【0114】
以上、画像からMRCoHOG特徴量を負担率によって抽出する方法について説明したが、当該特徴量を予め対象を学習した既存のニューラルネットワークなどの識別器に入力して画像認識を行うことができる。
【0115】
図17は、画像処理装置8のハードウェア的な構成の一例を示した図である。
図17(a)に示した画像処理装置8は、例えば、車両に搭載され、歩行者などを画像認識する。
この例では、半導体装置85でMRCoHOG特徴量を抽出し、CPU81で被写体を画像認識する。
これは、一例であって、画像認識まで半導体装置85で行ったり、あるいは、GPU(Graphics Processing Unit)を搭載した小型のシングルボードのコンピュータで全体を構成したりなど、各種の形態が可能である。
【0116】
画像処理装置8は、CPU81、ROM82、RAM83、記憶装置84、半導体装置85、入力部86、及び出力部87などがバスラインで接続されて構成されている。
CPU81は、中央処理装置であって、記憶装置84が記憶する画像認識プログラムに従って動作し、半導体装置85が抽出した特徴量を用いて画像認識処理を行う。
【0117】
ROM82は、読み出し専用のメモリであって、CPU81を動作させるための基本的なプログラムやパラメータを記憶している。
RAM83は、読み書きが可能なメモリであって、CPU81が画像認識処理を行う際のワーキングメモリを提供する。
【0118】
記憶装置84は、ハードディスクや半導体記憶装置などの大容量の記憶媒体を用いて構成されており、画像認識プログラムを記憶している。
入力部86は、操作担当者からの入力を受け付けるなどの入力デバイスを備えており、画像処理装置8に対する各種操作を受け付ける。
出力部87は、操作担当者に各種の情報を提示するディスプレイ、スピーカなどの出力デバイスを備えており、画像処理装置8の操作画面や画像認識結果などを出力する。
【0119】
半導体装置85は、例えば、FPGAを用いて構成されており、画像データ(動画データ)の入力を受け付けて、GMMによってMRCoHOGによる特徴量を抽出して出力する。
半導体装置85は、図17(b)に示したように、画像入力部91、プロット部92、負担率計算部93、特徴量生成部94から構成されている。
【0120】
以下、画像処理装置8が行う画像認識処理の手順についてフローチャートを用いて説明する。
図18は、画像処理装置8が行う画像認識処理の手順を説明するためのフローチャートである。以下の処理で、特徴量の抽出を行うステップ150~170は半導体装置85が行い、以降の画像認識処理(S175~S185)はCPU81が行う。
【0121】
まず、画像入力部91が、カメラから送信される動画データからフレーム画像を取得する(ステップ150)。
このように、画像処理装置8は、画像を取得する画像取得手段を備えている。
次に、プロット部92が、当該画像に対して後述のプロット処理を行い、勾配方向量子化装置7による勾配方向の計算などを行って、勾配方向の共起による特徴量を当該フレーム画像から抽出する(ステップ155)。
このように、画像処理装置8は、勾配方向量子化装置7によって、画像を構成する各画素の輝度の勾配方向を取得する勾配方向取得手段を備えている。
【0122】
次に、負担率計算部93が、負担率を当該画像の特徴面15ごとに計算する(ステップ160)。
そして、特徴量生成部94が、特徴面15ごとに計算した負担率を全ての特徴面15について連結して対象画像全体の特徴を表す特徴量とし(ステップ165)、これを正規化して出力する(ステップ170)。
このように、画像処理装置8は、勾配方向の分布に基づいて画像の特徴量を取得する特徴量取得手段を備えており、当該特徴量取得手段は、勾配方向の共起の分布を混合ガウス分布で表した負担率によって当該特徴量を取得している。
【0123】
次に、CPU81が、当該正規化した特徴量をニューラルネットワークやその他の識別機構により構成された識別器に入力し、出力された値から当該フレーム画像における歩行者の類比判断を行い(ステップ175)、この類比判断による認識結果を車両の制御系などに出力する(ステップ180)。
このように、画像処理装置8は、特徴量を用いて画像を画像認識する画像認識手段を備えている。
そして、CPU81は、認識対象の追跡を継続する場合は(ステップ185;Y)、ステップ150に戻って、半導体装置85が出力する次の特徴量による認識を行い、追跡を継続しない場合は(ステップ185;N)、処理を終了する。
【0124】
図19は、図18におけるステップ155のプロット処理の手順を説明するためのフローチャートである。
まず、プロット部92は、画像入力部91が処理した画像を読み込む(ステップ5)。
次に、プロット部92は、当該画像をブロック領域3に区分し、当該区分の位置を記憶する(ステップ10)。
【0125】
次に、プロット部92は、区分した高解像度画像11のブロック領域3のうちの1つを選択し(ステップ15)、これから共起対象の高解像度画像11の画素、中解像度画像12の画素、低解像度画像13の画素を生成して記憶する(ステップ20)。
なお、当該画像をそのまま高解像度画像11として使用する場合は、当該画像の画素を解像度変換せずに高解像度画像11の画素として使用する。
【0126】
次に、プロット部92は、生成した高解像度画像11、中解像度画像12、低解像度画像13の個々の画素について勾配方向を勾配方向量子化装置7で算出(図8参照)して記憶する(ステップ25)。
次に、プロット部92は、高解像度画像11内、高解像度画像11と中解像度画像12の間、及び高解像度画像11と低解像度画像13の間で勾配方向の共起を取って特徴面15にプロットして記憶する(ステップ30)。これにより当該ブロック領域3Aによる特徴面15が得られる。
【0127】
次に、プロット部92は、全ての画素についてプロットしたか否かを判断する(ステップ35)。
まだ、プロットを行っていない画素がある場合(ステップ35;N)、プロット部92は、ステップ20に戻って次の画素を選択し、これについて特徴面15へのプロットを行う。
【0128】
一方、当該ブロック領域3についての全画素についてプロットした場合(ステップ35;Y)、プロット部92は、全てのブロック領域3についてプロットしたか否かを判断する(ステップ40)。
まだ、プロットを行っていないブロック領域3がある場合(ステップ40;N)、プロット部92は、ステップ15に戻って次のブロック領域3を選択し、これについて特徴面15へのプロットを行う。
一方、全てのブロック領域3についてプロットした場合(ステップ40;Y)、プロット部92は、全てのブロック領域3ごとのオフセット画素ごとに生成した特徴面15を出力し(ステップ45)、図18のメインルーチンにリターンする。
【0129】
図20は、図18におけるステップ160の負担率計算処理を説明するためのフローチャートである。
まず、負担率計算部93は、処理対象とする特徴面15を選択する(ステップ205)。
次に、負担率計算部93は、選択した特徴面15から共起対応点51を選択してその座標値を記憶する(ステップ210)。
【0130】
次に、負担率計算部93は、楕円63-iをカウントするパラメータiを1に初期化して記憶する(ステップ215)。
次に、負担率計算部93は、ステップ210で記憶した共起対応点51の座標値を読み込むと共に、楕円63-iのパラメータ(中心座標値(x0、y0)、及び主軸と副軸の幅を規定するri_xとri_y)も読み込み、これらを図13の式(3)、(4)に代入して当該共起対応点51のガウス分布54-i(楕円63-iに対応するガウス分布)における負担率の近似値を計算する。
更に、画像処理装置8は、当該負担率の近似値を量子化テーブル21を参照して量子化し、最終的な負担率として記憶する(ステップ220)。
【0131】
次に、負担率計算部93は、ガウス分布54-iの負担率の合計値に当該負担率を加算して記憶することにより、当該負担率をガウス分布54-iに投票する(ステップ225)。
次に、負担率計算部93は、iを1だけインクリメントして記憶し(ステップ230)、記憶したiが混合数K以下か否かを判断する(ステップ235)。
【0132】
iがK以下であった場合(ステップ235;Y)、負担率計算部93は、ステップ220に戻り、次のガウス分布54-iに対して同様の処理を繰り返す。
一方、iがKより大きい場合(ステップ235;N)、当該共起対応点51について全てのガウス分布54に対して投票したため、負担率計算部93は、特徴面15の全ての共起対応点51に対して負担率を計算したか否かを判断する(ステップ240)。
【0133】
まだ、負担率を計算していない共起対応点51がある場合(ステップ240;N)、負担率計算部93は、ステップ210に戻って次の共起対応点51を選択する。
一方、全ての共起対応点51について負担率を計算した場合(ステップ240;Y)、負担率計算部93は、当該特徴面15による負担率を特徴量生成部94に出力し(ステップ243)、更に、全ての特徴面15について負担率による各ガウス分布54への投票処理を行ったか否かを判断する(ステップ245)。
【0134】
まだ処理を行っていない特徴面15がある場合(ステップ245;N)、負担率計算部93は、ステップ205に戻って次の特徴面15を選択する。
一方、全ての特徴面15に対して処理を行った場合(ステップ245;Y)、プロット処理を終了し、図18のメインルーチンにリターンする。
【0135】
図21は、本実施形態による画像認識の実験結果を示したグラフである。
図21(a)、(b)は、それぞれ混合数K=16、32の場合を表している。
縦軸は画像認識における正検出率を表しており、横軸は誤検出率を表している。
曲線Aは、arctanθを計算し、勾配方向の近似を行わなかった場合、曲線Bは、画像処理装置8によって小数部のビット幅を6とした場合、曲線Cは、fxとfyの大きさの範囲と、fxとfyの和と差の範囲の組み合わせによって、多数の分岐によって36方向を場合分けした場合の結果を表している。
正答率が高いほど(曲線が上に位置するほど)性能が高いことを示している。
何れの混合数においても、ビット幅を6とした場合は、近似を行わない場合に次いで、これに近い正検出率を示しており、多分岐を行った場合よりもよい成績を示している。
このように、画像処理装置8を小規模のハードウェアへの実装に適しているとともに高い画像認識能力を発揮することができる。
【0136】
以上に説明したように、勾配方向量子化装置7は、y/xがθと相関関係にあることを利用して、計算リソースを抑えつつ、少ない分岐条件で高精度な勾配方向の計算を行うことができる。
また、勾配方向の境界条件に用いる定数(tanθの近似値)の精度は量子化に用いるビット数で制御することができ、また、使用する計算リソースの量もビット数で制御できる。
【0137】
上の例では、一例として10°ごとに36方向へ量子化したが、更に多くの、あるいは少ない方向へ量子化することも可能である。tanθの近似値を境界とするので他の角度への拡張は容易である。
また、36方向のときは、小数部のビット幅が4、72方向のときは、小数部のビット幅が7など、量子化する方向に連動してビット幅を変化させるように構成することもできる。
更に、0°~10°、10°~30°、30°~45°、・・・などと不均等な角度範囲で量子化することもできる。
【0138】
勾配方向(角度)の計算に計算リソースの使用量が大きい三角関数や除算を避けて実装できるため、勾配方向量子化装置7による勾配方向計算アルゴリズムをFPGAなど計算リソースが限られた機器へ実装することができる。
【符号の説明】
【0139】
2 画像
3 ブロック領域
5 注目画素
7 勾配方向量子化装置
8 画像処理装置
11 高解像度画像
12 中解像度画像
13 低解像度画像
15 特徴面
21 量子化テーブル
51 共起対応点
53 確率密度関数
54 ガウス分布
55 基準GMM
60 クラスタ
62 楕円
63 楕円
81 CPU
82 ROM
83 RAM
84 記憶装置
85 半導体装置
86 入力部
87 出力部
71 回転選択部
72 tanθテーブル
73 乗算部
74 象限選択部
75 オフセット選択部
76 方向選択部
77 加算部
91 画像入力部
92 プロット部
93 負担率計算部
94 特徴量生成部
101 画像
102 セル
106 ヒストグラム
107 HOG特徴量
110 注目画素
113 共起行列
117 CoHOG特徴量
120 高解像度画像
121 中解像度画像
122 低解像度画像
125 注目画素
127 MRCoHOG特徴量
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21