近年、人間と共存する形のロボットの需要が高まっている。ロボットが人間の生活する場で活躍するためには様々な機能が必要となり、その一つに特定の物体を認識する技術が挙げられる。本研究ではその中でも特定の服装をした人物の検出に関して研究を行った。
ロボットを実環境で自律的に走行させる「つくばチャレンジ」と呼ばれる公開実験会が毎年つくば市にて行われる。そこで設定されている課題の一つに、特定の服装の人物を探索するというものがある。緑のジャンパーの上にオレンジもしくは青のベストを着用し、オレンジの帽子を被って探索エリア内のどこかに計4人座っている。また、探索対象のそばには看板が置かれている。発見時は探索対象の1.5m前の位置まで移動し3秒間停止することで発見の合図となる。本研究ではこの探索対象を精度良く検出することを目的とした。今年度のつくばチャレンジの走行コースを図1に、探索対象の例を図2に示す。本研究の検出対象となる人物が存在する探索エリアは図1に記載されている通りつくばセンター広場である。
#ref(): File not found: "human_sample.jpg" at page "色ヒストグラムとSVMを用いた特定服装人物検出手法の提案"
本研究室ではこれまでもつくばチャレンジにおける人物探索の課題を達成するための研究が行われている。今までは人物ではなくそばにある看板をカメラの画像から検出し、LiDARを用いて検出した看板とそばにいる探索対象の形状や距離を確認する手法で探索を行ってきた。つくばチャレンジにおける人物検出であれば、人物よりも立て看板を検出した方が色や形状の変化が少ない、人物と違って必ず同じ色合いであるといった点から、より確実に検出することが可能である。しかし、つくばチャレンジが課題として設定しているのはあくまで特定の服装をした人物の検出であるため、看板の検出は本質的ではない。そのため、今年度のつくばチャレンジでは過去のものとは大きく異なる手法で課題達成に臨んでいる。
また、つくばチャレンジにおいてこの課題を達成するためにディープラーニングを用いるチームも多い。大量の画像データから色や形状などといった情報を与えてニューラルネットワークを形成し、物体認識を行う手法である。しかし、これを行うためには学習及び実行のために高性能のGPUを使う必要がある。対象物が人か物かを細かく判別する場合や高度な人物判別を行う必要があるならばディープラーニングを用いることも考えられるが、今回の探索対象は非常に特徴的な色の服装をしているため、この対象の検出ならばディープラーニングを使わずともシンプルな色情報を用いるだけで演算能力の低いGPUでも実現可能な精度の高い検出手法が実現できるのではないかと考えた。
今年度のつくばチャレンジの本走行では本研究を用いた手法の実装が間に合わなかったため、異なる手法で人物検出を行った。この従来手法は色抽出のみで人物検出を行うもので、抽出する色はベストのオレンジもしくは青色とベストのラインの白色、ジャンパーの袖の緑色の3色である。従来手法はつくばチャレンジの本走行において精度の高い検出結果を残したが、ログデータによる評価実験を行ったところいくつかの誤検出が確認された。この手法のアルゴリズムではこの誤検出によるアプローチは行われないものの、こういった誤検出は可能な限り削減することが望ましい。
そこで、本研究では従来手法に色情報のヒストグラムとサポートベクターマシン(以下SVMと表記)という識別機を用いた手法を組み込むことでより精度の高い検出手法の作成を試みた。先に述べたとおり、つくばチャレンジにおける人物検出では探索対象となる人物は特徴的な色の服装をしているため、色情報を用いた手法が効果的だと考えた。また、つくばチャレンジという場以外でも、特徴的な服装をした人物であれば同様にこの手法を用いて検出することが可能である。
つくばチャレンジで用いられたロボットの外観を図3に、カメラの仕様を表1に、LiDARの仕様を表2に示す。
使用したロボットはリバスト社が開発を行っている屋外用移動ロボット「Mercury」シリーズをベースとしたものであり、これにカメラやLiDAR等を取り付けたものを本研究室では走行させている。
ここで、LiDARについて説明する。LiDARとはレーザー光を照射し、物体にあたって戻ってきた反射光を検出することで周囲の物体の形状や位置を計測するセンサの一つである。人物検出は基本的にカメラの画像を用いて行うが発見時の合図として探索対象の1.5m前で3秒間停止する必要があり、使用している単眼カメラでは対象までの正確な距離を測ることが難しい。そのため、本研究での人物検出では主に発見した際のアプローチを行うためにLiDARを利用している。また、このLiDARは本ロボットでは人物検出以外にも自己位置推定や障害物検知などにも利用されている。
次に、使用したカメラについて説明する。カメラはセンサ値が非圧縮のまま得られ、色情報の損失が少ない産業用のものを使用している。カメラはロボットの高さ770mmの位置に3個設置し、正面を0°として-70°、0°、70°の3方向に向けている。また、カメラにはホワイトバランスの自動調整機能が備わっているが、撮影環境によって探索対象の色情報が変化してしまう場合があるためオフにしてある。
#ref(): File not found: "robot.jpg" at page "色ヒストグラムとSVMを用いた特定服装人物検出手法の提案"
メーカー | ImagingSource |
製品名 | DFK22BUC03 |
解像度 | 744×480 |
FPS | 30fps |
視野角 | 93.2° |
メーカー | SICK |
製品名 | MRS1000 |
計測距離 | 64m |
水平計測範囲 | 275° |
水平分解能 | 0.5° |
垂直計測範囲 | 7.5° |
垂直分解能 | 2.5° |
計測周期 | 50Hz |
ここで、撮影の際の露光時間の調整に関する説明を行う。日が強く当たる場所や陰で暗くなる場所など、撮影する環境によって人物の色検出に適した露光時間は大きく変化してしまう。加えて、今回の検出対象となるオレンジと青のベストはそれぞれ色の検出に最低な明るさが異なるという問題がある。例えば図4の場合、左の画像は青が良く取れているがオレンジは白飛びしてしまい、右の画像はオレンジの検出に適しているが青が黒潰れしてしまっている。過去にもこの露光時間の調整が原因で上手く色を検出することができず、探索に失敗した例が存在する。
#ref(): File not found: "exposure_sample.jpg" at page "色ヒストグラムとSVMを用いた特定服装人物検出手法の提案"
カメラの自動露光調整機能では適切な露光時間に完璧に調整することが困難で、カメラの露光時間を一定にすると撮影環境の変化に対応できなくなり、特定の環境以外での色の検出ができなくなってしまう。
この問題を解決するために、図5のように1フレームごとにカメラの露光時間を段階的に変化させた。これにより、オレンジと青のベストのそれぞれに対応した露光時間で撮影することが可能になった。また、図5に示した一例のように、様々な環境における探索対象の色の検出も可能にした。
#ref(): File not found: "exposure_change.jpg" at page "色ヒストグラムとSVMを用いた特定服装人物検出手法の提案"
ここで、今年度のつくばチャレンジに用いた従来手法のアルゴリズムや精度について述べる。本論文の提案手法はこの手法をベースに作られているため全体の流れはほぼ同じであるが人物の検証方法が異なる。この手法の検証方法は特定色を抽出し、矩形領域の大きさに合わせた一定の比率以上の色が抽出されれば探索対象と判断するという非常にシンプルな手法である。
従来手法のアルゴリズムを述べる。3方向に向けられたカメラから得られる画像をそれぞれ入力画像として、ベストのオレンジもしくは青、ベストのラインの白、ジャンパーの袖の緑を検出して探索対象であるかどうか判断し、対象と判断すればそれが存在する方向を求める。その後、LiDARから得られる形状情報と距離情報を用いて検証し、アプローチを行う。以降でそれぞれの手順の詳細を述べる。
実験走行時に撮影した多数の画像データから探索対象の色情報の解析を行い、対象となる人物の色抽出の閾値の設定を行った。様々な時間帯や場所、天候などで撮影を行っているため、画像データには多くの環境のものを含んでいる。これらの画像をOpenCVに実装されているcvtColor関数を用いてRGB表色系とHSV表色系に変換し、色相(以下Hと表記)と彩度を解析した。
表3は解析から得られたオレンジ、青、緑、白のそれぞれの色相と彩度などの分布から得た閾値である。R、G、B、及びH、S、Vは8bitのデータとして扱っているため、それぞれの取り扱う値は0~255である。また、OpenCVではHの取り扱う値を0~180と設定されている。閾値は天候や場所、時間帯など言った様々な撮影環境に対処するため大きめに設定されている。ここで、白については基準となる色相が存在しないため、RGB表色系とHSV表色系の両方を用いて判別を行っている。具体的には、RGB表色系でR≧60、G≧60、B≧60であり、かつHSV表色系でS≦70の場合にしろと判断する。人物検出を行うときは撮影画像からこれらの閾値に含まれている色を抽出する。
H | S | R、G、B | |
オレンジ | 0~7、178~179 | 140~255 | - |
青 | 110~120 | 110~255 | - |
緑 | 50~100 | 60~150 | - |
白 | - | 0~70 | 60~255 |
3方向に向けられたカメラのそれぞれの入力画像から、ベストの部分を囲う矩形領域を作成して検証を行うことで人物かどうかの判定を行う。以下のその手順を示す。
まず、入力画像をHSV表色系に変換し、表3で示した閾値を用いてオレンジ色と青色を抽出した二値画像を作成する。作成した画像にはノイズが含まれている場合があるためノイズ除去を行い、さらに膨張処理によって画像を調整する。入力画像とそれから作成して調整した二値画像を図6に示す。
次に、二値画像に対してラベリング処理を行い、その部分をそれぞれ囲う矩形領域を作成する。矩形領域を作成した画像を図7に示す。これを見ると、ベストの白いラインの部分でベストの領域が分断されていることがわかる。ベスト全体を覆う形で矩形領域を作成したいため、この状態は好ましくない。
この問題を解決するため作成した矩形領域の内、四隅の座標が近い領域同士を統合する。図8に示した通り、これを行うことでベスト全体を覆う矩形領域を作成することができる。その後、矩形領域の大きさが非常に小さいものや縦横比がベストのものとは異なるものを除外する。この処理を行うことで誤検出を削減することができる。
続けて、矩形領域を左右に拡張する。作成した矩形領域はベストに合わせたものとなっているため、左右に拡張することで緑のジャンパーの袖の部分も領域内含め、人物の上半身を囲う矩形領域を作成することができる。閣僚する大きさについては幅はベストの矩形領域の半分の幅、高さはそのままとする。拡張後の領域は図9のようになり、白で囲われている部分が元の領域、緑で囲われている部分が拡張した領域である。その後、表3の閾値を用いて、拡張前のベストの矩形領域の部分から白色を、拡張した領域の部分で緑色をそれぞれ抽出する。抽出された白色と緑色のそれぞれの面積と抽出を行った各領域の面積の比率が両方とも一定以上であれば、探索対象の人物として検出する。
#ref(): File not found: "a.jpg" at page "色ヒストグラムとSVMを用いた特定服装人物検出手法の提案"
#ref(): File not found: "a.jpg" at page "色ヒストグラムとSVMを用いた特定服装人物検出手法の提案"
#ref(): File not found: "a.jpg" at page "色ヒストグラムとSVMを用いた特定服装人物検出手法の提案"
先の節からロボットの近くに探索対象が存在するかどうかを判断することはできたが、この手法では単眼カメラを用いて人物検出を行っているため対象の存在する方向は分かるが距離を求めることが困難である。矩形領域の大きさからある程度の距離を求めることは可能だが正確な情報でないため安定しない。つくばチャレンジの課題では人物を発見した際の合図としてアプローチを行わなければならないため、距離の情報を正確に得る必要がある。そこで、LiDARによって対象の3次元情報を得ることで対処している。以下にその一通りの手順を示す。直近の10枚のデータの内3枚以上一致しないと探索対象と判断しないのは、偶然起こった誤検出によるアプローチを防ぐためである。なお、LiDARによる検証を行う範囲はロボットから半径7m以内のものと設定してある。
この手法を用いたつくばチャレンジ2017における本走行の結果は、検出2、誤検出2であった。検出、誤検出した対象を図11に示す。
#ref(): File not found: "tsukuba_result.jpg" at page "色ヒストグラムとSVMを用いた特定服装人物検出手法の提案"
左側二人が正確に検出した探索対象で、右側二人が誤検出した対象である。誤検出の対象は両社とも探索対象の交代人員であり、交代後ベストを着たり持ったりしたまま探索エリア内に居続けていて、加えて従来手法は探索対象が据わっているか、オレンジの帽子を被っているかなどで判断していなかったため、このような誤検出が起こってしまった。さらに、二人目を誤検出した時のアプローチ中に縁石に乗り上げ、車輪が完全に浮いてしまったため走行を断念せざるを得なくなってしまった。そのため、3人目以降の人物探索は行えず、完走もできなかった。 しかし、今回の人物探索の手法の精度を見ると誤検出した対象はほぼ同じ服装をしていた探索対象の交代要員のみであり、あからさまな誤検出は起こらなかった。さらに、道中で検出漏れも怒らず正確に探索対象を見つけることに成功している。また、つくばチャレンジ2017全体を通しての実験走行時においても高い精度で探索対象の検出を行えていた。これらのことから、この手法の精度は高いことがわかる。
この手法の精度を再確認するため、ロボットを走行させた際に撮影した画像のログデータによる実験を行った。ここで行っているのはカメラの画像からの人物検出のみで、liDARによる形状および距離の検証は行っていない。 まず、今回利用するログデータに関する説明を行う。ログデータに関しては三つ用意し、一つはどれだけ人物を発見できるかを確認するための人物を含めた画像を計2000枚集めた人物画像のデータセット、次に大学構内を11時21分頃に撮影した画像のデータセット、最後に今年のつくばチャレンジの探索エリアであるつくばセンター広場を14時47分頃に撮影した画像のデータセットの三つである。大学構内、つくばセンター広場での撮影画像には人物も多数含まれていて、一部の画像は人物画像のものと重複している。 各画像のデータセットの枚数を表4にまとめ、大学構内及びつくばセンター広場での人物画像の一例を図12に示す。人物画像数は探索対象が写っていて矩形領域が作成されている画像の枚数を示す。そのため、探索対象が写っていても照明条件や露光時間による影響等で矩形領域が作成されなかったものに関しては含めていない。人物画像数、画像の総数は共に後の検出率の計算に用いる。また、一例を見ればわかる通り、人物画像には露光時間の変化の影響もあって照明条件が非常に厳しい画像が多数含まれるため、検出率があまり高くはならない。
#ref(): File not found: "a.jpg" at page "色ヒストグラムとSVMを用いた特定服装人物検出手法の提案"
ログデータの種類 | 人物画像数 | 画像の総数 |
人物画像データ | 2000 | 2000 |
大学画像ログデータ | 1791 | 7742 |
つくば画像ログデータ | 705 | 12873 |
このログデータによる評価実験の結果を表5に示す。表の正の行が人物検出率、誤の行が誤検出率を表す。人物検出率の計算式は、 人物検出に成功した画像の枚数/表4で示した人物画像数 として、誤検出率の計算式は、 誤検出をした画像の枚数/表4で示した画像の総数 とした。表記は%表記として小数点第三位を四捨五入した値を表に記している。また、人物画像に関しては露光時間を段階的に変化させていることや様々な撮影環境に対処するために検出する色の閾値が大きめに設定されていることといった影響もあり、図12のように明暗がかなり厳しいものも多数含まれているため検出率は全体的に控えめな結果となっている。この結果を見ると、大学構内とつくばセンター広場の両方で誤検出が確認されている。
正誤 | 人物画像 | 大学構内 | つくば広場 |
正 | 43.15% | 151.2% | 5.53% |
誤 | 0% | 0.16% | 0.16% |
本走行時は露光時間を徹底的に調整した状態で臨んだため、まだ調整が不十分だったこのログデータでは本走行時より多くの誤検出が発生してしまったと考えられる。また、偶然の色の重なりによって一度誤検出が起きてもその後検出されなければ探索対象であると判断されないため、つくばチャレンジにおいても誤った対象に対してアプローチは行われずあからさまな誤検出がないという結果となった。しかし、こういった誤検出は可能な限り起こさないことが望ましい。
本研究で提案する色ヒストグラムとSVMを用いた手法について説明する。提案手法は従来手法の矩形領域の検証方法を色抽出による検証から色ヒストグラムとSVMを用いた検証に変更することによってより精度の高い人物検出を目指したものである。
まず、従来手法から変更した部分について説明する。変更点は矩形領域の拡張の際の拡張範囲の大きさと矩形領域の検証方法の二点である。それ以外の部分に関しては従来手法と同様の処理を行う。 矩形領域の検証方法は色抽出を用いた手法から色ヒストグラムとSVMを用いた手法に変更した。これに関しては後に詳しく説明する。 また、矩形領域の拡張する範囲に関しても検証方法に合わせた変更を行った。従来手法ではベストの幅の半分の数値分矩形領域の幅を広げるよう設定していたが、提案手法ではそのさらに半分、ベストの幅の1/4の分だけ拡張するように変更を行った。従来手法の場合は多少背景を含めてもジャンパーの袖の部分をしっかり入れた方がよい検証結果を得ることができるが、提案手法で扱う色ヒストグラムは背景などの予定な部分が入り込むとその分だけ大きくデータが変動してしまい、検出率が低下してしまう恐れがある。そのため、本手法では人物を全体を多少とれずとも背景を極力含めないようにするため拡張する範囲を狭くした。拡張範囲の縮小の一例を図13に示す。画像に表示されている青とオレンジの矩形が処理によって作成、検証を行った矩形領域であり、それぞれの色の人物を発見した合図となっている。左の縮小前の拡張範囲の場合は多少背景が入っても上半身全体がしっかり入るようになっているが、右の縮小後では可能な限り人物全体を含め、かつ背景を極力含めない矩形領域となっている。 拡張範囲を従来手法のままにしたものと提案手法のために狭くした物での検出結果の違いを表6に示す。表の見方や検出率の計算方法、実験に用いたログデータは前章で示したものと同様であり、今後も同じ方法で実験し評価を行う。また、ここで用いた色ヒストグラムの集計形式は、後述する色相180階級、彩度は低彩度を重視した4階級で集計した180×4の2次元ヒストグラムを用いた。SVMや学習データに関しても次節で説明する。このように結果が大きく改善したため、これ以降の実験においては矩形領域の拡張範囲は従来手法から変更したものを用いている。
#ref(): File not found: "a.jpg" at page "色ヒストグラムとSVMを用いた特定服装人物検出手法の提案"
矩形領域の拡張範囲 | 正誤 | 人物画像 | 大学 | つくば広場 |
変更前(1.5倍) | 正 | 33.7% | 36.57% | 17.59% |
誤 | 0% | 0% | 0% | |
変更後(1.25倍) | 正 | 50.3% | 51.59% | 25.82% |
誤 | 0% | 0% | 0% |
ここでは、本研究で用いたSVMについての説明を行う。SVMとは機械学習の一つであり、二種の学習データをもとに入力されたデータがそのどちらに分類されるかを決定する分類器である。以降ではSVMの詳しい説明や学習データなどを説明していく。
SVMとは二種に分類される多数のデータを用いて機械に学習させ、その学習データをもとに入力されたデータがどちらに分類されるものなのか判断させる分類器である。多数の学習データをもとに二種を分別するための境界線を引き、その線を元に入力されたデータがどちらに分類されるのかを判断する。この境界線を超平面という。また、SVMは基本的にバイナリ型でしか分けることができず、マルチクラス型として利用するには組み合わせて利用する必要がある。 境界線である超平面は、基本的に線形でしか作成することができない。そのため、場合によって入力データをうまく2つのクラスに分けられないことがある。これを解決するために、カーネル関数を用いて超平面を作成する方法がある。これに関しては後に詳しい説明を行う。カーネル関数を用いて超平面を作成したSVMを非線形SVMと呼び、そうでないSVMを線形SVMと呼ぶ。 また、超平面を作成する際データをうまく分離できない場合がある。こういった場合にデータの分離の誤りを許容しない場合、無意味な超平面を作成してしまったり、作成自体出来なくなってしまうことがある。これを防ぐためにペナルティ係数Cを導入し、超平面を最適に設定する必要をなくしたり、データの誤った分離を許容することで対応する。Cが大きければ大きいほど制約条件は厳しくなり、Cが無限大の場合は誤りを一切許容しなくなる。このように制約条件を緩めたSVMをソフトマージンSVMと呼び、逆に誤りを許容しないSVMをハードマージンSVMと呼ぶ。 本手法ではオレンジのベストの人物か否か、青のベストの人物か否かで分ける2つのSVMを作成した。正解である検出対象の画像の色ヒストグラムのデータと不正解である関係ない画像の色ヒストグラムのデータを与えて学習させた。また、ペナルティ係数Cは本手法では10に設定してある。
SVMの学習用に用いたデータに関する説明を行う。正解データは探索対象のいくつかの場所や時間帯で少しずつ露光時間を変化させていって撮影を行い、撮影した画像から人物の部分を切り取ることで作成した。また、オレンジのベストを着た人物と青のベストを着た人物の二種類の検出対象がいるため、正解データもオレンジのものと青のものの二種類を用意してそれぞれの色の人物を検出するSVMを作成した。不正解データは様々な場所の画像から探索対象と似たような色が含まれている部分を見つけ、そこを切り取って作成した。なお、不正解データに関してはオレンジも青も同じものを利用する。今回集めた学習データの数を表7に、それぞれのデータの例をそれぞれ図14、15、16に示す。
ここでは、カーネル関数に関する説明と複数の種類が存在するカーネル関数の中で本研究に最も適しているものは何かを決定する。カーネル関数とは、元の次元から高次元の特徴空間次元に写像して内積を取る関数のことである。これを利用することで散らばっている領域でも一体化を可能にしている。 カーネル関数にはいくつか種類があり、代表的なものに多項式カーネル(POLY)、ガウス放射基底関数カーネル(RBF)、シグモイド関数カーネル(SIGMOID)がある。また、カーネル関数を用いない従来のSVMを行うための線形カーネル(LINEAR)も存在する。 これらのカーネル関数にそれぞれ同じ学習データを与えて実験を行い、どのカーネル関数が最も適しているかを調べた。利用する色ヒストグラムの形式は前節でも利用した低彩度重視の180×4である。結果を表8に記す。
矩形カーネル関数 | 正誤 | 人物画像 | 大学 | つくば広場 |
RBF | 正 | 50.3% | 51.59% | 25.82% |
誤 | 0% | 0% | 0% | |
POLY | 正 | 56.45 | 53.77% | 45.11% |
誤 | 0.1% | 0.08% | 0.11% | |
SIGMOID | 正 | 11.65% | 18.93% | 2.41% |
誤 | 2.55% | 2.13% | 5.59% | |
LINEAR | 正 | 72.75% | 61.75% | 83.83% |
誤 | 2.3% | 1.29% | 2.8% |
まず、SIGMOIDに関しては検出率がかなり少なく、誤検出も頻繁に起こしてしまうという結果になった。POLYとLINEARに関しては検出率は高いものの、その分誤検出が多く発生するという結果になっている。RBFはPOLYやLINEARよりも検出率は控えめなものの誤検出もなく良い結果が得られている。この結果から、カーネル関数はRBFを使用してSVMの学習を行うのが最適であると判断し、これ以降の学習はすべてRBFを用いている。