近年、人間と共存する形のロボットの需要が高まっている。ロボットが人間の生活する場で活躍するためには様々な機能が必要となり、その一つに特定の物体を認識する技術が挙げられる。本研究ではその中でも特定の服装をした人物の検出に関して研究を行った。
ロボットを実環境で自律的に走行させる「つくばチャレンジ」と呼ばれる公開実験会が毎年つくば市にて行われる。そこで設定されている課題の一つに、特定の服装の人物を探索するというものがある。緑のジャンパーの上にオレンジもしくは青のベストを着用し、オレンジの帽子を被って探索エリア内のどこかに計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% |
本走行時は露光時間を徹底的に調整した状態で臨んだため、まだ調整が不十分だったこのログデータでは本走行時より多くの誤検出が発生してしまったと考えられる。また、偶然の色の重なりによって一度誤検出が起きてもその後検出されなければ探索対象であると判断されないため、つくばチャレンジにおいても誤った対象に対してアプローチは行われずあからさまな誤検出がないという結果となった。しかし、こういった誤検出は可能な限り起こさないことが望ましい。