0:00:00.233,0:00:05.220 こんにちは.これまで時間をかけて単純な問題である2次元の 0:00:05.220,0:00:09.428 手書き数字認識を説明して来ました.これでようやく 0:00:09.428,0:00:14.825 シーン中の3次元物体の検出問題に取り組むことができます.ここでは, 0:00:14.825,0:00:21.501 現在広く使われているPASCAL物体検出チャレンジをとりあげます. 0:00:21.501,0:00:28.222 このデータセットは,もう5年以上使われています. 0:00:28.222,0:00:33.687 このデータセットには,各カテゴリに対して 0:00:33.687,0:00:39.843 10,000枚以上の画像が収集されました.そして画像中にある 0:00:39.843,0:00:44.554 そのカテゴリの物体を四角で囲みました.例えばダイニングテーブル,犬,馬, 0:00:44.554,0:00:50.235 オートバイ,人,植木鉢,羊などです.カテゴリの数は 0:00:50.235,0:00:56.504 20あります.各カテゴリに属する物体が四角形で囲まれています. 0:00:56.504,0:01:02.087 例えば,これは犬を囲む矩形, 0:01:02.087,0:01:06.892 そしてこれは馬を囲む矩形と 0:01:06.892,0:01:10.429 人々に対応する矩形です. 0:01:10.429,0:01:18.413 画像中に人と馬が一緒にいるので.[br]このタスクのゴールは物体を検出することです. 0:01:18.413,0:01:22.975 つまりこれがコンピュータがすることです.例えば犬を見つけたいのです. 0:01:22.975,0:01:27.983 やりたいことは,画像のどこに犬がいるのかを矩形で 0:01:27.983,0:01:35.261 囲むことです.そして実際にその位置に犬がいるのかどうかを 0:01:35.261,0:01:39.586 評価するには,この矩形が正しい矩形と十分に重なっているか 0:01:39.586,0:01:45.993 を見ます.さて,これが3次元物体認識でよく用いられている 0:01:45.993,0:01:50.719 データセットです.このためにどんな手法が使えるでしょう. 0:01:50.719,0:01:56.856 最初はもちろん,基本的なやり方である多重スケールのスライディングウインドウを 0:01:56.856,0:02:01.706 使います.この方法は顔検出のために90年代に使われました. 0:02:01.706,0:02:08.244 そして現在まで,人物検出などに使われています.では, 0:02:08.244,0:02:13.505 この基本的な方法を見てみましょう.ここにウィンドウがあります.例えば, 0:02:13.505,0:02:20.981 画像の左上から始めます.この緑色の四角の一つ一つが 0:02:20.981,0:02:28.387 ウィンドウに対応します.そして,このウィンドウの中に, 0:02:28.387,0:02:34.254 顔があるか?バスがあるのか?を認識します.そしてウィンドウを少しスライドして, 0:02:34.254,0:02:39.791 同じ事をおこないます.画像中の人物の大きさは様々なので, 0:02:39.791,0:02:45.815 この処理を色々な大きさのウィンドウを使って行い,小さな物体から 0:02:45.815,0:02:53.717 大きな物体まで扱えるようにします.一般的に用いられている認識方法は 0:02:53.717,0:02:58.106 線形サポートベクターマシン(SVM)を使って勾配方向ヒストグラム(HOG)特徴量を学習することです. 0:02:58.106,0:03:05.048 これは2005年にDalalとTriggsが提案した方法で, 0:03:05.048,0:03:09.319 彼等の論文に詳しく書かれています.これらのブロックをどう計算し正規化するか,などに 0:03:09.319,0:03:13.531 興味があれば,彼らの論文をぜひ読んでください. 0:03:13.531,0:03:18.866 DalalとTriggsのアプローチは歩行者検出に 0:03:18.866,0:03:25.759 適用されましたが,そのためにはひとつのブロックで十分でした.これで 0:03:25.759,0:03:31.736 対象物体を検出できました.それではもっと複雑な物体はどうでしょう. 0:03:31.736,0:03:37.715 姿勢が変化したら?犬や猫はどうする?これらの変形は非剛体です.だから 0:03:37.715,0:03:43.373 変形しないテンプレートが一つでは不十分です.そこで,パーツに基づく(part-based)アプローチが 0:03:43.373,0:03:50.220 必要になります.現在,パーツに基づくアプローチは2つあります.1つ目は 0:03:50.220,0:03:56.116 変形可能(deformable)パーツモデルで,Felzenszwalbらによって提案されたものです.これは 0:03:56.116,0:04:03.207 2010年のPAMIの論文です.もう一つのアプローチはポーズレット(Poselet)と呼ばれるもので, 0:04:03.207,0:04:09.915 Lubomir Bourdevやその他の私のグループの研究者が提案しました. 0:04:09.915,0:04:16.031 その基本的なアイデアは? まずFelzenszwalbのアプローチを紹介しましょう. 0:04:16.031,0:04:23.734 彼らの基本的なアイデアは,ルートフィルタ(root filter)が物体全体を 0:04:23.734,0:04:28.670 検出します.そして多数のパーツ用のフィルタ(part filters)が 0:04:28.670,0:04:36.951 顔や足などを検出します.これらのパーツ用フィルタは 0:04:36.951,0:04:43.412 ルートフィルタに対してある特殊な関係になる時だけ使われます.つまり,この検出器は 0:04:43.412,0:04:50.087 物体全体の検出器とパーツ用フィルタの組み合わせであり, 0:04:50.087,0:04:54.584 パーツ用フィルタは物体全体とある特定の関係にあるように制約されます.そして 0:04:54.584,0:05:00.743 このアプローチは,ルートフィルタと様々なパーツ用フィルタから構成され, 0:05:00.743,0:05:05.168 識別はLatentSVMによって行われます.このためには更にアノテーションを付ける必要はありません. 0:05:05.168,0:05:11.663 ここでパーツとは,顔や足などです.ですが 0:05:11.663,0:05:16.611 ここで注意したいのは,パーツとは,そのように何らかの意味のあるものでなくても 0:05:16.611,0:05:23.751 構わないということです.もう一つのポーズレットのアプローチでは,アイデアとして 0:05:23.751,0:05:29.735 パーツは意味のあるものでなくてはなりません.そしてそのために 0:05:29.735,0:05:34.534 更なるアノテーションを付ける必要があります.例えば,人々の画像があるとします. 0:05:34.534,0:05:38.503 これには,キーポイントにアノテーションを付けなければなりません.例えばこれは左肩であるとか 0:05:38.503,0:05:42.688 右肩とか,左ひじ,右肩などです.その他のカテゴリの 0:05:42.688,0:05:47.721 物体に対しては,キーポイントは,例えば飛行機のカテゴリであれば, 0:05:47.721,0:05:53.775 胴体先端や翼の先端がキーポイントです. 0:05:53.775,0:05:56.801 このアプローチには作業が必要になります.なぜなら,誰かが 0:05:56.801,0:06:01.851 テスト画像を全部見て,キーポイントにマークを付けなければならないので.しかしその結果, 0:06:01.851,0:06:07.950 もう少し色々なことができるようになります.このスライドに示しているのは, 0:06:07.950,0:06:14.469 識別的に学習されたパーツに基づくモデルが物体を検出している様子です. 0:06:14.469,0:06:21.024 これはDPMモデルという,Felzenszwalb,Girshick,MacAllester,Ramananが提案したものです. 0:06:21.024,0:06:26.919 ここに示すように,このモデルは自転車を非常によく検出することができます.実際には, 0:06:26.919,0:06:31.844 一つのモデルだけを学習するのではなく,混合モデルを学習します.ここの示すモデルは 0:06:31.844,0:06:39.714 自転車を横から見たものに対応します.これはルートフィルタです. 0:06:39.714,0:06:45.165 ルートフィルタはこのように見えます.これは剛体のテンプレートです. 0:06:45.165,0:06:49.751 これは特定方向のエッジを探して, 0:06:49.751,0:06:57.181 横から見た自転車を検出します.その次は様々なパーツ用フィルタです.パーツ用フィルタは 0:06:57.181,0:07:02.204 これです.これらの一つ一つの矩形が, 0:07:02.204,0:07:06.869 パーツ用フィルタに対応します.ここにあるフィルタは, 0:07:06.869,0:07:15.257 タイヤを検出するテンプレートのようなものです.そして, 0:07:15.257,0:07:20.969 最終的なスコアを計算します.そのためには,ルートフィルタのスコアと 0:07:20.969,0:07:26.485 各パーツ用フィルタのスコアを総合します. 0:07:26.485,0:07:31.122 横から見た自転車を検出するこの検出器は, 0:07:31.122,0:07:36.826 自転車を前から見た場合にはうまく働きません.そのため,複数のモデルが 0:07:36.826,0:07:44.490 必要になります.そのモデルがこれです.ここにタイヤがありますが, 0:07:44.490,0:07:50.273 これはパーツとしては少し違います.そのため,複数のモデルを使います. 0:07:50.273,0:07:55.113 色々な姿勢を扱う必要があります.各モデルは 0:07:55.113,0:08:01.483 ルートフィルタと様々なパーツ用フィルタを組み合わせています.また,学習データには微妙な部分もあります.なぜなら 0:08:01.483,0:08:07.163 キーポイントにたいするアノテーションがないかもしれないからです. 0:08:07.163,0:08:11.042 ここで紹介した学習アプローチでは, 0:08:11.042,0:08:15.420 学習したパーツがどこにあるのかを見つけます.詳細については,PAMI2010の論文を読んでください. 0:08:15.420,0:08:23.544 それでは,どのくらい検出できているのでしょうか.一般的にコンピュータビジョンで用いられている 0:08:23.544,0:08:29.519 検出器の評価方法を説明します.ここでは 0:08:29.519,0:08:35.255 例えばオートバイ検出器を例に取りましょう.そして,適合率・再現率曲線を 0:08:35.255,0:08:40.238 計算します.そのアイデアはこうです.検出アルゴリズムは 0:08:40.238,0:08:47.430 オートバイがいるかもしれない場所を四角として検出します.そして 0:08:47.430,0:08:52.147 この検出された矩形を評価します.それが正しいのか間違いなのか? そして 0:08:52.147,0:08:56.241 正しい矩形との重なりが例えば50%以上であれば,検出できたと 0:08:56.241,0:09:04.838 することします.次に,このしきい値をどのくらい厳しくするのかを決めます. 0:09:04.838,0:09:10.295 もし検出が十分な精度だと思うなら,すべての候補を検出結果として評価しても良いでしょう. 0:09:10.295,0:09:14.573 もちろん全部のオートバイが検出できていれば,ですが. 0:09:14.573,0:09:18.902 それはそれでよさそうです.ではここで何をするかというと, 0:09:18.902,0:09:24.116 しきい値を決めてそれに対して適合率と再現率を計算します. 0:09:24.116,0:09:30.775 適合率(precision)と再現率(recall)です.その意味はこうです. 0:09:30.775,0:09:36.452 適合率とは,検出したオートバイのうち,何割が本当のオートバイなのかを 0:09:36.452,0:09:44.117 表します.再現率とは,検出するべきオートバイのうち,どのくらいが 0:09:44.117,0:09:49.205 検出できたのか,です.もちろん適合率は100%になるのが理想ですし 0:09:49.205,0:09:54.519 再現率も100%がよい.でも実際にはそんなにうまく行きません. 0:09:54.519,0:10:00.621 全部のオートバイが検出できなければ,例えば,この点では, 0:10:00.621,0:10:07.112 適合率は0.7です.この意味は,検出した結果は 0:10:07.112,0:10:12.704 70%しか正しくない,ということです.この点の再現率は 0:10:12.704,0:10:19.082 55%程度なので,このしきい値では,つまり55%しか 0:10:19.082,0:10:24.847 オートバイを検出できないということです.しきい値をあまくしていくと, 0:10:24.847,0:10:28.644 誤検出が増えますが,未検出は減ります. 0:10:28.644,0:10:32.905 曲線のこの付近では, 0:10:32.905,0:10:38.603 およそ70%から80%のオートバイが 0:10:38.603,0:10:45.605 検出されています.この図に示す複数の曲線は 0:10:45.605,0:10:51.309 異なるアルゴリズムの結果を示しています.これらのアルゴリズムを比較するには 0:10:51.309,0:10:59.018 曲線の下の面積(AUC)を用います.理想的には,もちろんこれは100%になります. 0:10:59.018,0:11:04.432 実際には50%とか60%という数字になり, 0:11:04.432,0:11:09.840 これは平均適合率(AP)と呼ばれています.これを用いて異なるアルゴリズムを比較します. 0:11:09.840,0:11:16.740 この適合率再現率曲線は,別のカテゴリの物体検出結果を示しています.つまり 0:11:16.740,0:11:21.751 人物検出です.異なるアルゴリズムに対応する曲線があります. 0:11:21.751,0:11:27.215 このアルゴリズムはあまり良くありませんが,こちらのアルゴリズムはもっと性能が良いです. 0:11:27.215,0:11:32.941 どの曲線でも,すべての人物は検出できていません. 0:11:32.941,0:11:38.352 30%の人物はどのアルゴリズムでも検出されていません. 0:11:38.352,0:11:43.059 一部が隠れていたり,一般的な姿勢をしていなかったりするためです. 0:11:43.059,0:11:53.453 そういう状況は検出を非常に難しくします. 最終的にPASCAL VOCでは 0:11:53.453,0:12:04.331 各クラスの平均適合率を計算します.そして 0:12:04.331,0:12:09.887 2つの数値を求めます.Maxはそのカテゴリで最もよいアルゴリズムです. 0:12:09.887,0:12:13.830 オートバイのmaxは58%,という具合です.これはオートバイ検出で 0:12:13.830,0:12:19.490 最もよいアルゴリズムの平均適合率は58%ということです.そしてmedianは, 0:12:19.490,0:12:23.888 もちろん複数のアルゴリズムの中央値です. 0:12:23.888,0:12:29.237 あるカテゴリは別のカテゴリより簡単なものがあります.オートバイはおそらく 0:12:29.237,0:12:35.100 一番簡単です.平均適合率が58%なので.植木鉢などはもっと難しく 0:12:35.100,0:12:41.186 検出の平均適合率は16%しかありません.だから 0:12:41.186,0:12:46.345 検出がうまくできているかどうかは,私の考えでは,すべてのカテゴリで 0:12:46.345,0:12:51.849 平均適合率が50%以上かどうかです.ここではオートバイ, 0:12:51.849,0:12:59.961 自転車,バス,飛行機,馬,車,猫,電車,バス,です.50%ということは, 0:12:59.961,0:13:05.372 そのカテゴリでは半分正解して半分は間違えていると言えるかもしれません. 0:13:05.372,0:13:11.567 50%程度なので,もしかすると「ボート」と答えているかもしれません.ではもっと難しい 0:13:11.567,0:13:16.847 カテゴリを見てみましょう.ボートのカテゴリでは,平均適合率は 0:13:16.847,0:13:22.343 0.23です.この例を見れば,なぜ 0:13:22.343,0:13:26.773 難しいかが分かるでしょう.ボートによっては見かけが全然ちがいます. 0:13:26.773,0:13:32.169 これは非常に難しいのです.これらをすべて学習して検出するには. 0:13:32.169,0:13:39.397 それではもっと難しい例を見てみましょう.イスです.これらの画像に 0:13:39.397,0:13:46.742 イスを表す矩形を描くとします.では, 0:13:46.742,0:13:51.868 例えば剛体テンプレートでこれらを検出することを考えましょう. 0:13:51.868,0:13:56.981 イスに特徴的なエッジを見つけるのです.分かるように,そのような方法では 0:13:56.981,0:14:03.092 まったく見込みがありません.おそらく,人間がイスを見つける場合には, 0:14:03.092,0:14:07.545 人間がイスの上に特定の姿勢で座る,という事実を使うでしょう.そして 0:14:07.545,0:14:11.826 多くの文脈情報を使うはずですが,そのような情報は現在のアルゴリズムでは考慮されていません. 0:14:11.826,0:14:19.887 では人物の画像に戻りましょう.人物画像の解析は 0:14:19.887,0:14:27.741 非常に重要です.ヒューマンコンピュータインタラクションに応用できますし 0:14:27.741,0:14:36.678 映像を解析し,動作を認識することにも使えます.しかし 0:14:36.678,0:14:42.557 これは難しい.人物の姿勢が様々であり,服装も様々で 0:14:42.557,0:14:47.892 隠れているかもしれないし,サイズも様々です.ですから人物は本当に 0:14:47.892,0:14:51.613 難しいカテゴリです.物体認識にとって一番重要なカテゴリ 0:14:51.613,0:14:57.418 かも知れません.それでは,ポーズレットを使ったアプローチの研究を紹介します. 0:14:57.418,0:15:02.704 もう一つのアプローチとして紹介したものです.そのアイデアは 0:15:02.704,0:15:08.611 顔検出や歩行者検出がうまく働くので,それに依存できる,ということです. 0:15:08.611,0:15:14.193 顔認識は,すでに性能が非常に良いです.歩行者検出もそうです.特に 0:15:14.193,0:15:21.682 直立した人物や歩いている歩行者は検出できます.本質的には 0:15:21.682,0:15:25.760 どちらもパターンのマッチングに依存しています.共通した視覚的特徴のパターンを 0:15:25.760,0:15:30.504 学習します.しかしそれは,この2つのパターンに限ったことではありません. 0:15:30.504,0:15:35.269 実際,2本の足に対応するパターンも存在します. 0:15:35.269,0:15:43.640 もしそれが検出できるなら,人物を検出したと確信できます.そして 0:15:43.640,0:15:47.166 そのようなパターンは,人体のどこか一つの部位に対応するものでなくても良いのです. 0:15:47.166,0:15:52.793 ここに示しているのは,顔の半分,胴体の半分,肩の中心です. 0:15:52.793,0:15:56.616 これはうまくいきます.つまり,これは人物に特徴的なパターンなのです. 0:15:56.616,0:16:04.882 もちろん,顔検出器を訓練するためには,顔をマークした 0:16:04.882,0:16:08.998 画像が必要です.つまり顔だけの画像を 0:16:08.998,0:16:14.105 正例として機械学習アルゴリズムに入力します.一方, 0:16:14.105,0:16:19.079 これらの配置すべてを検出するにはどうしたらよいでしょう.足と顔と 0:16:19.079,0:16:25.127 肩の配置を,です.ポーズレットのアイデアは,これらの検出器とまったく同じですが 0:16:25.127,0:16:30.947 あらかじめこれらを指定することはやりたくありません.まずは 0:16:30.947,0:16:38.204 ポーズレットの例をお見せします.これがポーズレットです.「レット」は一部分を意味します. 0:16:38.204,0:16:44.428 ポーズレットは,人間の姿勢(ポーズ)が小さな部分的なポーズから構成されていると考えます. 0:16:44.428,0:16:51.193 一番上の行は,顔,上半身,そして 0:16:51.193,0:16:56.327 腕のある特定の配置に対応しています.2番めの行は,2本の足に対応します.3番目の行は, 0:16:56.327,0:17:02.376 人間の後ろ姿に対応しています.実際には, 0:17:02.376,0:17:11.535 このようなポーズレットが大量にあります.それが保持する値は 0:17:11.535,0:17:17.128 あとで行うタスクを簡単にしてくれるものです.例えば 0:17:17.128,0:17:22.246 性別認識を学習するとします.つまり男性と女性を識別します.そのためには 0:17:22.246,0:17:28.788 顔の画像が使えますし,背中の画像も使えます.脚もです. 0:17:28.788,0:17:34.847 服装が女声と男声ではかなり違いますから.アイデアは,これらを 0:17:34.847,0:17:40.470 正例として検出器に学習させるのです.実際には2つの検出器を 0:17:40.470,0:17:47.194 訓練します.一つは男性の顔,もう一つは女性の顔です. 0:17:47.194,0:17:52.885 これをそれぞれの検出器で行なって, 0:17:52.885,0:17:59.201 人物を識別することができます. 0:17:59.201,0:18:04.673 いくつかの結果を示しましょう.これがこのアプローチの結果です. 0:18:04.673,0:18:09.086 上の段は男性の検出結果,下の段は女性の検出結果です. 0:18:09.086,0:18:14.669 いくつか間違いもあります.例えば,これは, 0:18:14.669,0:18:23.273 実際には女性です.他にも間違いはありますが,それでも驚くほど結果は良好です. 0:18:23.273,0:18:28.703 こちらの結果は,上の段は長いズボンをはいた人物です. 0:18:28.703,0:18:34.159 下の段はズボンが短い人物です.これができれば, 0:18:34.159,0:18:38.549 人物を記述することができるのが分かるでしょう.画像中に, 0:18:38.549,0:18:42.646 人物がいて,背が高くて,ブロンドの男性で, 0:18:42.646,0:18:52.107 緑色のズボンをはいている,と言えるようになります.この結果では,上段は 0:18:52.107,0:18:58.569 帽子をかぶった人物,下の段は帽子がない人物です.このアプローチは 0:18:58.569,0:19:05.337 動作の検出にも使えます.ここに示す結果は,静止画像中の動作を 0:19:05.337,0:19:10.076 検出しています.画像は1枚しかありません.この画像は 0:19:10.076,0:19:14.836 座っている人物,電話で話している人物, 0:19:14.836,0:19:20.362 馬に乗っている人物,走っている人物,などです.ポーズレットは 0:19:20.362,0:19:27.785 この問題にも適用できます.例えば,ポーズレットに 0:19:27.785,0:19:32.645 電話をかけている人物,走っている人物,歩いている人物,馬に乗っている人物,を学習させます. 0:19:32.645,0:19:40.973 このような動作の検出は,もっと一般的な問題です. 0:19:40.973,0:19:45.724 明らかに,静止画像の情報だけでは足りません. 0:19:45.724,0:19:51.395 映像があれば,オプティカルフローのベクトルが計算できます.この情報はこの問題を 0:19:51.395,0:19:57.407 扱う別の情報になります.認識したい動作の種類としては, 0:19:57.407,0:20:01.101 動きや姿勢の変化,物体の操作,会話のジェスチャ, 0:20:01.101,0:20:06.625 手話,などがあります.そのためには,物体を英語の名詞と考えることもできます. 0:20:06.625,0:20:12.882 動作は英語の動詞に相当します.すると 0:20:12.882,0:20:15.985 物体認識に使われていた手法の幾つかがこの問題に使えることが分かります. 0:20:15.985,0:20:21.202 例えばbag-of-spatio-temporal wordや, 0:20:21.202,0:20:26.314 SIFT特徴を動画に一般化したものもあります.それらは非常に有用で 0:20:26.314,0:20:34.568 動作認識タスクにおいて最良の結果も得られています.さてここで今回の話をまとめましょう. 0:20:34.568,0:20:41.598 この研究分野は,物体認識,動作認識などにおいて非常に進歩してきたと 0:20:41.598,0:20:46.897 私は思います.しかし,やらなければならないこともまだまだあります. 0:20:46.897,0:20:51.109 マルチメディア情報システムの研究分野で使われている用語に 0:20:51.109,0:20:58.860 セマンティックギャップというものがあります.これが示すのは,画像や映像は 0:20:58.860,0:21:04.003 画素や輝度値,RGB値で表現されている,ということです. 0:21:04.003,0:21:08.471 しかし私たちが本当に知りたいのは,意味的な内容なのです.シーン中の物体は何なのか? 0:21:08.471,0:21:12.942 シーンとは何か?どんなイベントが起こっていているのか.このようなことを知りたいのです. 0:21:12.942,0:21:19.059 しかしまだそこまでには至っていません.人間の性能に近づいてもいません. 0:21:19.059,0:21:25.115 しかし,今後数年の間に,大きな進展は続くだろうと思っています. 0:21:25.115,0:21:29.115 これで終わりです.[br](日本語翻訳:玉木徹)