285 Views
October 31, 24
スライド概要
AI・機械学習を勉強したい学生たちが集まる、京都大学の自主ゼミサークルです。私たちのサークルに興味のある方はX(Twitter)をご覧ください!
2024年度後期輪読会 #5【物体検出】 Fast R-CNN 京都大学理学部2回 東野幹大 0
アジェンダ ◼ R-CNNの問題点 ◼ SPP(net) ◼ Fast R-CNN 1
アジェンダ ◼ R-CNNの問題点 ◼ SPP(net) ◼ Fast R-CNN 2
R-CNNの問題点 R-CNNは大幅な性能向上をもたらしたが、学習・推論に時間がかかり、あまり実用的とは言えない R-CNNは物体検出の問題にCNNを応用し、精度をを大幅に更新するなど、成功を収めた しかし、問題点も… ◼ 学習・推論に(とても)時間がかかる • 関心領域 (RoI) 2000個それぞれにCNNを 順伝搬する必要があるので、学習・推論 に時間がかかる • • 学習:画像5000枚で訓練するのに約60時間 推論:画像1枚当たり9秒(AlexNet) 47秒(VGG16) →あまり実用的ではない CNNの順伝搬をできるだけ少なくして、計算量 を小さくしたい 画像引用:https://jhui.github.io/2017/03/15/Fast-R-CNN-and-Faster-R-CNN/ 3
R-CNNの問題点 計算量を減らすために、CNNの順伝搬を先にまとめてやっておく では、どうすればいいか? ◼ アイデア 1. 画像全体をCNNに通し、特徴マップを得る 2. 特徴マップ上にSelective Search等で提案され たRoIを射影する 3. 特徴マップ上の各RoIからベクトルを取り 出し、分類・bbox回帰の問題を解く 問題は、RoIの大きさ・アスペクト比が多種多 様であること。入力は可変だが、出力として 固定長のベクトルを取り出したい。 →空間ピラミッドプーリング(SPP) 画像引用:https://jhui.github.io/2017/03/15/Fast-R-CNN-and-Faster-R-CNN/ 4
アジェンダ ◼ R-CNNの問題点 ◼ SPP(net) ◼ Fast R-CNN 5
空間ピラミッドプーリング(SPP) 空間ピラミッドプーリングでは、カーネルサイズとストライドが動的に変化し、出力は固定長ベクトルとなる ◼ 空間ピラミッドプーリング(SPP;spatial pyramid pooling) 1. 特徴マップを指定されたいくつかの解像度のグリッ ドに分割する 2. 1.で分割した領域それぞれでmax pooling 3. 2.で得られた特徴マップを展開し、結合する SPPでは、入力された特徴マップのサイズとアス ペクト比に応じてカーネルサイズとストライドが 動的に変化し、出力ベクトルが固定長となる。 (cf. 通常のPoolingでは、カーネルサイズとストライドが固定で、出力が動的に変化) SPP層を導入してR-CNNを高速化したモデル →SPPnet 画像引用:https://developers.agirobots.com/jp/spp-net/ 6
SPPnet SPPnetは、SPP層を導入してCNNの順伝搬の回数を減らし、計算量を削減。計算速度が向上 ◼ SPPnet SPP層を導入して、CNNの順伝搬を先にまとめて 行うことで計算量を大幅に削減することに成功。 性能はR-CNNのまま、学習と推論を高速化。 詳細: CNN:ZF5より(224×224×3→13×13×256、conv5まで) SPP:[1×1、2×2、3×3、6×6]の4種類 固定長ベクトル表現:12800次元ベクトル 分類はSVM、bbox回帰は線形層 訓練可能なのは全結合層のみで、CNNは訓練しない 分類とbbox回帰は別々に学習 画像引用:https://arxiv.org/pdf/1406.4729 7
SPPnet SPPnetは、SPP層を導入してCNNの順伝搬の回数を減らし、計算量を削減。計算速度が向上 ◼ SPPnet R-CNNと比べ、精度は同程度のまま、計算速度が24~102倍まで上昇 画像引用:https://arxiv.org/pdf/1406.4729 8
Fast R-CNNへ SPPnetよりも高速かつ高精度のモデルを作りたい → Fast R-CNN SPPnetは、計算量を削減し、計算速度を向上させた しかし、課題も… 1. 学習が面倒 クラス分類とbbox回帰を別々に訓練するので、調整が難しい(これはR-CNNから続く問題) 2. 精度 SPPnetは学習できるのが全結合層のみ。もし、CNNのfine tuningができれば、性能向上が見 込まれる。速度だけでなく、精度も高いモデルを作りたい 3. 速度 計算速度は速いに越したことはない → Fast R-CNN 9
アジェンダ ◼ R-CNNの問題点 ◼ SPP(net) ◼ Fast R-CNN 10
Fast R-CNN Fast R-CNNは、高速・高精度な物体検出を実現する ◼ Fast R-CNN SPPnetからの主な変更点 • RoI poolilng • 階層的なサンプリング • Multi-task loss の導入 • 低ランク近似 • SVM → Softmax • 全結合層が2つに分岐 • CNN model S…CaffeNet model M…VGG_CNN_M_1024 model L…VGG 16 より 画像引用: https://jhui.github.io/2017/03/15/Fast-R-CNN-and-Faster-R-CNN/ 11
Fast R-CNN RoI poolingは、空間ピラミッドプーリング(SPP)の特殊ケース ◼ RoI pooling RoI pooling はピラミッド構造をなくしたSPP model L(VGG16)の場合、7×7 に分割してmax poolingする ピラミッド構造がなくなった分、計算量が減少 画像引用: https://developers.agirobots.com/jp/spp-net/ 12
Fast R-CNN 階層的なサンプリングによって計算量が減少し、CNNまでの重み更新が可能に ◼ 階層的なサンプリング Fast R-CNNではミニバッチで学習を進めるが、計算量を減らすために、CNNの重み更 新は、同じ画像からのRolをまとめて計算するという手法がとられた。 バッチサイズをRとする。まずデータセットからN枚の画像をサンプリングする。そして、 各画像からR/N個のRoIをサンプリングする。同じ画像由来のR/N個のRoIをまとめて誤 差逆伝搬を行い、勾配を計算して重みを更新する。Nが小さくなればなるほど計算量が 減る。 この階層的なサンプリングのおかげで、CNNまでの重み更新が可能になった なお、論文ではR=128、N=2で実験している。R-CNNとSPPnetの手法を組み合わせてサンプリング。 データ拡張は、確率0.5で画像を左右反転するのみ また、model Lではconv3_1以降を更新。model S,Mではconv2以降を更新。 13
Fast R-CNN Multi-task lossはクラス分類とbbox回帰を同時に最適化する ◼ Multi-task loss クラス分類とbbox回帰を同時に最適化する 教師データ:クラスラベルは 𝑢 ∈ 0,1, … , 𝐾 (𝑢 = 0は背景クラス)、bboxは 𝑣 = (𝑣𝑥 , 𝑣𝑦 , 𝑣𝑤 , 𝑣ℎ ) 𝑢 𝑢 出力データ:クラス分類の確率分布は 𝒑 = 𝑝0 , 𝑝1 , … , 𝑝𝐾 、クラス𝑢のbboxは 𝒕𝑢 = (𝑡𝑥𝑢 , 𝑡𝑦𝑢 , 𝑡𝑤 , 𝑡ℎ ) 損失関数は以下のように定めることができる ℒ 𝑝, 𝑢, 𝑡 𝑢 , 𝑣 = ℒcls 𝑝, 𝑢 + 𝜆 𝑢 ≥ 1 ℒloc 𝑡 𝑢 , 𝑣 ℒcls 𝑝, 𝑢 = −log 𝑝𝑢 ℒloc 𝑡 𝑢 , 𝑣 = σ𝑖∈{𝑥,𝑦,𝑤,ℎ} 𝐿smooth (𝑡𝑖𝑢 − 𝑣𝑖 ) 1 ここで 1 if 𝑢 ≥ 1 𝜆 𝑢≥1 =ቊ 0 otherwise 𝐿smooth 𝑥 1 0.5𝑥 2 if 𝑥 < 1 =ቊ 𝑥 − 0.5 otherwise 14
Fast R-CNN 計算速度を上げるため、低ランク近似によって全結合層の計算量を削減 ◼ 低ランク近似 畳み込み層の計算量が減少した一方、RoI pooling 以降の全結合層の計算はすべてのRoIについて 行わなければならない。そこで、計算量削減のため、特異値分解を利用した低ランク近似を行う • 特異値分解(SVD;singular value decomposition) rank 𝑊 = 𝑟 の 𝑢 × 𝑣の行列𝑊について、 𝑊 = 𝑈Σ𝑟 𝑉 𝑇 という分解が存在する。ただし、𝑈は左特異ベクトルた ちからなる𝑢 × 𝑟 行列、 Σ𝑟 は𝑊の特異値を大きい順に並 べた𝑟 × 𝑟 対角行列、 𝑉は右特異ベクトルたちからなる 𝑣 × 𝑟行列。 低ランク近似は、値が小さい特異値を削減することで、 パラメータ数を減少させることができる model L(VGG16)では、fc6(25088×4096行列)の特異値上位 1024個、fc7(4096×4096)の特異値上位256個で近似 画像引用: https://arxiv.org/pdf/1504.08083 15
Fast R-CNN 計算速度を上げるため、低ランク近似によって全結合層の計算量を削減 ◼ 低ランク近似 例) 99 55 67 109 86 78 69 79 29 57 87 52 64 45 48 20 36 52 32 40 26 7×5 81 43 58 88 65 66 51 33 23 22 36 33 26 25 ≅ −0.46 −0.23 −0.33 −0.51 −0.37 −0.37 −0.3 −0.22 0.55 −0.32 −0.24 0.57 −0.26 0.32 −0.07 −0.56 0.58 −0.19 0.41 0.7 −0.33 0.12 −0.06 0.2 0.3 −0.27 −0.53 0.15 7×4 346.67 0.0 0.0 0.0 0.0 21.38 0.0 0.0 0.0 0.0 4.51 0.0 0.0 0.0 0.0 0.01 −0.63 −0.47 −0.29 −0.51 −0.22 0.48 −0.66 −0.38 0.05 0.43 −0.44 −0.43 0.46 0.62 0.16 −0.43 0.39 −0.48 0.16 0.64 4×4 4×5 特異値(赤字)を削る:パラメータ数 35→26、 𝑊→ 98.87 56.16 67.81 108.33 85.88 78.61 67.93 78.88 30.12 57.78 86.35 51.89 64.59 43.97 48.13 18.79 35.16 52.7 32.12 39.36 27.11 81.18 41.38 56.87 88.93 65.16 65.15 52.49 33.05 22.59 21.71 36.23 33.04 25.79 25.37 16
Fast R-CNN Fast R-CNNは、高速・高精度な物体検出を実現する ◼ 性能 • 精度 VOC 07, 10, 12 でSoTAを達成 学習データを増やすとmAPが 向上する 画像引用: https://arxiv.org/pdf/1504.08083 17
Fast R-CNN Fast R-CNNは、高速・高精度な物体検出を実現する ◼ 性能 • 速度 訓練速度:R-CNNの約9倍 SPPnetの約3倍 推論速度:R-CNNの約213倍 SPPnetの約10倍 SVDによる低ランク近似の影響 …推論速度は約1.5倍 mAPの低下は0.5%程度 画像引用: https://arxiv.org/pdf/1504.08083 18
Fast R-CNN Fast R-CNNは領域提案がボトルネック ◼ Fast R-CNNの問題点 • 領域提案がボトルネック 速度:Selective Searchなら1~2秒/image 性能が領域提案アルゴリズムに依存。もっと良い手法はないか? • RoI poolingの問題点 RoI poolingでは、RoIの割り当て・分割時にずれが生じる。セグメンテーションなど、位置ずれ に敏感なタスクでは問題となりうる → 領域提案ネットワーク(RPN)、RoI align → Faster R-CNN、Mask R-CNN 19
まとめ Fast R-CNNは、高速・高精度な物体検出を実現するモデル R-CNN SPPnet Fast RCNN R-CNNは物体検出の問題にCNNを応用し、成功を収めた しかし、学習・推論に時間がかかりすぎるという問題点があった SPPnetは、SPP層の導入によってCNNの順伝搬の計算量を大幅に削減 精度はそのまま推論速度は20~100倍に Fast R-CNNは、RoI poolingやmulti-task loss、低ランク近似などを導入 推論速度はSPPnetの10倍、VOC 07, 10, 12でSoTAを達成 領域提案がボトルネック 20
21
参考文献 • R. Girshick, J. Donahue, T. Darrell, and J. Malik, “Rich feature hierarchies for accurate object detection and semantic segmentation,” in IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2014. • K. He, X. Zhang, S. Ren, and J. Sun, “Spatial pyramid pooling in deep convolutional networks for visual recognition,” in European Conference on Computer Vision (ECCV), 2014. • R. Girshick, “Fast R-CNN,” in IEEE International Conference on Computer Vision (ECCV), 2014. • 入力画像サイズやスケールが自由なSPP-netとは!? TensorFlowによる実装も! | AGIRobots Blog • Fast R-CNNについて詳しく解説! | AGIRobots Blog • “Fast R-CNN and Faster R-CNN” • Object Detection for Dummies Part 3: R-CNN Family | Lil'Log • 特異値分解を詳しく解説 #Python - Qiita 22