Skip to main content
1
局所特徴量と統計学習手法による物体検出
http://mprg.jp/tutorials
機械知覚&ロボティクス研究グループ(中部大学)
中部
工学
助手
中部大学
工学部 情報工学科
講師
大学
部 ロボット理工学科
中部大学
工学部 ロボット理工学科
助手
山内 悠嗣
機械知覚&ロボティクスグル
487-8501
愛知県春日井市松本町120
Tel 0568-51-8249
Fax 0568-51-9409
yuu@vision.cs.chubu.ac.jp
http://vision.cs.chubu.ac.jp
MACHINE PERCEPTION AND
中部大学
工学部 情報工学科
講師
山下 隆義
機械知覚&ロボティクスグループ
487-8501
愛知県春日井市松本町1200
Tel 0568-51-9670
Fax 0568-51-1540
yamashita@cs.chubu.ac.jp
http://vision.cs.chubu.ac.jp
博士(工学)
MACHINE PERCEPTION AND ROBOTICS GROUP
中部大学
工学部 ロボット理工学科
教授
藤吉 弘亘
機械知覚&ロボティクスグループ
487-8501
愛知県春日井市松本町1200
Tel 0568-51-9096
Fax 0568-51-9409
hf@cs.chubu.ac.jp
http://vision.cs.chubu.ac.jp
博士(工学)
MACHINE PERCEPTION AND ROBOTICS GROUP
はじめに
1. Haar-like特徴量と顔検出
2. AdaBoost
- 基礎知識と特徴 - アルゴリズムの解説
3. HOG特徴量
- 算出手順の解説
4. Real AdaBoost
- AdaBoostとの違い - アルゴリズムの解説
5. 人検出
- 識別実験と検出例
6. 第3世代の特徴量
2
デジカメの認識技術
4 3
3
• 顔検出
‒ 画像中から顔の位置を検出する技術
• 顔認識
‒ データベースの中から特定の人物の顔を認識する技術
デジカメの顔認識?顔検出?
ココに顔があります!
真希
李 ダニエル
トム
この顔は真希ちゃんです!
4
顔検出
OMRON OKAOVISION
• 画像の中から「位置」,「大きさ」,「顔の傾き」,「画像
の回転」,「顔向き」,「照明変化」,「隠れ」に関わらず
人の顔の位置と大きさを特定すること
5
1. Haar-like特徴量と顔検出
6
人間の視覚に学ぶ
※ヒューマン・フロンティア・サイエンス・プログラム(HFSP)広報誌「乳児の視覚学習の研究」より
• 人間は生まれた直後でも,目と口を表す3つの黒い点に

注目することが知られている
7
8
特徴的なところだけ着目 大まかな明暗差
顔を見つける着眼点
• 全体を見なくても,特徴点な部分を見れば顔とわかる
• 細かな特徴を見なくても,大まかな明暗差で顔とわかる
Haar-like特徴:局所的な明暗差
• Haar-like特徴 [Viola & Jones, CVPR 01]
9
大人
暗
明
暗明
暗
明
Haar-like特徴:局所的な明暗差
• Haar-like特徴 [Viola & Jones, CVPR 01]
10
表情
暗
明
暗明
暗
明
Haar-like特徴:局所的な明暗差
• Haar-like特徴 [Viola & Jones, CVPR 01]
11
子供
暗
明
暗明
暗
明
Haar-like特徴:局所的な明暗差
• Haar-like特徴 [Viola & Jones, CVPR 01]
12
人種
暗
明
暗明
暗
明
Haar-like特徴:局所的な明暗差
人種
暗明暗
明
暗
明
子供
表情大人
Haar-like特徴
→大人、子供、表情、人種に関係なく共通な特徴
• Haar-like特徴 [Viola & Jones, CVPR 01]
13
Haar-like特徴:顔は局所的な明暗差の集合
暗明暗
明
暗
明
→大量のサンプルから局所領域の集合を学習
3個では少ないので. . .
• 複数の明暗差を捉えることで顔であるか否かを判定可能
14
Haar-like特徴の算出
• 特徴量H(r1,r2) = AとBの平均輝度の差を算出
領域Aの平均輝度 領域Bの平均輝度
• 2つの領域の輝度差に着目し,局所的なエッジ成分•
線成分をとらえる
€
H(r1,r2) = S(r1) − S(r2)A B
Haar-likeパターン 顔の特徴を捉えることが可能
15
学習サンプルの作成
画像(数千枚)
ポジティブサンプル(顔画像)
ネガティブサンプル(非顔画像)
一定サイズに正規化
一定サイズに正規化
• 大量の画像からポジティブサンプル(顔)とネガティブサン
プル(非顔)を用意
・・・
・・・
16
Haar-like特徴量の評価
• 学習サンプルからHaar-like特徴を評価
ポジティブサンプル
ネガティブサンプル
明暗差小 大
・・・
・・・
評価値:Z=0.5
ポジティブ
サンプル
ネガティブ
サンプル
顔非顔
17
・・・
Haar-like特徴量の評価
• 学習サンプルからHaar-like特徴を評価
ポジティブサンプル
ネガティブサンプル
18
小 大
ポジティブ
サンプル
ネガティブ
サンプル
評価値:Z=0.8
明暗差
顔非顔
・・・
19
Haar-like特徴量の評価
• 学習サンプルを用いて、Haar-likeパターン、位置、

大きさを変化させて数十万通りを評価
Haar-likeパターン
明暗差小 大
評価値:Z=0.5
顔非顔
小 大明暗
顔非顔
評価値:Z=0.8
・・・
→顔と非顔と判別するのに有効
学習サンプル
・
・
20
機械学習
• 人間が用意した大量の顔と非顔画像データで学習させて、
コンピュータに判別基準(識別器)を作らせる
‒ 人がコンピュータに教えるのではなく、コンピュータ自身に良
い特徴パターンを見つけさせる
• 識別器
‒ 入力特徴(Haar-like特徴による明暗差)から顔/非顔に判別
‒ 一つでは足りないので複数の識別器の多数決で最終判定
(AdaBoost)
機械学習
識別器
AdaBoost
SVM
学習サンプル
・・・
・・・
統計的学習手法AdaBoostの学習
AdaBoost
h1(   ), α1
弱識別器h 重みα
学習により弱識別器と重みを決定
学習サンプル
・
・
・
評価値
Haar-like特徴
位置・サイズ・形状を変えて
約18万個のHaar-like特徴を評価
評価 Z=0.8
評価 Z=0.3
評価 Z=0.5
評価 Z=0.6
MAX
サンプルの更新
21
統計的学習手法AdaBoostの学習
AdaBoost
h1(   ), α1
弱識別器h 重みα
学習により弱識別器と重みを決定
学習サンプル
評価値
Haar-like特徴
位置・サイズ・形状を変えて
約18万個のHaar-like特徴を評価
22
h2(   ), α2
・
・
・
評価 Z=0.5
評価 Z=0.2
評価 Z=0.7
評価 Z=0.3
MAX
サンプルの更新
統計的学習手法AdaBoostの学習
AdaBoost
h1(   ), α1
弱識別器h 重みα
学習により弱識別器と重みを決定
学習サンプル
評価値
Haar-like特徴
位置・サイズ・形状を変えて
約18万個のHaar-like特徴を評価
23
h2(   ), α2
hT(   ), αT
・
・
・
評価 Z=0.4
評価 Z=0.9
評価 Z=0.3
評価 Z=0.7
サンプルの更新
MAX
・
・
・
顔検出:検出ウィンドウのラスタスキャン
h1(    ) α1
h2(    ) α2
入力画像
識別器:AdaBoost
hT(    ) αT
弱識別器h 重みα 出力
・
・
-0.5
識別結果: 非顔
・
・
+
+
+
-0.9
-0.3
-0.1
 出力値:
検出ウィンドウ
24
顔検出:検出ウィンドウのラスタスキャン
-0.0
-0.1
h1(    ) α1
h2(    ) α2
入力画像
識別器:AdaBoost
hT(    ) αT
弱識別器hh 重みα 出力
・
・
-0.2
識別結果: 非顔
・
・
+
+
+
-0.3 出力値:
検出ウィンドウ
25
顔検出:検出ウィンドウのラスタスキャン
0.1
0.3
0.5h1(    ) α1
h2(    ) α2
入力画像
識別器:AdaBoost
hT(    ) αT
弱識別器h 重みα 出力
・
・
識別結果: 顔
・
・
+
+
+
2.3 出力値:
検出ウィンドウ
26
顔検出:識別器のラスタスキャン
Haar-like 特徴
AdaBoost
h1(    ) α1 → 0.5
h2(    ) α2 → 0.3
hT(    ) αT → 0.1
弱識別器h 重みα 出力
・
・
+
+
+
・
・
顔/非顔を判定
http://vimeo.com/12774628
=
2.3
27
CV Dazzle(dazzle=迷彩を施す)
http://ahprojects.com/work/cv-dazzle
28
統計的学習手法と画像局所特徴量
特徴量を汎化のあるモデルへ
多様な変化が生じても
共通な情報に選択
Neural Network, SVM, AdaBoost
統計的学習手法(識別器)
認識する物体の情報を抽出
多様な変化が生じても
共通な情報に変換
エッジ, カラー, Haar-like, HOG
画像局所特徴量
→学習手法の進化とともに特徴量も進化
29
2. AdaBoost
- 基礎知識と特徴 - アルゴリズムの解説
30
AdaBoostとは
• 統計的学習手法 Boostingの1つ
‒ 1997年にY.Freund等が提案[Freund 97]
• 学習サンプルの重みを適応的(adaptive)に更新
‒ 計算量の爆発と汎化性能の低下を抑制
‒ 誤識別したサンプルに対し重みαを増加
• 最終識別器は弱識別器の重み付き多数決
31
AdaBoostの特徴
• 識別精度が高い
‒ 汎化性能に対する理論的な裏付け
‒ 学習後期では識別の困難なデータに特化
• 解析が容易
‒ 特徴選択の傾向などを後から調査
32
学習アルゴリズム
33
1,2 前処理
1. 前処理
– N 個の学習サンプル  を用意
• : 画像
• : クラスラベル
‒ 顔には+1, 非顔には-1
2. 学習サンプルの重みの初期化
‒ 各サンプルの重み  を均等にする
34
学習アルゴリズム
35
3.1 弱識別器候補
• 基本的に設計は自由
‒ 1か-1を出力する関数
‒ エラー率が0.5以下
• Viola&Jonesの顔検出では閾値関数を使用
‒ ある1つの特徴量に対する分布を観測
v
p
ht:tラウンド目の弱識別器
:特徴量
:閾値
:不等号の向きを決定する
 変数(1or-1)
ht(x) =
1 p · v(x) > p ·
1 otherwise
36
学習アルゴリズム
37
• 弱識別器に対するエラー率 を算出
‒ 弱識別器hの応答値とクラスラベルが異なった場合サンプルの
重みを足し合わせる
‒ エラー率が0.5を超えたら、弱識別器のパリティpを反転
3.2 エラー率の算出
et,m =
N
i:ht(xi)=yi
Dt(i)
Neg← →Pos
出現確率
p = -1
Pos← →Neg
出現確率
et,m
Pos Neg Pos Neg
et,m = 0.65 et,m = 1 (0.65)
= 0.35 38
学習サンプル
Negative
Positive
AdaBoostの学習
エラー率
MIN
e弱識別器候補h
e弱識別器候補h
e弱識別器候補h
39
学習アルゴリズム
40
• 4. エラー率 が最小となるhを現在のラウンドの

弱識別器として採用
• 5. 採用した弱識別器に対する重み を算出
重み = 信頼度
4,5 弱識別器の選択と重みの算出
ht = arg min et,m
t =
1
2
ln
1 et
et
⇥
t
(ln = loge)
※
et = 0.067
=
1
2
ln(
0.933
0.067
)
=
1
2
ln 13.925
= 1.316
・優秀な弱識別器
et = 0.241
=
1
2
ln(
0.759
0.241
)
=
1
2
ln 3.149
= 0.574
・標準的な弱識別器
et = 0.5
=
1
2
ln(
0.5
0.5
)
=
1
2
ln 1
= 0
・半分しか正解できない弱識別器
et
41
学習アルゴリズム
42
6. 学習サンプルの重みの更新
6,7 サンプルの重みの更新と正規化
Dt+1(i) = Dt(i) exp( tytht(xi))
Dt+1(i) =
Dt+1(i)
N
i=1
Dt(i) exp( tytht(xi))
h =1(顔) h =-1(非顔)
y = 1ラベルy = 1ラベル
ytht(xi) = 1 ytht(xi) = 1
となり、
重みは低くくなる
Dt+1(i) = Dt(i) exp( t) となり、
重みは高くなる
Dt+1(i) = Dt(i) exp( t)
43
7. 学習サンプルの重みの更新
• サンプルの重みの更新シミュレーション
‒ 弱識別器:座標軸と平行な境界を持つ閾値関数
重みの更新の過程(1/4)
1 : 0.1432 : 0.143
3 : 0.143
4 : 0.143
5 : 0.143
6 : 0.143
7 : 0.143
特徴量 1v
特徴量2v
・学習サンプル数 N : 7
: positive
: negative
・弱識別器候補数 m : 2
( = 特徴次元数)
・重みの初期値 : 0.143
( D1(i) = 1/N)
44
重みの更新の過程(2/4)
• 1st Round
1 : 0.1432 : 0.143
3 : 0.143
4 : 0.143
5 : 0.143
6 : 0.143
7 : 0.143
et,m =
N
i:ht(xi)=yi
Dt(i)エラー率 :
= 0.143
t =
1
2
ln
1 et
et
⇥
弱識別器の重み :
(信頼度)
= 0.895
特徴量 1v
特徴量2v
1 : 0.0842 : 0.084
3 : 0.084
4 : 0.084
5 : 0.500
6 : 0.084
7 : 0.084
特徴量 1v
特徴量2v
Dt+1(i) = Dt(i) exp( tytht(xi))
サンプル1 : 0.143*exp(-0.895*(1)*(1)) = 0.0572
サンプル2 : 0.143*exp(-0.895*(1)*(1)) = 0.0572
サンプル3 : 0.143*exp(-0.895*(1)*(1)) = 0.0572
サンプル4 : 0.143*exp(-0.895*(1)*(1)) = 0.0572
サンプル5 : 0.143*exp(-0.895*(-1)*(1)) = 0.338
サンプル6 : 0.143*exp(-0.895*(-1)*(-1)) = 0.0572
サンプル7 : 0.143*exp(-0.895*(-1)*(-1)) = 0.0572
= 0.681
+)
→ 0.0572/0.681 = 0.084
→ 0.0572/0.681 = 0.084
→ 0.0572/0.681 = 0.084
→ 0.0572/0.681 = 0.084
→ 0.338/0.681 = 0.500
→ 0.0572/0.681 = 0.084
→ 0.0572/0.681 = 0.084
重み更新 :
重み更新              正規化
45
et,m =
N
i:ht(xi)=yi
Dt(i)エラー率 :
= 0.084+0.084 = 0.168
t =
1
2
ln
1 et
et
⇥
弱識別器の重み :
(信頼度)
= 0.800
1 : 0.0842 : 0.084
3 : 0.084
4 : 0.084
5 : 0.500
6 : 0.084
7 : 0.084
特徴量 1v
特徴量2v
特徴量 1v
1 : 0.0502 : 0.050
3 : 0.250
4 : 0.250
5 : 0.300
6 : 0.050
7 : 0.050
特徴量2v
サンプル1 : 0.084*exp(-0.800*(1)*(1)) = 0.0377
サンプル2 : 0.084*exp(-0.800*(1)*(1)) = 0.0377
サンプル3 : 0.084*exp(-0.800*(1)*(-1)) = 0.187
サンプル4 : 0.084*exp(-0.800*(1)*(-1)) = 0.187
サンプル5 : 0.500*exp(-0.800*(-1)*(-1)) = 0.225
サンプル6 : 0.084*exp(-0.800*(-1)*(-1)) = 0.0377
サンプル7 : 0.084*exp(-0.800*(-1)*(-1)) = 0.0377
= 0.750
+)
→ 0.0377/0.750 = 0.050
→ 0.0377/0.750 = 0.050
→ 0.187/0.750 = 0.250
→ 0.187/0.750 = 0.250
→ 0.225/0.750 = 0.300
→ 0.0377/0.750 = 0.050
→ 0.0377/0.750 = 0.050
重み更新              正規化
重みの更新の過程(3/4)
46
• 2nd Round
Dt+1(i) = Dt(i) exp( tytht(xi))重み更新 :
et,m =
N
i:ht(xi)=yi
Dt(i)エラー率 :
= 0.050
t =
1
2
ln
1 et
et
⇥
弱識別器の重み :
(信頼度)
= 1.47
1 : 0.0502 : 0.050
3 : 0.250
4 : 0.250
5 : 0.300
6 : 0.050
7 : 0.050
特徴量 1v
特徴量2v
特徴量 1v
特徴量2v
1 : 0.498
2 : 0.0246
3 : 0.132
4 : 0.132
5 : 0.158
6 : 0.0246
7 : 0.0246
サンプル1 : 0.050*exp(-1.47*(1)*(-1)) = 0.217
サンプル2 : 0.050*exp(-1.47*(1)*(1)) = 0.0115
サンプル3 : 0.250*exp(-1.47*(1)*(1)) = 0.0575
サンプル4 : 0.250*exp(-1.47*(1)*(1)) = 0.0575
サンプル5 : 0.300*exp(-1.47*(-1)*(-1)) = 0.0690
サンプル6 : 0.050*exp(-1.47*(-1)*(-1)) = 0.0115
サンプル7 : 0.050*exp(-1.47*(-1)*(-1)) = 0.0115
= 0.436
+)
→ 0.217/0.436 = 0.498
→ 0.0115/0.436 = 0.0264
→ 0.0575/0.436 = 0.132
→ 0.0575/0.436 = 0.132
→ 0.0690/0.436 = 0.158
→ 0.0115/0.436 = 0.0264
→ 0.0115/0.436 = 0.0264
重み更新              正規化
重みの更新の過程(4/4)
47
• 3rd Round
Dt+1(i) = Dt(i) exp( tytht(xi))重み更新 :
学習アルゴリズム
48
8 最終識別器の構築
• すべての弱識別器に信頼度で重みをつけて 多数決をと
る形になる
– Hが閾値 より高ければ人、低ければ非人と判定
H(x) = sign
T⇤
t=1
tht(x) ⇥
⇥
1st round : 0.895 2nd round : 0.800 3rd round : 1.47
1:0.2252 : 3.165
3 : 1.565
4 : 1.565
5 : -1.375 6 : -3.165
7 : -3.165
弱識別器
強識別器
+ + =
49
実装時のポイント
• 学習回数(ラウンド)
‒ 任意(100∼2000回)
• 学習サンプル
‒ 多ければ多い方がよい
• 統計的信頼性の確保
• 多様なパターンに対応
‒ 顔検出では約10,000枚、人検出では2,000∼5,000枚
50
顔検出のリアルタイムデモ
processing+OpenCV
51
まとめ
• Haar-like特徴量
‒ 2つの領域の輝度差による特徴量
‒ 複数のパターンの集合により物体を捉える
• AdaBoost
‒ サンプルの重みを逐次更新する適応的な学習法
‒ 最終識別器は、信頼度で重み付けられた弱識別器による多数決
52
3. HOG特徴量
- 算出手順の解説
53
人検出の難しさ:見え(アピアランス)の多様性
• 人検出における課題
‒ 照明変動
‒ 姿勢の変化
‒ 視点に違いによるシルエットの見えの違い
‒ 画像上の人同士の重なりによるオクルージョン 
54
人らしさとは?
• カラー?
55
人らしさとは?
• カラー? → 明暗差?
56
人らしさとは?
• カラー? → 明暗差? → エッジ
57
人らしさとは?
• 全サンプルのエッジ画像の平均をとってみると
58
平均勾配画像人画像(約3,000枚)
人らしさを捉える特徴量:HOG
• Histograms of Oriented Gradients[Dalal, CVPR 05]
‒ 局所領域におけるエッジ(勾配)の方向を

ヒストグラム化した特徴量 
59
エッジ方向の方向ヒストグラム
HOG特徴量の算出アルゴリズム
1. 輝度の勾配方向と勾配強度の算出
2. ヒストグラムの作成
3. ブロック領域による正規化
60
入力画像
セル( 5 5ピクセル )
ブロック( 3 3セル )
勾配方向ヒストグラム
HOGの算出法1
1. 輝度の勾配方向と強度の算出
2. ヒストグラムの作成
‒ 0 から180 までを、20 ずつ9方向に分割
fx(x, y) = L(x + 1, y) L(x 1, y)
fy(x, y) = L(x, y + 1) L(x, y 1)
m(x, y) = fx(x, y)2 + fy(x, y)2
(x, y) = tan 1 fy(x, y)
fx(x, y)
勾配強度:
勾配方向:
61
HOGの算出法2
3. ブロック領域での正規化
‒ あるn番目のHOG特徴量について正規化
‒ 分母は1ブロック(q qセル)含まれるHOG特徴量の総和
‒ 1つのセルに対し複数回の正規化
‒ 例:30 60の入力画像の場合
• 1セル:5 5ピクセル、1ブロック:3 3セル
v(n) =
v(n)
⌃
⇧
⇧
⌅
q q N⇤
k=1
v(k)2
⇥
+
( = 1)
N:勾配方向数
(4 10) (3 3) 9 = 3,240個(次元)のHOG特徴量
正規化回数 1ブロックのセル数 勾配方向数
62
HOG特徴量の可視化
• 勾配方向と勾配強度を可視化
‒ 輝度が高いほど勾配強度が高い
0
40
80
120
160
63
Support Vector Machine (SVM)
• 識別面と2クラスのサンプルの距離(マージン)を最大とす
る識別境界を決定する統計的学習手法
‒ マージン最大化を行うことで汎化性能の高い識別器を学習
‒ カーネル関数を利用することで非線形識別境界も得られる
64
クラス1
クラス2
クラス1
クラス2
マージン
サポート
ベクター
HOG特徴量とSVMによる人検出
65
サンプル画像 HOG特徴量x
• SVMから得られる重みベクトルwによる重み付け
‒ ポジティブ : 人の形状を表わすHOGに反応
‒ ネガティブ : 人の形状とは反対の勾配方向に反応
w > 0の重みwに
よる重み付け
w < 0の重みwに
よる重み付け
4. Real AdaBoost
- AdaBoostとの違い - アルゴリズムの解説
66
AdaBoostの学習
学習サンプル
HOG算出
3240次元
エラー率
MIN
弱識別器h e
弱識別器h e
弱識別器h e
弱識別器h e
選択された弱識別器
h1 ( ) , α1
弱識別器 重み
67
AdaBoostの学習
学習サンプル
HOG算出
3240次元
エラー率
MIN弱識別器h e
弱識別器h e
弱識別器h e
弱識別器h e
選択された弱識別器
h1 ( ) , α1
弱識別器 重み
h2 ( ) , α2
68
AdaBoostの学習
学習サンプル
HOG算出
3240次元
エラー率
MIN
弱識別器h e
弱識別器h e
弱識別器h e
弱識別器h e
選択された弱識別器
h1 ( ) , α1
弱識別器 重み
h2 ( ) , α2
hT ( ) , αT
69
人:
非人:otherwise
AdaBoostによる識別
未知入力パターン HOG特徴量算出
選択された弱識別器
h1 ( ) × α1
弱識別器 重み
h2 ( ) × α2
hT ( ) × αT
+
+
+
H(x) >
H(x) =
T
t=1
tht(x)強識別器:
※閾値:
70
AdaBoostとReal AdaBoost
• AdaBoost(Discrete AdaBoost)
‒ 弱識別器の出力(1,-1)にαで重み付けて結合することで最終
識別器を構築
• Real AdaBoost [Schapire 99]
‒ AdaBoostからの派生
‒ 弱識別器の出力が特徴量の分布に応じて実数値化(real)
‒ サンプルに対しどの程度の識別が可能であるかが分かる
‒ 少ない弱識別器で高精度な検出
• 学習の収束が早い
効果的な重みの更新が可能
71
学習アルゴリズム
72
1,2 前処理
1. 前処理
– N個の学習サンプル
• : 画像
• : クラスラベル
‒ 人には+1, 非人には-1
2. 学習サンプルの重みの初期化
‒ 各サンプルの重み  を均等にする
73
学習アルゴリズム
74
• 特徴量をBINに変換しサンプルの重みを足し合わせ、分布(ヒ
ストグラム)を作成
ネガティブサンプル( )
3.1 確率密度関数
0 1 2 … 62 63
出現確率
特徴量 j (BIN)
0 1 2 … 62 63
出現確率
特徴量 j (BIN)
ポジティブサンプル( )
…
…
75
学習アルゴリズム
76
3.2 弱識別器の評価値算出
• 2つの分布のBhattacharyya距離で類似度を算出
• 類似度が低い→分離し易い
出現確率
特徴量 j (BIN)
小 = 分布が分離しずらい
→識別に有効ではない
大 = 分布が分離しやすい
→識別に有効
評価値 :
出現確率
特徴量 j (BIN)
識別に有効な特徴量
z = 1
j
⇥
Wj
+Wj
77
学習アルゴリズム
78
= 0.15, = 0.15
= 0.0
4 最もz が高い弱識別器を選択
• z が高い = 識別に有効な弱識別器
‒ 弱識別器の出力
: 学習ラウンド
: 弱識別器の番号
( )
= 0.1, = 0.2
= -1.39
= 0.26, = 0.12
= 1.54
出現確率
特徴量 j (BIN)
出現確率
特徴量 j (BIN)
出現確率
特徴量 j (BIN)
79
学習アルゴリズム5
80
• 学習サンプルの重みの更新
• 学習サンプルの重みの正規化
学習アルゴリズム5
= 0.15, = 0.15
= 0.0
= 0.1, = 0.2
= -1.39
= 0.26, = 0.12
= 1.54
出現確率
特徴量 j (BIN)
出現確率
特徴量 j (BIN)
出現確率
特徴量 j (BIN)
ポジティブ
サンプル
ネガティブ
サンプル
重みを高く 重みを低く
ポジティブ
サンプル
ネガティブ
サンプル
重みを低く 重みを高く
ポジティブ
サンプル
ネガティブ
サンプル
重みはそのまま
81
学習アルゴリズム6
82
• 強識別器の生成
‒ 弱識別器の線形和
• 弱識別器の出力値が実数であるため、AdaBoostのように
重みαは必要ない
– Hが閾値 より高ければ人、低ければ非人と判定
学習アルゴリズム6
H(x) = sign
T⇤
t=1
ht(x)
⇥
83
識別実験
• 予め切り出された画像を用いて評価
• 比較手法
‒ HOG+AdaBoost
‒ HOG+Real AdaBoost
• データベース(CUデータセット)
‒ 評価用は位置ずれを含む
・学習用 ・評価用
ポジティブサンプル : 2,054枚 ポジティブサンプル : 1,000枚
ネガティブサンプル : 6,258枚 ネガティブサンプル : 1,234枚
84
評価方法
• DET (Detection Error Tradeoff)カーブ
‒ 横軸に誤検出率、縦軸に未検出率
‒ 閾値を変化させながらプロット
‒ 誤検出率に対する未検出率を比較が可能
左下に向かうほど、精度が良い
85
• DETカーブによる識別精度の比較
識別結果
86
5. 人検出
- 識別実験と検出例
87
• 画像中のどこに人が存在するかを探索
  →検出ウィンドウをラスタスキャン
• 人と判定された複数の領域の統合
  →MeanShiftクラスタリング
人検出の実装
88
識別器のラスタスキャンによる人検出
人以外
人
検出ウィンドウのラスタスキャン
人
識
別
器
(c) 識別結果の統合前
識別器による人画像の識別 (d) 識別結果の統合結果
識
別
結
果
の
統
合
処
理
検出器
89
検出ウィンドウのラスタスキャン
• 画像中に検出ウィンドウを網羅的に走査
• スケールを徐々に変化させながら探索
:検出ウィンドウ :検出された領域 ■:検出された領域の中心点
90
MeanShiftによるクラスタリング
• 一人に対して複数のウィンドウが人として検出
– MeanShiftクラスタリングにより点の密度が
極値となる点へ移動
– 極値へ移動後,Nearest Neighborにより近隣の
検出ウィンドウと統合
統合前 統合後
91
• x方向、y方向、scaleの3次元でのクラスタリング
‒ 人として判定された検出ウィンドウの中心座標
からMeanShift Vectorを算出
‒ 調整するパラメータは
探索ウィンドウの半径hのみ
MeanShiftクラスタリング[Comaniciu 02]
MeanShift Vector:
カーネル関数:
m(x) =
n⌅
i=1
xik
⇥ x xi
h
2⇤
n⌅
i=1
k
⇥ x xi
h
2⇤ x
92
Nearest Neighbor(最近傍決定則)
• 各サンプル点の座標上の距離を観測し
最も近いサンプル点を探索
‒ クラスタリングされた検出ウィンドウの中心座標を
1つの点に統合
• 距離dが閾値thを下回ればサンプル点を統合
d = (x xi)2 + (y yi)2ユークリッド距離:
93
検出ウィンドウの統合
94
検出ウィンドウの統合
95
検出ウィンドウの統合
96
検出ウィンドウの統合
97
人検出例
• HOG+Real AdaBoostの検出結果
98
Real AdaBoostのソースコード
• Real AdaBoost + HOG
‒ URL : http://www.vision.cs.chubu.ac.jp/CVTutorial/
• 入力画像からHOG特徴量を算出し,2クラス識別器を構築
‒ Dataset : CU-Dataset
‒ 作成環境 : Visual Studio ver. 2005
‒ ライブラリ : OpenCV
99
データベースの作成
• 統計的学習手法による高精度な物体検出を実現するには
‒ 大量の学習サンプル:10,000枚以上(人の場合)
‒ 安定したポジティブサンプルの切り出し(位置ずれなし)
100