[cv勉強会]active object localization with deep reinfocement learning
TRANSCRIPT
第32回 CV勉強会「ICCV2015読み会」Active Object Localization with Deep
Reinforcement Learning
皆川卓也(takmin)
自己紹介
2
テクニカル・ソリューション・アーキテクト
皆川 卓也(みながわ たくや)フリーエンジニア(ビジョン&ITラボ)「コンピュータビジョン勉強会@関東」主催博士(工学)
略歴:1999-2003年日本HP(後にアジレント・テクノロジーへ分社)にて、ITエンジニアとしてシステム構築、プリセールス、プロジェクトマネジメント、サポート等の業務に従事
2004-2009年コンピュータビジョンを用いたシステム/アプリ/サービス開発等に従事
2007-2010年慶應義塾大学大学院 後期博士課程にて、コンピュータビジョンを専攻単位取得退学後、博士号取得(2014年)
2009年-現在フリーランスとして、コンピュータビジョンのコンサル/研究/開発等に従事
紹介論文
Active Object Localization with Deep Reinforcement Learning
Juan C. Caicedo, and Svetlana Lazebnik
物体検出のタスクにDeep Q-Networkを使用した
Deep Q-Network (DQN)
Q Learningという強化学習のアルゴリズムにConvolutional Neural Networkを適用
以下の論文で、機械にコンピュータゲームのやり方を学習させ、3/7で人間以上のスコア
Mnih, V., et al., “Playing Atari with Deep Reinforcement Learning”, NIPS Deep Learning Workshop, 2013
Mnih, V., et al., “Human-level control through deep reinforcement learning”, Nature, 518 (7540), 529–533. 2015
強化学習とは?
「ある環境内におけるエージェントが、現在の状態を観測し、取るべき行動を決定する問題を扱う機械学習の一種。エージェントは行動を選択することで環境から報酬を得る。強化学習は一連の行動を通じて報酬が最も多く得られるような方策(policy)を学習する。」(Wikipedia)
強化学習とは?
エージェント
状態: 𝑠
時間: t
アクション: 𝑎
観測方策: 𝜋(𝑠)
強化学習とは?
エージェント
状態: 𝑠
時間: t
アクション: 𝑎
観測方策: 𝜋(𝑠)
強化学習とは?
エージェント
時間: t
アクション: 𝑎
方策: 𝜋(𝑠)
状態: 𝑠′
強化学習とは?
エージェント
状態: 𝑠′
時間: t+1
報酬: 𝑟𝑡
観測方策: 𝜋(𝑠′)
学習で求める
強化学習とは?
どのような方策を学習する?
以下の報酬の和の期待値が最大となるように今の行動を決定する
𝑅𝑡 = 𝑟𝑡 + 𝛾𝑟𝑡+1 + 𝛾2𝑟𝑡+2 +⋯+ 𝛾𝑇−𝑡𝑟𝑇報酬の和
将来の報酬
減衰率
𝜋∗(𝑠) = argmax𝑎
𝔼 𝑅𝑡|𝑠𝑡 = 𝑠, 𝑎𝑡 = 𝑎
状態sの時、報酬の和が最大となりそうな行動aを選ぶ
Q Learning
𝑄∗(𝑠, 𝑎)
𝜋∗(𝑠) = argmax𝑎
𝔼 𝑅𝑡|𝑠𝑡 = 𝑠, 𝑎𝑡 = 𝑎
状態s、行動aの組み合わせの良し悪しをスコアで教えてくれる関数
状態sの時、報酬の和が最大となりそうな行動aを選ぶ
状態sで行動aをとったとき、その後最適な行動をとり続けた時に得られる報酬の和の期待値
𝜋の代わりに関数Qを学習する
Q Learning
𝜋∗(𝑠) = argmax𝑎
𝑄∗(𝑠, 𝑎)
𝜋の代わりに関数Qを学習する
関数𝑄のパラメータ𝜃を学習により求める
𝑄(𝑠, 𝑎; 𝜃∗)
𝜃𝑖+1 = 𝜃𝑖 − 𝛼𝛻𝜃𝑖𝐿(𝜃𝑖)
学習率
確率的勾配降下法(SGD)
損失関数
Q Learning
𝐿(𝜃𝑖) =1
2𝑄∗(𝑠, 𝑎) − 𝑄(𝑠, 𝑎; 𝜃𝑖)
2
教師信号
存在しない
損失関数
𝜃𝑖+1 = 𝜃𝑖 − 𝛼𝛻𝜃𝑖𝐿(𝜃𝑖)
Q Learning
𝑅𝑡 = 𝑟𝑡 + 𝛾𝑟𝑡+1 + 𝛾2𝑟𝑡+2 +⋯+ 𝛾𝑇−𝑡𝑟𝑇
𝑅𝑡 = 𝑟𝑡 + 𝛾𝑅𝑡+1
𝑄∗(𝑠, 𝑎) = 𝔼 𝑅𝑡|𝑠𝑡 = 𝑠, 𝑎𝑡 = 𝑎
𝑄∗(𝑠, 𝑎) = 𝑟𝑡 + 𝛾max𝑎′
𝑄∗(𝑠′, 𝑎′)
報酬の和
𝑎によって遷移した状態
Q Learning
𝑄∗(𝑠, 𝑎) = 𝑟𝑡 + 𝛾max𝑎′
𝑄∗(𝑠′, 𝑎′)
損失関数
𝐿(𝜃𝑖) =1
2𝑄∗(𝑠, 𝑎) − 𝑄(𝑠, 𝑎; 𝜃𝑖)
2
Q Learning
損失関数
=1
2𝑟𝑡 + 𝛾max
𝑎′𝑄∗(𝑠′, 𝑎′) − 𝑄(𝑠, 𝑎; 𝜃𝑖)
2
≈1
2𝑟𝑡 + 𝛾max
𝑎′𝑄(𝑠′, 𝑎′; 𝜃𝑖−1) − 𝑄(𝑠, 𝑎; 𝜃𝑖)
2
今のパラメータを使って近似
𝐿(𝜃𝑖) =1
2𝑄∗(𝑠, 𝑎) − 𝑄(𝑠, 𝑎; 𝜃𝑖)
2
Q Learning
損失関数の勾配
𝛻𝜃𝑖𝐿 𝜃𝑖= − 𝑟𝑡 + 𝛾max
𝑎′𝑄(𝑠′, 𝑎′; 𝜃𝑖−1) − 𝑄(𝑠, 𝑎; 𝜃𝑖) 𝛻𝜃𝑖𝑄(𝑠, 𝑎; 𝜃𝑖)
𝐿 𝜃𝑖 =12
𝑟𝑡 + 𝛾max𝑎′
𝑄(𝑠′, 𝑎′; 𝜃𝑖−1) − 𝑄(𝑠, 𝑎; 𝜃𝑖)2
Deep Q-Network
関数𝑄(𝑠, 𝑎; 𝜃𝑖)を畳み込みニューラルネットワークで表す 入力が状態s, 出力が各行動ごとのQの値
Deep CNN
𝑄(𝑠, 𝑎1)
𝑄(𝑠, 𝑎𝐿)
𝑄(𝑠, 𝑎2)
𝜃𝑖
・・・・・
s
Deep Q-Networkの学習
1. 状態𝑆𝑡を入力し、 𝑄(𝑠𝑡 , 𝑎; 𝜃𝑖)が最大となる行動𝑎𝑡を選択
ただし確率𝜀でランダムに選択
Deep CNN
𝑄(𝑠𝑡, 𝑎1)
𝑄(𝑠𝑡, 𝑎𝐿)
𝑄(𝑠𝑡, 𝑎2)
𝜃𝑖
・・・・・
𝑠𝑡
Deep Q-Networkの学習
2. 行動𝑎𝑡によって状態𝑆𝑡+1と報酬𝑟𝑡を得る
𝑎𝑡
𝑠𝑡 → 𝑠𝑡+1
エージェント
環境
𝑟𝑡
Deep Q-Networkの学習
3. 状態𝑆𝑡+1を入力し、 max𝑎 𝑄(𝑠𝑡+1, 𝑎; 𝜃𝑖) を求める
Deep CNN
𝑄(𝑠𝑡+1, 𝑎1)
𝑄(𝑠𝑡+1, 𝑎𝐿)
𝑄(𝑠𝑡+1, 𝑎2)
𝜃𝑖
・・・・・
𝑠𝑡+1
Deep Q-Networkの学習
4. 以下を教師信号としてパラメータ𝜃𝑖を更新
𝑦𝑖 = 𝑟𝑡 + γmax𝑎 𝑄(𝑠𝑡+1, 𝑎; 𝜃𝑖)
Deep CNN
𝑄(𝑠𝑡, 𝑎1)
𝑄(𝑠𝑡, 𝑎𝐿)
𝑦𝑖
𝜃𝑖
・・・・・
𝑠𝑡
やっと本題
DQNで物体検出
エージェント: Bounding Box
行動a: Bounding Boxの移動/形状変化
状態s: Box内の画像特徴ベクトル+行動履歴
報酬r : Ground Truthとのオーバーラップ率
DQNで物体検出
行動 (x9) 上下左右の移動、拡大/縮小、形状変化(細
く/低く)、終了
移動やサイズ変化の大きさは、Boxの大きさに比例(α = 0.2)
DQNで物体検出
状態 Bounding Box内の画像から画像特徴ベクトルを取得
畳み込みニューラルネットワークで取得した4096次元ベクトル
過去の行動履歴
直近10回の行動まで
それぞれの行動は、9次元バイナリベクトル(とった行動を1、他0)
10 x 9 = 90次元ベクトル
4096+90 = 4186次元ベクトルをDQNへの入力とする
DQNで物体検出
報酬
b
g 𝐼𝑜𝑈 𝑏, 𝑔 =𝑎𝑟𝑒𝑎(𝑏 ∩ 𝑔)
𝑎𝑟𝑒𝑎(𝑏 ∪ 𝑔)
𝑅𝑎 𝑠, 𝑠′ = 𝑠𝑖𝑔𝑛 𝐼𝑜𝑈 𝑏′, 𝑔 − 𝐼𝑜𝑈 𝑏, 𝑔
エージェント
Ground Truth
正解データとのオーバーラップ
Trigger(終了)以外の行動に対する報酬
オーバーラップが大きくなったら1、小さくなったら-1
DQNで物体検出
報酬
b
g 𝐼𝑜𝑈 𝑏, 𝑔 =𝑎𝑟𝑒𝑎(𝑏 ∩ 𝑔)
𝑎𝑟𝑒𝑎(𝑏 ∪ 𝑔)
エージェント
Ground Truth
正解データとのオーバーラップ
Trigger(終了)に対する報酬
オーバーラップが閾値以上なら+𝜂、それ未満なら−𝜂
𝑅𝑤 𝑠, 𝑠′ = +𝜂 𝑖𝑓 𝐼𝑜𝑈 𝑏, 𝑔 ≥ 𝜏−𝜂 𝑜𝑡ℎ𝑒𝑟𝑤𝑖𝑠𝑒
ネットワーク構成
Bounding Box内の画像領域を224x224へリサイズ
特徴量抽出はPre-trainedのネットワークを使用
エージェントの学習
ε-greedyアルゴリズム
確率εでランダムに行動を選ぶそれ以外は最もQ値が高い行動
本手法では、学習時に正解データがわかっているので、報酬がプラスになる行動の中からランダムに選ぶ
εは学習が進むにつれて小さくしていく
エージェントの学習
Experience Replay
過去の(𝑠𝑡, 𝑎𝑡, 𝑟𝑡, 𝑠𝑡+1)をreplay-memoryに保存
DQNの学習時、保存したreplay-memoryからランダムに選んでミニバッチにして再学習
エージェントによる物体検出
Trigger?
DQN
𝑠
𝑎
Restart40 steps
over?total 200
steps over?
25% smaller start box size
Put it on an image corner
Do Action
Y
Y
Y
N
N
N
実験 (Pascal VOC2007)
Pascal VOC 2007
Recallの評価
物体検出までのステップ数の分布
行動履歴の例
複数物体検出の例
検出失敗の例
Sensitivity Analysis
物体の見え方(Occlusion, Truncation, Size, Aspect Ratio, Viewpoint of Objects, Visibility of parts)に対する頑健さ
Runtime
K-40 GPU 一台
CNNによる特徴抽出 (4.5 ms)
Q-network (3.2 ms)
平均 1.54sec/image
結論
強化学習を用いて、Top-Downで物体検出を行う手法を提案
一つのオブジェクトに対し11から25くらいの領域しか見ていなくても検出できた
将来的には もう少しカテゴリを増やしてみたい
ネットワークを深くしてみたい
Pre-trainedなモデルではなくend-to-endで画像特徴量を学習したい