画像認識や点群についての技術的な内容について書きます。
自動運転の技術について調べてみたら、HOG特徴量というのがありました。今回は、自分が遊びがてらで学習した内容をここに書いておきます。
0.歩行者認識に使われる”特徴量”
歩行者認識は、方向勾配ヒストグラム(HOG:Histograms of Oriented Gradients) 特徴量を用いるとうまくいくことが一般に知られています。(記事執筆時点で)
HOGとは、画像の局所的な輝度勾配の強度と方向を基にした特徴です。HOG特徴量は、領域ごとの明るさの方向分布を基に計算などを行なっているため、コストが少なく、ある程度の照明変化に強いメリットがあります。また、 物体の大まかな形状を表すことが可能です。
今回は、実際の計算結果などの内容まで、プログラムを用いて行う予定です。
1.まずは理論から
HOG特徴量を計算する手法について書きます。まず、解析対象の画像が用意されますね。
まず、画像は,平面で表すことにします。次に、を画像の,座標の明るさとします。
このとき、,方向の微分値は、
\begin{align}
I _ x(x,y)= I(x+1,y)-I(x-1,y) \tag{1}
\end{align}
\begin{align}
I _ y(x,y)= I(x,y+1)-I(x,y-1) \tag{2}
\end{align}
と表現します。一般的な微分は、δだけ動かすっていうやつですが、HOGへの変換では絶対値2だけ移動しています。コンピュータの世界においては2進数ですから、最小値が整数になるところからきてます。
次に、輝度勾配,方向を次のように計算します。
\begin{align}
m(x,y)= \sqrt{I _ x}(x,y)^2+I _ y(x,y)^2 \tag{3}
\end{align}
\begin{align}
{\theta(x,y)}= \tan^{-1}\frac{{I _ y}(x,y)}{I _ x(x,y)} \tag{4}
\end{align}
次に、勾配方向を20°単位で0~180°を9方向に量子化します。そして、5×5画素を1セルと定義します。セル内の9方向に量子化された方向ごとに、勾配強度を積み重ねてヒストグラムを生成します。
一旦、ここまでの手順についてコンピュータでやってみましょう。なお、このような研究は既にこの場所で行われており、論文もさまざまに出版されております。しかし、具体的にどのようなソフトを用いて、どんなプログラムを走らせたのか、などということまでに言及しているものはあまり見かけません。
解析というものは、実際に自分のパソコンで動作させることができるのもとても大切だと思いますので、今回は出来る限りフリーソフトを用いて行ってみることとします。
調べた限りですと、理系では天下のMATLABでは楽にできるそうですが、今回はPythonを使います。
続き、加筆はまた今度。
ここまでの書類をずに示す。 最後に、3 × 3セルを1ブロックと提起し、ブロック内でヒストグラムの正規化を行います。 この様子を次の子に示します。 この角右側一ブロック内の代表的な方向を示しこれがこの歩行者画像の八王子特徴と言える。 そして、5 × 5がそう言ってると定義し、セル内の9方向に量子化された方向ごとに購買強度を積み重ねてヒストグラムを生成する。
ここまでの書類をずに示す。
最後に、3 × 3セルを1ブロックと提起し、ブロック内でヒストグラムの正規化を行います。
この様子を次の子に示します。