#author("2021-03-01T22:13:19+00:00","default:ail-wiki","ail-wiki")
#author("2021-03-01T22:20:37+00:00","default:ail-wiki","ail-wiki")
[[太田研 公開用Wiki]]

*HOG特徴を用いたSVMによる止まれ標識判定 [#xdde1d5c]

#contents

*はじめに [#w0909991]
近年自動運転走行の開発が進んで来ており,その際に必要になってくるのは信号や交通標識などの交通ルールを認識することである.
自動運転走行をしている時に信号や標識を認識する方法としては,信号や標識から通信を送り自動運転走行車が通信を受信して認識するなどが考えられる.
しかし,全ての信号や標識に対してこの方法を適用するには膨大な経済資金がかかってしまい,経済面において大きな負担になってしまう.そのため既存の標識を使用して認識を行う方法としては,近年研究が注目されている機械学習を用いて標識画像から標識を認識させる事を考えた.

機械学習とは識別器に大量の学習データを学習させ,入力データの識別を行う手法である.
明暗・掩蔽・損壊など様々な条件の標識画像を学習させる事が出来るため,画像に写っている標識の状態に対して柔軟に識別する事が可能である.

本研究では形状の酷似が少ない止まれ標識画像を判定対象とし,機械学習による止まれ標識判定の精度と速度の向上を目指す.

*判定手法 [#i0a82a5d]
本研究では機械学習の一種であるSVMを用いてセットした標識画像が止まれ標識かどうかの判定を行う.
特徴量としては照明などの輝度変化に堅牢なHOG特徴量を用いて行う.&br;
また,標識画像はYoutubeのドライブレコーダーの動画から標識が写っている部分のみを切り抜いた画像を使用する.
**HOG特徴 [#g8fddcac]
照明などの輝度変化に堅牢な特徴量としてHOG(Histgrams of Oriented Gradients)特徴を使用した.&br;
HOG特徴とは画像の輝度の勾配方向をヒストグラム化した特徴量である.&br;
入力画像(500×500ピクセル)の注目画素(x,y)毎に垂直方向の差分dy(1式)と水平方向の差分dx(2式)を計算する.
算出したdy, dxを用いて注目画素(x,y)における輝度の勾配方向θ(3式)と勾配強度m(4式)を計算する.
各勾配方向の頻度に対して勾配方向毎の勾配強度の重みづけをしながら局所領域(セル)毎にヒストグラム化を行う.

このとき勾配方向は-180°~180°の範囲で計算を行い, 0°未満の角度に対して180°加算する事で0°~180°の範囲になるようにし, 20°毎の9方向に勾配方向を分けてヒストグラム化する.
次に各セルのヒストグラムの勾配方向における勾配強度の2乗和が1になるようにブロック領域毎に正規化を行う.

また,今回の研究においてセル領域(50×50ピクセル),ブロック領域(3×3セル)で行った.
#ref(HOG_calculation.png,center,50%)

実際にセットした標識画像(図1, 図2)とその画像のHOG特徴量をそれぞれ可視化(図3, 図4)した一例を見せる.
#ref(hog_feature_img_1.png,center,60%);
CENTER:図1                        図3
#ref(hog_feature_img_2.png,center,60%);
CENTER:図2                        図4

**SVM [#r206405c]
標識画像から計算したHOG特徴量を用いて機械学習を行うためにSVMを使用する.&br;
SVM(Support Vector Machine)とは,識別子と2つの異なる特徴の距離(マージン)を最大とする識別境界を決定する手法である.&br;
マージンを最大化する事によって汎化性能の高い識別子を学習する事が出来る.
#ref(svm.png,center,40%)
識別子を決定する際にSVMに学習データを学習させる必要がある.&br;
本研究では学習データとして止まれ標識画像とその他標識画像を用いて標識画像からHOG特徴量を計算し学習させる事で識別子を決定する.&br;
カーネル関数は複雑な決定境界を学習できるRBFカーネルを選択した.&br;
学習を終えたSVMに判定したい標識画像をセットし,標識画像のHOG特徴量を計算する.&br;
セットした標識画像のHOG特徴量と学習したHOG特徴量の比較を行い,標識画像が止まれ標識またはその他標識の2つのグループの内どちらに分類されるか判定を行う.&br;
またSVMには境界線の複雑さや誤差範囲を人の手で調整して行うハイパーパラメータが存在する.

**ハイパーパラメータ [#g81ace7b]
ハイパーパラメータにはコストパラメータCとRBFカーネルを選択した際に使用するγが存在する.&br;
それぞれのパラメータについては下記で説明をする.

***コストパラメータC [#y89ca159]
誤判別をどこまで許容するかを表すパラメータであり, Cの値を大きくするほど誤判別に厳しくなる.&br;
また,値を大きくすればするほど過学習をしてしまい識別性能が悪くなる.
CENTER:&ref(small_c.png,center,60%);&ref(big_c.png,center,60%);
CENTER:C: 小さいとき                 C: 大きいとき

***RBFカーネルのパラメータγ [#j95a496b]
境界線の複雑さを決めるパラメータである. &br;
γが小さいほど単純な境界線になり,大きいほど複雑な境界線になる.
CENTER:&ref(small_gamma.png,center,60%); &ref(big_gamma.png,center,60%);
CENTER:γ: 小さいとき               γ: 大きいとき

*止まれ標識判定実験 [#s0608379]
**実験方法 [#r83f5c2a]
SVMに学習用標識画像のHOG特徴量を学習させる.&br;
学習用標識画像として止まれ標識画像1065枚,その他標識画像1083枚を使用した.&br;
次に学習済みSVMに判定したい標識画像をセットし,止まれ標識判定の精度,速度を算出した.&br;
セットする標識画像は止まれ標識画像147枚,その他標識画像169枚で行った.&br;
ハイパーパラメータにおいてはC, γそれぞれ0.01刻みで0.01~0.10の範囲で精度調整を行い最適化をした.

**セットする標識画像の一例 [#f99d0b69]
使用する標識画像は草や木に隠れていたり,薄暗い環境,光の反射など様々な条件の標識画像で行った.
#ref(set_sign_img.png,center,40%)

**判定実験の評価 [#ieeba879]
評価の仕方としてTP, FN, TN, FPを用いて,精度(Precious)とF値を求める.それぞれ何を評価しているのか以下で説明をする.
評価の仕方としてTP, FN, TN, FPを用いて,精度(Precious)とF値を求める.それぞれ何を評価しているのか下記で説明をする.

''TP'' -止まれ標識画像を止まれ標識と判定

''FN'' -止まれ標識画像を止まれ標識ではないと判定

''TN'' -止まれ標識ではない標識画像を止まれ標識ではないと判定

''FP'' -止まれ標識ではない標識画像を止まれ標識と判定

''精度'' -陽性(止まれ標識画像)と判定された中で実際に陽性だった割合. 
#ref(precious_calculation.png,center,50%);

''F値'' -精度と再現率(Recall)の調和平均.精度としてどれくらい信頼できるかを表す.また再現率とは陽性(止まれ標識画像)データの内,どのくらい陽性として判定したかを表す割合.
#ref(f_calculation.png,center,50%);

**実験結果 [#e08554ce]
判定結果は表1に示す.&br;
ハイパーパラメータはγ = 0.01, C = 0.1が止まれ標識の判定精度において最適な値となった.&br;
1枚あたりの標識画像の判定精度は0.017秒.&br;
止まれ標識画像147枚中, 145枚を正しく判定することが出来た.精度としては92.95%達成した.&br;
#ref(result.png,center,40%);

*考察 [#ne36e4d1]

**誤判定(FP) [#sb674c6b]
止まれ標識ではない標識画像を止まれ標識と判定してしまった原因を考察していく.&br;
図5から分かるように徐行標識は止まれ標識と形が似ていることから誤判定をしてしまったと考えられる.&br;
また本研究ではSVMの学習段階で徐行標識の学習用標識画像が少なく,学習量が不足してしまっていることも原因の一つであると考える.&br;
CENTER:&ref(fp_1.png,center,40%); &ref(fp_2.png,center,40%);
CENTER:&ref(fp_3.png,center,40%); &ref(fp_4.png,center,40%);
CENTER:図5:誤判定(FP)の画像

**誤判定(FN) [#xac06eed]
止まれ標識画像を止まれ標識ではないと判定してしまった原因を考察していく.&br;
図6より,止まれ標識の向きが斜めに曲がってしまっていることから誤判定をしてしまったと考えられる.
CENTER:&ref(fn_1.png,center,170%); &ref(fn_2.png,center,90%);
CENTER:図6:誤判定(FN)の画像

*今後の課題 [#q440dcfc]
徐行標識は止まれ標識と形が似ているため誤判定をしてしまうことから,正しく区別させる必要がある.&br;
そのためHOG特徴だけでは形が似ている標識に対して識別を行うのは限界があると考えた.&br;
したがって,今後の研究としては標識の色を区別するための色特徴と組み合わせて形が似ている標識に対しても正しく判定出来るように改善をしていく.&br;
また徐行標識の学習不足も考えられるため,より多くの学習用徐行標識画像を集めてSVMに学習させていく.&br;
ハイパーパラメータはSVMの学習量の増加に応じて調整が必要となってくるため引き続き調整を行っていく.

*参考文献 [#g56aab5c]
[1]https://algorithm.joho.info/image-processing/hog-feature-value/

[2]https://ikatakos.com/pot/programming/python/packages/scikit-image/hog

[3]https://www.qoosky.io/techs/e9963e1c4b

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS