kantocv/selective search for object recoginition
TRANSCRIPT
Selective Search for Object Recognition
J. Uijlings et al., IJCV 2013
2015.5.30 #cvsaisentan@sakanazensen
Self introduction
• @sakanazensen (魚の人)• 某英語な IT 企業の 2 年目戦士• 名古屋大 M 卒
– Semi-supervised な歩行者検出– 元 nagoyacv の中の人
• 生息範囲: CV や Agile など
今日紹介する論文
• Selective Search for Object Recognition• Jasper R. R. Uijlings ら(アムステルダム大学)• International Journal of Computer Vision (2013)
• Segmentation As Selective Search for Object Recognition• ICCV2011• オリジナル
• Exhaustive Search が一般的
画像からの物体検出
Classifier
25,132win/img はつらい
(640x480/OpenCV デフォルト )
detection window
やりたいこと
• 何かありげな領域を推定• 後続の処理はそこだけに集中できる!• より高度な識別 ( 分類 ) 手法が適用できる!
✓class-independent✓high-recall✓ 任意の位置・大きさ✓ 高効率
“Object Hypotheses”
従来の似た研究
• どちらかと言うと Segmentation の研究• Carreira ら [1] 、 Endres ら [2]• 前景背景のセグメンテーション
• “Objectness”[3]• 学習ベース + ランダム探索
[1] J. Carreira et at;, “Constrained parametric min-cuts for automatic object segmentation,” CVPR, 2010[2] I. Endres et al., ”Category independent object proposals,” ECCV, 2010[3] B. Alexe et al., “What is an object?,” CVPR, 2010
この研究のアプローチ
• ボトムアップ型の階層的セグメンテーション• あらゆる位置・スケール(+構造)に対応• セグメンテーション結果から Object Hypotheses
生成
主要な Referrer
• DCNN ベース物体検出などの前段に利用 [4]
• また、 Objectness[3] と共によく引用されてる印象
[4] R. Girshick et al., “Rich Feature Hierarchies for Accurate Object Detection and Semantic Segmentation,” CVPR2014
Selective Search
Selective Search 全体の流れ
一つになるまで結合繰り返し
initialsegmentation
類似度の高い隣接領域を結合
…
Selective Search 全体の流れ
…
各層各小領域の外接矩形をObject hypotheses とする
Selective Search 全体の流れ
(1) 初期セグメンテーション(2a) 各小領域の特徴(2b) 隣接小領域の類似度(3) while
• からとに絡むものを全て消す
(4) から Object hypotheses を生成
1. 初期セグメンテーション
• Efficient Graph-Based Image Segmentation[5]• 高速!• (他手法でも OK )
𝑘=50𝑘=200
𝑘=500
[5] P. Felzenszwalb et al, “Efficient Graph-Based Image Segmentation”, IJCV2004
• 色特徴• テクスチャ特徴• 小領域の面積• 小領域の外接矩形
2a. 各小領域の特徴抽出
𝑓 𝑖
𝑓 𝑗
𝑓 𝑘…
𝐹= {𝑓 1,…, 𝑓 𝑛 }
2a. 特徴量の設計
• ミソ:線形性(加法性)
• 最初に求めるだけで OK !
¿𝑟1∨ 𝑓 1⨁∨𝑟 2∨ 𝑓 2|𝑟1|+|𝑟2|
= 𝑓 1,2
𝑟1𝑟2 𝑟1,2
陽に求めなくていい!
特徴
特徴
2b. 特徴量と類似度
• 色特徴(正規化色ヒストグラム)• 25 次元 3 チャネル =75 次元• 類似度 : intersection• マージ : 線形和
• テクスチャ特徴• SIFT descriptor のような正規化勾配ヒストグラム• 80 次元 3 チャネル =240 次元※
• 類似度 : intersection• マージ : 線形和
※8 方向☓ 10bin とのこと。原著には詳細の言及なし
2b. 特徴量と類似度
• 面積• スカラ• 類似度
• 外接矩形• 4 次元• 類似度
highlow
highlow
包含関係にある領域を積極的に統合する
小さい領域を先に統合させる
3. 小領域の Greedy な統合
やるだけ!• 類似度順に取ってきては結合・類似度再計算
https://goo.gl/tZGnkb
4. Object hypotheses の生成
内の全要素の外接矩形
各階層・各小領域の
外接矩形を算出=
• Object hypotheses = 小領域の外接矩形
4. Object hypotheses の生成
• 数が多い & ゴミも多い 重み付き乱択で捨てる
の重み の深さ
deeper layer
shallower layer
4. Object hypotheses の生成
• 数が多い & ゴミも多い 重み付き乱択で捨てる
重みでソートして上から一定数採用
(´ºωº ` ) えっ、それでいいんだ…
Hypothesis の質と量の trade-off に落とし込める!
Diversification
いろんなパラメータでやりまくる(!)
色空間 類似度 #
Fast HSV, Lab , 50, 100 8 通り
QualityHSV, Lab,rgI, H, I
,,,
50, 100,150, 300
80 通り
• 結果が偏らないよう、多様な Object hypotheses が必要…
Output
• 各パラメータ組合せでの出力を統合
• ゴミも含んでいます• けど物体らしきものはなるべくカバーします
Detection/Recognition への応用例
例:一般的な学習Ground Truth
SVMClassifier
Pos
Neg
FPs=Hard Negs
Negative は(通常)
ランダムに切り出し
Try detection
Retrain
例: Selective Search を活用して学習Ground Truth
SVMClassifier
Pos
Try detection(based on object hypotheses)
FPs=Hard NegsSelective Search
Pos 領域に少し重なる
hypotheses を切り出す
Neg
Retrain
Experiments
Object hypothesis の例
• Best Overwrap (真値との AND 面積比)
.874 .884 .863
.882 .873
Object hypothesis の評価
• 評価指標
Recall 01 出てきてほしい物体総数のうち実際出せた割合
MABOMean Average Best Overwrap
01 クラスごとの Best Overwrap の平均( Recall の連続版的な雰囲気)
Hypotheses が多いと良くなる
Objectness
Selective Search
Segmentation
自体を頑張る
Diversification すると良くなる
いろんなパラメータでやりまくる! 実際の効果は
# combination # hypotheses MABO TimeSingle 1 パターン 362 .693 0.71sFast 8 パターン 2,147 .799 3.79sQuality 80 パターン 10,108 .878 17.15s
多クラス Object Recognition精度評価• ILSVRC2011 (Localization) [6]
※Xerox Research Centre Europe の誤植?
Method Error ratio(Flat)
Error ratio(Hierarchical)
Proposed .425 .285ISI Lab(University of Tokyo)※ .565 .410
[6] Olga Russakovsky et al., “ImageNet Large Scale Visual Recognition Challenge,” arXiv:1409.0575, 2014
原著でのその他の実験
• 各特徴量 / 色空間の寄与• 階層的処理の効果• 物体クラスごとの Object hypothesis の評価• …
実装してみた!
• オリジナル実装( ICCV版 +IJCV版)• http://koen.me/research/selectivesearch/• MATLAB• pcodeばっかりで読めない……
• 魚実装• ほぼ Pure python• fork it!
belltailjp/selective_search_py.git
✓ 任意のパラメータ組合せ✓Object hypotheses 数の変更✓ 並列処理
個人的なイメージ
• 意外と力技• 多様な結果を出したい→よろしいならば 80通りのパラ
メータだ• Object Hypothesis の切り捨ての辺りは工夫の余地ありそ
う?
• 手法はシンプル・明快で実装も容易
• 速度的には検出ガチ勢にはまだ辛い• sec/img のオーダー