[[太田研 公開用Wiki]]

* 色ヒストグラムとSVMを用いた特定人物検出手法の提案 [#bbf93b1d]

#contents
* はじめに [#pabb60c8]
 近年、人間と共存する形のロボットの需要が高まっている。ロボットが人間の生活する場で活躍するためには様々な機能が必要となり、その一つに特定の物体を認識する技術が挙げられる。本研究ではその中でも特定の服装をした人物の検出に関して研究を行った。~
 ロボットを実環境で自律的に走行させる「つくばチャレンジ」と呼ばれる公開実験会が毎年つくば市にて行われる。そこで設定されている課題の一つに、特定の服装の人物を探索するというものがある。緑のジャンパーの上にオレンジもしくは青のベストを着用し、オレンジの帽子を被って探索エリア内のどこかに計4人座っている。また、探索対象のそばには看板が置かれている。発見時は探索対象の1.5m前の位置まで移動し3秒間停止することで発見の合図となる。本研究ではこの探索対象を精度良く検出することを目的とした。今年度のつくばチャレンジの走行コースを図1に、探索対象の例を図2に示す。本研究の検出対象となる人物が存在する探索エリアは図1に記載されている通りつくばセンター広場である。
 ロボットを実環境で自律的に走行させる「つくばチャレンジ[1]」と呼ばれる公開実験会が毎年つくば市にて行われる。そこで設定されている課題の一つに、特定の服装の人物を探索するというものがある。緑のジャンパーの上にオレンジもしくは青のベストを着用し、オレンジの帽子を被って探索エリア内のどこかに計4人座っている。また、探索対象のそばには看板が置かれている。発見時は探索対象の1.5m前の位置まで移動し3秒間停止することで発見の合図となる。本研究ではこの探索対象を精度良く検出することを目的とした。今年度のつくばチャレンジの走行コースを図1に、探索対象の例を図2に示す。本研究の検出対象となる人物が存在する探索エリアは図1に記載されている通りつくばセンター広場である。

#ref(map.jpg,center,30%)
CENTER:図1:つくばチャレンジ2017走行コース
CENTER:図1:つくばチャレンジ2017走行コース(http://www.tsukubachallenge.jp/tc2017/kadaiより引用)

~

#ref(human_sample.png,center,50%)
CENTER:図2:つくばチャレンジの探索対象
CENTER:図2:つくばチャレンジの探索対象(http://www.tsukubachallenge.jp/tc2017/kadaiより引用)

 本研究室ではこれまでもつくばチャレンジにおける人物探索の課題を達成するための研究が行われている。今までは人物ではなくそばにある看板をカメラの画像から検出し、LiDARを用いて検出した看板とそばにいる探索対象の形状や距離を確認する手法で探索を行ってきた。つくばチャレンジにおける人物検出であれば、人物よりも立て看板を検出した方が色や形状の変化が少ない、人物と違って必ず同じ色合いであるといった点から、より確実に検出することが可能である。しかし、つくばチャレンジが課題として設定しているのはあくまで特定の服装をした人物の検出であるため、看板の検出は本質的ではない。そのため、今年度のつくばチャレンジでは過去のものとは大きく異なる手法で課題達成に臨んでいる。~
 また、つくばチャレンジにおいてこの課題を達成するためにディープラーニングを用いるチームも多い。大量の画像データから色や形状などといった情報を与えてニューラルネットワークを形成し、物体認識を行う手法である。しかし、これを行うためには学習及び実行のために高性能のGPUを使う必要がある。対象物が人か物かを細かく判別する場合や高度な人物判別を行う必要があるならばディープラーニングを用いることも考えられるが、今回の探索対象は非常に特徴的な色の服装をしているため、この対象の検出ならばディープラーニングを使わずともシンプルな色情報を用いるだけで演算能力の低いGPUでも実現可能な精度の高い検出手法が実現できるのではないかと考えた。~
 本研究室ではこれまでもつくばチャレンジにおける人物探索の課題を達成するための研究が行われている[2、3、4]。今までは人物ではなくそばにある看板をカメラの画像から検出し、LiDARを用いて検出した看板とそばにいる探索対象の形状や距離を確認する手法で探索を行ってきた。つくばチャレンジにおける人物検出であれば、人物よりも立て看板を検出した方が色や形状の変化が少ない、人物と違って必ず同じ色合いであるといった点から、より確実に検出することが可能である。しかし、つくばチャレンジが課題として設定しているのはあくまで特定の服装をした人物の検出であるため、看板の検出は本質的ではない。そのため、今年度のつくばチャレンジでは過去のものとは大きく異なる手法で課題達成に臨んでいる。~
 また、つくばチャレンジにおいてこの課題を達成するためにディープラーニングを用いるチームも多い[5、6、7]。大量の画像データから色や形状などといった情報を与えてニューラルネットワークを形成し、物体認識を行う手法である。しかし、これを行うためには学習及び実行のために高性能のGPUを使う必要がある。対象物が人か物かを細かく判別する場合や高度な人物判別を行う必要があるならばディープラーニングを用いることも考えられるが、今回の探索対象は非常に特徴的な色の服装をしているため、この対象の検出ならばディープラーニングを使わずともシンプルな色情報を用いるだけで演算能力の低いGPUでも実現可能な精度の高い検出手法が実現できるのではないかと考えた。~
 今年度のつくばチャレンジの本走行では本研究を用いた手法の実装が間に合わなかったため、異なる手法で人物検出を行った。この従来手法は色抽出のみで人物検出を行うもので、抽出する色はベストのオレンジもしくは青色とベストのラインの白色、ジャンパーの袖の緑色の3色である。従来手法はつくばチャレンジの本走行において精度の高い検出結果を残したが、ログデータによる評価実験を行ったところいくつかの誤検出が確認された。この手法のアルゴリズムではこの誤検出によるアプローチは行われないものの、こういった誤検出は可能な限り削減することが望ましい。~
 そこで、本研究では従来手法に色情報のヒストグラムとサポートベクターマシン(以下SVMと表記)という識別機を用いた手法を組み込むことでより精度の高い検出手法の作成を試みた。先に述べたとおり、つくばチャレンジにおける人物検出では探索対象となる人物は特徴的な色の服装をしているため、色情報を用いた手法が効果的だと考えた。また、つくばチャレンジという場以外でも、特徴的な服装をした人物であれば同様にこの手法を用いて検出することが可能である。

* 研究に用いたハードウェアについて [#j3ec9cc9]
 つくばチャレンジで用いられたロボットの外観を図3に、カメラの仕様を表1に、LiDARの仕様を表2に示す。~
 使用したロボットはリバスト社が開発を行っている屋外用移動ロボット「Mercury」シリーズをベースとしたものであり、これにカメラやLiDAR等を取り付けたものを本研究室では走行させている。~
 ここで、LiDARについて説明する。LiDARとはレーザー光を照射し、物体にあたって戻ってきた反射光を検出することで周囲の物体の形状や位置を計測するセンサの一つである。人物検出は基本的にカメラの画像を用いて行うが発見時の合図として探索対象の1.5m前で3秒間停止する必要があり、使用している単眼カメラでは対象までの正確な距離を測ることが難しい。そのため、本研究での人物検出では主に発見した際のアプローチを行うためにLiDARを利用している。また、このLiDARは本ロボットでは人物検出以外にも自己位置推定や障害物検知などにも利用されている。~
 次に、使用したカメラについて説明する。カメラはセンサ値が非圧縮のまま得られ、色情報の損失が少ない産業用のものを使用している。カメラはロボットの高さ770mmの位置に3個設置し、正面を0°として-70°、0°、70°の3方向に向けている。また、カメラにはホワイトバランスの自動調整機能が備わっているが、撮影環境によって探索対象の色情報が変化してしまう場合があるためオフにしてある。

#ref(robot.png,center,50%)
CENTER:図3:Mercury(Laser-Model)の外観(左:外装あり、右:外装なし)

~

CENTER:&size(14){表1:カメラの仕様};~
|CENTER:メーカー|CENTER:ImagingSource|
|CENTER:製品名|CENTER:DFK22BUC03|
|CENTER:解像度|CENTER:744×480|
|CENTER:FPS|CENTER:30fps|
|CENTER:視野角|CENTER:93.2°|

~

CENTER:&size(14){表2:LiDARの仕様};~
|CENTER:メーカー|CENTER:SICK|
|CENTER:製品名|CENTER:MRS1000|
|CENTER:計測距離|CENTER:64m|
|CENTER:水平計測範囲|CENTER:275°|
|CENTER:水平分解能|CENTER:0.5°|
|CENTER:垂直計測範囲|CENTER:7.5°|
|CENTER:垂直分解能|CENTER:2.5°|
|CENTER:計測周期|CENTER:50Hz|

 ここで、撮影の際の露光時間の調整に関する説明を行う。日が強く当たる場所や陰で暗くなる場所など、撮影する環境によって人物の色検出に適した露光時間は大きく変化してしまう。加えて、今回の検出対象となるオレンジと青のベストはそれぞれ色の検出に最低な明るさが異なるという問題がある。例えば図4の場合、左の画像は青が良く取れているがオレンジは白飛びしてしまい、右の画像はオレンジの検出に適しているが青が黒潰れしてしまっている。過去にもこの露光時間の調整が原因で上手く色を検出することができず、探索に失敗した例が存在する。

#ref(exposure.png,center,40%)
CENTER:図4:露光時間による色の見え方の違い

 カメラの自動露光調整機能では適切な露光時間に完璧に調整することが困難で、カメラの露光時間を一定にすると撮影環境の変化に対応できなくなり、特定の環境以外での色の検出ができなくなってしまう。~
 この問題を解決するために、図5のように1フレームごとにカメラの露光時間を段階的に変化させた。これにより、オレンジと青のベストのそれぞれに対応した露光時間で撮影することが可能になった。また、図5に示した一例のように、様々な環境における探索対象の色の検出も可能にした。

#ref(exposure_change.png,center,50%)
CENTER:図5:露光時間を段階的に変化させた一例。

* 従来手法 [#h9d182e9]
 ここで、今年度のつくばチャレンジに用いた従来手法のアルゴリズムや精度について述べる。本論文の提案手法はこの手法をベースに作られているため全体の流れはほぼ同じであるが人物の検証方法が異なる。この手法の検証方法は特定色を抽出し、矩形領域の大きさに合わせた一定の比率以上の色が抽出されれば探索対象と判断するという非常にシンプルな手法である。

** 人物検出アルゴリズム [#rac88e74]
 従来手法のアルゴリズムを述べる。3方向に向けられたカメラから得られる画像をそれぞれ入力画像として、ベストのオレンジもしくは青、ベストのラインの白、ジャンパーの袖の緑を検出して探索対象であるかどうか判断し、対象と判断すればそれが存在する方向を求める。その後、LiDARから得られる形状情報と距離情報を用いて検証し、アプローチを行う。以降でそれぞれの手順の詳細を述べる。

***対象となる色範囲の設定 [#zf2de442]
 実験走行時に撮影した多数の画像データから探索対象の色情報の解析を行い、対象となる人物の色抽出の閾値の設定を行った。様々な時間帯や場所、天候などで撮影を行っているため、画像データには多くの環境のものを含んでいる。これらの画像を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の場合にしろと判断する。人物検出を行うときは撮影画像からこれらの閾値に含まれている色を抽出する。

CENTER:&size(14){表3:色抽出に用いた閾値};~
||CENTER:H|CENTER:S|CENTER:R、G、B|
|CENTER:オレンジ|CENTER:0~7、178~179|CENTER:140~255|CENTER:-|
|CENTER:青|CENTER:110~120|CENTER:110~255|CENTER:-|
|CENTER:緑|CENTER:50~100|CENTER:60~150|CENTER:-|
|CENTER:白|CENTER:-|CENTER:0~70|CENTER:60~255|

*** 色抽出による人物の判定 [#t319b53b]
 3方向に向けられたカメラのそれぞれの入力画像から、ベストの部分を囲う矩形領域を作成して検証を行うことで人物かどうかの判定を行う。以下のその手順を示す。

+オレンジと青をそれぞれ抽出し二値画像を作成する。
+作成した二値画像にラベリング処理を行い、その部分を囲う矩形領域を作成する。
+近傍の矩形領域同士を統合し、大きさが小さいものや縦横比がベストのものと異なる領域を状買いする。
+矩形領域を左右に拡張し、元の領域で白色を、拡張した領域で緑色をそれぞれ抽出する。
+矩形領域の大きさに対して一定の比率以上の尻色と緑色が抽出されれば人物として検出する。

 まず、入力画像をHSV表色系に変換し、表3で示した閾値を用いてオレンジ色と青色を抽出した二値画像を作成する。作成した画像にはノイズが含まれている場合があるためノイズ除去を行い、さらに膨張処理によって画像を調整する。入力画像とそれから作成して調整した二値画像を図6に示す。

#ref(input_binarization.png,center,70%)
CENTER:図6:入力画像(左)とオレンジ(中央)、青(右)の二値画像

 次に、二値画像に対してラベリング処理を行い、その部分をそれぞれ囲う矩形領域を作成する。矩形領域を作成した画像は図7の左の画像のようになる。これを見ると、ベストの白いラインの部分でベストの領域が分断されていることがわかる。ベスト全体を覆う形で矩形領域を作成したいため、この状態は好ましくない。~
 この問題を解決するため作成した矩形領域の内、四隅の座標が近い領域同士を統合する。図7の中央の画像のように、これを行うことでベスト全体を覆う矩形領域を作成することができる。その後、矩形領域の大きさが非常に小さいものや縦横比がベストのものとは異なるものを除外する。この処理を行うことで誤検出を削減することができる。~
 続けて、矩形領域を左右に拡張する。作成した矩形領域はベストに合わせたものとなっているため、左右に拡張することで緑のジャンパーの袖の部分も領域内含め、人物の上半身を囲う矩形領域を作成することができる。閣僚する大きさについては幅はベストの矩形領域の半分の幅、高さはそのままとする。拡張後の領域は図7の右の画像のようになり、白で囲われている部分が元の領域、緑で囲われている部分が拡張した領域である。その後、表3の閾値を用いて、拡張前のベストの矩形領域の部分から白色を、拡張した領域の部分で緑色をそれぞれ抽出する。抽出された白色と緑色のそれぞれの面積と抽出を行った各領域の面積の比率が両方とも一定以上であれば、探索対象の人物として検出する。

#ref(square.png,center,70%)
CENTER:図7:矩形領域の作成、統合、拡張

***LiDARを用いた距離・形状の判別 [#y88ee95d]
 先の節からロボットの近くに探索対象が存在するかどうかを判断することはできたが、この手法では単眼カメラを用いて人物検出を行っているため対象の存在する方向は分かるが距離を求めることが困難である。矩形領域の大きさからある程度の距離を求めることは可能だが正確な情報でないため安定しない。つくばチャレンジの課題では人物を発見した際の合図としてアプローチを行わなければならないため、距離の情報を正確に得る必要がある。そこで、LiDARによって対象の3次元情報を得ることで対処している。以下にその一通りの手順を示す。直近の10枚のデータの内3枚以上一致しないと探索対象と判断しないのは、偶然起こった誤検出によるアプローチを防ぐためである。なお、LiDARによる検証を行う範囲はロボットから半径7m以内のものと設定してある。

+カメラと同時に得たLiDARの点群データから図8に示すような平面二値化画像を作成する。
+ラベリング処理を行い、ある一定の大きさを持つ領域を抽出する。
+探索対象らしい大きさとして抽出された点群が存在する方向と、画像による人物探索によって発見した対象の方向が一致しているかどうか確認する。
+直近の10枚のデータの内3枚以上が一致していれば探索対象としてアプローチを行い1.5m手前で停止する。

#ref(verify_lidar.png,center,70%)
CENTER:図8:LiDARによる平面二値化画像

**つくばチャレンジ2017の結果とこの手法の精度について [#q147c1db]
 この手法を用いたつくばチャレンジ2017における本走行の結果は、検出2、誤検出2であった。検出、誤検出した対象を図9に示す。

#ref(result.png,center,60%)
CENTER:図9:つくばチャレンジ2017本走行時の人物検出結果

 左側二人が正確に検出した探索対象で、右側二人が誤検出した対象である。誤検出の対象は両社とも探索対象の交代人員であり、交代後ベストを着たり持ったりしたまま探索エリア内に居続けていて、加えて従来手法は探索対象が据わっているか、オレンジの帽子を被っているかなどで判断していなかったため、このような誤検出が起こってしまった。さらに、二人目を誤検出した時のアプローチ中に縁石に乗り上げ、車輪が完全に浮いてしまったため走行を断念せざるを得なくなってしまった。そのため、3人目以降の人物探索は行えず、完走もできなかった。~
 しかし、今回の人物探索の手法の精度を見ると誤検出した対象はほぼ同じ服装をしていた探索対象の交代要員のみであり、あからさまな誤検出は起こらなかった。さらに、道中で検出漏れも怒らず正確に探索対象を見つけることに成功している。また、つくばチャレンジ2017全体を通しての実験走行時においても高い精度で探索対象の検出を行えていた。これらのことから、この手法の精度は高いことがわかる。

**ログデータによる評価実験 [#xfedccf3]
 この手法の精度を再確認するため、ロボットを走行させた際に撮影した画像のログデータによる実験を行った。ここで行っているのはカメラの画像からの人物検出のみで、liDARによる形状および距離の検証は行っていない。~
 まず、今回利用するログデータに関する説明を行う。ログデータに関しては三つ用意し、一つはどれだけ人物を発見できるかを確認するための人物を含めた画像を計2000枚集めた人物画像のデータセット、次に大学構内を11時21分頃に撮影した画像のデータセット、最後に今年のつくばチャレンジの探索エリアであるつくばセンター広場を14時47分頃に撮影した画像のデータセットの三つである。大学構内、つくばセンター広場での撮影画像には人物も多数含まれていて、一部の画像は人物画像のものと重複している。~
 各画像のデータセットの枚数を表4にまとめ、大学構内及びつくばセンター広場での人物画像の一例を図10に示す。人物画像数は探索対象が写っていて矩形領域が作成されている画像の枚数を示す。そのため、探索対象が写っていても照明条件や露光時間による影響等で矩形領域が作成されなかったものに関しては含めていない。人物画像数、画像の総数は共に後の検出率の計算に用いる。また、一例を見ればわかる通り、人物画像には露光時間の変化の影響もあって照明条件が非常に厳しい画像が多数含まれるため、検出率があまり高くはならない。

#ref(log_human.png,center,70%)
CENTER:図10:人物撮影画像の一例

~

CENTER:&size(14){表4:評価実験用の各データセットの画像数};~
|CENTER:ログデータの種類|CENTER:人物画像数|CENTER:画像の総数|
|CENTER:人物画像データ|CENTER:2000|CENTER:2000|
|CENTER:大学画像ログデータ|CENTER:1791|CENTER:7742|
|CENTER:つくば画像ログデータ|CENTER:705|CENTER:12873|

 このログデータによる評価実験の結果を表5に示す。表の正の行が人物検出率、誤の行が誤検出率を表す。人物検出率の計算式は、"人物検出に成功した画像の枚数 / 表4で示した人物画像数"として、誤検出率の計算式は、"誤検出をした画像の枚数 / 表4で示した画像の総数"とした。表記は%表記として小数点第三位を四捨五入した値を表に記している。また、人物画像に関しては露光時間を段階的に変化させていることや様々な撮影環境に対処するために検出する色の閾値が大きめに設定されていることといった影響もあり、図10のように明暗がかなり厳しいものも多数含まれているため検出率は全体的に控えめな結果となっている。この結果を見ると、大学構内とつくばセンター広場の両方で誤検出が確認されている。

CENTER:&size(14){表5:従来手法のログデータによる評価実験結果};~
|正誤|CENTER:人物画像|CENTER:大学構内|CENTER:つくば広場|
|CENTER:正|CENTER:43.15%|CENTER:151.2%|CENTER:5.53%|
|CENTER:誤|CENTER:0%|CENTER:0.16%|CENTER:0.16%|

 本走行時は露光時間を徹底的に調整した状態で臨んだため、まだ調整が不十分だったこのログデータでは本走行時より多くの誤検出が発生してしまったと考えられる。また、偶然の色の重なりによって一度誤検出が起きてもその後検出されなければ探索対象であると判断されないため、つくばチャレンジにおいても誤った対象に対してアプローチは行われずあからさまな誤検出がないという結果となった。しかし、こういった誤検出は可能な限り起こさないことが望ましい。

*提案手法 [#t2858e09]
 本研究で提案する色ヒストグラムとSVMを用いた手法について説明する。提案手法は従来手法の矩形領域の検証方法を色抽出による検証から色ヒストグラムとSVMを用いた検証に変更することによってより精度の高い人物検出を目指したものである。

**提案手法からの変更点 [#k235cc06]
 まず、従来手法から変更した部分について説明する。変更点は矩形領域の拡張の際の拡張範囲の大きさと矩形領域の検証方法の二点である。それ以外の部分に関しては従来手法と同様の処理を行う。~
 矩形領域の検証方法は色抽出を用いた手法から色ヒストグラムとSVMを用いた手法に変更した。これに関しては後に詳しく説明する。~
 また、矩形領域の拡張する範囲に関しても検証方法に合わせた変更を行った。従来手法ではベストの幅の半分の数値分矩形領域の幅を広げるよう設定していたが、提案手法ではそのさらに半分、ベストの幅の1/4の分だけ拡張するように変更を行った。従来手法の場合は多少背景を含めてもジャンパーの袖の部分をしっかり入れた方がよい検証結果を得ることができるが、提案手法で扱う色ヒストグラムは背景などの予定な部分が入り込むとその分だけ大きくデータが変動してしまい、検出率が低下してしまう恐れがある。そのため、本手法では人物を全体を多少とれずとも背景を極力含めないようにするため拡張する範囲を狭くした。拡張範囲の縮小の一例を図11に示す。画像に表示されている青とオレンジの矩形が処理によって作成、検証を行った矩形領域であり、それぞれの色の人物を発見した合図となっている。左の縮小前の拡張範囲の場合は多少背景が入っても上半身全体がしっかり入るようになっているが、右の縮小後では可能な限り人物全体を含め、かつ背景を極力含めない矩形領域となっている。~
 拡張範囲を従来手法のままにしたものと提案手法のために狭くした物での検出結果の違いを表6に示す。表の見方や検出率の計算方法、実験に用いたログデータは前章で示したものと同様であり、今後も同じ方法で実験し評価を行う。また、ここで用いた色ヒストグラムの集計形式は、後述する色相180階級、彩度は低彩度を重視した4階級で集計した180×4の2次元ヒストグラムを用いた。SVMや学習データに関しても次節で説明する。このように結果が大きく改善したため、これ以降の実験においては矩形領域の拡張範囲は従来手法から変更したものを用いている。

#ref(comparison_extension.png,center,40%)
CENTER:図11:拡張後の矩形領域の比較

~

CENTER:&size(14){表6:領域拡張範囲変更による検出率の比較};~
|CENTER:矩形領域の拡張範囲|CENTER:正誤|CENTER:人物画像|CENTER:大学|CENTER:つくば広場|
|CENTER:変更前(1.5倍)|CENTER:正|CENTER:33.7%|CENTER:36.57%|CENTER:17.59%|
||CENTER:誤|CENTER:0%|CENTER:0%|CENTER:0%|
|CENTER:変更後(1.25倍)|CENTER:正|CENTER:50.3%|CENTER:51.59%|CENTER:25.82%|
||CENTER:誤|CENTER:0%|CENTER:0%|CENTER:0%|

**SVM(サポートベクターマシン)について [#c00af5d5]
 ここでは、本研究で用いたSVMについての説明を行う。SVMとは機械学習の一つであり、二種の学習データをもとに入力されたデータがそのどちらに分類されるかを決定する分類器である。以降ではSVMの詳しい説明や学習データなどを説明していく。

***SVMとは [#ef99e01c]
 SVMとは二種に分類される多数のデータを用いて機械に学習させ、その学習データをもとに入力されたデータがどちらに分類されるものなのか判断させる分類器である。多数の学習データをもとに二種を分別するための境界線を引き、その線を元に入力されたデータがどちらに分類されるのかを判断する。この境界線を超平面という。また、SVMは基本的にバイナリ型でしか分けることができず、マルチクラス型として利用するには組み合わせて利用する必要がある。~
 境界線である超平面は、基本的に線形でしか作成することができない。そのため、場合によって入力データをうまく2つのクラスに分けられないことがある。これを解決するために、カーネル関数を用いて超平面を作成する方法がある。これに関しては後に詳しい説明を行う。カーネル関数を用いて超平面を作成したSVMを非線形SVMと呼び、そうでないSVMを線形SVMと呼ぶ。~
 また、超平面を作成する際データをうまく分離できない場合がある。こういった場合にデータの分離の誤りを許容しない場合、無意味な超平面を作成してしまったり、作成自体出来なくなってしまうことがある。これを防ぐためにペナルティ係数Cを導入し、超平面を最適に設定する必要をなくしたり、データの誤った分離を許容することで対応する。Cが大きければ大きいほど制約条件は厳しくなり、Cが無限大の場合は誤りを一切許容しなくなる。このように制約条件を緩めたSVMをソフトマージンSVMと呼び、逆に誤りを許容しないSVMをハードマージンSVMと呼ぶ。~
 本手法ではオレンジのベストの人物か否か、青のベストの人物か否かで分ける2つのSVMを作成した。正解である検出対象の画像の色ヒストグラムのデータと不正解である関係ない画像の色ヒストグラムのデータを与えて学習させた。また、ペナルティ係数Cは本手法では10に設定してある。

***学習データについて [#vc71a748]
 SVMの学習用に用いたデータに関する説明を行う。正解データは探索対象のいくつかの場所や時間帯で少しずつ露光時間を変化させていって撮影を行い、撮影した画像から人物の部分を切り取ることで作成した。また、オレンジのベストを着た人物と青のベストを着た人物の二種類の検出対象がいるため、正解データもオレンジのものと青のものの二種類を用意してそれぞれの色の人物を検出するSVMを作成した。不正解データは様々な場所の画像から探索対象と似たような色が含まれている部分を見つけ、そこを切り取って作成した。なお、不正解データに関してはオレンジも青も同じものを利用する。今回集めた学習データの数を表7に、それぞれのデータの例をそれぞれ図12、13、14に示す。

CENTER:&size(14){表7:各学習データの画像数};~
|CENTER:学習データ名|CENTER:画像枚数|
|CENTER:オレンジの正解データ|CENTER:1723|
|CENTER:青の正解データ|CENTER:1570|
|CENTER:不正解データ|CENTER:1873|

~

#ref(orangesample.png,center,60%)
CENTER:図12:人物(オレンジ)の学習データ例

~

#ref(bluesample.png,center,60%)
CENTER:図13:人物(青)の学習データ例

~

#ref(negativesample.png,center,60%)
CENTER:図14:不正解の学習データ例

***カーネル関数について [#y9b18602]
 ここでは、カーネル関数に関する説明と複数の種類が存在するカーネル関数の中で本研究に最も適しているものは何かを決定する。カーネル関数とは、元の次元から高次元の特徴空間次元に写像して内積を取る関数のことである。これを利用することで散らばっている領域でも一体化を可能にしている。~
 カーネル関数にはいくつか種類があり、代表的なものに多項式カーネル(POLY)、ガウス放射基底関数カーネル(RBF)、シグモイド関数カーネル(SIGMOID)がある。また、カーネル関数を用いない従来のSVMを行うための線形カーネル(LINEAR)も存在する。~
 これらのカーネル関数にそれぞれ同じ学習データを与えて実験を行い、どのカーネル関数が最も適しているかを調べた。利用する色ヒストグラムの形式は前節でも利用した低彩度重視の180×4である。結果を表8に記す。

CENTER:&size(14){表8:各カーネル関数を用いた検出結果比較};~
|CENTER:矩形カーネル関数|CENTER:正誤|CENTER:人物画像|CENTER:大学|CENTER:つくば広場|
|CENTER:RBF|CENTER:正|CENTER:50.3%|CENTER:51.59%|CENTER:25.82%|
||CENTER:誤|CENTER:0%|CENTER:0%|CENTER:0%|
|CENTER:POLY|CENTER:正|CENTER:56.45|CENTER:53.77%|CENTER:45.11%|
||CENTER:誤|CENTER:0.1%|CENTER:0.08%|CENTER:0.11%|
|CENTER:SIGMOID|CENTER:正|CENTER:11.65%|CENTER:18.93%|CENTER:2.41%|
||CENTER:誤|CENTER:2.55%|CENTER:2.13%|CENTER:5.59%|
|CENTER:LINEAR|CENTER:正|CENTER:72.75%|CENTER:61.75%|CENTER:83.83%|
||CENTER:誤|CENTER:2.3%|CENTER:1.29%|CENTER:2.8%|

 まず、SIGMOIDに関しては検出率がかなり少なく、誤検出も頻繁に起こしてしまうという結果になった。POLYとLINEARに関しては検出率は高いものの、その分誤検出が多く発生するという結果になっている。RBFはPOLYやLINEARよりも検出率は控えめなものの誤検出もなく良い結果が得られている。この結果から、カーネル関数はRBFを使用してSVMの学習を行うことが最適であると判断し、これ以降の学習はすべてRBFを用いている。

**色ヒストグラムの検討 [#nabdeb05]
 ここで、色ヒストグラムの説明を行う。色ヒストグラムは画像の一画素ごとの色情報を見て集計したものである。本手法で用いた色ヒストグラムは、基本的にHSV表色系の色相と彩度を扱っている。明度に関しては環境の変化によって非常に大きく変化してしまうため、本研究では扱っていない。本研究では大きく分けて2種類の色ヒストグラムの集計形式での学習を試みた。一つが主に色相を集計した1次元の色ヒストグラム、もう一つが色相と彩度の両方を集計した2次元の色ヒストグラムである。以降では様々な色ヒストグラムの集計形式で学習及びログデータを用いチア実験を行い、どの集計形式が最も良い結果を出すのか検討した。

***主に色相を扱う1次元ヒストグラムでの学習 [#pe3825ec]
 本手法で取り扱う色相と彩度だが、両者を比べると色相の方が画像の明るさによる変動が少なく、安定した値が検出できる。そのため、今回は色相を重視した色ヒストグラムで学習を行い、ログデータを用いて実験を行った。OpenCVでは色相は180段階で表現されているため、色ヒストグラムは色相を3段階ずつでまとめた計60階級、2段階ずつでまとめた計90階級、1段階ずつ集計した180階級のものをそれぞれ作成した。各結果を表9に記す。誤検出が一か所っだけ増えてしまっているものの、色相は基本的に細かく取った方が良い結果が得られることがわかる。

CENTER:&size(14){表9:低彩度を別集計した181階級のヒストグラムでの結果比較};~
|CENTER:色相の階級数|CENTER:正誤|CENTER:人物画像|CENTER:大学|CENTER:つくば広場|
|CENTER:60段階|CENTER:正|CENTER:38.05%|CENTER:36.35%|CENTER:25.39%|
||CENTER:誤|CENTER:0%|CENTER:0.01%|CENTER:0%|
|CENTER:90段階|CENTER:正|CENTER:40%|CENTER:39.75%|CENTER:21.42%|
||CENTER:誤|CENTER:0%|CENTER:0.03%|CENTER:0%|
|CENTER:180段階|CENTER:正|CENTER:44.5%|CENTER:44.22%|CENTER:23.26%|
||CENTER:誤|CENTER:0%|CENTER:0.03%|CENTER:0%|

 ここでは彩度を全く扱っていなかったが、白や黒といった無彩色に関しては色相が存在しないため、この2色を扱えていないことが問題となる。無彩色は彩度が非常に低いという特徴があるため、それを利用して色相のヒストグラムに階級を1つ追加して低彩度のものを別に集計する色ヒストグラムを作成して再び実験を行った。ここでは、先の実験で扱ったヒストグラムの内検出率が高めだった180階級のヒストグラムにこの集計形式を当てはめて実験を行っている。そのため、この実験の色ヒストグラムの階級数は181階級で行っていることになる。また、低彩度の基準値を256段階で扱われている彩度の内それぞれ10、20、30と設定したもので実験を行い、最も精度の高くなる基準値はどれか調べた。基準値未満の彩度は無彩色として、そうでない画素は色相を見て集計している。結果を表10に記す。低彩度の基準を20、30にした時でさらにもう1つ誤検出が増えてしまったが、どの集計形式でも色相のみを扱ったものよりも検出率が大きくなることが分かった。また、その中でも低彩度の基準値を10としたものが最も良い検出結果になることが分かった。

CENTER:&size(14){表10:低彩度を別集計した181段階のヒストグラムでの結果比較};~
|CENTER:色相の階級数|CENTER:正誤|CENTER:人物画像|CENTER:大学|CENTER:つくば広場|
|CENTER:10未満|CENTER:正|CENTER:48.15%|CENTER:47.46%|CENTER:25.82%|
||CENTER:誤|CENTER:0%|CENTER:0.03%|CENTER:0%|
|CENTER:20未満|CENTER:正|CENTER:46.3%|CENTER:46.57%|CENTER:23.97%|
||CENTER:誤|CENTER:0%|CENTER:0.03%|CENTER:0.01%|
|CENTER:30未満|CENTER:正|CENTER:45.05%|CENTER:44.72%|CENTER:25.39%|
||CENTER:誤|CENTER:0%|CENTER:0.03%|CENTER:0.01%|

**色相と彩度を扱う2次元ヒストグラムでの学習 [#q128107b]
 ここまでは基本的に色相を扱った色ヒストグラムを作成し学習、実験を行ってきた。しかし、色相だけでなく彩度も集計した方が判断材料が増えてより検出率が上がり誤検出も減ると考え、色相と彩度を扱った2次元ヒストグラムを作成して実験を行った。ここで、色相をそのまま用いて180階級としたものに加え、彩度もそのまま用いて256階級としてしまうと180×256階級になってしまい、扱うデータ量がおおっく増えてしまい処理に時間もかかりすぎてしまう。そのため、ここでは色相と彩度をそれぞれいくらかの階級に分けた色ヒストグラムの作成を行った。まず、色相と彩度をそれぞれ180×4、90×8、45×16の720階級の色ヒストグラムを作成して実験を行い、どの程度彩度に重きを置いた方が良い結果が得られるのか確認した。結果は表11のようになった。

CENTER:&size(14){表11:色相と彩度の2次元ヒストグラムの結果比較};~
|CENTER:色相と彩度の階級数|CENTER:正誤|CENTER:人物画像|CENTER:大学|CENTER:つくば広場|
|CENTER:180×4|CENTER:正|CENTER:44.2%|CENTER:48.86%|CENTER:14.04%|
||CENTER:誤|CENTER:0%|CENTER:0.01%|CENTER:0%|
|CENTER:90×8|CENTER:正|CENTER:41.7%|CENTER:44.61%|CENTER:14.18%|
||CENTER:誤|CENTER:0%|CENTER:0%|CENTER:0.02%|
|CENTER:45×16|CENTER:正|CENTER:43.8%|CENTER:43.55%|CENTER:21.99%|
||CENTER:誤|CENTER:0%|CENTER:0%|CENTER:0%|

これを見ると、人物画像と大学構内の検出率は誤検出が一つあるものの180×4の方が良いが、つくばセンター広場は45×16の方が検出結果が良い。両者の検出結果を確認すると、暗い画像の人物に関しては後者の方が良い結果が得られていることが分かった。ここでは彩度をそのまま階級の数で等分して集計しているため、180×4の場合の彩度の閾値は64、128、192とかなり大雑把な主計になってしまっている。画像が暗いほど彩度も低くなるため、ある程度以上暗い画像になってしまうと彩度の集計がうまくいかないと考えられる。そこで、彩度をそのまま階級数で等分するのではなく、平方根を取ったものを階級の数になるよう分けることで低彩度を子細に集計するヒストグラムを作成した。この場合の180×4の彩度の閾値は16、64、144となり、低彩度を細かく集計することが可能になった。階級数が4の時のそれぞれの閾値のイメージのグラフが図15のようになる。今まで行ってきた左のような分割方法より右のような分割方法の方が低彩度を子細に集められることがわかる。この低彩度を重視した集計方法で先の三種類の修家方法で再び実験を行った。

#ref(sat_graph.png,center,40%)
CENTER:図15:階級数が4の場合の彩度集計の閾値のグラフ(左:通常、右:低彩度重視)

~

CENTER:&size(14){表12:低彩度を重視した2次元ヒストグラムの結果比較};~
|CENTER:色相と彩度の階級数|CENTER:正誤|CENTER:人物画像|CENTER:大学|CENTER:つくば広場|
|CENTER:180×4|CENTER:正|CENTER:50.3%|CENTER:51.59%|CENTER:25.82%|
||CENTER:誤|CENTER:0%|CENTER:0%|CENTER:0%|
|CENTER:90×8|CENTER:正|CENTER:38.75%|CENTER:43.94%|CENTER:6.81%|
||CENTER:誤|CENTER:0%|CENTER:0%|CENTER:0%|
|CENTER:45×16|CENTER:正|CENTER:37.85%|CENTER:41.42%|CENTER:10.78%|
||CENTER:誤|CENTER:0%|CENTER:0%|CENTER:0%|

 実験結果を表12に示す。これを見ると、180×4は検出率が大きく上がり、精度が上がっていることがわかる。新たに検出できた画像を確認したところ主に暗い画像が検出できるようになっていた。一方でそれ以外の90×8、45×16に関しては逆に検出率が低下してしまった。この集計方法は彩度の集計が非常に大雑把であった180×4であったからこそ有効な手段であり、細かく集計しすぎると逆に精度が低下することが分かった。~
 ここで、提案手法における最も優れた色ヒストグラムの集計定式を決定する。ここまで行ってきた実験の結果から、最も優れた集計形式は色相180階級、彩度を低彩度重視で集計した4階級の180×4の2次元ヒストグラムであることが分かった。

*各手法の評価実験の比較と考察 [#h7d1b499]
 ここで、従来手法と提案手法でのログデータでの比較と、その結果から提案手法の考察を行う。なお提案手法の色ヒストグラムの集計形式は、最も良い結果が得られた低彩度重視の180×4を利用した。はじめに両手法の定量的な比較を行い、その後具体的にどういった点において両手法の検出結果に違いが表れているのかを確認する。

**ログデータによる定量比較 [#d5d0bcdd]
 まず、両手法に同様の画像を与えた場合の検出率と誤検出率の定量比較を行う。これまで扱ってきたものと同様のログデータによる評価実験の結果を並べたものを表13に記す。

CENTER:&size(14){表13:各手法の結果比較};~
|CENTER:使用した手法|CENTER:正誤|CENTER:人物画像|CENTER:大学|CENTER:つくば広場|
|CENTER:従来手法|CENTER:正|CENTER:43.15%|CENTER:151.2%|CENTER:5.53%|
||CENTER:誤|CENTER:0%|CENTER:0.16%|CENTER:0.16%|
|CENTER:提案手法|CENTER:正|CENTER:50.3%|CENTER:51.59%|CENTER:25.82%|
||CENTER:誤|CENTER:0%|CENTER:0%|CENTER:0%|

 従来手法に比べ提案手法は人物画像とつくばセンター広場のデータセットは検出率が大きく上回り、大学構内のデータセットでの検出率も僅差だが上回っている。また、従来手法でいくつか確認された誤検出が提案手法ではすべて取り除かれている。この結果から、従来手法と比べ提案手法は精度が向上していることがわかる。~
 次に、それぞれの手法の1枚当たりにかかった計算時間を表14に記す。ここでは矩形領域が作成され、検証の処理が行われた場合の処理時間の時間を図るため、全ての画像で検証処理が行われる人物画像のデータセットの比較結果のみを記載する。なお、処理系にはIntel CORE i3-4170、クロック周波数3.70GHzを用いた。

CENTER:&size(14){表14:各手法の平均計算時間比較};~
|CENTER:使用した手法|CENTER:人物画像の平均処理時間|
|CENTER:従来手法|CENTER:28.7357ms|
|CENTER:提案手法|CENTER:29.0293ms|

 両手法の結果を比較すると、従来手法の方が処理がシンプルであるため提案手法より若干計算時間が早いことがわかる。従来手法及び提案手法ではカメラによる撮影が1フレームごとに行われるため、次の画像が撮影されるまでの間に処理が終わっていることが前提となる。そのため、それ以上の時間がかかってしまうと実装した際に処理に支障をきたしてしまう。使用しているカメラは30FPSであるため、撮影が行われる間隔は約33msである。提案手法もこの時間内に収まっているため、十分実装が可能な処理時間である。

**検出できた人物画像の比較 [#xaf924d1]
 提案手法で検出出来て従来手法では検出できなかった、またはその逆の人物画像をそれぞれ比較し、本手法の評価を行う。一方の手法でのみ検出できた画像の代表例を図16に記す。画像に写っているオレンジと青の矩形領域が、それぞれの対応した色での検出に成功した目印となっている。

#ref(result_comparison.png,center,70%)
CENTER:図16:提案手法のみ検出できた画像例(上段)と従来手法のみ検出できた画像例(下段)

 まず、提案手法のみで検出できた画像(図16の上段の画像)は全体的に陰になっている場所や露光時間の関係で暗くなっている画像が多かった。特につくばでの画像の結果に関しては図16の右の人物を提案手法は安定して検出出来ていたため、つくばセンター広場のログデータの検出率が大きく上回っていたことが分かった。これらのことから、提案手法は従来手法と比べて暗い場所の人物をより安定して検出できることが分かった。~
 次に、従来手法のみで検出できた画像(図16の下段の画像)は、提案手法とは逆にある程度白飛びしてしまっている画像が多かった。また、矩形領域が小さめに作成されている画像も多数確認された。提案手法では従来手法よりも矩形領域の拡張範囲が狭く設定されているため、拡張の際に従来手法ではジャンパーの袖が領域内に収まっても提案手法ではほぼ領域に入らず検出できなかったと考えられる。拡張範囲を狭くしたことで検出率は高くなった一方で、このように検出できなくなった画像もあることが確認できた。

**比較結果からの考察 [#f7de4bbd]
 定量的な比較においては提案手法の方が優れていたものの、従来手法でしか検出できなかった画像も多数存在している。ここでは、比較結果などを参考に今後の提案手法の改善点を考察する。~
 まず、従来手法に比べて白飛びしている画像をあまり検出できなかった点について、収集した正解のデータセットを改めて確認したところ、白飛びしてしまっている画像はかなり少なかった。正解データの収集の際、黒潰れ以上に白飛びしてしまっている画像を慎重に取り除いてしまった影響だと考えられる。このことから、若干白飛びしてしまっている画像を含めた方がより様々な状況に対応できる人物検出が実現でき、より検出率が上昇すると考えられる。~
 また、矩形領域の拡張範囲を狭くしたことによって検出できなくなった画像が存在することに関しては、矩形領域の作成及び拡張にさらに工夫を凝らし、より人物の部分を過不足なく囲う矩形領域を作成することができれば、さらに検出率が上昇することが考えられる。~
 最後に、誤検出をさらに防ぐための考察を行う。今回のログデータでは提案手法に誤検出は発生しなかったが、与えている情報はあくまで色ヒストグラムのみであるため、探索対象の服装に極めて近い色が並んでしまった場合は誤検出しないとは言い切れない。誤検出をより防ぐための処理として、色ヒストグラム以外にも色の配置情報を与える方法が考えられる。これによって同じような色が並んでも色の配置が人物のものと異なれば検出されなくなるため、より
誤検出を防ぐことができると考えられる。

*まとめ [#r09443fb]
 本研究では、自律走行ロボットが特定服装人物を検出する際に、色ヒストグラムとSVMを用いる手法を提案した。今年度のつくばチャレンジに用いた手法の一部を変更し、本研究を用いた手法で人物検出の判定を行った。~
 つくばチャレンジに用いた従来手法では、撮影画像からベストの色であるオレンジと青を抽出した二値画像から、抽出した領域を囲う矩形領域を作成し、矩形領域を左右に拡張した青ベストのラインの白色とジャンパーの袖の緑色を抽出することで人物かどうかを検証する。その後、LiDARによって形状や対象との位置関係を確認し、直近の10回中3回以上人物と判定した場合にアプローチを行う。また、カメラの露光時間を段階的に変更し、多くの環境で人物が検出できるようにした。つくばチャレンジの本走行においては良好な結果を示したが、ログデータによる評価実験を行ったところ誤検出が多数確認された。~
 さらに精度を上げるため、この手法に本研究の要素を組み込んだ。具体的には矩形領域の検証方法を色抽出から色ヒストグラムとSVMを用いた手法に変更した。オレンジと青の人物の画像とそれらに似たような色をした無関係の画像を集めて、それぞれの色ヒストグラムをSVMに学習させた。色ヒストグラムは色相と彩度を扱った複数の集計方法の中で最も良い結果が得られるものを模索した。集計方法は大きく分けて二種類あり、一つは色相と低彩度を集計する1次元ヒストグラム、もう一つは色相と彩度をそれぞれ集計する2次元ヒストグラムである。試行錯誤の結果、色相を180段階、彩度を低いものを細かく集める4段階の2次元ヒストグラムが最も良い結果となった。~
 従来手法と提案手法のログデータによる評価実験を比較したところ、従来手法で確認された誤検出はすべてなくなり、人物の検出率も増加した。実験結果を詳しく解析したところ、暗く映った人物を従来手法と比べて安定して検出することが可能になったことが分かった。しかし、白飛びしている人物に関してはデータの収集不足もあって従来手法の方が良い結果が得られていた。~
 今後の課題に関しては、より様々な環境で正解データを集めることでさらに精度を向上させていきたい。また、本研究の検出手法では色の位置情報は見ていないため、今回は確認されなかったが別の場所で誤検出を起こしてしまう可能性がある。そこで、色の位置情報も判断材料に追加することで誤検出の可能性をより減らしていきたい。

*参考文献 [#oe3bf470]
[1] "つくばチャレンジ2017", http://www.tsukubachallenge.jp/, (access Jan 28, 2018).~
[2] 鹿貫悠多,中村弘樹,清水美咲,竹野翔太,太田直哉,"つくばチャレンジ2014参加報告書", つくばチャレンジ2014参加レポート集,pp.35-42, 2015~
[3] 鹿貫悠多,中村弘樹,須田雄大,山田竜也,太田直哉,"つくばチャレンジ2015参加報告書", つくばチャレンジ2015参加レポート集,pp.89-96, 2016~
[4] 鹿貫悠多,中村弘樹,新井真人,須田雄大,山田竜也,太田直哉,"つくばチャレンジ2016参加報告書", つくばチャレンジ2016参加レポート集,pp.95-101, 2017~
[5] 阪東茂,中林達彦,川本駿,椎名誠,阪東華子,"つくばチャレンジ2017における土浦プロジェクトの取り組み", つくばチャレンジ2017参加レポート集,pp.3-10, 2018~
[6] 土方優明,門脇史弥,柿木泰成,岡村涼平,加藤正義,尾崎功一,"つくばチャレンジ第2ステージにおける宇都宮大学の取組", つくばチャレンジ2017参加レポート集,pp.65-68, 2018~
[7] 満留諒介,山路祥太郎,梅田将考,半田旭,阿部太郎,伊達央,"つくばチャレンジ2017における筑波大学知能ロボット研究室チームKerberosの取り組み", つくばチャレンジ2017参加レポート集,pp.172-175, 2018~
[8] 小野田崇,"知の化学 サポートベクターマシン", オーム社, 2007~
[9] 阿部重夫,"パターン認識のためのサポートベクトルマシン入門", 森北出版, 2011~
[10] 大北剛,"カーネル法によるパターン解析", 共立出版, 2010~

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