1K Views
November 07, 24
スライド概要
AI・機械学習を勉強したい学生たちが集まる、京都大学の自主ゼミサークルです。私たちのサークルに興味のある方はX(Twitter)をご覧ください!
2024年度後期輪読会 第6回 [物体検出] Faster R-CNN・Mask R-CNN 京都大学 工学部 情報学科 数理工学コース B2 稲葉陽孔 0
アジェンダ ■ R-CNNの歴史と課題点 ■ Faster R-CNN ■ Mask R-CNN ■ 応用例 1
アジェンダ ■ R-CNNの歴史と課題点 ■ Faster R-CNN ■ Mask R-CNN ■ 応用例 2
R-CNNの歴史と課題点 ■概要(R-CNN) 物体の分類や領域の特定(物体検出)を行うためのモデル R-CNN ■手順(R-CNN) 1.物体の領域(バウンディングボックス)を提案 (Selective Search) 2.各領域における画像ごとにWarpingで固定サイズの 画像に変換し、固定サイズの特徴マップFへ変換 (畳み込み層) 3.Fからクラスを予測(SVM) 4.Fから各領域の場所を調整(全層結合等) 3
R-CNNの歴史と課題点 ■課題点(R-CNN) ・各領域ごとに畳み込み層をかけるので、領域をクラス分類するのに時間がかかる(10sec/枚) →それを解決するためにFast R-CNNを開発 Fast R-CNN ■手順(Fast R-CNN) 1.物体の領域(バウンディングボックス)を提案 (Selective Search) 2.画像から畳み込み層によって特徴マップFを作成し、 Fに対応する各領域(RoI)を取得 3.各RoIをRoIPooingによって特徴マップTに変換 4.Tから各領域の場所とクラスを出力(全層結合等) 4
R-CNNの歴史と課題点 ■課題点(Fast R-CNN) Faster RーCNN ・Selective Searchによる領域検取得は時間がかかる(1.5sec/枚) →この課題を解決するためにFaster R-CNNを開発 Selective Search 5
アジェンダ ■ R-CNNの歴史と課題点 ■ Faster R-CNN ■ Mask R-CNN ■ 応用例 6
Faster R-CNN ■手順(Faster R-CNN) Faster R-CNN 1.画像から畳み込み層によって特徴マップFを作成 2.FからF上にあるバウンディングボックス(RoI)を取得(RPN) 3.F上の各RoIをRoIPooingによって特徴ベクトルTに変換 4.Tから各領域の場所とクラスを出力(FCN等) ■Fast R-CNNとの変更点 ・領域の取得方法が変化(RPN) 7
Faster R-CNN ■手順(RPN) 1.畳込み層で取得した特徴マップからn×nの windowを取得 2.windowから特徴ベクトルVを計算(RoI pooling) RPN 3.Vからcls layerによって、k個の各box候補H (中心はwindowの中心と同じ)において、領域として 取得できる確率+そうでない確率を取得 4.Vからreg layerによって、k個の各box候補Hにおいて、 領域として取得する場合の座標を取得 5.1~4をwindowをずらして検証し続ける 6.検出されたすべての領域をNMS等によって削減し、clsを元に上位N個のRoIを出力 8
Faster R-CNN ■NMS IoU(領域の重なり度)が高い(=重複している)RoIを削除 NMS 式(IoU) 9
Faster R-CNN ■RPNの利点 ■Translation invariant 入力画像が並行移動しても、検出される領域や特徴マップもそれに対応して平行移動する 10
Faster R-CNN ■RPNの利点 ■複数の領域候補を提案するモデルとして計算量が小さい (a) :画像を複数のサイズに変換し、各々のサイズにおける特徴マップからfilterで予測 (b):filterを複数用意し、各filterによる領域予測結果を取得 (c) : P8で述べた手法 (a)や(b)は複数回filterをかける必要があるが、 (c)では1回で済むので計算量が小さい また、Selective Searchよりも実行時間が短い 11
Faster R-CNN ■精度 物体検出におけるFast R-CNNとFaster R-CNNの精度結果 ・Faster R-CNNがFast R-CNNを 2~3ポイント上回る ■推論速度 物体検出にかかる時間(1枚あたり) ・Faster R-CNNは0.2秒 ・Fast R-CNNの約9倍速い total:物体検出にかかる1枚当たりの時間 RPN+Fast R-CNN:Faster R-CNN SS+Fast R-CNN :Fast R-CNN 12
アジェンダ ■ R-CNNの歴史と課題点 ■ Faster R-CNN ■ Mask R-CNN ■ 応用例 13
Mask R-CNN ■課題点(Faster R-CNN) Instance Segmentation ・Instance Segmentation用のモデルではない →この課題を解決するためにMask R-CNNを開発 Mask R-CNN 各pxがどの物体(≢クラス)に属するか分類 14
Mask R-CNN ■Faster R-CNNとの変更点 Mask R-CNN ・従来のFaster R-CNNに加え、Instance Segmentation用にMask branchを追加 ・RoIから特徴マップを取得する方法を変更 ※RoI:物体が存在する領域 15
Mask R-CNN ■Mask branch Mask branch(Mask R-CNN) ■概要 各RoIを固定長の特徴マップに変換し、 FCNによってm×mのmaskを取得 →maskから各RoIにおけるinstance segmentationを解決 ■必要事項 小さなmaskからRoIにおける1pxごとの関係性を知るために、 1pxごとの空間的な関係性を知る必要がある ※mask:各RoIにおける特徴マップ 16
Mask R-CNN ■RoI Pooling(復習) ■概要 特徴マップ上における各領域ごとに、特徴マップ(固定長)を 取得 RoI Pooling ■手順 1.領域の座標(青)をPooling用に整数変換 2.Pooling用に変換した領域(赤)をm×mに分割し、 分割された領域内の格子点における max(or average)を取得 3. 2.で取得した値からm×mの特徴マップを取得 17
Mask R-CNN ■課題点(RoI Pooling) ・今の手法ではRoIの座標を丸めているので、pxごとの関係性を崩してしまいかねない →各RoIにおけるpxの具体的な関係性を取得しにくい →RoI PoolingからRoIAlignへ 18
Mask R-CNN ■RoI Align ■RoI Poolingとの変更点 RoI Align ・RoIの座標を整数に丸めない ■手順(RoI Align) 1.領域をm×mに分割 2.Bilinear interpolationによって各格子点(青) の座標を取得 3.各格子点から、分割された領域内における max(or average)を取得 ■利点(RoI Align) ・RoIの座標を丸めていないので、より厳密に各pxごとの関係性を保持しながら特徴マップを取得 19
Mask R-CNN ■Bilinear interpolation Bilinear interpolation ※ I(x,y):(x,y)に置かれた特徴量 20
Mask R-CNN ■精度 Instance segmentation 物体検出 21
アジェンダ ■ R-CNNの歴史と課題点 ■ Faster R-CNN ■ Mask R-CNN ■ 応用例 22
応用例 ■姿勢推定 予測結果(姿勢推定) ■概要 画像上の人体のキーポイント(肘や膝など)となる 1pxの点を取得 Mask R-CNN(姿勢推定) ■Mask R-CNNの変点 ・最終的なmaskの出力が、人体の各キーポイントに対する m × mのone-hotなバイナリマスク( mask )に近づく ように学習 23
応用例 ■精度 姿勢推定 24
参考文献 ・(今さらだが)Mask R-CNNについて勉強したまとめ #DeepLearning – Qiita ・インスタンスセグメンテーション (Instance Segmentation) | CVMLエキスパートガイド ・1506.01497(arxiv Faster R-CNN) ・画像認識 | 書籍情報 | 株式会社 講談社サイエンティフィク ・ 1703.06870(arxiv Mask R-CNN) ・ Selective Search(2/4)発明の概要Ⅱ | はぐれ弁理士☆AI派・ 1506.01497 ・The structure of the Mask R-CNN architecture. | Download Scientific Diagram ・Object Detection — Object Recognition Lecture ・Quick intro to Instance segmentation: Mask R-CNN 25