#author("2022-03-31T11:00:28+00:00","default:ail-wiki","ail-wiki") #author("2022-03-31T11:15:50+00:00","default:ail-wiki","ail-wiki") [[太田研 公開用Wiki]] #contents *序論 [#i32942b5] **研究背景 [#v82775f0] 私が所属する群馬大学大学院理工学府太田研究室は, 自律走行ロボットの公開実験会「つくばチャレンジ」に参加している. つくばチャレンジとは,実環境における自律走行技術の進歩を目的として, つくば市内の市街地でロボットが自律走行する公開実験会である\cite{TC}. 実環境とは歩道や公園といった人々が普段使っている空間である. 実環境においてロボットは単に自律走行するのみならず,安全に走行可能な経路を自動で判断する必要がある. つくばチャレンジでは選択課題のひとつとして「経路封鎖迂回」がある. この課題では公園内の遊歩道上に図\ref{img:signboard}のような経路封鎖看板が置かれている. 自律走行ロボットは経路封鎖看板が設置された道を通り抜けることはできず, 他の経路に迂回しなければならない. また,経路封鎖看板の設置場所は事前に知らされない. 従って,この課題の達成には経路封鎖看板を自律走行ロボットにその場で検出させる必要がある. \begin{figure}[h] % 図の位置 \centering \includegraphics[height=0.3\vsize]{fig/signboard.png} \caption{つくばチャレンジにおける経路封鎖看板} \label{img:signboard} \end{figure} 経路封鎖看板には特定の色で特定の図形と文字がかかれている. よって,経路封鎖看板はカメラを使って検出することができる. 一方,経路封鎖看板の両端には再規制反射テープが貼り付けられている. 再規制反射テープはLiDARで見たときに高い反射強度で写る. よって,経路封鎖看板の検出にはLiDARを用いる方法も考えられる. 更に,カメラとLiDARを組み合わせる方法も考えられる. しかし現状,カメラとLiDARを比較するとLiDARは高価である.% どれくらい? 従って,カメラのみで経路封鎖看板の検出を行うのが望ましい. **研究目的 [#m7b54945] 画像から経路封鎖看板を検出するには,まず部分画像を経路封鎖看板の画像か否か識別する必要がある. 経路封鎖看板の画像を識別するには, 画像から特徴量と呼ばれるベクトルを計算し,これを機械学習で識別する. 特徴量の計算には後述するようにいくつかの手法が考えられる. 本研究ではこれらの手法を比較し,経路封鎖看板の識別における最適な手法を求めることを目的とした. 経路封鎖看板の検出は, 自律走行ロボット搭載のカメラで経路封鎖看板が見えてから 自律走行ロボットが経路封鎖看板を通過する迄の間に確実に完了させる必要がある. つまり経路封鎖看板の識別には,精度はさることながら,高い実時間性が求められる. 一方で,自律走行ロボットは二次電池で駆動していて電源に限りがある. 従って,自律走行ロボットに搭載できる計算資源は自ずと制限される. 加えて, 貴重な計算資源を自律走行に必要な他のソフトウェアモジュールと分けあわなければならない. 以上から,経路封鎖看板を識別する手法の比較に当たっては,計算量の軽量さを重視した. 以降,第\ref{sec:method}章で経路封鎖看板の画像を識別する手法について説明する. 第\ref{sec:experiment_and_result}章には各特徴量を用いて画像を識別する実験とその結果・評価を示す. そして,第\ref{sec:consideration}章で実験結果に対して考察し, 第\ref{sec:conclusion}章で結言を述べる. *経路封鎖看板の識別手順 [#u9791d31] \chapter{経路封鎖看板の識別手法}\label{sec:method} 経路封鎖看板の画像識別には特徴量と機械学習を用いる. 画像識別の手順については第\ref{sec:algorithm}節で, 特徴量については第\ref{sec:features}節でそれぞれ説明する. 第\ref{sec:objective}節で述べたように本研究では識別速度を重視するため, 機械学習アルゴリズムにはディープニューラルネットワーク等と比較して軽量な サポートベクターマシン(SVM)を採用した. SVMについては第\ref{sec:svm}節で説明する. *経路封鎖看板の識別手法 [#yb1e889b] 経路封鎖看板の画像識別には特徴量と機械学習を用いる. 画像識別の手順については第\ref{sec:algorithm}節で, 特徴量については第\ref{sec:features}節でそれぞれ説明する. 第\ref{sec:objective}節で述べたように本研究では識別速度を重視するため, 機械学習アルゴリズムにはディープニューラルネットワーク等と比較して軽量な サポートベクターマシン(SVM)を採用した. SVMについては第\ref{sec:svm}節で説明する. \section{手順}\label{sec:algorithm} まずSVMの学習を行う. 事前に経路封鎖看板の画像とそれ以外の画像を多数集めておく. また,それぞれの画像が経路封鎖看板か否かのラベルも用意しておく. そしてひとつずつ画像から特徴量を計算し,その画像のラベルと共にSVMに学習させる. 学習の手順のフローチャートを図\ref{fig:learning}に示す. 経路封鎖看板の画像を識別する際には,画像から特徴量を計算し, 特徴量をSVMに入力し経路封鎖看板か識別する. 識別の手順のフローチャートを図\ref{fig:classifying}に示す. **手順 [#d611bd7d] まずSVMの学習を行う. 事前に経路封鎖看板の画像とそれ以外の画像を多数集めておく. また,それぞれの画像が経路封鎖看板か否かのラベルも用意しておく. そしてひとつずつ画像から特徴量を計算し,その画像のラベルと共にSVMに学習させる. 学習の手順のフローチャートを図\ref{fig:learning}に示す. 経路封鎖看板の画像を識別する際には,画像から特徴量を計算し, 特徴量をSVMに入力し経路封鎖看板か識別する. 識別の手順のフローチャートを図\ref{fig:classifying}に示す. \begin{figure}[h] \begin{tabular}{cc} \begin{minipage}{0.45\hsize} \centering \includegraphics[scale=0.6]{fig/algorithm_of_Learning.pdf} \caption{学習の手順} \label{fig:learning} \end{minipage} & \begin{minipage}{0.45\hsize} \centering \includegraphics[scale=0.6]{fig/algorithm_of_classifying.pdf} \caption{識別の手順} \label{fig:classifying} \end{minipage} \end{tabular} \end{figure} \section{特徴量}\label{sec:features} 特徴量とは画像から計算され,画像の特徴を表現した数値である. 画像から特徴量を計算することを,特徴量を抽出するという. 画像のどのような情報を特徴として表現するかによって様々な特徴量が考えられる. **特徴量 [#z53f25f7] 特徴量とは画像から計算され,画像の特徴を表現した数値である. 画像から特徴量を計算することを,特徴量を抽出するという. 画像のどのような情報を特徴として表現するかによって様々な特徴量が考えられる. 屋外の物体が写った画像を識別するのに有力な特徴量として, 画像の輝度情報を使ったHOG特徴やLBP特徴がこれまでに提案されている. HOG特徴については第\ref{sec:hog}項で,LBP特徴については第\ref{sec:lbp}項でそれぞれ説明する. 屋外の物体が写った画像を識別するのに有力な特徴量として, 画像の輝度情報を使ったHOG特徴やLBP特徴がこれまでに提案されている. HOG特徴については第\ref{sec:hog}項で,LBP特徴については第\ref{sec:lbp}項でそれぞれ説明する. 本研究の識別対象である経路封鎖看板に赤や黄色などの原色が多用されている. 私はこのことに着目し, 色情報を活かした特徴量として色相ヒストグラム特徴を用いた. 色相ヒストグラム特徴については第\ref{sec:hh}項で説明する. 本研究の識別対象である経路封鎖看板に赤や黄色などの原色が多用されている. 私はこのことに着目し, 色情報を活かした特徴量として色相ヒストグラム特徴を用いた. 色相ヒストグラム特徴については第\ref{sec:hh}項で説明する. なお,以下で説明するいずれの特徴量の計算に於いても, 画像をセルと呼ばれる格子状の領域に分割し計算する. そしてセル毎にヒストグラムを計算し,それらを結合したものを特徴量とする. こうすることで特徴の画像上の位置情報を大まかに用いることができ,精度向上が期待できる. % 正規化については? なお,以下で説明するいずれの特徴量の計算に於いても, 画像をセルと呼ばれる格子状の領域に分割し計算する. そしてセル毎にヒストグラムを計算し,それらを結合したものを特徴量とする. こうすることで特徴の画像上の位置情報を大まかに用いることができ,精度向上が期待できる. \subsection{HOG特徴}\label{sec:hog} HOG (Histograms of Oriented Gradients) 特徴は, 画像の輝度勾配のヒストグラムを特徴量としたものである\cite{HOG}. 輝度勾配とは隣り合った画素の明るさの変化の方向とその強さで表されるベクトルである. 画像の輝度は撮影時の照明変化によって大きく変動する. しかし輝度の勾配,即ち隣り合った画素値の変化量であれば照明変化による変動は少ない. そのためHOG特徴は原理的に照明変化に堅牢であり, 屋外で撮影された画像の識別に適していると言える. 但し,後述するように勾配の計算には逆正接や平方根が含まれている. そのため,LBP特徴や色相ヒストグラム特徴と比較するとHOG特徴は計算量が大きい. \subsubsection{計算法} 以下にHOG特徴の詳細な計算方法を述べる.また,計算方法の概略を図\ref{fig:hog}に示す. ***HOG特徴 [#m2cbcad2] HOG (Histograms of Oriented Gradients) 特徴は, 画像の輝度勾配のヒストグラムを特徴量としたものである\cite{HOG}. 輝度勾配とは隣り合った画素の明るさの変化の方向とその強さで表されるベクトルである. 画像の輝度は撮影時の照明変化によって大きく変動する. しかし輝度の勾配,即ち隣り合った画素値の変化量であれば照明変化による変動は少ない. そのためHOG特徴は原理的に照明変化に堅牢であり, 屋外で撮影された画像の識別に適していると言える. 但し,後述するように勾配の計算には逆正接や平方根が含まれている. そのため,LBP特徴や色相ヒストグラム特徴と比較するとHOG特徴は計算量が大きい. まず入力画像はグレースケールに変換しておく. これを画像$I$とする. 次に$I$をセルに分割する. % ここでいいのか? ''計算法''~ 以下にHOG特徴の詳細な計算方法を述べる.また,計算方法の概略を図\ref{fig:hog}に示す. まず入力画像はグレースケールに変換しておく. これを画像$I$とする. 次に$I$をセルに分割する. % ここでいいのか? 続いて各画素の輝度勾配と勾配強度を以下のように計算する. $I$上のある画素$(x,y)$に隣接する4画素は $(x,y-1),(x-1,y),(x+1,y),(x,y+1)$と表せる. また,$(x,y)$の画素値は$I_{x,y}$と表す. ここで,$(x,y)$における $x$軸方向の勾配$d_x(I_{x,y})$を式\ref{eq:dx}のように, $y$軸方向の勾配$d_y(I_{x,y})$を式\ref{eq:dy}のように定義する. \begin{align} d_x(I_{x,y}) := I_{x+1,y}-I_{x-1,y}, \label{eq:dx}\\ d_y(I_{x,y}) := I_{x,y+1}-I_{x,y-1}. \label{eq:dy} \end{align} これらを用いると,$(x,y)$での勾配方向$\theta(I_{x,y})$は式\ref{eq:orientation}のように定義できる. \begin{align} \theta(I_{x,y}) := \tan^{-1} \frac{ d_y(I_{x,y}) }{ d_x(I_{x,y}) }. \label{eq:orientation} \end{align} また,勾配強度$M(I_{x,y})$は式\ref{eq:magnitude}のように定義できる. \begin{align} M(I_{x,y}) := \sqrt{ d_x(I_{x,y})^2 + d_y(I_{x,y})^2 }. \label{eq:magnitude} \end{align} 以上より,$I$上の画素$(x,y)$での輝度勾配$\theta(I_{x,y})$と勾配強度$M(I_{x,y})$が求められる. そして$\theta(I_{x,y})$に応じたヒストグラムのビンに$M(I_{x,y})$だけ加算する. これは勾配方向を勾配強度で重み付けしながら集計することを意味する. これを全画素に対してセル毎に行う. 最後に,各セルで求められたヒストグラムを連結したものが$I$のHOG特徴である. \begin{figure}[h] \centering \includegraphics[scale=0.5]{fig/calculation_of_HOG.pdf} \caption{HOG特徴算出の概略図} \label{fig:hog} \end{figure} \clearpage \subsection{LBP特徴}\label{sec:lbp} LBP (Local Binary Pattern) 特徴は,輝度勾配を計算するHOG特徴に対し, 注目画素と近傍の8つの画素を比較したときの輝度の大小関係のみを利用する特徴量である\cite{LBP}. 画素同士の輝度の大小関係は撮影時の照明が変化しても大方保存される. そのためLBP特徴は,HOG特徴と同様,原理的に照明変化に堅牢である. \subsubsection{計算法} 以下にLBP特徴の詳細な計算方法を述べる.また,計算方法の概略を図\ref{fig:lbp}に示す. まず,HOG特徴同様,画像をセルに分割する. 続いて,全ての画素に対して次の処理を行う. \begin{enumerate} \item 注目画素の8近傍画素それぞれを,注目画素より輝度が高いか低いかの二値で評価する. \item それら8近傍画素の評価をビット列と見做す. \end{enumerate} ここで8近傍画素の順番は,左上の画素を最下位ビットとして時計回りとした. このようにしてできたビット列が注目画素のLocal Binary Patternである. % この処理の具体例を後述する. % 数式も入れたほうがいいか? % それら近傍画素の評価をビット列と見做したときの, HOG特徴同様セル毎のビット列のヒストグラムである. そして,全画素のLocal Binary Patternを集計しヒストグラムを生成する. ここで,Local Binary Patternは8近傍画素から生成されるので8 bitであり,$2^8=256$種ある. そこでヒストグラムのビンも256個としている. ヒストグラムは,HOG特徴と同様,セル毎に生成する. 最後に,各セルで求められたヒストグラムを連結したものが画像のLBP特徴である. \begin{figure}[h] \centering \includegraphics[scale=0.5]{fig/calculation_of_HLBP.pdf} \caption{LBP特徴算出の概略図} \label{fig:lbp} \end{figure} \subsubsection{具体例} 以下に図\ref{fig:lbp}を用いて,ある画素からLocal Binary Patternを計算する具体例を示す. ある注目画素の画素値が95だったとする. この95を閾値とし,8近傍画素を以下の様に時計回りに評価していく. \begin{enumerate} \item 注目画素の左上の画素値は243で,閾値より大きい.これを1と評価する. \item 注目画素の直上の画素値は210で,閾値より大きい.これも1と評価する. \item 注目画素の右上の画素値は43で,閾値より小さい.これは0と評価する. \end{enumerate} \centerline{\vdots} この様に8近傍画素を二値で評価していき,これらをリトルエンディアンで並べると, \texttt{01000011}となる. 以上より,この画素におけるLocal Binary Patternは\texttt{01000011}である. \clearpage \subsection{色相ヒストグラム特徴}\label{sec:hh} 色相ヒストグラム特徴は, 画像をHSV表色系で表したときの各画素の色相をヒストグラムにした特徴量である. 画素の色情報は一般的にRGB表色系で表される. RGB表色系では光の3原色である赤・緑・青それぞれの強さで色情報を表現する. 一方,色情報は色相(Hue)・彩度(Saturation)・明度(Value)の色の3属性でも表現できる. HSV表色系では図\ref{fig:hsv}に示すように,% 図作らないとだめか? これら3つの値で色情報を表現する. % HSVについて説明.独立させる? 色相は角度で表される.光の3原色の赤を\ang{0},緑を\ang{120},青を\ang{240}とし,間は連続的に変化させる. RGB表色系からHSV表色系への変換は,後述するように,四則演算と条件分岐のみで可能である. 従って,HOG特徴と比較すると色相ヒストグラム特徴は高速に計算できる. % 明度無視で照明変化に堅牢について書く? \begin{figure}[h] \centering \includegraphics[scale=0.7]{fig/hsv.jpg} \caption{HSV色空間} \label{fig:hsv} \end{figure} この特徴量は先行研究\cite{Kanai}で用いられた特徴量を基にしている. 本研究では先行研究で用いられた特徴量に, 画像をセルに分割する,画素をヒストグラムに算入する際に彩度で重み付けするといった変更を行った. \clearpage \subsubsection{計算法} 以下に色相ヒストグラム特徴の詳細な計算方法を述べる.また,計算方法の概略を図\ref{fig:HoHue}に示す. まず,画像をRGB表色系からHSV表色系に変換する. 変換には全画素に対し以下の計算を行う. ある画素の持つ3つの値$R,G,B$のうち最大のものをMAXとし,最小のものをMINとする. このとき,この画素の色相$H$は式\ref{eq:hue},彩度$S$は式\ref{eq:sat},明度$V$は式\ref{eq:val}のように計算できる. \begin{align} H &= \begin{dcases} \ang{60} \times \frac{G-B}{\mathrm{MAX}-\mathrm{MIN}} & \mathrm{if}\ \mathrm{MAX} = R,\\ \ang{60} \times \frac{B-R}{\mathrm{MAX}-\mathrm{MIN}} + \ang{120} & \mathrm{if}\ \mathrm{MAX} = G,\\ \ang{60} \times \frac{R-G}{\mathrm{MAX}-\mathrm{MIN}} + \ang{240} & \mathrm{if}\ \mathrm{MAX} = B,\\ \mathrm{undefined} & \mathrm{if}\ \mathrm{MAX} = \mathrm{MIN}. \end{dcases}\label{eq:hue}\\ S &= \mathrm{MAX}-\mathrm{MIN}.\label{eq:sat}\\ V &= \mathrm{MAX}.\label{eq:val} \end{align} 以上より,画像中の全画素をHSV表色系に変換できる. 続いて,各画素の$H$に応じたヒストグラムのビンに$S$だけ加算する. これは色相を彩度で重み付けしながら集計することを意味する. % 鮮やかな色の影響が大きく、淡い色は影響が小さくなるように ヒストグラムは,上記の特徴量と同様,セル毎に生成する. 最後に,各セルで求められたヒストグラムを連結したものが画像の色相ヒストグラム特徴である. \begin{figure}[h] \centering \includegraphics[scale=0.5]{fig/calculation_of_HoHue.pdf} \caption{色相ヒストグラム特徴算出の概略図} \label{fig:HoHue} \end{figure} \subsubsection{適用例} ここで,画像から計算した色相ヒストグラムの例を示す. 経路封鎖看板の写った画像の内, 明るくはっきり写った画像を図\ref{fig:clear_signboard}に示す. そして, 図\ref{fig:clear_signboard}の1つ目のセルから計算した色相ヒストグラムを図\ref{fig:clear_hh}に示す. 同様に,経路封鎖看板の写った画像の内, 暗くぼやけた画像を図\ref{fig:unclear_signboard}に, その1つ目のセルから計算した色相ヒストグラムを図\ref{fig:unclear_hh}それぞれ示す. また,経路封鎖看板でない画像を図\ref{fig:different_signboard}に, その1つ目のセルから計算した色相ヒストグラムを図\ref{fig:different_hh}それぞれ示す. 図\ref{fig:clear_hh}と図\ref{fig:unclear_hh}はヒストグラムの概形がよく似ている. そして,これらは図\ref{fig:different_hh}とは概形が明らかに異なっている. 以上から, 図\ref{fig:clear_signboard},\ref{fig:unclear_signboard},\ref{fig:different_signboard}は SVMで充分正しく識別できると期待できる. \clearpage \begin{figure}[h] \centering \includegraphics[height=0.25\vsize]{fig/signboard_clear.pdf} \caption{経路封鎖看板の明瞭な画像} \label{fig:clear_signboard} \end{figure} \begin{figure}[h] \centering \includegraphics[scale=0.7]{fig/clear_hh.png} \caption{経路封鎖看板の明瞭な画像の第1セルにおける色相ヒストグラム} \label{fig:clear_hh} \end{figure} \clearpage \begin{figure}[h] \centering \includegraphics[height=0.25\vsize]{fig/signboard_unclear.pdf} \caption{経路封鎖看板の不明瞭な画像} \label{fig:unclear_signboard} \end{figure} \begin{figure}[h] \centering \includegraphics[scale=0.7]{fig/unclear_hh.png} \caption{経路封鎖看板の不明瞭な画像の第1セルにおける色相ヒストグラム} \label{fig:unclear_hh} \end{figure} \clearpage \begin{figure}[h] \centering \includegraphics[height=0.25\vsize]{fig/different_signboard.pdf} \caption{経路封鎖看板でない画像} \label{fig:different_signboard} \end{figure} \begin{figure}[h] \centering \includegraphics[scale=0.7]{fig/different_hh.png} \caption{経路封鎖看板でない画像の第1セルにおける色相ヒストグラム} \label{fig:different_hh} \end{figure} \clearpage \section{サポートベクターマシン}\label{sec:svm} サポートベクターマシン (SVM) とは,データを2つのクラスに分類する識別境界を学習する手法である. % 識別境界はデータ空間上の超平面で表される. % データを2クラスに分類する超平面を求める手法である. % データはベクトルで表される. 説明のためにデータ空間が2次元のときの例を図\ref{fig:separable}に示す. それぞれのクラスで識別境界と識別境界に最も近いデータ点との距離をマージンという. SVMの学習とは,データからマージンが最大になる識別境界$h$を求めることである. ここでマージンを最大化するのは,未知のデータに対しても可能な限り正しく識別できるようにする工夫である. このような未知のデータに対しても識別できる性能を汎化性という. \begin{figure}[h] \centering \includegraphics[scale=0.6]{fig/linearly_separable.pdf} \caption{線形な識別境界で分離できるデータセット} \label{fig:separable} \end{figure} さて,上記の例ではデータを線形な識別境界で分離できる前提で説明した. % このような前提で動くSVMをハードマージンSVMという. しかし実際のデータは図\ref{fig:inseparable}のようにデータを分離する線形な識別境界が描けないことが多い. そこでソフトマージンSVMと非線形識別境界を用いる. \begin{figure}[h] \centering \includegraphics[scale=0.6]{fig/linearly_inseparable.pdf} \caption{線形な識別境界では分離できないデータセット} \label{fig:inseparable} \end{figure} \subsection{ソフトマージンSVM} ソフトマージンSVMとは,ある程度誤分類を許容して,線形な識別境界を決定できるようにしたSVMである. 誤分類をどの程度許容するかを決めるハイパーパラメタがコストパラメタ$C$である. コストパラメタ$C$が小さいほど誤分類を許容する. $C$は大きくしすぎると過学習を起こす. 過学習とは学習データのみに適応した識別境界を学習してしまい, 汎化性が失われることである. \subsection{非線形識別境界} 非線形識別境界とは,線形な識別境界では分離できないデータにも用いることができる,線形でない識別境界である. 非線形識別境界を得るために,まずデータをより高次の空間に写像する. 高次元の空間では識別境界が線形に描ける. こうして決定された識別境界をもとのデータ空間に逆写像して得られるのが非線形識別境界である. しかしこの手法を順当に実行すると識別境界の決定に膨大な計算量が必要になってしまう. ここで膨大な計算を回避するために用いられるのがカーネル関数である. 本研究では先行研究\cite{Yamato}に倣い,カーネル関数としてRBFカーネルを使用する. RBFカーネルにはハイパーパラメタとして$\gamma$がある. $\gamma$が小さいほど識別境界は単純になり, 大きいほど複雑になる. *特徴量 [#m0934aea]