Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
RPNを完全に理解しよう
Search
Ryunosuke-Ikeda
July 28, 2021
Technology
1
350
RPNを完全に理解しよう
あまり詳しく解説されないFaster R-CNNのRPN(Region Proposal Network)を具体的なデータの形状を確認しながら理解しよう.
Ryunosuke-Ikeda
July 28, 2021
Tweet
Share
More Decks by Ryunosuke-Ikeda
See All by Ryunosuke-Ikeda
映像情報を活用した次世代のAIアシスタントシステム"Salieri" 資料
imr0305
0
160
Open Hack U 発表資料(チームうどん)
imr0305
0
55
JPHacks2021 発表資料(チームうどん)
imr0305
0
47
自己紹介スライド
imr0305
1
2k
技育展2021 発表資料(チームうどん)
imr0305
0
37
RLSP2021資料
imr0305
0
220
技育展2020 登壇資料(チームうどん)
imr0305
0
200
Other Decks in Technology
See All in Technology
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
15
93k
Bill One急成長の舞台裏 開発組織が直面した失敗と教訓
sansantech
PRO
2
410
~Everything as Codeを諦めない~ 後からCDK
mu7889yoon
3
520
We Built for Predictability; The Workloads Didn’t Care
stahnma
0
150
20260204_Midosuji_Tech
takuyay0ne
1
160
AIエージェントを開発しよう!-AgentCore活用の勘所-
yukiogawa
0
190
登壇駆動学習のすすめ — CfPのネタの見つけ方と書くときに意識していること
bicstone
3
130
SREじゃなかった僕らがenablingを通じて「SRE実践者」になるまでのリアル / SRE Kaigi 2026
aeonpeople
6
2.6k
Why Organizations Fail: ノーベル経済学賞「国家はなぜ衰退するのか」から考えるアジャイル組織論
kawaguti
PRO
1
210
Context Engineeringの取り組み
nutslove
0
380
【Ubie】AIを活用した広告アセット「爆速」生成事例 | AI_Ops_Community_Vol.2
yoshiki_0316
1
120
Webhook best practices for rock solid and resilient deployments
glaforge
2
310
Featured
See All Featured
Docker and Python
trallard
47
3.7k
sira's awesome portfolio website redesign presentation
elsirapls
0
150
Optimising Largest Contentful Paint
csswizardry
37
3.6k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
3.6k
Music & Morning Musume
bryan
47
7.1k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
280
The Limits of Empathy - UXLibs8
cassininazir
1
220
Principles of Awesome APIs and How to Build Them.
keavy
128
17k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Building Applications with DynamoDB
mza
96
6.9k
Abbi's Birthday
coloredviolet
1
4.8k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.6k
Transcript
RPNを完全に理解しよう Ryunosuke Ikeda 1
よくある説明 ①K種類のアンカーボックスを用意する。 ②Sliding Windowで各アンカーボックスの 物体らしさと座標のオフセットを回帰 → CNNどこ? 学習どうするの?? 具体的な形状は?? 何か改善案はないだろうか?
RPNってなにしてるん? 2
・Torch VisionのFaster R-CNNのコードをベースにRPNの詳しい処理手順を 確認した。 ・入力画像は3*1280*720とする。 ・バッチサイズは1とする。 前提条件 3
RPN概略図 RPN CNN reg CNN cls CNN RPN Head Anchor
Generator NMS RPN 特徴マップ reshape reshape 4
バックボーンからRPNHead 特徴マップ 42 24 1280 CNN Reg_CNN Cls_CNN RPN Head
3*3conv [1,1280,24,42] [b,C,H,W] 1*1conv 1*1conv [1,1280,24,42] [1,60,24,42] [1,15,24,42] ①特徴抽出CNN 3*3conv , stride=padding=1 特徴抽出を行う。 この部分がSliding Windowに対応 論文実装はここでC=512に圧縮してる ②座標オフセット回帰CNN 1*1conv , stride=1, padding=0 アンカーの種類(15種類)と座標(xyxy) の15*4=60次元に圧縮 ②物体、背景クラス分類CNN 1*1conv , stride=1, padding=0 アンカーの種類(15種類) の15次元 に圧縮 Objectness Pred_bbox 5
出力形状の意味(Cls_CNN) 24 (H) 42 (W) 15 (アンカーの種類) 右図のオレンジの値は特徴マップの[1,1]の部分に1種類目の アンカーボックスを適用した時のObjectnessを直接予測している。
同様に緑の部分は特徴マップ[1,42]の部分に2種類目の アンカーボックスを適用した時のObjectnessを予測 各アンカーの特徴量を抽出しCNNに入力しているわけではない Cls_CNNの出力 ・ アンカーのイメージ (実際は特徴マップ) ・ 6
RPN Head Cls_CNN:各アンカーが物体か否かを予測 Reg_CNN:各アンカーを物体のボックスへと近づけるにはどれくらいずらせばよ いか学習。 CNN Reg_CNN Cls_CNN
RPN Head 3*3conv 1*1conv 1*1conv [1,1280,24,42] [1,60,24,42] [1,15,24,42] Objectness Pred_bbox 7
Anchor Generator 特徴マップの各要素にアンカーを配置した際のアンカーの座標値を取得。 この際の座標値は入力画像のスケールのもの 出力形状は[15*24*42,4]=[15120,4] Anchor Generator
入力画像 特徴マップ [1,1280,24,42] [1,3,720,1280] [15120,4] Anchors 8
Proposalsの作成 Reg_CNNで取得したアンカーボックス座標のオフセット値(相対座標)を アンカーボックスに足し合わせる。 →ずらした後の絶対座標が得られる。 Anchors Pred_bbox [1,60,24,42] [15120,4] [15120,4]
reshape [15120,4] Proposals 9
NMS NMSにかける前にObjectnessの上位2000個のproposalsを抽出 抽出した2000個に対してNMSをかけてboxを削減 Objectness [1,15,24,42] [15120,4] reshape [15120,1]
Proposals NMS Objectnessの 上位2000位の Proposalsを抽出 [2000,4] [2000-N,4] 10
RPN CNN reg CNN cls CNN RPN Head Anchor Generator
NMS RPN 特徴マップ reshape reshape 入力画像 [1,1280,24,42] [1,3,720,1280] [1,1280,24,42] [1,60,24,42] [1,15,24,42] [15120,4] [15120,4] [15120,4] [15120,1] [2000-N,4] 11
RPNの学習 Cls_CNNの教師データはもともとのアノテーションには存在しない為、作成する 必要がある。 全アンカーボックス中からGraund TruthとのIoU値が0.3以下であるなら背景(0) 0.7以上であるなら物体(1)とラベルとつける。 残りの部分は学習対象にはならない.(無視のラベルを付ける。)
GT 1 0 12
Lossの測り方(Regの例) NMSにかける前のpropとobjectnessを用いてLossを測る。 作成したTargetに物体ラベルがついているインデックスの値を抽出し、 そのインデックスの予測値とのLossを測る。 [112,85,115,95] Target_bbox [20,30,50,40] …
… Pred_bbox [24,32,50,42] [110,80,120,90] GTが 物体ラベルである インデックスの値 L1smooth Loss イメージ (実際は正規化された値) 13
14 Ryunosuke Ikeda Tokyo Denki University M1 THANK YOU!