오늘은 현시점에서 YOLO계열 중 가장 성능이 좋은 YOLOv7 논문 리뷰해보겠습니다.
1. Introduction
논문 제목을 보았을 때 가장 먼저 눈에 띄는 것은 "bag-of-freebies"일텐데요. 이게 무엇이냐!?
bag-of-freebies란?
inference시에 추가적인 cost비용 없이 네트워크의 성능을 향상하기 위한 방법
(e.g. reparameterization, data augmentation, bbox regression, label smoothing)
그래서 저자들은 inference cost를 증가시키지 않는 training optimization 방법들을 제안하여 성능을 올리는 것을 목적으로 합니다.(해당 optimization은 cost가 들 수 있음) 그래서 해당 방법들이 적용된 모델이 YOLOv7이며 GPU device 타겟으로 real-time object detection이 가능하게 합니다.
그렇다면 어떤 bag-of-freebies방법을 사용하였을까요?
- Model reparameterization: Training시에 여러 개의 layer(Conv or BN)들을 학습하고 inference시에는 해당 layer들을 하나의 layer로 fusing함
- 대표적인 예시: RepVGG, Conv-BN folding
- YOLOv7에서는 RepVGG를 (조금!) 변형시킨 형태의 reparameterziation방법 제안
- Label assignment: Ground truth를 그냥 사용하는 것이 아닌 모델의 prediction, ground truth의 distribution을 고려하여 새로 soft label을 만들어냄
- 대표적인 예시: ATSS, OTA, SimOTA(in YOLOX)
- YOLOv7에서는 기존의 label assignment방법들이 다른 branch에서 도출되는 output(output이 두갈래)에 대해 dynamic target을 assignment할 수없다는 것을 문제 삼아 이를 해결함
위의 두가지 bag-of-freebies가 큰 contribution을 가지며 이외에도 아래 섹션에서 자잘한 방법들도 소개됩니다. 또한 model scaling에 있어서 자체적으로 parameter와 computation을 고려한 방법을 제시하 다양한 계열의 YOLOv7을 제공합니다. 결과적으로 YOLOv7는 설명드린 방법들을 통해 아래와 같이 뛰어난 성능을 보입니다.
2. Architecture
2.1 Extended efficient layer aggregation networks
Device의 memory cost나 computational density를 줄이기 위해 많은 연구에서 efficient한 architecture구조를 제안해왔습니다. 아래와 같이 VoVNet, CSPVoVNet, ELAN이 그에 대한 예시이며 YOLOv7 모델의 base line 구조입니다.
기존의 연구들에서 제안한 구조와 그에 대한 특징 및 장점을 소개합니다.
- VoVNet
- DenseNet과 다르게 input channel수가 일정하다는 장점이 있음
- Input channel수가 일정하기 때문에 DenseNet과 다르게 1x1 Depthwise conv를 사용안하기 때문에 Inference time이 더 빠름 (1x1 depthwise conv는 하드웨어 상으로 대부분의 GPU에 가속화되기힘든 구조)
- CSPVoVNet
- VoVNet에 Cross Stage Partial(CSP)구조를 추가한것으로 input channel을 반으로 나누어(partial) 왼쪽의 \(c\)는 그대로 transition layer에 더해짐
- 나눠진 \(c\)때문에 기존보다 gradient flow가 truncate되어 과도한 양의 gradient information을 방지함
- 뿐만 아니라 \(c\)를 나누고 transition layer에서 병합하기 때문에 gradient path는 2배로 증가하여 다양한 features를 학습할 수 있음
- VoVNet의 장점은 그대로 가져감
- ELAN
- 기존의 CSPVoVNet의 장점은 그대로 가져감
- CSPVoVNet의 가장 짧고 그리고 가장 긴 gradient path 차이를 더 극대화 시키고 이로 인해 모듈 간소화
- 가장 짧고 그리고 가장 긴 gradient path를 controll하여 deep한 네트워크도 학습가능하고 수렴도 효과적으로 잘되게함
- 단점: Computation block을 어느정도 많이 쌓아도 잘 학습됨 하지만 무한대 가까이로 쌓을 경우 stable state가 망가질것이며 이는 parameter utilization이 낮아짐
위의 ELAN의 단점때문에 YOLOv7에서는 마음껏 쌓아도 학습이 잘되도록 하기 위해 E-ELAN을 제안합니다.
- E-ELAN (YOLOv7)
- Expand, shuffle, merge cardinality를 통해 compuational block을 많이 쌓아도 학습능력이 뛰어남
- 오직 computational block만 바뀌고(scaling에 따라) transition layer는 절대 바뀌지 않음
- Process
- computational block들에 대해 channel수를 multiplier 하는 Group conv를 적용 (with \(g\) group parameter)
- CSP로 나눠진 feature와 computational block의 output feature들이 shuffle후 concatenate됨
- Merge cardinality 수행
2.2 Model scaling for concatenation-based models
기존의 EfficientNet같은 경우 model scaling(e.g. EfficientNet-b0, b1,...)을 width, depth, resolution을 조절해 가며 진행하였습니다. 하지만 위에서 제안한 E-ELAN과 같이 concatenation-based architecture는 scaling-up 또는 down시에 transition layer의 input degree(channel)이 증가하게 됩니다. (아래그림 참조)
이는 transition layer의 input, output channel이 모두 변경되고 output channel이 변경된다는 것은 그 다음 transition layer의 input channel또한 증가하여 이는 반복적으로 발생하며 scaling factor에 대해 분석이 불가능하게 됩니다.
그래서 이러한 문제점을 해결하기 위해 YOLOv7은 다음과 같은 compound model scaling method를 제안합니다.
- Computation block에만 depth scaling up을 적용하고 이에 맞춰 output channel 변경
- Computation block의 output channel이 늘어났으므로 transition layer의 width scaling up적용
- Partial 부분의 input feature는 전 transition layer의 output feature(scaled up)이므로 똑같이 partial 부분도 width scaling up됨
3. Trainable bag-of-freebies
3.1 Planned re-parameterized convolution
YOLOv7은 RepVGG의 변형을 사용하였습니다. RepVGG는 reparameterization방법을 사용한 것으로 아래와 같이 training시에는 병렬적으로 여러개의 conv+BN들을 학습하다가 inference시에 해당 conv+BN들을 하나의 conv로 reparameterization(fusing)합니다.
하지만 RepVGG의 RepConv의 identity connection은 ResNet의 residual이나 DenseNet의 concatenation을 destroy하게 됩니다. (d)를 예시로 볼때 RepConv의 identity connection과 맨 위의 input \(c\)에서 오는 residual(or concatenation) connection이 중복됨
그래서 YOLOv7에서는 RepConv에서 identity connection이 없는 RepConvN을 제안합니다. 그래서 residual이나 concatenation connection은 reparameterization되는 구조입니다.
3.2 Coarse for auxiliary and fine for lead loss
Deep supervision은 network의 중간에 auxiliary head를 추가하여 assistant loss를 도입하게 되고 이렇게 추가된 assistant loss를 통해 효과적으로 성능을 올릴 수 있습니다. 아래는 object detector는 deep supervision을 사용했을 경우와 아닌 경우를 직관적으로 보여줍니다.
해당 논문에서는 원래의 final output을 lead head, 추가된 output을 auxiliary head라 명명합니다.
위와 같이 YOLOv7은 deep supervision을 사용하게 되는 데 문제점이 발생합니다. 바로 대부분의 기존 label assignment방법들은 lead와 auxiliary head와 같이 2가지 head가 동시에 있을 경우 soft label을 만들어 낼 수 없습니다.
YOLO의 label assignment의 example
→ prediction한 bounding box와 ground truth의 IoU를 objectness의 soft label로 사용하여 오직 ground truth를 사용한것 보다 성능이 향상
그나마 아래와 같이 lead head와 auxiliary head를 독립적으로 계산하여 label assignment를 구현한 것이 최근의 연구입니다.
YOLOv7에서는 (1) lead head prediction을 사용하여 lead head와 auxiliary head학습하거나 (2) lead head prediction을 guidance로 사용하여 coarse-to-fine hierarchical labels을 생성해냅니다. coarse-to-fine hierarchical labels은 auxiliary head와 lead head 학습에 사용됩니다. 제안하는 2가지 Deep supervision label assignment의 구조는 아래와 같습니다.
3.2.1 Lead head guided label assigner
위에서 말씀드렸듯이 lead head의 prediction과 ground truth을 기반으로 soft label을 생성해냅니다. 해당 soft label은 모델의 auxiliary, lead head의 training에 사용됩니다.
이렇게 lead head의 prediction만 이용한 이유는 lead head가 상대적으로 강한 learning capability를 가지고 있어 prediction과 ground truth의 distribution이나 correlation을 더 잘 표현가능하기 때문입니다. 또한 auxiliary head가 lead head가 학습했던 내용을 학습할 수 있으므로 lead head는 학습하지 못한 다른 featurea를 학습할 수 있는 residual learning이 가능합니다.
3.2.2 Coarse-to-fine lead head guided label assigner
해당 방법도 lead head와 ground truth를 이용해 soft label을 생성합니다. 그러나 여기서는 두가지 다른 set의 soft label을 만들어냅니다.
- Coarse label: grid를 좀 더 positive target으로 여겨지도록 하여 생성된 label
- Positive sample assignment process의 constraint를 완화시키는 방법으로 만듬
- constraint를 완화했다는 것은 coarse positive grids(label)가 fine label(soft label)처럼 완벽하고 섬세한 label을 만들어 지지 않게 함
- Auxiliary head의 학습에만 사용
- Fine label: 위의 lead head guided label assigner와 같은 soft label
- Lead head의 학습에 사용
Lead head는 high recall, precision을 모두 가능하지만 auxiliary head는 그럴 능력이 없기 때문에 coarse label만 학습하게 하여 recall에만 optimization하는것을 목적으로 합니다. ( auxiliary head를 학습하는데 coarse label을 fine label처럼 만들면 결국 bad prior만 학습하게된다고 하네요.)
3.3 Other traininable bag-of-freebies
총 3가지의 추가적인 bag-of-freebies방법을 사용하였습니다.
- Batch normalization in conv-bn-activation topology
- Conv와 BN의 연결은 선형식이므로 fusing함
- 이는 RepConv에서도 수행
- Implicit knowledge (아래 그림 참조)
- 관찰(입력데이터)과 상관없이 모델에 내재된 지식을 뜻함
- YOLOR에서 제안된 방법으로 convolution feature map에 Implicit knowledge로 학습된 vector를 곱(or 더)해줌으로써 성능향상에 도움을 줌
- 해당 Implicit knowledge또한 inference시에는 이전 또는 이후 convolution layer와 fuisng 됨 (선형적인 vector의 곱셈 또는 덧셈이므로)
- EMA(Expoinential Moving Average) model
- 원래(이전의) 학습하던 방향에서 급격하게 다른 방향으로 학습하지 못하게 하여 일정한 학습방향성을 유지시켜주는 방법
4. Experiments
4.1 Experimental setup
COCO dataset에 대해 성능 평가를 진행하였으며 제안한 YOLOv7모델은 pretrained model을 사용하지 않았다고 합니다. validation set을 통해 hyperparameter를 조정하였습니다.
- Edge GPU, normal GPU, cloud GPU용 모델을 각각 YOLOv7-tiny, YOLOv7, YOLOv7-W6이라고 지칭
- YOLOv7-tiny는 leaky ReLU사용
- 나머지는 다 SiLU사용
- YOLOv7기준으로 Neck부분에 제안한 compound scaling up을 한것이 YOLOv7-X
- YOLOv7-W6기준으로 compound scaling up한것이 YOLOv7-E6, YOLOv7-D6
- YOLOv7-E6에 E-ELAN을 사용한 모델이 YOLOv7-E6E
4.2 Comparison with Baselines
4.3 Comparison with state-of-the-arts
'AI paper review > Mobile-friendly' 카테고리의 다른 글
[MobileOne] An Improved One millisecond Mobile Backbone 논문 리뷰 (0) | 2022.06.25 |
---|---|
EfficientFormer: Vision Transformers at MobileNet Speed 논문 리뷰 (1) | 2022.06.08 |
Lite Pose 논문 리뷰 (0) | 2022.04.18 |
MobileViT 논문 리뷰 (0) | 2022.03.28 |
EfficientNetv2 논문 리뷰 (0) | 2022.03.24 |