265 Views
May 15, 20
スライド概要
2020/05/15
Deep Learning JP:
http://deeplearning.jp/seminar-2/
DL輪読会資料
DEEP LEARNING JP [DL Seminar] YOLOv4: Optimal Speed and Accuracy of Object Detection Koichiro Tamura ACES, Inc. https://deeplearning.jp
Overview • • • Alexey Bochkovskiy, Chien-Yao Wang, Hong-Yuan Mark Liao – Submitted to arXiv on 2020/4 – https://arxiv.org/abs/2004.10934v1 GitHub – https://github.com/AlexeyAB/darknet – ALexeyAB氏のdarknetがYOLOv3からupload Object DetectionのスタンダートであったYOLOv3をupdate – 高FPSを保ちながら、EfficientDetに匹敵するほどの精度を実現 2
今回のサーベイの目的 1. Object Detection周りの研究の体系整理 – 【問】そもそも何を持って良いモデル/アーキテクチャとするか – 【問】研究・手法は、どのように位置付けられるか 2. YOLOv4を社会実装インパクトは? – 【問】YOLOv3やEfficientDetとの差分はどれだけインパクトがあるか? 3
Introduction
Introduction 本稿の貢献は以下の通り 1. 誰もが手軽な計算リソースで学習することができる、高速で正確なObject Detectionモデルを提案 2. 最先端のBag-of-FreebiesとBag-of-Specialsが学習時に与える影響を検証 3. CBNやPAN、SAMなどの最新のメソッドを効率化し、Single GPUでの学習に適用できるようにした – なお、YOLOv4は、low computationを目的にした研究・モデルではない 5
Related Works
【参考】「優れた」Object Detectionとは? • 高精度 – • • ミスが看過されないタスクへの適用(測量など)や、後続のタスクにObject Detectionの精度が依存する場合(trackingなど) 高速 – 推論時間が速い: 速度が重視されるタスクへの適用(自動運転・軍事など)や、後続のタスクの処理時間のボトルネックになる場合 – 訓練時間が速い: 計算資源が乏しい場合や、大量の実験を繰り返す必要がある場合 軽量 – モデルパラメタが少ない, FLOPs数が少ない, モデルファイルサイズが少ない – モバイルやエッジでも動かしたい場合、CPUや省メモリ・電力で動かしたい場合 7
Object Detectionの体系整理 • • • Model/Architecture – backbone – neck – head 学習時のテクニック – Data Augmentation – データ不均衡問題への対策 – 目的関数 推論時のテクニック・追加モジュール – 受容野の拡張・強化 – Attention module – Feature integration – 活性化関数 – Post process 8
Object Detectionの体系整理 • • • Model/Architecture – backbone – neck – head 学習時のテクニック – Data Augmentation – データ不均衡問題への対策 – 目的関数 推論時のテクニック・追加モジュール – 受容野の拡張・強化 – Attention module – Feature integration – 活性化関数 – Post process 9
Object detection models • • backbone – GPU: VGG, ResNet, ResNeXt, DenseNet – CPU: SqueezeNet, MobileNet, ShuffleNet neck – Additional blocks: SPP, ASPP, RFB, SAM – Path-aggregation blocks: Pyramid Network(FPN), Path Aggregation Network(PAN), BiFPN, NAS-FPN • • Top-down Bottom-upのアーキテクチャ head – Two-stage: R-CNN系列 – One-stage: • Anchor-based(NMS必要): YOLO, SSD, RetinaNet • Anchor-free(NMS不必要): CenterNet, CornerNet, FCOS – 参考: [DL輪読会]Objects as Points, https://www.slideshare.net/DeepLearningJP2016/dlobjects-as-points 10
Object detection models 11
Object Detectionの体系整理 • • • Model/Architecture – backbone – neck – head 学習時のテクニック – Data Augmentation – データ不均衡問題への対策 – 目的関数 推論時のテクニック・追加モジュール – 受容野の拡張・強化 – Attention module – Feature integration – 活性化関数 – Post process 12
Bag of freebies • 学習時のテクニック・手法 – Data Augmentation • 画像情報に対するデータ拡張 – Photometric distortion(明るさ、コントラスト、色相、彩度、ノイズ), geometric distortion(スケーリング、クロップ、反転、回転) • オクルージョン – 画像レベル » Random erase, cutout: 画像内の矩形領域を塗りつぶす » hide-and-seek, grid mask: 複数の矩形領域を選択し、塗りつぶす – 特徴量マップレベル » DropOut, DropConect, DropBlock • 組み合わせ – MIxUp: 2枚の画像を用いて重ね合わせ – CutMix: トリミングした画像を他の画像の矩形領域に被せる – Style transfer GAN 13
Bag of freebies • 学習時のテクニック・手法 – データセットの偏りに対する手法 • ラベルクラス間のデータ量不均衡問題 – two-stage modelの場合: hard negative example mining, online hard example mining – one-stage modelの場合: focal loss • ラベルクラス間の関連性の不均衡問題 – label smoothing, 蒸留 14
Bag of freebies • 学習時のテクニック・手法 – 目的関数 • MSE誤差 – Bboxの{x_center, y_center, w, h} or {x1, y1, x2, y2}に対する2乗誤差 • IoU誤差 – MSE誤差では、Bboxの4点が独立変数として扱われる – スケール不変の表現であるため、スケールに応じて損失が大きくなると言う問題を解決できる – 最近はIoU誤差を用いる研究が進んでいる – GIoU, DIoU, CIoU 15
Object Detectionの体系整理 • • • Model/Architecture – backbone – neck – head 学習時のテクニック – Data Augmentation – データ不均衡問題への対策 – 目的関数 推論時のテクニック・追加モジュール – 受容野の拡張・強化 – Attention module – Feature integration – 活性化関数 – Post process 16
Bag of specials • 推論時のテクニック・手法 – 受容野の強化 • SPP ASPP, PFB Module – Max-pooling演算 – YOLOv3ではkernel size = 𝑘 ∈ {1,5,9,13}, ストライド 1 のmax-poolingの出力を連結して出力するようにした – わずかな計算量の増加で高い精度を実現 – Attention Module • Squeeze and Excitation(SE) – チャネル方向のアテンション – 精度向上をわずかな計算量増加で行うことができるが、GPUの場合は10%ほどの推論時間増加が見られるので注意 – 上述した理由から、CPU計算(ex: モバイル)向き • Spatial Attention Module(SAM) – 空間方向のアテンション – 0.1%の計算量の増加で、ImageNet でのClassificationにおいてtop1の精度を0.5%上昇 – GPUでの推論速度にも影響を与えない 17
Bag of specials • 推論時のテクニック・手法 – Feature integration • SFAM, ASFF, BiFPN – Skip-connection, hyper-column – 低レイヤーの特徴空間と高レイヤーの特徴空間を統合する – マルチスケールに連結された特徴量マップを重み付けして統合して推論する手法(SFAM)など – 活性化関数 • ReLUに代表される様々な活性化関数 – ReLUの登場によって勾配消失問題が大幅に改善 – ReLU6, hard-swish: 量子化ネットワークに特化した活性化関数 – 後処理 • NMS – Anchor-freeなモデルはNMSの必要性がないと言う点で優れている 18
Proposed Method
Methodology 基本的には、YOLOv3のアーキテクチャの改良です 20
参考: YOLOv3のアーキテクチャ 引用: A Closer Look at YOLOv3, https://www.blog.dmprof.com/post/a-closer-look-at-yolov3 21
Methodology • Backbone – CSPDarknet • CSPResNetXt50, CSPDarknet53, EfficientNet B3の選択肢 – Image Classification のタスク(ILSVR2012(ImageNet))では、 CSPResNetXt50が優れていたが、Object Detectionのタスク(MS COCO)では、CSPDarknet53 が最も優れていた » Object DetectionとImage Classificationのtask性質が異なる。小さな物体を複数検出・識別する必要性がある • [CVPR2019, workshop]CSPNet: A new backbone that can enhance learning capability of CNN. 22
Methodology • Neck – SPP(Spatial pyramid pooling)をCSPDarknet53に追加 • [15.04] Spatial pyramid pooling in deep convolutional networks for visual recognition. – YOLOv3のFPNの代わりにPANetを採用 • 3つの異なるbackbone levelsからのaggregationで、FPN(Feature Pyramid Network)を用いる代わりにPANの構造を利用 – [CVPR2018]Path Aggregation Network for Instance Segmentation – YOLOv4では、さらにPANの構造に以下の改良(?)を加えている 23
Methodology • Head – YOLOv3のHeadを採用 • Anchor-basedな手法 • Bag of Freebies(BoF, 学習時の手法) – Backbone: CutMix, Mosaic data augmentation, DropBlock regularization, class label smoothing – Detector(head): CIoU-loss, CmBN, DropBlock regularization, Mosaic data augmentation, self-adversarial training, Eliminate grid sensitivity, Using multiple anchors for a single ground truth, Cosine annealing scheduler, optimal hyperparameters, random training shape • Bag of Specials(BoS, 推論時のテクニック・追加モジュール) – Backbone: Mish activation, Cross-stage partial connection, Multi input weighted residual connection – Detector(head): Mish activation, SPP-block(improved, 前述), SAM-block(improved), Pan path-aggregation block, DIoU-NMS 24
Experiments
Experiments • Image Classification(ImageNet)と、Object Detection(MS COCO)でそれぞれ実験 – とにかくそれぞれのテクニック・手法を(ある程度の仮説を立てながらも)総当たりで実験し、良いものを採用するた めの実験を行う – 結果として、先述したProposed methodにたどり着いた – 以下の軸で実験 1. Influence of different features on Classifier training 2. Influence of different features on Detector training 3. Influence of different backbones and pretrained weightings on Detector training 4. Influence of different mini-batch size on Detector training 5. GPU architecture 1. Maxwell 2. Pascal 3. Volta 26
Results 高速(高FPS)のアルゴリズムの中で、最も精度が良い 27
Conclusion
サーベイの目的と考察・結論 1. Object Detection周りの研究の体系整理 – 【問】そもそも何を持って良いモデル/アーキテクチャとするか – 【答】正確さ・速さ・軽量さの3点でモデル・アーキテクチャを評価し、実用において何を重視するか、また論文は 何を主張しているかを気にする必要がある – 【問】研究・手法は、どのように位置付けられるか – 【答】Model/architecture、学習時のテクニック、推論時/追加モジュールの大きく3つに整理され、それぞれのタス ク・目的もブレイクダウンして手法を整理すると良い。YOLOv3=>YOLOv4への改善については、メタ的には広義のの アーキテクチャ・手法の探索とチューニングをひたすらに行なっている印象も抱く 2. YOLOv4を社会実装インパクトは? – 【問】YOLOv3やEfficientDetとの差分はどれだけインパクトがあるか? – 【答】YOLOv3よりも正確で、EfficientDetよりも速い。Totalで最もバランスの良いアルゴリズムになっている。実課題 を解く上で30fpsを超える処理が要求されることは多くはないため、物体認識それ自身を目的にしたタスクでの実装 価値は高くないが、Object Detectionを前処理として行うタスク(trackingなど)については、Object Detectionの処理時間 がボトルネックにならないことの価値は大きい 29