[cvpr読み会]bing:binarized normed gradients for objectness estimation at 300fps
DESCRIPTION
TRANSCRIPT
2014/07/26 CV勉強会@関東CVPR2014読み会(前編) 発表資料
takmin
自己紹介
2
テクニカル・ソリューション・アーキテクト
皆川 卓也(みながわ たくや)フリーエンジニア(ビジョン&ITラボ)「コンピュータビジョン勉強会@関東」主催博士(工学)
テクニカル・ソリューション・アーキテクト
皆川 卓也(みながわ たくや)フリーエンジニア(ビジョン&ITラボ)「コンピュータビジョン勉強会@関東」主催博士(工学)
略歴:1999-2003年日本HP(後にアジレント・テクノロジーへ分社)にて、ITエンジニアとしてシステム構築、プリセールス、プロジェクトマネジメント、サポート等の業務に従事
2004-2009年コンピュータビジョンを用いたシステム/アプリ/サービス開発等に従事
2007-2010年慶應義塾大学大学院 後期博士課程にて、コンピュータビジョンを専攻単位取得退学後、博士号取得(2014年)
2009年-現在フリーランスとして、コンピュータビジョンのコンサル/研究/開発等に従事
紹介する研究
“BING: Binarized Normed Gradients for Objectness Estimation at 300fps”
Ming-Ming Cheng
Ziming Zhang
Wen-Yan Lin
Philip Torr
Objectness検出
4
画像から「物体っぽい」ものを検出する。(それがどんな物体かまでは判別しない。)
一般物体検出の前処理として使われる。
Objectness検出
要件:
高い検出率 一度検出できなかったものは、後処理で取り返せない。
Objectnessの候補数は少ないほうが望ましい 計算時間に影響
計算が早い 応用範囲を広げるため
汎用的に使える 学習していないカテゴリにも対応
Objectness検出
従来法: 顕著性とかセグメンテーションとか識別器とかカスケード使って処理速度を改善しつつ検出率を高めようとしてきた
本手法:
従来法よりもアルゴリズムがシンプルで高速で検出率が高い
Objectの特徴
輪郭が閉じた形状を持っている。
それぞれの画像勾配を計算し、8x8にリサイズ
Normed Gradient (NG) Feature
NG特徴を用いたObjectness検出
勾配画像を様々なサイズにリサイズし、フィルターを畳み込むだけ!
フィルター
NG特徴を用いたObjectness検出
勾配画像を様々なサイズにリサイズし、フィルターを畳み込むだけ!
NG特徴
フィルター
𝑠𝑙 = 𝒘,𝒈𝑙 (1)
SVMで学習
NG特徴を用いたObjectness検出
サイズごとにスコアを補正
𝑜𝑙 = 𝑣𝑖 ∙ 𝑠𝑙 + 𝑡𝑖 (3)
𝑠𝑙 = 𝒘,𝒈𝑙 (1)
最終スコア サイズごとの補正値
𝑖
SVMで学習
BING: Binarized normed gradients
NG特徴をバイナリ化することで検出を高速化
𝑠𝑙 = 𝒘,𝒈𝑙 (1)
バイナリ化
𝒘 ≈ 𝑗=1
𝑁𝑤𝛽𝒋𝒂𝑗 𝒈𝑙 ≈
𝑘=1
𝑁𝑔28−𝑘𝒃𝑘,𝑙 (5)
𝒂𝑗 ∈ −1,+18×8 𝒃𝑘,𝑙 ∈ 0,1
8×8
フィルターのバイナリ化
NG特徴をバイナリ化することで検出を高速化
𝑠𝑙 = 𝒘,𝒈𝑙 (1)
バイナリ化
𝒘 ≈ 𝑗=1
𝑁𝑤𝛽𝒋𝒂𝑗 𝒈𝑙 ≈
𝑘=1
𝑁𝑔28−𝑘𝒃𝑘,𝑙 (5)
𝒂𝑗 ∈ −1,+18×8 𝒃𝑘,𝑙 ∈ 0,1
8×8
フィルターのバイナリ化
𝒘 ≈ 𝑗=1
𝑁𝑤𝛽𝒋𝒂𝑗 𝒂𝑗 ∈ −1,+1
8×8
フィルターのバイナリ化
𝒘,𝒈𝑙 ≈ 𝑗=1
𝑁𝑤𝛽𝑗 2 𝒂𝑗
+, 𝒈𝑙 − 𝒈𝑙
𝒘 ≈ 𝑗=1
𝑁𝑤𝛽𝒋𝒂𝑗 𝒂𝑗 ∈ −1,+1
8×8
𝒂𝑗+ = 0,+1 8×8
𝒂𝑗 = 2𝒂𝑗+ − 𝟏
(4)
NG特徴のバイナリ化
NG特徴をバイナリ化することで検出を高速化
𝑠𝑙 = 𝒘,𝒈𝑙 (1)
バイナリ化
𝒘 ≈ 𝑗=1
𝑁𝑤𝛽𝒋𝒂𝑗 𝒈𝑙 ≈
𝑘=1
𝑁𝑔28−𝑘𝒃𝑘,𝑙 (5)
𝒂𝑗 ∈ −1,+18×8 𝒃𝑘,𝑙 ∈ 0,1
8×8
NG特徴のバイナリ化
𝒈𝑙 ≈ 𝑘=1
𝑁𝑔28−𝑘𝒃𝑘,𝑙 (5)
𝒃𝑘,𝑙 ∈ 0,18×8𝒈𝑙 ∈ 0,⋯ , 255
8×8
グレースケール バイナリ
210
𝑁𝑔 = 4 の時
11010010 1101
画素値
bit列 頭4bit
NG特徴のバイナリ化
𝒈𝑙 ≈ 𝑘=1
𝑁𝑔28−𝑘𝒃𝑘,𝑙 (5)
𝒃𝑘,𝑙 ∈ 0,18×8𝒈𝑙 ∈ 0,⋯ , 255
8×8
グレースケール バイナリ
210 ≈ 𝑘=1𝑁𝑔28−𝑘𝒃𝑘,𝑙 = 1 ∗ 2
8−1 + 1 ∗ 28−2+0 ∗ 28−3+1 ∗ 28−4
210
𝑁𝑔 = 4 の時
11010010 1101bit列 頭4bit
NG特徴のバイナリ化
𝒃𝑘,𝑙 ∈ 0,18×8𝒈𝑙 ∈ 0,⋯ , 255
8×8
グレースケール バイナリ
210
𝑁𝑔 = 4 の時
11010010 1101bit列 頭4bit
0 0 1 0 1 0 0 0
0 0 1 0 0 1 1 0
1 1 0 0 0 0 1 0
1 0 0 0 0 0 1 0
1 0 0 0 0 0 1 1
1 0 0 0 0 0 0 0
0 0 0 0 0 0 1 0
0 0 0 1 1 0 0 0
0 1 1 1 0 1 0 0
0 0 1 0 0 1 1 0
1 1 0 0 0 0 1 0
1 0 0 0 0 0 1 0
1 0 0 0 0 0 1 1
1 0 0 0 0 0 0 0
0 0 0 0 0 0 1 0
0 0 0 1 1 0 0 0
0 0 1 0 1 0 0 0
0 0 1 0 0 1 1 0
1 1 0 0 0 0 1 0
1 0 0 0 0 0 1 0
1 0 0 0 0 0 1 0
1 0 0 0 0 0 0 1
0 0 0 0 0 0 1 1
0 0 0 1 1 0 0 1
0 0 1 0 1 1 0 0
0 0 1 0 0 1 1 0
1 1 0 0 0 0 1 0
1 0 0 0 0 0 1 0
1 0 0 0 0 0 1 0
1 0 0 0 0 0 0 1
0 0 0 0 0 0 1 1
0 0 0 1 1 0 0 1
𝑁𝑔
バイナリフィルタとBING特徴の統合
𝒘,𝒈𝑙 ≈ 𝑗=1
𝑁𝑤𝛽𝑗 2 𝒂𝑗
+, 𝒈𝑙 − 𝒈𝑙
𝒈𝑙 ≈ 𝑘=1
𝑁𝑔28−𝑘𝒃𝑘,𝑙 (5)
𝒘,𝒈𝑙
≈ 𝑗=1
𝑁𝑤𝛽𝑗
𝑘=1
𝑁𝑔28−𝑘 2 𝒂𝑗
+, 𝒃𝑘,𝑙 − 𝒃𝑘,𝑙
(4)
(6)
バイナリフィルタの畳み込み
BING特徴
バイナリフィルタとBING特徴の統合
𝒘,𝒈𝑙 ≈ 𝑗=1
𝑁𝑤𝛽𝑗 2 𝒂𝑗
+, 𝒈𝑙 − 𝒈𝑙
𝒈𝑙 ≈ 𝑘=1
𝑁𝑔28−𝑘𝒃𝑘,𝑙 (5)
𝒘,𝒈𝑙
≈ 𝑗=1
𝑁𝑤𝛽𝑗
𝑘=1
𝑁𝑔28−𝑘 2 𝒂𝑗
+, 𝒃𝑘,𝑙 − 𝒃𝑘,𝑙
(4)
(6)
バイナリフィルタの畳み込み
BING特徴
POPCNTANDBIT SHIFTADD
高速なBING特徴の取得
𝒘,𝒈𝑙
≈ 𝑗=1
𝑁𝑤𝛽𝑗
𝑘=1
𝑁𝑔28−𝑘 2 𝒂𝑗
+, 𝒃𝑘,𝑙 − 𝒃𝑘,𝑙 (6)
000010000111……00000…
000010000111……00000…000010000111……
00000…000010000111……00000……
リサイズされた勾配画像 バイナリ化された画像
BING特徴(8x8)
各場所で取得
高速なBING特徴の取得
0 0 1 0 1 1 0 0 1 0 0
0 0 1 0 0 1 1 0 0 0 0
1 1 0 0 0 0 1 0 0 0 1
0 1 1 0 0 0 0 1 1 1 0
1 0 0 0 0 0 1 1 0 0 0
1 0 0 0 0 0 1 0 0 0 1
1 0 0 0 0 0 0 0 0 1 0
0 0 0 0 1 1 0 0 1 0 0
0 0 0 0 0 0 1 0 1 1 1
0 0 0 1 1 0 0 0 0 1 1
0 0 1 1 0 0 0 0 0 0 1
ラスタスキャンでBING特徴を取得
𝒃𝑥,𝑦 : 64 bit
を高速に求める
高速なBING特徴の取得
0 0 1 0 1 1 0 0 1 0 0
0 0 1 0 0 1 1 0 0 0 0
1 1 0 0 0 0 1 0 0 0 1
0 1 1 0 0 0 0 1 1 1 0
1 0 0 0 0 0 1 1 0 0 0
1 0 0 0 0 0 1 0 0 0 1
1 0 0 0 0 0 0 0 0 1 0
0 0 0 0 1 1 0 0 1 0 0
0 0 0 0 0 0 1 0 1 1 1
0 0 0 1 1 0 0 0 0 1 1
0 0 1 1 0 0 0 0 0 0 1
ラスタスキャンでBING特徴を取得
𝒃𝑥,𝑦 : 64 bit
を高速に求める
𝒓𝑥,𝑦 : 8 bit
𝑏𝑥,𝑦 : 1 bit
高速なBING特徴の取得
0 0 1 0 1 1 0 0 1 0 0
0 0 1 0 0 1 1 0 0 0 0
1 1 0 0 0 0 1 0 0 0 1
0 1 1 0 0 0 0 1 1 1 0
1 0 0 0 0 0 1 1 0 0 0
1 0 0 0 0 0 1 0 0 0 1
1 0 0 0 0 0 0 0 0 1 0
0 0 0 0 1 1 0 0 1 0 0
0 0 0 0 0 0 1 0 1 1 1
0 0 0 1 1 0 0 0 0 1 1
0 0 1 1 0 0 0 0 0 0 1
ラスタスキャンでBING特徴を取得
𝒃𝑥,𝑦 : 64 bit
を高速に求める
𝒓𝑥,𝑦 : 8 bit
𝑏𝑥,𝑦 : 1 bit
𝒓𝑥−1,𝑦
高速なBING特徴の取得
0 0 1 0 1 1 0 0 1 0 0
0 0 1 0 0 1 1 0 0 0 0
1 1 0 0 0 0 1 0 0 0 1
0 1 1 0 0 0 0 1 1 1 0
1 0 0 0 0 0 1 1 0 0 0
1 0 0 0 0 0 1 0 0 0 1
1 0 0 0 0 0 0 0 0 1 0
0 0 0 0 1 1 0 0 1 0 0
0 0 0 0 0 0 1 0 1 1 1
0 0 0 1 1 0 0 0 0 1 1
0 0 1 1 0 0 0 0 0 0 1
ラスタスキャンでBING特徴を取得
𝒃𝑥,𝑦 : 64 bit
を高速に求める
𝒓𝑥,𝑦 =
(𝒓𝑥−1,𝑦 ≪ 1)|𝑏𝑥,𝑦
高速なBING特徴の取得
0 0 1 0 1 1 0 0 1 0 0
0 0 1 0 0 1 1 0 0 0 0
1 1 0 0 0 0 1 0 0 0 1
0 1 1 0 0 0 0 1 1 1 0
1 0 0 0 0 0 1 1 0 0 0
1 0 0 0 0 0 1 0 0 0 1
1 0 0 0 0 0 0 0 0 1 0
0 0 0 0 1 1 0 0 1 0 0
0 0 0 0 0 0 1 0 1 1 1
0 0 0 1 1 0 0 0 0 1 1
0 0 1 1 0 0 0 0 0 0 1
ラスタスキャンでBING特徴を取得
𝒃𝑥,𝑦 : 64 bit
𝒓𝑥,𝑦 =
(𝒓𝑥−1,𝑦 ≪ 1)|𝑏𝑥,𝑦
𝒃𝑥,𝑦−1
高速なBING特徴の取得
0 0 1 0 1 1 0 0 1 0 0
0 0 1 0 0 1 1 0 0 0 0
1 1 0 0 0 0 1 0 0 0 1
0 1 1 0 0 0 0 1 1 1 0
1 0 0 0 0 0 1 1 0 0 0
1 0 0 0 0 0 1 0 0 0 1
1 0 0 0 0 0 0 0 0 1 0
0 0 0 0 1 1 0 0 1 0 0
0 0 0 0 0 0 1 0 1 1 1
0 0 0 1 1 0 0 0 0 1 1
0 0 1 1 0 0 0 0 0 0 1
ラスタスキャンでBING特徴を取得
𝒃𝑥,𝑦 =
(𝒃𝑥,𝑦−1 ≪ 8)|𝒓𝑥,𝑦
𝒓𝑥,𝑦 =
(𝒓𝑥−1,𝑦 ≪ 1)|𝑏𝑥,𝑦
実験
PASCAL VOC 2007での成功例
他の手法との比較(PASCAL VOC2007)
計算時間
処理時間:300fps
トレーニング:2501枚の訓練データで20秒
ラップトップ Intel i7-3940XM CPU
オペレーションの平均回数
まとめ
閉じた輪郭を持つものを物体と仮定して、勾配画像よりNG特徴を学習
NG特徴を用いたObjectness検出を高速に行うために、バイナリ化(=BING特徴)
従来法と比べて性能が良いだけでなく、処理速度も3桁近く早い
プロジェクトページ
http://mmcheng.net/bing/
ソースコードあり