#author("2020-03-13T07:38:47+00:00","default:ail-wiki","ail-wiki")
#author("2020-03-16T08:15:36+00:00","default:ail-wiki","ail-wiki")
[[太田研 公開用Wiki]]

*色抽出とテンプレートマッチングを用いた複数種類の道路標識の自動検出 [#s67cd200]
#contents

*序論 [#i4c4d824]
近年開発が盛んに行われている自動運転車の安全な走行を実現するためには, 自動運転車が交通規制を認識する必要があり, 道路標識の自動検出・認識技術は必須である. 
自動運転車が標識を検出できるようにするには, 標識からビーコンを出す等, 交通インフラ側を整備する方法が考えられるが, 既存の社会基盤に大きな変更を加える方法では、膨大な資金と時間が必要である. 
よって今ある道路標識を活用できる, 人間の目と同様に画像による道路標識の検出が有効であると考えた. 

画像から道路標識を検出する手法として、これまた近年盛んに研究されている機械学習がある. 
しかし, 機械学習は学習に多量のデータや計算資源を要し、あらゆる場面でこれを用いるのは得策ではない. 
対して本研究では, とりわけ重要度が高い赤色を用いた標識を検出対象とし, シンプルなアルゴリズムでも充分高精度に道路標識を検出できることを示す.

また, 実際の公道に於いては, 複数種類の標識を同時に検出, 認識しなければならない場面は多いと言える. 
よって速度標識など赤色円形の標識と, 一時停止標識を同時に複数検出できる実装を試みる. 

*手法 [#y06bcc13]
道路標識はJIS規格により定められた特徴的な配色を用いている. 
そこで自動運転車の前方の画像から赤色領域を抽出し, その形状を検査することで対象の道路標識を検出する. 
アルゴリズムは大まかに図2.1の様に構成されている.
以下に詳細を説明する.
#ref(algorithm.png,center,40%)
CENTER:図2.1: 標識検出のフローチャート

**赤色領域抽出 [#s874a0fd]
先ず前処理として入力画像の表色系をHSV表色系に変換しておく. 
図2.2は入力画像の例である. 
その後入力画像から赤色の領域のみを抽出し, 図2.3の様な画像を得る. 
更に抽出した領域を二値化した画像が図2.4である. 
赤色は表2.1の如くHSV表色系に基づく閾値により定義しておく. 
ここで色相と彩度のみを用い, 明度を見ないことである程度の照明変化に対応している. 

CENTER:表2.1: 赤色領域抽出処理で用いた閾値
|色相|H <= 10°, 270° <= H|
|彩度|S >= 13.7%|
#br
#ref(bgr_img.png,center,80%)
CENTER:図2.2: 入力画像の例
#br
#ref(red_img.png,center,40%)
CENTER:図2.3: 赤色領域を抽出した画像
#br
#ref(bin_img.png,center,40%)
CENTER:図2.4: 抽出した領域を二値化した画像

**ラベリング [#ac7b53dc]
ラベリングは画素の連続性を検査し, 連続で独立な領域を判定する処理である. 
ここで各領域の座標, 幅, 高さの値を得る. 得た値を表示した画像が図2.5である. 
この処理は後半2段の前処理となる. 

#ref(label_param.png,center)
CENTER:図2.5: 各領域の座標と大きさ

**雑音除去 [#g1491df5]
先に求めた連続領域のうち, 画像の高さに対して, 
高さもしくは幅が2.8%未満の小さな領域を, ノイズと見做して削除する. 
例えば図2.6では左に木の陰が写っているが, 図2.7では正しく削除されている. 

#ref(bin_img.png,center,40%)
CENTER:図2.6: 雑音除去前の画像
#br
#ref(denoised_img.png,center,40%)
CENTER:図2.7: 雑音除去後の画像

**テンプレートマッチング [#f8b8d7c7]
テンプレートマッチングは対象画像の中で注目領域を走査させながら, 
注目領域とテンプレートとの類似度を計算する処理である. 
これにより赤色領域の形状を検査する. 

テンプレートは改めてラベリング処理を行って得た, 標識の候補となる領域の幅, 高さに合わせ, 拡大・縮小する. 
このとき, テンプレートを複数用いて, 複数種類の道路標識の検出を実現する. 

実験では赤色円形の標識用, 一時停止標識用の2つを用いた. 
それぞれに対して表2.2の閾値を与え, 
類似度がこれ以上のとき, 検出対象の標識であると判定する. 
なお, 実験での類似度計算にはZNCCを用いたが, 
SAD等他の計算法[[[1]>#j76cb3f5]]を閾値調整の上で用いることもできるだろう. 

CENTER:&ref(temp_circ.png,center); &ref(temp_stop.png,center,20%);
CENTER:図2.8: 赤色円形の標識用  図2.9: 一時停止標識用
#br
CENTER:表2.2: テンプレートマッチングの閾値
|赤色円形の標識|0.5|
|一時停止標識|0.75|

*実験と評価 [#m56d49b0]
**実験方法 [#ke6caad2]
2019年12月15日〜20日の日中, 群馬県内でドライブレコーダーにより撮影された, 自動車前方の映像から画像を生成. 
検出対象の標識が1枚以上写った画像225枚を選び, 画像セットを作成した. 
この画像セットに対し, 上記のアルゴリズムを実装したプログラムを実行した. 
なお, 実装にはIntel社が開発を行っているライブラリ, OpenCV[[[2]>#j76cb3f5]]を用いた. 

**実験結果 [#t6bf0221]
結果のうち成功した例と失敗した例を以下に2つずつ示す. 
なお, 速度標識や駐車禁止の標識など, 赤色円形の標識を検出した場合は青色の正方形で表し, 
また, 一時停止の標識の場合は赤色の正方形で表している. 

***成功例 [#y50e4a92]
図3.1の画像では, すべての検出対象を正しく検出できた. 

また, 図3.2の様に多少逆光の場合でも標識を検出できた. 

#ref(true1.png,center,80%)
CENTER:図3.1: 成功例1
#br
#ref(true2.png,center,80%)
CENTER:図2.7: 成功例2

***失敗例 [#tf5fcd5d]
図3.3の画像では, 検出対象である一時停止の標識を検出できなかった. 
更に, 一時停止の標識右の木を赤色円形の標識と誤認して検出している. 

また, 図3.4の様に極端な逆光の場合は検出できなかった. 

#ref(false1.png,center,80%)
CENTER:図3.3: 失敗例1
#br
#ref(false2.png,center,80%)
CENTER:図3.4: 失敗例2

**評価 [#td0368bf]
標識検出の成否をTP, FP, FNの3つのクラスに分類し表3.1を得た. ここではそれぞれ, 

:TP|正しく検出できた標識 (True Positive)
:FP|誤って検出した標識でないもの (False Positive)
:FN|検出できなかった標識 (False Negative)

である. 

CENTER:表3.1: 各クラスに分類された標識の数
|TP|RIGHT:258|
|FP|RIGHT:  5|
|FN|RIGHT:110|

そして, 各クラスに分類された標識の数から精度 (Precision), 検出率 (Recall), F値の3つで本アルゴリズムを評価した. 
以下にそれぞれの式を示す. 

#ref(formula.png,center,30%)

斯くして, 表3.2の如き統計量を得た. 
ここから, 実験では画像セットに写っている373枚の標識中258枚を正しく検出した. 
また, 精度は98%を達成した. 

CENTER:表3.2: 本アルゴリズムの評価
|精度  |0.981|
|検出率|0.701|
|F値   |0.818|

*考察 [#lfe49bc1]
以下に未検出や誤検出の原因について考察する. 

**失敗例1について [#c708f58b]
図4.1は図3.3の標識付近を拡大した画像である. 
この画像では一時停止の標識に隣接して, 木の枝の先が赤く映っている. 
図4.1に赤色抽出処理を施すと図4.2の画像となる. 
このような場合, 雑音除去を施しても図4.3の様に木の枝等が標識と一体の領域として処理され, 
テンプレートマッチングの段階ではマッチングスコアが低下し検出できない. 

CENTER:&ref(discuss1_color.png,center,54%); &ref(discuss1_red.png,center,80%); &ref(discuss1_denoised.png,center,80%); 
CENTER:図4.1: 入力画像 図4.2: 赤色抽出後 図4.3: 雑音除去後

**失敗例2について [#w0203cbe]
図4.4は図3.4の標識付近を拡大した画像である. 
図4.4に赤色抽出処理を行った画像が図4.5である. 
この様に強い逆光の画像からは赤色が殆ど抽出できない. 
とりわけ縦に並んだ標識のうち下のものは褪色しているため, 全く赤色の円形が抽出できていない. 
上の標識は少しは抽出できているものの, 細切れの小さい領域なのでノイズと見做され, 
図4.6の様に削除されてしまう. 

この問題を閾値調整で解決しようとすると, 精度とトレードオフとなり容易ではない. 
例えば逆光の中写った標識や褪色した標識の赤色を抽出すべく, 
赤色の閾値を広げると前節で述べたような木をより多く抽出してしまう. 

CENTER:&ref(discuss2_color.png,center,80%); &ref(discuss2_bin.png,center,80%); &ref(discuss2_denoised.png,center,80%); 
CENTER:&ref(discuss2_color.png,center,90%); &ref(discuss2_bin.png,center,90%); &ref(discuss2_denoised.png,center,90%); 
CENTER:図4.4: 入力画像 図4.5: 赤色抽出・二値化後 図4.6: 雑音除去後

*結論 [#nb64b765]
本論文では先ず, 機械学習等に依らず, 基本的な画像処理の組み合わせにより道路標識を検出する手法を提示した. 
そしてこれに対して実際のドライブレコーダーの画像を入力とする実験を行った. 
結果, 照明や背景等の条件により検出できない標識があるものの, 98%の高精度で道路標識を検出できることを示した. 

発展として, 青色を基調とした道路標識の検出にも本手法を応用できると思われる. 
また, 今回は昼間の画像に対してのみ実験を行ったが, 
夜間の画像をも入力とした実験を行い, 本手法の有効性を検証し, 
閾値の調整, 或いはアルゴリズムの改良を行うことも考えられる. 

今後の課題として, 褪色した標識をも検出できるようにすることが挙げられる. 
特に道路標識の赤色は褪色しやすく[[[3]>#j76cb3f5]], 手法の改良を要する. 
また, 本研究ではアルゴリズムの実行速度について厳密には考慮していない. 
高速なテンプレートマッチングアルゴリズムの使用や並列処理, コーディングの工夫等によって
車載の計算機でも充分に高速に実行できる実装が望まれる. 

*参考文献 [#j76cb3f5]
[1] 秋月秀一, 櫻本泰憲. 
中京大学 橋本研究室. 
"基本的なテンプレートマッチング" (2013-06-08). 
http://isl.sist.chukyo-u.ac.jp/Archives/tm.html (accessed 2020-02-29). 

[2] "OpenCV.jp". http://opencv.jp/ (accessed 2020-02-29). 

[3] 道満恵介, 出口大輔, 他. 
"色変動を考慮した生成型学習法を用いたカスケード型標識検出器". 
電子情報通信学会技術研究報告 : 信学技報. vol.108. no.363. p.135-140.

-----
#counter

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