近年、人とロボットの共存を目指し、開発技術の向上のための様々な実験が行われており、その中の一つにつくばチャレンジというものがある。 つくばチャレンジとは我々が普段過ごしている「実環境」において働くロボットの技術の進歩を最大の目的として、つくば市内の遊歩道などの実環境下で移動ロボットに自律走行を行わせる技術チャレンジである。現在のつくばチャレンジでは、指定されたコースでのロボットの自律走行だけでなく+αの課題が与えられており、その課題の一つに歩行者用信号の認識・及び横断歩道の横断がある。
信号探索において未検出、誤認識は重大な事故につながりかねない。そのため走行予定ルート上の信号は必ず正しく認識させる必要が有る。また、信号の認識自体が低速だと、赤信号を認識しても停止命令の実行が間に合わず、横断歩道に侵入してしまうことも考えられる。そのため、信号認識には精度・速度ともに質の高いものが求められる。
太田研究室では以前より前述のつくばチャレンジに参加しており、信号探索についても様々な手法の研究を行っていた。その中でも特に色情報を主として用いることが多く、実際に高い認識精度をもつことを確認されている。 しかし、色情報のみに焦点を当てて探索を行うと類似色の物体を信号と誤認識してしまうことがあり、過去の研究に置いても避けられない問題となっていた。
そこで本研究では、信号の色のみではなく形状情報にも焦点を当てることで類似色の物体の誤認識を防ぎ、なおかつ高い認識精度を維持することを目的とした。
テンプレートマッチングとはある画像内で部分画像と最も類似している箇所を探索・抽出する手法である。 以下、探索対象となる部分画像をテンプレート、探索を行う画像を入力画像とする。
手順としては、入力画像の隅から隅までテンプレートを1ピクセルずつ動かし、その位置での二画像の類似度計算を逐一行う。 最終的に入力画像全体で計算が終了した時点で類似度が最も高かった箇所が抽出される。
テンプレートマッチングの類似度計算にはいくつか種類があり、それぞれ計算量や特徴が異なるため用途や目的に応じて使い分けることができる。 今回は照度変化に受ける影響を少なく且つ極力高速な処理を目指しているためZNCCという手法を採用した。計算式は以下のようになる。
\\ZNCC計算式
このZNCC(Zero-mean Normalized Cross-Correlation)は入力画像とテンプレートそれぞれの画素値の平均を引いた後にその正規化相互相関を求める。計算結果の値は-1.0から1.0に収まり、0に最も近くなる箇所が最も類似している(最大スコア)ということなる。
ZNCCは類似度計算の中では計算量は多めだが、その分証明変化に強いという特徴が有る。信号認識に置いては認識率を第一とするため今回はこの計算法を採用した。
信号候補の探索でははじめに信号色の探索を行っていく。しかし入力画像内をすべて探索すると類似色の抽出量も増える上に実行時間も嵩んでしまうため、カメラの高さや横断歩道の長さを考慮した上で探索範囲を絞り込んでいく。
今回使用するカメラはロボットに搭載されており、その高さは変動することはない。 そのため信号との距離も併せて考慮することで探索範囲を大幅に絞り込み、類似色の抽出と実行時間の削減が可能となる。
横断歩道の正確な長さは不明であるが、撮影された画像群では信号位置がおおよそ一定範囲内に存在していたため、探索範囲を画像の縦1/5〜1/3、横1/4〜3/4に設定した。
\\探索領域画像
入力画像を読み込んだら探索範囲内にて特定色領域の探索・抽出を行う。
今回は探索領域内で25×25の矩形領域を10ピクセルずつ動かしていき、矩形領域内の赤色、及び青色画素の数をカウントしてその数が矩形領域の約16〜69%を占めていたら探索範囲の周辺±5ピクセルを信号候補として抽出していく。
\\探索色のHSV表
\\特定色抽出画像
次に前項で抽出した信号候補領域に対してテンプレートマッチングを用いることでその領域内に信号が存在するか確かめる。 通常テンプレートマッチングを行う際はテンプレートは1枚のみ用意することが多いが、今回は誤検出の可能性を減らすため 3種のテンプレートを用意した。
\\テンプレート画像
これらは左から
・信号の外枠まで含む
・信号の点灯部分
・白色(人型)部分
となっている。
これら3種のテンプレート(以下、テンプレート1・2・3とする)と前項で抽出した信号候補領域をそれぞれグレイスケール画像に変換する。グレイスケール画像に変換することで画像は明るさのみで表示されるため、色情報の判別を終えた本段階にてより形状情報のみに注目した形でマッチングを行うことができる。
それぞれでマッチングを実行し、スコアの最大値と最大値を更新した座標を記録していく。 この処理を探索範囲全域にて行い、最終的にテンプレート1・2の最大スコアの平均が0.45を、テンプレート3のスコアが0.8を超えていてで更に最大スコアを取った座標が±20ピクセル以内であればそこに信号があると認識する。
今回は本年度のつくばチャレンジの実験走行及び本走行にて実際にロボットが走行中に撮影した画像群と、昨年度撮影された従来手法にて撮影された探索対象の写っていない画像群を実験画像として用いる。
まずはじめに走行時撮影画像群の中でも探索対象となる歩行者用信号が探索範囲内に存在しているもの(赤349枚、青437枚)を用いて認識率を確かめる。
\\正解画像例2枚ほど
実験結果は以下の表のようになった。
\\正解画像群の実験結果表
このように今回使用した画像群の認識率は赤信号・青信号共に98%を上回った。
従来手法は色情報の用い方や撮影環境・機器など様々な点が異なるため純粋な比較ではないが、単純に認識率のみを見てみると赤青どちらもかなり精度が向上していることが見て取れる上に実行時間も大きな差異は見られなかった。
次に昨年撮影され、従来手法の実験にて使用された、今回探索対象となる信号の写っていない画像群10898枚を用いて誤検出の有無を調べる。なおこの画像群には従来手法にて誤検出が起きた画像も含んでいる。
\\不正解画像例・従来手法での誤検出画像例
こちらの画像群では誤検出は10898枚中13枚となった。こちらは誤検出率としては約0.0012%となる。 従来手法による誤検出率は上記の表では0.08%のためほぼ0%に近くはあるが、提案手法では更に誤検出率を減らせたことが分かった。
未検出画像は赤信号にて4枚、青信号にて2枚確認された。これらの未検出の原因について考察したところ、大まかに以下の3種類に分けることが出来た。
1.日光の当たり方で画像の色が変化したもの
\\未検出画像例1、2
こちらは日光がカメラに直接当たったことで画像全体の明度が上がり、全体的に色が白飛びしてしまったことで特定色探索が正常に行えなかったため信号候補が見つからなかった。また、別パターンとして信号の点灯部分に影がかかってしまい、上記とは逆に信号の色がかなり暗くなってしまったことでこちらも正常に特定色探索が行えなかったため未検出となった。
\\上記2画像の色探索結果
今回のケースの解決策としてまず探索色の色相の調整が考えられるが、探索色の色相は既にある程度の明度変化には寛容にしており、これ以上範囲を広げると誤検出が増える恐れがある。
しかし今回の未検出画像は同位置で連続して撮影されたうちの一枚のみで起きている。このことから今回のシステムに複数画像を読み込み、全体のうち閾値以上の枚数が信号を認識したら正式に信号を認識する、といった様に改良すれば解決できると思われる。
2.自動車のテールランプと信号で最大スコア位置が分散したもの
\\未検出画像例3
提案手法では、マッチングを行う際にテンプレートを3種用いて、得られたそれぞれの最大スコアと最大スコアを取った座標を基に判別を行うと述べた。つまりこの画像は各テンプレートの最大スコアは閾値を越えたがその最大スコアを取った座標が分散してしまったために信号認識には一歩及ばず未検出となった。実際にスコアと座標を見てみると以下の表のようになった。
解決策としてはこちらも前述の未検出画像と同じように同位置で連続して撮影されたうちの一枚のみで起きている。加えて今回写り込んだテールランプは動的物体であり、非動的物体である信号とは異なるのでそちらの判別を行える複数画像を用いた判別へ改良すればよいと思われる。
3.ロボットの位置変化による画像内信号サイズの変化
\\未検出画像4
こちらは上記の二つとは異なり、信号がはっきりと写っている。 ではなぜ未検出が起きたのかというと至極簡単な理由であり、横断歩道の横断を行っている最中に撮影された画像であるため停止位置と比べて信号とカメラの距離が近くなってしまった。そのために信号サイズが変わり色面積や各種テンプレートとのサイズが大きく異なってしまい、未検出となった。
こちらは既に横断歩道を横断中のもの、つまりは直前に青信号を認識した上での状況である。故にこのケースは特に改善策を講じる必要はないと判断できる。