(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-04-18
(45)【発行日】2023-04-26
(54)【発明の名称】勾配方向ヒストグラムの演算のためのハードウェアアクセレレータ
(51)【国際特許分類】
G06T 7/70 20170101AFI20230419BHJP
【FI】
G06T7/70 B
(21)【出願番号】P 2019556907
(86)(22)【出願日】2018-04-17
(86)【国際出願番号】 US2018027959
(87)【国際公開番号】W WO2018195069
(87)【国際公開日】2018-10-25
【審査請求日】2021-04-12
(32)【優先日】2017-04-18
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2018-04-16
(33)【優先権主張国・地域又は機関】US
【前置審査】
(73)【特許権者】
【識別番号】507107291
【氏名又は名称】テキサス インスツルメンツ インコーポレイテッド
(74)【代理人】
【識別番号】230129078
【氏名又は名称】佐藤 仁
(72)【発明者】
【氏名】アイシュワルヤ ドゥバイ
【審査官】真木 健彦
(56)【参考文献】
【文献】米国特許出願公開第2017/0098135(US,A1)
【文献】米国特許出願公開第2016/0203384(US,A1)
【文献】米国特許出願公開第2017/0091575(US,A1)
【文献】特開2015-184908(JP,A)
【文献】Pei-Yin Chen et al.,An Efficient Hardware Implementation of HOG Feature Extraction for Human Detection,IEEE Transactions on Intelligent Transportation Systems,Volume: 15, Issue: 2,IEEE,2013年10月28日,P.656-662,https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=6648678,IEL Online IEEE Xplore
【文献】露木 明宣 他,ハードウェア構成に適したHOG特徴量計算手法と回路構成,FIT2012 第11回情報科学技術フォーラム, 第3分冊,日本,一般社団法人電子情報通信学会 一般社団法人情報処理学会,2012年08月21日,P.203-204
(58)【調査した分野】(Int.Cl.,DB名)
G06T 7/00
G06T 7/70
G06T 1/20
(57)【特許請求の範囲】
【請求項1】
勾配方向ヒストグラムの計算のためのハードウェアアクセレレータであって、
或る画素の勾配G
x及びG
yを計算するように構成される勾配計算構成要素と、
ビン識別構成要素であって、
複数の代表的な方位角の各代表的な方位角に対してG
yの値を推定し、
各推定されたG
yの値を前記勾配計算構成要素によって計算された前記G
yと比較し、
各推定されたG
yの値の前記勾配計算構成要素によって計算された前記G
yとの比較と、G
xと、G
x及びG
yの符号とに基づいて、前記画素に対して角度ビンのビン識別子を決定する、
ように構成される、前記ビン識別構成要素と、
前記複数の代表的な方位角に基づいて
前記画素に対して前記勾配
の複数の大きさを
並行して決定するように構成される大きさ
計算構成要素と、
前記ビン識別子と前記G
x
及びG
y
の符号とに基づいてセレクタ値を決定するように構成される大きさセレクタ構成要素と、
前記セレクタ値に基づいて前記画素に対して前記勾配の大きさG
mag
を選択するように構成されるマルチプレクサと、
を含む、ハードウェアアクセレレータ。
【請求項2】
請求項1に記載のハードウェアアクセレレータであって、
前記複数の代表的な方位角の各々が0~90度の象限にある、ハードウェアアクセレレータ。
【請求項3】
請求項1に記載のハードウェアアクセレレータであって、
前記ビン識別構成要素が、
前記複数の代表的な方位角の各代表的な方位角に対して、θを前記代表的な方位角としてG
y=G
x*tan(θ)により前記G
yの値を推定し、
前記勾配の実際の方位角に最も近い前記代表的な方位角を選択するために前記推定されたG
yの値を前記勾配計算構成要素によって計算された前記G
yと比較し、
前記選択された代表的な方位角と前記符号とを用いて前記ビン識別子を決定する、
ように更に構成される、ハードウェアアクセレレータ。
【請求項4】
請求項3に記載のハードウェアアクセレレータであって、
前記大きさ
計算構成要素が、前記複数の代表的な方位角の各代表的な方位角に対して、θを代表的な方位角としてG
mag=G
x*sec(θ)によりG
magの値を生成
するように更に構成され、
前記マルチプレクサが、前記ビン識別子を決定するために用いられた前記選択された代表的な方位角に対応する前記G
mag値を選択するように更に構成される、ハードウェアアクセレレータ。
【請求項5】
請求項
1に記載のハードウェアアクセレレータであって、
前記ビン識別子構成要素が、G
x*tan(θ)を計算するために制限された範囲の座標回転デジタルコンピュータ(CORDIC)エンジンを実装し、前記大きさ
計算構成要素が、G
x*sec(θ)を計算するために制限された範囲のCORDICエンジンを実装する、ハードウェアアクセレレータ。
【請求項6】
ハードウェアアクセレレータにおける勾配方向ヒストグラムの計算のための方法であって、
前記ハードウェアアクセレレータの勾配計算構成要素において、或る画素の勾配G
x及びG
yを計算することと、
複数の代表的な方位角の各代表的な方位角に対するG
yの値を推定することと、
各推定されたG
yの値を前記勾配計算構成要素によって計算された前記G
yと比較することと、
前記ハードウェアアクセレレータのビン識別構成要素において前記画素に対して角度ビンのビン識別子を決定することであって、前記ビン識別子が、各推定されたG
yの値の前記勾配計算構成要素によって計算された前記G
yとの比較と、G
xと、G
xとG
yとの符号とに基づいて決定される、前記ビン識別子を決定することと、
前記ハードウェアアクセレレータの大きさ
計算構成要素
を用いて前記画素に
対して
前記勾配
の複数の大きさを
並行して決定することであって、前記大きさが前記複数の代表的な方位角に基づいて決定される、前記勾配
の複数の大きさを決定することと、
前記ハードウェアアクレレレータのセレクタ構成要素を用いて前記ビン識別子と前記G
x
及びG
y
の符号とに基づいてセレクタ値を決定することと、
前記ハードウェアアクレレレータのマルチプレクサを用いて前記セレクタ値に基づいて前記画素に対して前記勾配の大きさG
mag
を選択することと、
を含む、方法。
【請求項7】
請求項
6に記載の方法であって、
前記複数の代表的な方位角の各々が0~90度の象限にある、方法。
【請求項8】
請求項
6に記載の方法であって、
前記ビン識別子を決定することが、
前記複数の代表的な方位角の各代表的な方位角に対して、θを前記代表的な方位角としてG
y=G
x*tan(θ)により前記G
yの値を推定することと、
前記勾配の実際の方位角に最も近い前記代表的な方位角を選択するために、前記推定されたG
yの値を前記勾配計算構成要素によって計算された前記G
yと比較することと、
前記選択された代表的な方位角と前記符号とを用いて前記ビン識別子を決定することと、
を含む、方法。
【請求項9】
請求項
8に記載の方法であって、
前記勾配の
複数の大きさを決定することが、前記複数の代表的な方位角の各代表的な方位角に対して、θを代表的な方位角としてG
mag=G
x*sec(θ)によりG
magの値を生成すること
を含み、
前記勾配の大きさG
mag
を選択することが、前記ビン識別子を決定するために用いられた前記選択された代表的な方位角に対応する前記G
mag値を選択することを含む、方法。
【請求項10】
請求項
9に記載の方法であって、
制限された範囲の座標回転デジタルコンピュータ(CORDIC)エンジンを用いてG
x*tan(θ)を計算し、制限された範囲のCORDICエンジンを用いてG
x*sec(θ)を計算する、方法。
【請求項11】
システムオンチップ(SOC)であって、
勾配方向ヒストグラム(HOG)計算のためのハードウェアアクセレレータであって、
或る画像における各画素に対して、複数の代表的な方位角の各代表的な方位角に対して勾配G
yの値を推定し、
各推定されたG
yの値を計算されたG
yと比較し、
各推定されたG
yの値のG
yの値との比較と、計算されたG
xと、G
xとG
yとの符号とに基づいて前記画素に対してビン識別子を決定し、
画素に対して
前記複数の代表的な方位角に基づいて決定される前記勾配
の複数の大きさを
並行 して決定し、
前記ビン識別子と前記G
x
及びG
y
の符号とに基づいてセレクタ値を決定し、
前記セレクタ値に基づいて前記勾配の大きさG
mag
を選択する、
ように構成可能である、前記ハードウェアアクセレレータと、
前記ビン識別子と前記勾配
の大きさとを格納するように前記ハードウェアアクセレレータに結合されるメモリと、
前記メモリに結合されるHOGジェネレータであって、前記ハードウェアアクセレレータによって生成された
前記ビン識別子と前記勾配
の大きさとを用いてHOG記述子を生成するように構成可能である、前記HOGジェネレータと、
前記メモリと前記ハードウェアアクセレレータとに結合されるプロセッサであって、複数のオブジェクトを検出するようにプログラムされるビジョン処理アプリケーションを実行するように動作可能であり、前記ビジョン処理アプリケーションが、前記ビン識別子と前記勾配
の大きさとを生成するように前記ハードウェアアクセレレータを構成し、前記ビン識別子と前記勾配
の大きさとを用いて前記複数のオブジェクトの各オブジェクトに対してHOG記述子を生成するように前記HOGジェネレータを構成する、ソフトウェア命令を含む、前記プロセッサと、
を含む、SOC。
【請求項12】
請求項
11に記載のSOCであって、
前記ハードウェアアクセレレータが、
前記画素の勾配G
x及びG
yを計算するように構成される勾配計算構成要素と、
各推定されたG
yの値の前記勾配計算構成要素によって計算された前記G
yとの比較と、G
xと、G
xとG
yとの符号とに基づいて前記画素に対して角度ビンのビン識別子を決定するように構成されるビン識別構成要素と、
を含む、SOC。
【請求項13】
請求項
12に記載のSOCであって、
前記複数の代表的な方位角の各々が0~90度の象限にあり、前記ビジョン処理アプリケーションが前記ハードウェアアクセレレータにおいて前記複数の代表的な方位角を構成する、SOC。
【請求項14】
請求項
12に記載のSOCであって、
前記ビン識別構成要素が、
前記複数の代表的な方位角の各代表的な方位角に対して、θを前記代表的な方位角とするG
y=G
x*tan(θ)により前記G
yの値を推定し、
前記勾配の実際の方位角に最も近い前記代表的な方位角を選択するために、前記推定されたG
yの値を前記勾配計算構成要素によって計算された前記G
yと比較し、
前記選択された代表的な方位角と前記符号とを用いて前記ビン識別子を決定する、
ように更に構成される、SOC。
【請求項15】
請求項
14に記載のSOCであって、
前記
ハードウェアアクセレレータが、
前記複数の代表的な方位角の各代表的な方位角に対して、θを代表的な方位角とするG
mag=G
x*sec(θ)によりG
magの値を生成
するように構成される大きさ計算構成要素と、
前記ビン識別子を決定するために用いられた前記選択された代表的な方位角に対応する前記G
mag値を選択する
ように構成されるマルチプレクサと、
を更に
含む、SOC。
【請求項16】
勾配方向のヒストグラム(HOG)計算ためにハードウェアアクセレレータを用いる方法であって、
或る画像における各画素に対して、複数の代表的な方位角の各代表的な方位角に対して勾配G
yの値を推定することと、
前記推定されたG
yの値を各画素に対する計算されたG
yと比較することと、
前記推定されたG
yの値の前記計算されたG
yとの比較と、計算されたG
xと、G
xとG
yとの符号とに基づいて各画素に対してビン識別子を決定することと、
前記画素に対して
前記複数の代表的な方位角に基づいて決定される前記勾配
の複数の大きさを
並行して決定することと、
前記ビン識別子と前記G
x
及びG
y
の符号とに基づいてセレクタ値を決定することと、
前記セレクタ値に基づいて前記勾配の大きさG
mag
を選択することと、
前記ビン識別子と前記勾配
の大きさとを用いて複数のタイプのオブジェクトの分類のためのHOG記述子を計算することと、
を含む、方法。
【請求項17】
請求項
16に記載の方法であって、
少なくとも1つのタイプのオブジェクトについての検出ウィンドウサイズが、別のタイプのオブジェクトの検出ウィンドウサイズと異なる、方法。
【請求項18】
請求項
16に記載の方法であって、
前記
勾配Gyの値を推定することが、前記ハードウェアアクセレレータの勾配計算構成要素において或る画素の勾配G
x及びG
yを計算すること
を含み、
前記ビン識別子を決定することが、前記ハードウェアアクセレレータのビン識別構成要素において前記画素に対して角度ビンのビン識別子を決定することであって、前記ビン識別子が、各推定されたG
yの値の前記計算されたG
yとの比較と、G
xと、G
xとG
yとの符号とに基づいて決定される、前記角度ビンのビン識別子を決定することを含む、方法。
【請求項19】
請求項
18に記載の方法であって、
前記複数の代表的な方位角の各々が0~90度の象限にある、方法。
【請求項20】
請求項
18に記載の方法であって、
前記角度ビンのビン識別子を決定することが、
前記複数の代表的な方位角の代表的な方位角各々に対して、θを前記代表的な方位角としてG
y=G
x*tan(θ)により前記G
yの値を推定することと、
前記勾配の実際の方位角に最も近い前記代表的な方位角を選択するために、前記推定されたG
yの値を前記勾配計算構成要素によって計算された前記G
yと比較することと、
前記選択された代表的な方位角と前記符号とを用いて前記ビン識別子を決定することと、
を
更に含む、方法。
【請求項21】
請求項
20に記載の方法であって、
前記勾配
の複数の大きさを決定することが、前記複数の代表的な方位角の代表的な方位角各々に対して、θを代表的な方位角としてG
mag=G
x*sec(θ)によりG
magの値を生成すること
を含み、
前記勾配の大きさG
mag
を選択することが、前記ビン識別子を決定するために用いられた前記選択された代表的な方位角に対応する前記G
mag値を選択することを含む、方法。
【発明の詳細な説明】
【技術分野】
【0001】
先進運転者支援システム(ADAS)における歩行者認識などの埋込みコンピュータビジョン応用例の場合、高速の加重勾配(角度)計算が必要とされる。例えば、キャニー及びその他の角度エッジ及び特徴検出アルゴリズムには、正確な狭いエッジの保証に役立つよう、画像画素上の勾配方向の計算が必要とされる。別の例において、勾配方向ヒストグラム(HOG:histogram of oriented gradients)の特徴が、一般の物体検出のための多くのビジョンアルゴリズムによって用いられ、こうした一般の物体検出は、画像の複数のウィンドウにおける画素毎の勾配方向の計算及びウィンドウ毎の勾配方向のヒストグラム分布の計算を必要とする。
【背景技術】
【0002】
勾配方向及びヒストグラムの計算は計算コストがかかる。例えば、HOGアルゴリズムの場合、或る画素についてのx及びy勾配の方位角θ並びに勾配の大きさは、下記によって与えられる。
θ(x,y)=tan
-1(G
y/G
x)
ここで、G
x及びG
yは、それぞれの水平及び垂直勾配である。方位角θ及びG
magは、或る画像における複数の重なった検出ウィンドウにおける各画素に対して計算される。埋込みコンピュータビジョン応用例における大画像に対してこのような計算をリアルタイムで実施することは、埋込みデバイスにおいて現在用いられるプロセッサの演算パワーの全部ではないにしても大部分を消費し得る。
【発明の概要】
【0003】
説明される例は、勾配方向のヒストグラムの演算を加速させるための方法及び装置に関する。一態様において、勾配方向ヒストグラムの演算のためのハードウェアアクセレレータが提供される。ハードウェアアクセレレータは、或る画素の勾配Gx及びGyを演算するように構成される勾配演算構成要素、複数の代表的な方位角、Gx、並びにGx及びGyの符号に基づいて、その画素についての角度ビンのビン識別子を決定するように構成されるビン識別構成要素、及び、複数の代表的な方位角とビン識別子とに基づいて勾配の大きさGmagを決定するように構成される大きさ構成要素を含む。
【0004】
一態様において、ハードウェアアクセレレータにおける勾配方向ヒストグラムの演算のための方法が提供される。この方法は、ハードウェアアクセレレータの勾配演算構成要素において或る画素の勾配Gx及びGyを演算すること、ハードウェアアクセレレータのビン識別構成要素においてその画素について角度ビンのビン識別子を決定すること、及び、ハードウェアアクセレレータの大きさ構成要素において勾配Gmagの大きさを決定することを含み、ビン識別子は、複数の代表的な方位角、Gx、並びにGx及びGyの符号に基づいて決定され、勾配Gmagの大きさは、複数の代表的な方位角とビン識別子とに基づいて決定される。
【0005】
一態様において、システムオンチップ(SOC)が提供される。SOCは、勾配方向ヒストグラム(HOG)の演算のためのハードウェアアクセレレータであって、或る画像における各画素に対してビン識別子及び勾配大きさを生成するように構成可能なハードウェアアクセレレータ、ビンID及び勾配大きさをストアするようにハードウェアアクセレレータに結合されるメモリ、メモリに結合されるHOGジェネレータであって、ハードウェアアクセレレータによって生成されるビンID及び勾配大きさを用いてHOG記述子を生成するように構成可能なHOGジェネレータ、及び、メモリ及びハードウェアアクセレレータに結合されるプロセッサを含む。プロセッサは、複数のオブジェクトを検出するようにプログラムされるビジョン処理応用例を実行するように動作可能である。ビジョン処理応用例は、ビンID及び勾配の大きさを生成するようにハードウェアアクセレレータを構成し、ビンID及び勾配大きさを用いて複数のオブジェクトの各オブジェクトに対してHOG記述子を生成するようにHOGジェネレータを構成する、ソフトウェア命令を含む。
【0006】
一態様において、勾配方向ヒストグラム(HOG)の演算のためのハードウェアアクセレレータを用いるための方法が提供される。この方法は、ハードウェアアクセレレータによって或る画像における各画素に対してビン識別子及び勾配大きさを決定すること、及び、ビンID及び勾配大きさを用いて複数のタイプのオブジェクトの分類のためのHOG記述子を演算することを含む。
【図面の簡単な説明】
【0007】
【
図1】勾配方向のヒストグラム(HOG)を計算するための方法のフローチャートである。
【0008】
【0009】
【
図3】例示のマルチプロセッサシステムオンチップ(SOC)のハイレベルブロック図である。
【0010】
【
図4】
図3のSOCの例示のHOGアクセレレータのハイレベルブロック図である。
【0011】
【
図5】或る画素についてのビン識別子及び大きさを決定するための方法のフローチャートである。
【0012】
【
図6】HOG記述子を生成するための方法のフローチャートである。
【発明を実施するための形態】
【0013】
図面において、一貫性のために同様の要素は同様の参照数字で示す。
【0014】
図1は、勾配方向のヒストグラムを計算するための方法のフローチャートである。この方法を
図2の例を参照して説明する。
図2は、歩行者認識のために実施されるHOG演算を表す。他のオブジェクト認識アルゴリズムにおいて、異なるウィンドウサイズについて同様のHOG演算が実施される。概して、HOGは、オブジェクト認識タスクのための特徴セットとして用いられる。基本的な考え方は、局所オブジェクトの外観及び形状が、対応する勾配又はエッジ位置を精密に知ることなく、局所強度勾配又はエッジ方向の分布によって特徴付けられるということである。
【0015】
図2の例において、初期の歩行者の場所を決定するために、或る画像にわたって検出ウィンドウ200がシフトされるスライディングウィンドウ手法が用いられる。各検出ウィンドウに対して、ウィンドウにおける画素からHOG特徴セットが生成され、歩行者の存在について評価される。この例では、検出ウィンドウ200は、64×128画素と仮定する。
【0016】
ここで
図1を参照すると、検出ウィンドウ200における各画素の勾配G
x及びG
yが、大きさG
magとともに演算される(100)。勾配ベクトル又は画像勾配とも称する画素の勾配は、画素の周りでx方向及びy方向に沿って画素値の変化を測定したものである。概して、或る画素についての勾配は、画素を中心とする畳み込みフィルタによって、画像における画素がフィルタによって覆われる状態で演算される。フィルタのサイズ及び構成は変わり得る。大きさG
magは、
により演算される。
【0017】
各画素に対して勾配の方位角θも演算される(102)。或る画素についての方位角θは、
θ=tan
-1(G
y/G
x)
により演算される。次いで、これらの方位角を用いて各画素に対して角度ビンが決定される(104)。ビンを決定するために、検出ウィンドウ200は、セルと称する局所空間領域に分割される。
図2の例において、セル202は8×8画素である。各セルにおける64画素を離散化して、それらの方位角に従った角度ビンにする。角度ビンは、勾配が符号付きか符号なしかによって、0~180度又は0~360度にわたって均一に広がる。例えば、符号付き勾配の場合、0~180度にわたって均一に広がる9個の角度ビンがあり得る。或る画素についての方位角θにより、その画素についての特定のビンが決まる。
【0018】
次いで、勾配方向のヒストグラムが、検出ウィンドウ200における各セルに対し、そのセルにおけるビンと画素の大きさとに基づいて演算される(106)。或るビンに割り当てられる画素の勾配の大きさにより、そのビンに対応するヒストグラムにおけるバーの高さが決まる。すなわち、ヒストグラムにおけるバーの高さは、対応するビンに割り当てられた画素の勾配大きさの関数である。例えば、高さは、画素の大きさの合計又は加重合計であり得る。
【0019】
勾配強さは、影、照明の局所変動、及び前景/背景コントラストなどの要因のため広範囲にわたって変動する。したがって、局所コントラスト正規化が必要とされる。そのために、ブロックと称する空間領域として隣接セルの群を考える。
図2の例において、ブロック204は2×2の隣接セルの群である。各ブロックは、L2ノルムを用いるなどの、正規化された、対応する4個のセルのヒストグラムの連結によって表される。検出ウィンドウ200についての最終的なHOG記述子は、正規化されたブロック応答の連結によって表される。
【0020】
上述したように、埋込みコンピュータビジョン応用例において、大画像に対して勾配方向のヒストグラムをリアルタイムで演算することは、埋込みデバイスにおいて現在用いられるプロセッサの演算パワーの全部ではないにしても大部分を消費し得る。例示の実施形態は、HOG演算のためのハードウェアアクセレレータを提供する。より具体的には、ハードウェアアクセレレータの例が、勾配方向のヒストグラムを演算するために必要とされる画素のビン識別子及び勾配大きさの決定を加速する。
【0021】
図3は、コンピュータビジョン処理をサポートするように構成される例示のマルチプロセッサシステムオンチップ(SOC)300のハイレベルブロック図である。SOC300は、デュアル汎用プロセッサ(GRP)302、デュアルデジタルシグナルプロセッサ(DSP)304、ビジョンプロセッサ306、HOGジェネレータ314、及びHOGアクセレレータ312を含み、これらは高速相互接続322を介して結合される。
【0022】
ビジョンプロセッサ306は、加速テストによる特徴(FAST)の特徴演算、ディープニューラル畳み込みネットワーク演算など、様々なコンピュータビジョン及びその他の信号処理タスクに対して調整されるベクトルプロセッサである。GRP302は、オペレーティングシステムをホストし、HOGアクセレレータ312によって成される処理のスケジューリングを含めてSOC300の動作の全体的な制御を提供する。DSP304は、HOGジェネレータ314の出力を用い得る、オブジェクト検出及び分類などのコンピュータビジョン処理に対するサポートを提供する。
【0023】
SOC300はさらに、ダイレクトメモリアクセス(DMA)構成要素308、外部カメラ324に結合されるカメラ捕捉構成要素310、ディスプレイ管理構成要素316、例えばコンピュータ可読媒体などのオンチップランダムアクセスメモリ(RAM)318、及び、様々な入力/出力(I/O)周辺装置320を含み、これらはすべて、相互接続322を介して、プロセッサ、HOGアクセレレータ312、及びHOGジェネレータ314に結合される。カメラ324は、アナログ接続、イーサネットケーブル、低電圧差動シグナリング(LVDS)ケーブル、又は他の適切な有線又は無線接続を介して、SOC300に結合され得る。
【0024】
図4を参照してより詳細に説明するように、HOGアクセレレータ312は、カメラ324によって捕捉される画像における画素のビン識別子及び勾配の大きさを決定するための機能を有する。DSP304上で実行されるコンピュータビジョン応用例が、その応用例によって特定されるパラメータに従って、画像における画素のビン識別子及び勾配大きさを生成するようにHOGアクセレレータ312を構成する。例えば、応用例は、セルヒストグラムにおけるビンの数、及び各ビンの代表的な方位角などの、HOGアクセレレータ312のパラメータを構成し得る。代表的な方位角及びHOGアクセレレータ312の構成を、
図4を参照して説明する。HOGアクセレレータ312は、構成されたパラメータに従って画像における各画素に対してビン識別子及び勾配大きさを決定し、HOGジェネレータ314による使用のため、このデータをRAM318にストアする。
【0025】
HOGジェネレータ314は、HOGアクセレレータ312によって生成されたビン識別子及び勾配大きさを用いて検出ウィンドウのためのHOG記述子を生成するための機能を有する。より具体的には、HOGジェネレータ314は、コンピュータビジョン応用例が画像において探索するオブジェクトのタイプに従ってHOGアクセレレータ312によって生成されるデータを用いてHOG記述子を生成するように構成可能である。例えば、歩行者検出の場合、応用例は、検出ウィンドウサイズ、HOG記述子を生成するために用いる画像の部分(これは、画像のサブセット又は画像全体とし得る)、セルサイズ、及びブロックサイズなどの、HOGジェネレータ314のパラメータを構成し得る。車両検出の場合、応用例は上記と異なるようにパラメータを構成し得る。
【0026】
HOGジェネレータ314は、ストアされたデータを用いて、特定された検出ウィンドウサイズ、セルサイズ、及びブロックサイズに従った、特定された画像部分における検出ウィンドウのためのHOG記述子を生成する。より具体的には、HOGジェネレータ314は、画像の特定部分に対応するHOGアクセレレータ312によって生成されるデータにわたって特定サイズの検出ウィンドウがシフトされるスライディングウィンドウ手法を実装する。HOGジェネレータ314は、各検出ウィンドウに対してHOG記述子を生成する。上述したように、検出ウィンドウのためのHOG記述子の生成は、セルに対してHOGを生成すること、セルのブロックのHOGを正規化すること、及び、得られた正規化されたHOGを連結して検出ウィンドウのためのHOG記述子を形成することを含む。ビンのID及び大きさは、HOGアクセレレータ312によって或る画像について一度に生成され得、ビジョン処理応用例によって構成されるように異なるオブジェクトタイプの検出のためのHOG記述子を生成するためにHOGジェネレータ314によって複数回用いられ得ることに留意されたい。
【0027】
図4は、例示のHOGアクセレレータ312のブロック図である。HOGアクセレレータ312のアーキテクチャは下記の観察に基づいている。上述したように、或る画素の勾配大きさG
magは、
により演算され得る。ここで、G
x及びG
yは、それぞれ、x方向の画素の勾配及びy方向の画素の勾配である。或いは、勾配の大きさG
magは、
G
mag=G
x*sec(θ)
により演算され得る。ここで、sec(θ)=1/cos(θ)であり、θは勾配の方位角である。したがって、勾配大きさ及びtan
-1(G
y/G
x)を演算するための2つの基本式が、
G
mag=G
x*sec(θ)
G
y=G
x*tan(θ)
と表され得る。
【0028】
また、表1に示すように、方位角θの象限は、勾配G
x及びG
yの符号に基づいて決定され得る。したがって、すべての象限についてtan
-1(G
y/G
x)を演算する必要がない。代わりに、方位角演算は、例えば0~90度の、1つの象限について実施され得、符号ビットを用いて方位角θの実際の象限を決定し得る。
【表1】
【0029】
HOGアクセレレータ312は、勾配演算構成要素400、ビン識別構成要素402、及び、勾配大きさ演算構成要素404を含む。勾配演算構成要素400は、或る画素についてx及びyの勾配Gx及びGyを演算する。勾配を演算するための任意の適切な技術が用いられ得る。幾つかの例において、勾配は、
Gx=[1 0 -1]*I
Gy=[1 0 -1]T*I
により演算される。ここで、Iは画素を含む画像であり、*は畳み込みである。勾配演算構成要素400の出力は、Gx、Gy、及び勾配の符号を含む。
【0030】
ビン識別構成要素402は、勾配演算構成要素400からの演算された勾配Gx及びGy、及び勾配についての符号ビットを受け取り、これらの入力を用いてその画素についての角度ビンを識別する。或る画素についての角度ビンを識別するために、ビン識別構成要素402は、0度と90度の間とする必要がある代表的な方位角のいずれが勾配の実際の方位角に最も近いかを決定し、次いで、この情報及び符号ビットを用いてその画素の角度ビンを識別する。上述したように、ビジョン処理応用例が、ヒストグラムにおけるビンの数、及び、第1の象限、すなわち、0度と90度の間の象限、におけるビンについての代表的な方位角を特定し得る。
【0031】
ビン識別構成要素402は、Gy推定構成要素406、比較器構成要素408、及びビン決定構成要素410を含む。Gy推定構成要素406は、複数の代表的な方位角についてGyの推定値を演算するように構成される。つまり、Gy推定構成要素406は、特定された代表的な方位角各々に対して、
Gy=Gx*tan(θ)
を演算するように構成される。これらの演算は並行して実施され、特定され得る代表的な方位角の数は実装に依存する。或る応用例が、Gy推定構成要素406によってサポートされる最大値までの任意の数の角度について値を特定し得る。幾つかの例において、最大45個の角度についての並列演算をサポートするための回路要素が存在する。上述したように、各特定された角度値は、第1の象限におけるビンに対応する。Gy推定構成要素406の出力は、特定された代表的な方位角についてのGyの推定値である。
【0032】
比較器構成要素408は、Gy推定構成要素406によって出力された推定Gy値出力の各々を、勾配演算構成要素400によって出力された実際のGy値と比較し、各推定Gy値に対して0又は1を出力するように構成され、実際のGy値が推定Gy値より大きいかどうかが示される。
【0033】
ビン決定構成要素410は、比較器構成要素408の出力及び勾配演算構成要素400からの符号ビットを用いて、360度の範囲で画素についてのビン識別子を決定するための機能を含む。幾つかの例において、ビン決定構成要素410は、表2のルックアップテーブルなどのルックアップテーブルを用いて、第1の象限におけるビン識別子を決定する。表2は、比較器構成要素による1の出力が、Gyの実際の値が対応する推定Gy値より大きいことを示すと仮定している。表の行の最後の0の位置がビン識別子を決める。すべての出力が1の場合、実際のGyはどの推定Gy値よりも大きく、ビン識別子は1である。
【0034】
次いで、ビン決定構成要素410は、符号ビットを用いて表1により実際の象限を決定し、実際の象限が第1の象限でない場合、ビン決定構成要素410は実際の象限においてビン識別子を決定する。正接は対称関数なので、第1の象限における各ビンに対し他の3つの象限の各々に対称ビンがある。例えば、第1の象限におけるビン識別子がnの場合、他の象限における対称ビン識別子は、nの決定論的関数である。ビン決定構成要素410の出力は、画素についてのビン識別子である。0度と90度の間の1つの象限のみにおいて、400で生成された符号ビットを比較器408の出力とともに用いることによって、ビン決定構成要素410は、全360度空間において実際の画素ビンを正確に識別し得る。
【表2】
【0035】
大きさ構成要素404は、ビン識別構成要素402からビン識別子を受け取り、勾配演算構成要素400から勾配Gx及び符号ビットを受け取り、これらの入力を用いて画素の勾配の大きさを決定する。或る画素について大きさを決定するために、大きさ構成要素404は、特定された代表的な方位角の各々に対して大きさを演算し、符号ビット及びビン識別子を用いて、ビン識別子を決定する際に用いられる方位角に対応する演算された大きさを選択する。
【0036】
大きさ構成要素404は、大きさ演算構成要素412、大きさセレクタ構成要素416、及びマルチプレクサ414を含む。大きさ演算構成要素412は、複数の代表的な方位角に対応する大きさを演算するように構成される。すなわち、大きさ演算構成要素412は、各特定された代表的な方位角を用いて、
Gmag=Gx*sec(θ)
を演算するように構成される。こういった演算は並列に成され、代表的な方位角はGy推定構成要素406によって用いられるものと同じである。大きさ演算構成要素の出力は、特定された代表的な方位角に対応する演算された大きさである。
【0037】
マルチプレクサ414は、大きさ演算構成要素412の出力の1つを、大きさセレクタ構成要素416によって決定されるセレクタを用いて、画素についての大きさとして選択するように構成される。
【0038】
大きさセレクタ構成要素416は、ビン識別構成要素402からのビン識別子及び勾配演算構成要素400からの勾配の符号ビットを用いて、マルチプレクサ414のためのセレクタ値を決定するように構成される。代表的な方位角が単一の象限に限定される一方で、ビン識別子は4つの象限のいずれかにあり得るので、ビン識別子は、大きさ演算構成要素412の出力の数より大きくなり得る。大きさセレクタ構成要素416は、対称正接グラフに従って、すなわち、ビン識別子の複数の値が単一のセレクタ値にマッピングされるように、ビン識別子を量子化するための機能を含む。4つまでのビン識別子値が、同じセレクタにマッピングされ得る。大きさセレクタ構成要素416は、或る象限におけるビン数とともに符号ビットを用いて、このマッピングを実施する。
【0039】
例えば、HOGアクセレレータ312が40ビンヒストグラムに対して構成される場合、象限当たり10個のビンがある。ビン決定構成要素410が、或る画素についてのビン識別子が12であり、これが第2の象限に含まれると決定すると仮定する。このビン識別子に対する大きさGmagは、ビンID2、22、及び32についての大きさと同じである。Gmagが正しく分解されることを保証するために、大きさセレクタ構成要素416は、ビンID2、12、22、及び32を同じセレクタ値にマッピングする。
【0040】
HOGアクセレレータ312はさらに、ビジョン処理応用例によって設定される様々な制御及び構成パラメータをストアするために用いられるメモリマッピングレジスタ(これは特に示されていない)を含む。パラメータには、第1の象限における代表的な方位角値及びビンの数が含まれる。ビジョン処理応用例は、各ビンに対し1つの代表的な方位角値を特定する。
【0041】
上述したように、Gy推定構成要素406は、代表的な方位角各々に対して、
Gy=Gx*tan(θ)
を演算し、大きさ演算構成要素412は、代表的な方位各々に対して、
Gmax=Gx*sec(θ)
を演算する。Gx*tan(θ)及びGx*sec(θ)を演算するために任意の適切な技術がこれらの構成要素において用いられ得る。例えば、こういった演算は、tan(θ)及びsec(θ)についてのルックアップテーブルに基づき得る。
【0042】
幾つかの例において、こういった演算は、座標回転デジタルコンピュータ(CORDIC)アルゴリズムに基づいて実装される。CORDICは、正接や正割などの三角法関数を計算するための単純シフト可算演算を用いる。すなわち、tan(θ)及びsec(θ)は、iΣ(-1)mX(2)-i→CORDIC実装と表され得る。ここで、iは-8と+8の間の整数であり、mは1又は2である。例えば、CORDIC実装において、Gxtan*(20)≒Gx*0.36が、Gx*(0.25+0.125-0.015625)→Gxを2だけ左にシフト+Gxを4だけ左にシフト-Gxを6だけ左にシフトと計算され得、Gxsec*(20)≒Gx*1.00625が、Gx*sec(20)→Gx+Gxを4だけ右にシフトと計算され得る。幾つかのこのような例において、全CORDICエンジンを実装するのではなく、制限された範囲のCORDICエンジンが実装される。ここで、制限された範囲は、アクセレレータがサポートするように設計されるビン/方位角の最大数によって決定される。例えば、或る制限された範囲のCORDICエンジンが、32個のビン/方位角の最大値の計算をサポートするように実装され得る。
【0043】
図5は、HOGアクセレレータ312などのハードウェアアクセレレータによって成され得る、或る画素についてのビン識別子及び大きさを決定するための方法のフローチャートである。まず、その画素の勾配G
x及びG
yが演算される(500)。勾配を演算するために任意の適切なアルゴリズムを用いられ得る。
【0044】
次いで、0度と90度の間の複数の代表的な方位角についてGyの値が推定される(502)。代表的な方位角の数及び値は、ビジョン処理応用例によって決定され、最大数はハードウェア設計によって設定される。Gyの推定値は、代表的な方位角各々に対して、
Gy=Gx*tan(θ)
により演算される。
【0045】
推定Gy値が、実際のGy値と比較されて(504)、その画素について最良の代表的な方位角が選択される。上述したように、選択プロセスは、ルックアップテーブルを用いて実装され得る。勾配の符号及び選択された代表的な方位角を用いて(506)、その画素についてのビン識別子を決定する。上述したように、勾配の符号は、方位角の実際の象限を決定するために用いられる。
【0046】
代表的な方位角の各々に対応する大きさGmagも、
Gmag=Gx*sec(θ)
により演算され(508)、ビン識別子及び勾配符号ビットを用いて、ビン識別子を決定するために用いられる代表的な方位角に対応する演算された大きさを選択する(510)。
【0047】
図6は、
図3のSOC300によって成され得る、或る画像のHOG記述子を生成するための方法のフローチャートである。まず、カメラ324によって捕捉される画像における各画素についてのビン識別子及び大きさが、HOGアクセレレータ312によって決定される(600)。DSP304上で実行するビジョン処理応用例が、画像の画素についてのビンID及び大きさを決定し、そのデータをRAM318にストアするようにHOGアクセレレータ312を構成する。ビジョン処理応用例は、ビジョン処理応用例が検出するようにプログラミングされる特定のタイプのオブジェクトに従って、代表的な方位角値及びビン数を用いるようにHOGアクセレレータ312を構成する。
【0048】
次いで、ビンID及び大きさを用いて複数タイプのオブジェクトの分類に用いるため、HOG記述子がHOGジェネレータ314によって演算される(602)。すなわち、ビジョン処理応用例が検出するようにプログラミングされるオブジェクトの各タイプに対し、ビジョン処理応用例は、RAM318にストアされたビンID及び大きさを用いて各オブジェクトタイプに適切な、検出ウィンドウ、セル、及びブロックサイズのためのHOG記述子を生成するようにHOGジェネレータ314を構成する。例えば、ビジョン処理応用例が、歩行者、車両、及び道路標識を検出するようにプログラムされる場合、ビジョン処理応用例は、歩行者を検出するためのHOG記述子を生成するようにHOGジェネレータ314をプログラムする。このタスクが完了すると、ビジョン処理応用例は、車両のためのHOG記述子を生成するようにHOGジェネレータ314をプログラムする。このタスクが完了すると、ビジョン処理応用例は、道路標識のためのHOG記述子を生成するようにHOGジェネレータ314をプログラムする。HOGジェネレータ314は、これらのHOG記述子生成タスクの各々に対して、RAM318にストアされたビンID及び大きさを再利用する。
【0049】
他の例
本明細書において説明される幾つかの例において、ビン決定構成要素410は、第1の象限におけるビン識別子を決定するために、表2のルックアップテーブルなどのルックアップテーブルを用い、次いで、符号を適用して、実際の象限及び真のビン識別子を決定する。他の例において表は符号を含む。
【0050】
本明細書では、一度に1つの画素に作用するHOGアクセレレータの例を説明している。他の例において、HOGアクセレレータは、複数の画素に並列に作用する付加的な機能を有する。
【0051】
幾つかの例において、SOCはHOGジェネレータを含まず、HOGジェネレータの機能(HOGアクセレレータの出力を用いるHOG記述子の生成など)は、SOCのプロセッサの1つに対して実行される応用例によって成される。
【0052】
本明細書において説明される幾つかの例において、任意の象限に存し得るビン識別子が、大きさセレクタ構成要素によって量子化されて、大きさのためのセレクタが生成される。他の例において、第1の象限に対して生成された当初のビン識別子が、大きさを選択するために用いられ、大きさセレクタ構成要素は存在しない。
【0053】
幾つかの例において、HOGジェネレータ及びHOGアクセレレータが単一のアクセレレータにおいて組み合わされる。
【0054】
本明細書において、構成可能なHOGジェネレータの例を本明細書で説明している。他の例において、HOGアクセレレータは、所定の角度値及び所定のビン数を有する。
【0055】
幾つかの例において、RAMにおけるピンポンバッファを用いてHOGアクセレレータの出力をストアし、そのため、HOGジェネレータは、一方のバッファにおいて1つの画像のためのデータを用いることができ、その間に、HOGアクセレレータは、別の画像についてビンID及び大きさを生成し、そのデータを他方のバッファにストアしている。
【0056】
特許請求の範囲内で、説明した実施形態における改変が可能であり、他の実施形態が可能である。