#author("2021-04-27T04:10:00+00:00","default:ail-wiki","ail-wiki") [[太田研 公開用Wiki]] #author("2023-03-03T02:02:18+09:00","default:ail-wiki","ail-wiki") [[太田研 公開用Wiki]] #contents *はじめに [#q94a99e4] **研究背景 [#p143d39c] 「つくばチャレンジ」という,公開実験がある.これは,2007 年から毎年実施されている,つくば市内の市街地で移動ロボットが自律走行する技術チャレンジであり,人々が普段使っている実環境における,自律走行技術の進歩を目的としている.この「つくばチャレンジ」では,例年課題コースの自律走行の必須課題に加えて, 選択課題が課されており,太田研究室では毎年参加している. 2020 年度は新型コロナウイルス感染症の影響により,実験走行および本走行は中止となった.そのため全チームに対する共通の課題等は設定されなかった.以下からは 2019 年度のコースや課題内容をもとに説明を行う. 2019 年度では,課題コースが約 2.5km となっており,コースは図 1 のようになっている. 選択課題として事前データ取得なし走行,信号認識横断,チェックポイント通過 + 経路封鎖迂回,探索対象発見が出題されている. #ref(corse.png,center,50%) CENTER:図1:2019年度の課題コースの地図 **研究目的 [#kc8fdcdc] 選択課題の信号認識横断はロボットが歩行者用信号と自動車の状況を認識して横断開始する必要がある.そのため, ロボットは歩行者用信号が赤であるのか緑であるのか,また横断歩道は渡れる状態になっているのかを認識しなければならない.今回はその中の歩行者用信号の状態変化の検出を目的とし研究を行った. 本研究では,信号機の状態の変化を,異なる時刻での撮影画像から生成した差分画像をもとに検出を行った.また,共通のテンプレート画像を用い,テンプレートマッチングにより検出を行うため,機械学習などに比べて,低い計算コストで実装が可能である. *提案手法 [#nff4098e] **先行研究について [#v0369734] 本研究は防衛大学校の冨沢哲雄氏による”Using Difference Images to Detect Pedestrian Signal Changes” という先行研究を参考にしている.この先行研究では,差分画像とテンプレートマッチングを用いて LED 式歩行者用信号機の状態変化の検出を行っている.本研究では,同様の手法で複数の異なる交差点に対して共通のテンプレート画像を用い,電球式歩行者用信号機での状態変化の検出を行う. **信号機の状態変化の検出方法 [#c3eb00ab] 提案手法では,異なる時刻に同位置にて撮影した 2 枚の画像を用いて差分画像を生成し,その画像から,信号機の状態変化を検出する.提案手法の大まかな流れを以下に示す. +検出に用いる差分画像を生成する +テンプレート画像の生成 +テンプレートマッチング +結果出力 以下で処理の詳細と用いたアルゴリズムについて述べる. **検出に用いる差分画像 [#k91cb2c3] 本研究では,信号機の状態変化の検出を行う際に差分画像を用いる.ここで用いる差分画像とは,2 枚の画像の対応する画素に以下の式を適用して生成した画像のことである. #ref(f.png,center,80%) Rcは現在の画像のR値,Rpは過去の画像のR値である.どちらも0から255までの値を持つ8ビットの数値でG,Bも同様である.式により,導出された差分画像は,次のような特徴をもつ. 1.変化のない画素は灰色になる #ref(d1.png,center,50%) CENTER:図2: 変化のない画像から生成した差分画像 2.信号変化前後の差分画像には表示灯の位置に特徴的なパターンが出現する #ref(d2.png,center,50%) CENTER:図3: 信号変化の際に現れる特徴的なパターンの一例 3.移動する物体によって生じる差分は信号表示の変化による差分のパターンとは異なる #ref(d3.png,center,53%) CENTER:図4: 自動車が通過した例 これら 3 つの特徴を活かして信号機の状態変化の検出を行う. **歩行者用信号機の状態変化とその際に生成される差分画像 [#rabce994] 日本の歩行者用信号機は,赤・緑・消灯の3つの状態を組み合わせた図6のようなA~Fの6つの状態変化をもつ.赤から緑の状態変化はA,緑から赤の状態変化はBとなる.緑の点滅状態はCとDの繰り返しとなり,その後信号機によって異なるが,消灯から赤の状態変化Eまたは緑から赤の状態変化Bを経由し,赤信号へ変化する.なお日本の歩行者用信号機では赤から消灯の状態変化Fは基本的に発生しないが,便宜上記載している. #ref(sgc.png,center,50%) CENTER:図5: 歩行者用信号機の状態変化 図5のようなA~Fの状態変化が起きている2枚の画像に対し,上で紹介した式(1)~(3)を適用すると,図5のA~Fに対応した特徴的なパターンが生成される.図6に図5のそれぞれA~Fに対応する特徴的なパターンを示した. #ref(sdp.png,center,50%) CENTER:図6: A~F の状態変化の際に差分画像に現れる特徴的なパターン つまり,信号機の状態変化を検出するには,図7で示したような特徴的なパターンが差分画像内に現れたかどうかを検出すれば良い.そこで,検出の手法として本研究では,テンプレートマッチングを用いた. **テンプレート画像の生成 [#i0188d42] テンプレートマッチングに用いるテンプレート画像の生成について説明する.まず,状態変化A(赤→緑)の前後の歩行者用信号機をあらかじめ撮影し,その2枚の画像から上で紹介した式(1)~(3)を適用し,差分画像を生成する.実際の画像とその画像から生成された差分画像を図7に示す. #ref(t1.png,center,50%) CENTER:図7: 状態変化A(赤→緑)の前後の画像と生成された差分画像 生成された差分画像内に図6の状態変化Aと同じような特徴的なパターンが出現していることがわかる.この特徴的なパターンの周囲を矩形で切り取ったものを,状態変化Aを検出するためのテンプレート画像Aとして利用する. このテンプレート画像Aに対し,画像処理を行うことで,他の状態変化に対応するテンプレート画像を作成することができる. まず,状態変化D(消灯→緑)のテンプレート画像Dは,テンプレート画像Aの上半分を灰色で塗りつぶすことで生成する.状態変化F(赤→消灯)のテンプレート画像Fは,テンプレート画像Aの下半分を同様に灰色で塗りつぶすことで生成する.そして,テンプレート画像A・D・Fのネガポジ変換により状態変化B・C・Eに対応したテンプレート画像B・C・Eを生成することができる.テンプレート画像Aから他の状態遷移に対応するテンプレート画像を生成するステップを図8に示す. #ref(t2.png,center,50%) CENTER:図8: テンプレート画像A から他の状態遷移に対応するテンプレート画像を生成するステップ **テンプレートマッチング [#m0e016e5] まず,テンプレートマッチングとはテンプレート画像と入力画像を用意し,入力画像内にテンプレート画像と似た領域があるのか,または似た領域がないのかを調べる手法である.ここでの入力画像とは上で紹介した手法で生成した差分画像のことである. 撮影された画像から生成した差分画像に対し,生成したテンプレート画像を用いて,テンプレートマッチングを行う.テンプレートマッチングはスコアの算出方法にいくつかの種類があるが,ここでは明るさの変化に堅牢なZNCC(Zero-mean Normalized Cross Correlation)という計算手法を用いている. そのため,正の相関があるときは+1に近く,負の相関があるときは−1に近い値を持つ.上で説明したように,テンプレート画像Aとテンプレート画像B,テンプレート画像Cとテンプレート画像D,テンプレート画像Eとテンプレート画像Fはそれぞれのネガポジ変換で作成されている.よってこれらの状態変化が発生した際のスコアは以下の表の傾向になる. CENTER:表1: 状態変化とスコア |CENTER:発生した状態変化|CENTER:テンプレート画像|CENTER:相関係数| |CENTER:A|CENTER:A|CENTER:+1へ近づく| |CENTER:B|CENTER:A|CENTER:-1へ近づく| |CENTER:C|CENTER:D|CENTER:-1へ近づく| |CENTER:D|CENTER:D|CENTER:+1へ近づく| |CENTER:E|CENTER:F|CENTER:-1へ近づく| |CENTER:F|CENTER:F|CENTER:+1へ近づく| よって,A~Fの状態変化を検出するために,6つのテンプレート画像全てでテンプレートマッチングを行う必要はなく,テンプレート画像A・テンプレート画像D・テンプレート画像Fの3つを用いてテンプレートマッチングの最大値・最小値を求めることで6つの状態変化すべてを検出することができる. *評価実験 [#z9489878] 本章では,提案手法に基づいて行った実験に関してデータセット,実験結果,検出結果について述べる. **データセット [#raf153f7] 本実験では,群馬大学桐生キャンパス周辺の交差点で撮影した1150枚の歩行者用信号機の画像を用いて実験を行う.画像は露出とホワイトバランスを信号機ごとに固定し,約1秒間隔で撮影した.これらの撮影画像1150枚から,差分画像を生成し,テンプレートマッチングを行っていく. 実験画像群に含まれる状態変化の内訳を以下の表に示す. CENTER:表2: 実験画像群内に含まれる状態変化の内訳 |CENTER:状態変化|CENTER:枚数| |CENTER:A(赤→緑)|36| |CENTER:B(緑→赤)|16| |CENTER:C(緑→消灯)|13| |CENTER:D(消灯→緑)|5| |CENTER:E(消灯→赤)|7| |CENTER:F(赤→消灯)|0| **実験方法 [#p6c0fd4e] ***テンプレート画像としきい値 [#y30fabb8] まず,差分画像を生成し,信号機を検出するためのテンプレート画像を作成する. テンプレートマッチングに用いるテンプレート画像は,信号機周辺を切り抜いたものを使用した.具体的には,歩行者用信号機が状態変化A(赤→緑)が発生した際の差分画像を用い,27pix×48pixに調節したもの1枚を使用した. また,交差点によってカメラから信号機の位置が大きく異なり,画像内に写る信号機の大きさに差が出る.そこで同様のテンプレート画像でサイズ違いのものを3種類用意した.テンプレート画像のサイズは,38pix×67pix,27pix×48pix,14pix×24pixの3種類である.ここで用意したテンプレート画像のサイズは,実験画像群内に写る信号機の最大のサイズ・平均のサイズ・最小のサイズをもとに設定した.サイズ違いのテンプレート画像やテンプレート画像D,Fは状態変化A(赤→緑)が発生した際の差分画像から作成した27pix×48pixの1枚を加工し生成している.そして,この3種類のサイズ全てでテンプレートマッチングを行い,いずれかでしきい値を超えた場合,信号の状態変化が起きたと判定している. 今回の実験では,以下の条件で信号機の状態変化を判定した. -テンプレート画像Aの3種類のサイズ全てでテンプレートマッチングを行い,その際のいずれかのスコアでしきい値を超えた場合,状態変化A(赤→緑)が発生したと判断 -テンプレート画像Aの3種類のサイズ全てでテンプレートマッチングを行い,その際のいずれかのスコアでしきい値に−1を乗じた値を下回った場合,状態変化B(緑→赤)が発生したと判断 -テンプレート画像Dの3種類のサイズ全てでテンプレートマッチングを行い,その際のいずれかのスコアでしきい値に−1を乗じた値を下回った場合,状態変化C(緑→消灯)が発生したと判断 -テンプレート画像Dの3種類のサイズ全てでテンプレートマッチングを行い,その際のいずれかのスコアでしきい値を超えた場合,状態変化D(消灯→緑)が発生したと判断 -テンプレート画像Fの3種類のサイズ全てでテンプレートマッチングを行い,その際のいずれかのスコアでしきい値に−1を乗じた値を下回った場合,状態変化E(消灯→赤)が発生したと判断 -テンプレート画像Fの3種類のサイズ全てでテンプレートマッチングを行い,その際のいずれかのスコアでしきい値を超えた場合,状態変化F(赤→消灯)が発生したと判断 検出結果はわかりやすいように,状態変化ごとに色分けした矩形を差分画像内に表示させている.以下が状態変化と矩形の色分けの対応表である. CENTER:表3: 状態変化と矩形の色 |CENTER:状態変化|CENTER:色| |CENTER:A(赤→緑)|赤| |CENTER:B(緑→赤)|緑| |CENTER:C(緑→消灯)|シアン| |CENTER:D(消灯→緑)|青| |CENTER:E(消灯→赤)|マゼンタ| |CENTER:F(赤→消灯)|イエロー| ***テンプレートマッチングを行う差分画像 [#k7524904] 今回の実験ではテンプレートマッチングを行う差分画像を2種類用意した. 一つは撮影された画像から生成された差分画像の信号機周辺を切り抜いたもの,もう一つは撮影された画像から生成された差分画像に対し,何も加工を行わないものである. #ref(cutimg.jpg,center,50%) CENTER:図9: 信号機周辺を切り抜いた差分画像 #ref(img.jpg,center,50%) CENTER:図10: 加工を行わない差分画像 差分画像の信号機周辺を切り抜いたものは,しきい値0.00~0.70までを0.10刻みずつ,0.70~1.00まで0.05刻みずつで変化させ,検出率等の計測を行った.差分画像に何も加工を行わないものは,しきい値0.70,0.80,0.90の3種類で検出率等の計測を行った.テンプレート画像は2つとも同じものを用いた. これらの実験データは検出位置の座標,スコアの値,検出した状態変化等をまとめ,CSVファイルに出力した. **実験結果 [#ud658503] ***集計方法 [#j674295c] 今回は表3で示した矩形,出力されたCSVファイル,実際の撮影画像のこれらを見比べて,実際に信号機の状態変化が起きた際に正しく検出できているのかを確認した.正しい状態変化を検出ができている例を以下の図11に示す. #ref(TPex1.jpg,center,50%) CENTER:図11: 正しい状態変化の検出ができている例 上記の図では信号が赤から緑に変化する際の特徴的なパターンを正しく検出できていることがわかる.次に誤った状態変化を検出した例を以下の図12に示す. #ref(FPex1.jpg,center,50%) CENTER:図12: 誤った状態変化を検出した例 上記の図では歩行者を信号状態変化と誤って検出してしまった.次に信号機の状態変化を検出できなかった例を以下の図13に示す. #ref(FNex1.jpg,center,50%) CENTER:図13: 信号機の状態変化を検出できなかった例 画像内に赤から緑に変化する際の特徴的なパターンが写っているのがわかるが,矩形が表示されず,検出できなかった. 実験の結果として差分画像上で,信号機の正しい状態変化が検出されたものをTP,何も変化していない状態で何も検出しなかった場合をTN,信号機以外の要因による状態変化の検出や信号機の誤った状態変化を検出してしまったものをFP,信号機の状態変化そのものを検出できなかった場合をFNとして扱う.TP,FPの捉え方として信号機の正しい状態変化そのものを検出できているかどうかでカウントを行う.そのため,TPとFPが混在する場合がある. 以下の図が実際にTPとFPが混在する例である.信号機の正しい状態変化B(緑色の矩形)を検出できているが,その他の信号機とは関係のない部分(シアンの矩形)で誤った判定が行われている.このような結果ではTPとFPを重複してカウントを行った. #ref(TFex1.jpg,center,50%) CENTER:図14: TPとFPが混在する結果例 ***信号機周辺を切り抜いた差分画像での結果 [#tea13833] この実験では,しきい値0.00~0.70までを0.10刻みずつ,0.70~1.00まで0.05刻みずつで変化させ,計測を行った.各しきい値でのTP・TN・FP・FNの結果を以下の表に示す.なお,以下の結果は状態変化A~Fすべてを合算した結果である. CENTER:表4: 各しきい値でのTP・TN・FP・FNとTPR・FPR |しきい値|TP|TN|FP|FN|TPR(検出率)[%]|FPR(誤検出率)[%]| |0.00|RIGHT:76|RIGHT:0|RIGHT:1131|RIGHT:0|RIGHT:100.00|RIGHT:100.00| |0.10|RIGHT:76|RIGHT:0|RIGHT:1131|RIGHT:0|RIGHT:100.00|RIGHT:100.00| |0.20|RIGHT:76|RIGHT:0|RIGHT:1131|RIGHT:0|RIGHT:100.00|RIGHT:100.00| |0.30|RIGHT:76|RIGHT:19|RIGHT:1112|RIGHT:0|RIGHT:100.00|RIGHT:98.32| |0.40|RIGHT:76|RIGHT:274|RIGHT:857|RIGHT:0|RIGHT:100.00|RIGHT:75.77| |0.50|RIGHT:76|RIGHT:643|RIGHT:488|RIGHT:0|RIGHT:100.00|RIGHT:43.15| |0.60|RIGHT:76|RIGHT:869|RIGHT:260|RIGHT:0|RIGHT:100.00|RIGHT:23.03| |0.70|RIGHT:75|RIGHT:1005|RIGHT:70|RIGHT:1|RIGHT:98.68|RIGHT:6.51| |0.75|RIGHT:70|RIGHT:1045|RIGHT:13|RIGHT:6|RIGHT:92.11|RIGHT:1.23| |0.80|RIGHT:69|RIGHT:1054|RIGHT:1|RIGHT:7|RIGHT:90.79|RIGHT:0.09| |0.85|RIGHT:51|RIGHT:1055|RIGHT:0|RIGHT:25|RIGHT:67.11|RIGHT:0.00| |0.90|RIGHT:19|RIGHT:1055|RIGHT:0|RIGHT:57|RIGHT:25.00|RIGHT:0.00| |0.95|RIGHT:2|RIGHT:1055|RIGHT:0|RIGHT:74|RIGHT:2.63|RIGHT:0.00| |1.00|RIGHT:0|RIGHT:1055|RIGHT:0|RIGHT:76|RIGHT:0.00|RIGHT:0.00| ***加工を行わない差分画像での結果 [#yab19346] この実験では,しきい値0.70,0.80,0.90の3種類で計測を行った.各しきい値でのTP・TN・FP・FNの結果を以下の表に示す.なお,以下の結果は状態変化A~Fすべてを合算した結果である. CENTER:表4: 各しきい値でのTP・TN・FP・FNとTPR・FPR |しきい値|TP|TN|FP|FN|TPR(検出率)[%]|FPR(誤検出率)[%]| |0.70|RIGHT:73|RIGHT:512|RIGHT:587|RIGHT:1|RIGHT:98.65|RIGHT:53.41| |0.80|RIGHT:58|RIGHT:909|RIGHT:22|RIGHT:7|RIGHT:89.23|RIGHT:2.36| |0.90|RIGHT:12|RIGHT:929|RIGHT:0|RIGHT:53|RIGHT:18.46|RIGHT:0.00| *考察 [#sb67d471] 本章では, 提案手法に基づいて行った実験に関しての考察述べる. **信号機周辺を切り抜いた差分画像の結果に基づいた考察 [#t08be211] 表4 の結果よりROC 曲線を作成したものが以下のグラフである. #ref(ROC.png,center,50%) CENTER:図15: 表4 をもとに作成したROC 曲線 この信号機周辺を切り抜いた差分画像においては,このROC曲線より,しきい値0.70 から0.80 が良い結果と考える. **加工を行わない差分画像の結果に基づいた考察 [#g7526688] ここでは主にしきい値0.70 と0.80 における結果の考察を述べる. ***未検出について [#m25bb838] 表5 より,しきい値0.70 においては検出率が98.65%,しきい値0.80 では誤検出率89.23%,しきい値0.90 では誤検出率が18.46%になった.ここでは検出できなかった結果に対し考察を行う. ***照明条件による未検出事例 [#gb22ec1c] 以下の図は照明条件により,未検出が起きた撮影画像と差分画像である. #ref(FN1_1.jpg,center,50%) CENTER:図16:過去の画像 &br; #ref(FN1_2.jpg,center,50%) CENTER:図17:現在の画像 上記2枚から生成された差分画像が以下の図である. #ref(FN1_re.jpg,center,50%) CENTER:図18:差分画像 上記の例はしきい値0.70,0.80ともに検出できなかった.この未検出事例は照明条件によるものと考える.西日が信号機へ差し込んでいて,肉眼でも区別が難しい状態になっている.特に差分画像に注目すると特徴的なパターンが出現してはいるものの非常に薄いことがわかる.これにより,テンプレート画像との差が大きくなってしまい,スコアが上昇せず,未検出となってしまったのではないかと考える. このような未検出事例を改善するためには,しきい値を下げることでも検出自体は可能であると考えるが,誤検出が非常に増えてしまう恐れがある.そこで,テンプレート画像側を改良すれば検出できるのではないかと考える.今回用いたテンプレート画像は西日等を考慮せず,適当な信号機の画像から作成したものである.新たに照明条件が異なるテンプレート画像等を用意することで検出が可能になるのではないかと考える. ***撮影環境による未検出事例 [#pf7d21cf] 以下の図は撮影環境により,未検出が起きた撮影画像と差分画像である. #ref(FN2_1.jpg,center,50%) CENTER:図19:過去の画像 &br; #ref(FN2_2.jpg,center,50%) CENTER:図20:現在の画像 上記2枚から生成された差分画像が以下の図である. #ref(FN2_re.jpg,center,50%) CENTER:図21:差分画像 上記の例はしきい値0.80において検出できなかったものである.この未検出事例は撮影環境によるものと考える.差分画像に注目すると電柱や信号機周辺に影のようなものが多く発生しているのがわかる.これは,何らかの原因で撮影時にカメラが微小にずれてしまい,差分画像に影響が出てしまい,スコアが上昇せずに検出できなかったのではないかと考える. ***誤検出について [#pc58c069] 表5より,しきい値0.70においては誤検出率が53.41%,しきい値0.80では誤検出率が2.36%,しきい値0.90では誤検出率が0%になった. ***消灯を含む状態変化に関連した誤検出事例 [#fa7b8240] しきい値0.70,0.80ともに中心となった誤検出は消灯を含む状態変化であった.以下の図22,図23にそれぞれしきい値0.70,0.80での具体例を示す. #ref(ol_.7.jpg,center,50%) CENTER:図22:しきい値0.70において消灯を含む状態変化として誤検出が起きた例 &br; #ref(ol_.8.jpg,center,50%) CENTER:図23:しきい値0.80において消灯を含む状態変化として誤検出が起きた例 消灯を含む状態変化とは図6のC・D・E・Fの変化である.これらの状態変化を検出するためのテンプレート画像は以下の図25に示すように,上または下半分が灰色になっている.そのため,自動車の通過等により,撮影画像内に写る風景が変化したときにおいて,スコアが上昇しやすく,しきい値0.70以上またはしきい値-0.70以下になってしまったのではないかと推測する. #ref(ol.png,center,50%) CENTER:図23:消灯を含む状態変化を検出するために用いるテンプレート画像 これらの誤検出事例はしきい値0.70では相次いだがしきい値0.80にすることで大幅に減少した.そのためしきい値を引き上げることで誤検出率の低減につながるのではないかと考えるが,しきい値を引き上げたことにより,検出率が低下してしまう.そのため,検出範囲の限定,複数の状態変化検出時にスコアの大きい方を採用するなどしきい値によらない対策を行うことも必要だと考える. ***別方向の信号機の状態変化を検出してしまったことによる誤検出事例 [#e0cefd74] わずかではあったが,別方向の信号機の状態変化を検出してしまった例もあった.以下の図25,図26にそれぞれしきい値0.70,0.80での具体例を示す. #ref(FP_ot1.jpg,center,50%) CENTER:図25:しきい値0.70において別方向の信号機の状態変化を検出してしまった例 &br; #ref(FP_ot2.jpg,center,50%) CENTER:図26:しきい値0.80において別方向の信号機の状態変化を検出してしまった例 これは3.2.1項でも述べたように,カメラから信号機までの距離が異なる場合でも検出できるようにサイズ違いのテンプレート画像を用意したことによるものではないかと考える. 別方向の信号機の状態変化を検出してしまった誤検出事例に関しては,検出範囲の限定が特に有効ではないかと考える. *まとめ [#c88432aa] 本論文では,つくばチャレンジにおける信号認識横断の課題達成のために信号機の変化を検出する手法を提案した.提案手法では,信号機の状態の変化を,異なる時刻での撮影画像から生成した差分画像をもとに検出を行った. 提案手法の流れとして,まず異なる時刻に同位置にて撮影した2枚の画像を用いて差分画像を生成する.次に差分画像の特徴を用いたテンプレート画像を生成する.最後に生成したテンプレート画像と,撮影画像から生成された差分画像を用いてテンプレートマッチングを行い,信号機の状態変化の検出を行う. 評価実験では,群馬大学桐生キャンパス周辺の交差点で撮影した歩行者用信号機1150枚の画像を用いて,差分画像上の信号機周辺を切り抜いた場合と加工を行わない場合の2種類でしきい値を変え,実験を行った. 今後の課題として,検出精度の向上が挙げられる.評価実験より,しきい値によって大きく検出率や誤検出率は変動することがわかった.そのためしきい値だけによらない条件等の追加やテンプレート画像の改良等をすることにより,精度の向上につながるのではないかと考えている.