[Paper Review] YOLOv7, Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors
Paper : https://arxiv.org/pdf/2207.02696.pdf
GitHub : https://github.com/WongKinYiu/yolov7
YOLO v3를 다루었던게 엊그제 같은데 벌써 v7이 릴리즈 되었네요 ㅎㅎ 시간이 참 빠른 듯 합니다. ConvNeXt도 올해 나온 논문인데, 벌써 따라 잡아버렸네요! YOLO 자체가 진입 장벽도 쉽고, 코드도 잘 문서화 되어있어서 사용성이 좋은 것 같습니다. 중요한 내용만 휘리릭 읽고 넘어가보겠습니다.
일단 논문 제목부터 눈이 갑니다.
Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors
bag-of-freebies 이란 inference 과정 중에 추가 계산 비용을 발생시키지 않으면서 네트워크의 성능을 향상시키기 위해 조합하여 사용할 수있는 여러 가지 기법들을 말한다고 합니다. 들리는 말에 의하면 joseph redmon이 YOLO를 더 이상 연구하지 않은 뒤에 후임자가 YOLO v4를 개발할 때 이를 도입했다고 합니다. 예를 들면 Label Smoothing 등이 있습니다.
Abstract
YOLO v7은 5 ~ 160 FPS 범위의 속도와 정확도 측면에서 현재까지 나온 모든 Object Detector의 성능을 능가한다고 합니다. V100 GPU에서 30 FPS 이상의 현재까지 알려진 Real-time Detector 중 가장 높은 정확도인 56.8% AP를 달성한다고 합니다. YOLOv7-E6는 Transformer 기반 검출기인 SWIN-L Cascade-Mask R-CNN 보다 속도는 509%, 정확도 2%를 능가하며, Convolution 기반 검출기인 ConvNeXt-XL Cascade-Mask R-CNN 보다 속도는 551%, 정확도는 0.7% 앞선다고 합니다.
대단하네요... 그렇다면 도대체 어떻게 이런 성능을 달성했는지 알아보도록 하겠습니다. 먼저 본 논문의 초점은 객체탐지의 정확도를 향상 시키기위한 training cost를 강화할수도 있겠지만 inference cost를 증가시키지 않는 최적화 된 모듈과 최적화 방법을 사용했다고 합니다. 이렇게 제안한 모듈과 최적화 방법을 trainable bag-of-freebies 라고 합니다.
Introduction
최근에 model re-parameterization 방법이나 dynamic label assignment 방법이 네트워크를 학습 및 객체 탐지 분야에서 중요한 주제가 되어왔습니다. 따라서 본 논문에서도 model re-parameterization를 위해 서로 다른 네트워크의 레이어에 적용할 수 있는 model re-parameterization 전략을 gradient propagation path 개념으로 분석하고, planned re-parameterized model을 제안합니다. 또한 dynamic label assignment 방법을 사용하여 multiple output layer를 사용하여 모델을 학습하게 될 경우 새로운 문제가 발생하게 됩니다. 이에 따라 multiple output layers가 있는 모델에 dynamic label을 할당하는 coarse-to-fine lead guided label assignment 방법을 제안합니다.
본 논문의 contribution은 아래와 같습니다. (다 그런건 아니지만 보통 논문의 contribution은 3개인데.. YOLO v7은 4개나 되네요 ㅎㅎ)
1. real-time object detection 이면서 inference cost를 증가시키지 않고도 정확도를 향상시킬 수 있는 trainable bag-of-freebies 방법을 제안
2. re-parameterized module이 original module을 대체하는 방법과 different output layers에 대한 dynamic label assignment strategy 방법 + 여기서 발생하는 어려움을 해결하기 위한 방법 제안
3. parameter 계산을 효과적으로 활용할 수 있는 real time object detector를 위한 "extend" 및 "compound scaling" 제안
4. 본 논문에서 제안한 방법은 SOTA 방법 보다 parameter 수를 40%, 계산량을 50% 감소시킬 수 있으며 더 빠른 inference time과 더 높은 accurcy를 달성
Architecture
Extended efficient layer aggregation networks
아래 그림 (c)에서 ELAN은 “How to design an efficient network?.”이라는 설계 전략을 고려한 모델입니다. 여기서 가장 짧은 그리고 가장 긴 gradient path를 제어함으로써 deeper network가 효과적으로 학습하고 수렴할 수 있게끔 합니다. 따라서 그림 (d)와 같이 E-ELAN(Extended-ELAN)을 제안했습니다. large-scale ELAN에서는 gradient path length와 computainal block의 stack 수와 관계 없이 stable state에 도달할 수있습니다. 더 많은 computainal block들이 쌓이게 되면 이러한 상태가 파괴될 수 있으며 parameter utilization rate가 감소한다고 합니다.
제안된 E-ELAN은 expand, shuffle, merge cardinality를 사용하여 original gradient path를 파괴하지 않고 nework의 learning ability를 지속적으로 향상시킬 수 있습니다. 아키텍쳐 측면에서 E-ELAN은 computational block의 아키텍쳐만 변경하는 반면 transition layer의 아키텍쳐는 변경되지 않습니다. 이러한 전략은 grup conv를 사용하여 computational block의 channel과 cardinality를 확장하는 것입니다. computational layer의 모든 block에 동일한 group parameter와 channel multiplier를 적용하고, 각 computational block에서 계산된 feature map은 설정된 parameter g에 따라 group으로 섞인 다음 함께 연결됩니다. 이 때 각 feature map group의 channel 수는 원래 아키텍쳐 수와 동일합니다. 마지막으로 merge cardinality를 수행하기 위해 g개의 feature map group을 추가합니다.
Model scaling for concatenation-based models
model scaling의 주요 목적은 모델의 일부 attribute를 조정하고 inference time의 요구를 충족하기 위해 다양한 scale의 모델을 생성하는 것 입니다. 예를 들면 EfficientNet의 scaling model은 width, depth, resolution을 고려했습니다. 또한 scaled-YOLOv4는 stage 수를 조정했습니다. 이러한 방법들은 PlainNet 또는 ResNet과 같은 아키텍쳐에서 사용됩니다. 이러한 아키텍처가 scaling up 또는 scaling down을 실행할 때 각 레이어의 in-degree 및 out-degree는 변경되지 않으므로 scaling 요소가 매개변수 및 계산 양에 미치는 영향을 독립적으로 분석할 수 있습니다. 그러나 이러한 방법을 concatenation-based architecture에 적용하면 scaling up or down을 깊게 수행할 때 concatenation-based computational block 다음에 있는 translation layer의 in-degree가 아래 그림 (a) 및 (b)와 같이 감소하거나 증가합니다.
그렇기 때문에 concatenation-based 모델의 경우 서로 다른 scale facotr를 별도로 분석할 수 없고 함꼐 고려해야합니다. 예를 들어 scaling-up depth는 transition layer의 입력 채널과 출력 채널 간의 scale 변경을 일으키므로 모델의 하드웨어 사용량을 감소시킬 수 있습니다. 따라서 concatenation-based model을 위한 compound model scaling method을 제안해야합니다. computational block의 depth factor를 조정할 때도 해당 block의 출력 채널 변경도 계산해야합니다. 그 다음 transition layer에 동일한 변화량으로 width factor scaling를 수행합니다. 그 결과는 위 그림 (c)에 나타나 있습니다.
Trainable bag-of-freebies
Planned re-parameterized convolution
RepConv는 VGG에서 우수한 성능을 달성했지만 ResNet, DenseNet 및 기타 아키텍쳐에 직접 적용하면 정확도가 크게 떨어집니다. 따라서 re-parameterized convolution을 다른 네트워크와 어떻게 결합해야하는지 분석하기 위해 gradient flow propagation path를 사용하며, planned re-parameterized convolution을 설계했습니다.
RepConv는 실제로 3x3 convolution, 1x1 convolution 및 identity connection을 하나의 convolutional layer에 결합합니다. RepConv와 다른 아키텍처의 조합 및 해당 성능을 분석한 후 RepConv의 identity connection이 ResNet의 잔차와 DenseNet의 연결을 파괴하여 different feature maps에 대해 더 다양한 gradient를 제공한다는 것을 발견했습니다.
따라서 본 논문에서는 RepConv with-out identity connection (RepConvN)을 사용하여 planned reparameterized convolution의 아키텍쳐를 설계합니다. 여기서 residual or concatenation이 있는 conv layer가 re-parameterized convolution로 대체될 떄 no identity connection이 없어야 합니다. 아래 그림은 PlainNet 및 ResNet에서 사용되는 "planned re-parameterized convolution" 예시를 보여주며, residual-based model 와 concatenation-based model 에서 planned re-parameterized convolution 실험은 ablation에서 나옵니다.
Coarse for auxiliary and fine for lead loss
본 논문에서는 final output을 담당하는 head를 lead head라고 부르고, 학습을 보조하는데 사용되는 head를 auxiliary head라고 합니다. 과거에는 deep network traind에서 label assignment가 일반적으로 실제 GT를 직접 참조하고 주어진 규칙에 따라 hard label을 생성했습니다. 그러나 지난 몇 년동안 객체검출 연구에서는 네트워크에 의한 prediction output의 품질과 분포를 사용한 다음 ground truth와 함께 몇 가지 계산 및 최적화 방법을 사용하여 신뢰할 수 있는 소 soft label을 고려했습니다.
본 논문에서는 네트워크 예측 결과를 GT와 함께 고려하여 soft label을 할당하는 메커니즘을 “label assigner.”라고 합니다. auxiliary head 또는 lead head와 상관없이 Deep supervision이 필요합니다.
Lead Head Guided Label Assigner는 주로 Lead Head의 예측 결과와 Ground Truth를 기반으로 계산되며 최적화 과정을 통해 Soft Label을 생성합니다. 이 Soft Label Set는 auxiliary head 또는 lead head 모두에 대한 target training mode로 사용됩니다. 이렇게 하는 이유는 lead head가 상대적으로 강력한 학습 능력을 가지고 있기 때문에 생성된Soft Label이 더 잘 대표되어야 하기 때문입니다. 또한 이러한 학습을 일종의 generalized residual learning으로 볼 수 있습니다. shallower auxiliary head가 lead head가 학습한 정보를 직접 학습하게 함으로써 lead head는 아직 학습되지 않은 learning residual information에 더 집중할 수 있습니다.
Coarse-to-fine lead head guided label assigner는 lead head와 GT의 예측 결과를 사용하여 Soft Label을 생성했습니다. 본 논문에서는 이 과정에서 두 개의 다른 soft label(coarse label and fine label)을 생성합니다. auxiliary head의 학습 능력이 lead head만큼 강하지 않기 때문이며, 학습해야 할 정보를 잃지 않기 위해 객체에서 auxiliary head의 recall 최적화에 중점을 두게 됩니다.
이는 학습 과정에서 coarse label과 fine label의 importance가 동적으로 조정되도록 하고 fine label의 optimizable upper bound을 coarse label보다 항상 높게 만듭니다.
Experiments