YOLO 버전이 v7 버전으로 논문이 발표되었다. papers with code에서 쉽게 확인할 수 있으며 이 논문은 모듈 최적화 기법 위주이다. CSPNet이라던지 RepVGG 같은 관련 네트워크들을 간단하게 공부하고 논문을 이해하는 것을 추천한다.
아래는 official github이며 ReadMe를 보면 쉽게 사용 방법을 알 수 있다.
https://github.com/wongkinyiu/yolov7
또한 본 논문은 아래와 같다.
Wang, Chien-Yao, Alexey Bochkovskiy, and Hong-Yuan Mark Liao. "YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors." arXiv preprint arXiv:2207.02696 (2022).
그렇다면 간략하게 논문에 대해 알아보도록 한다.
- Abstract
YOLOv7이 알려진 모든 detector들보다 정확도와 속도 면에서 성능을 능가하고 있다고 설명한다. 또한 이 네트워크를 오직 COCO 데이터셋으로만 훈련했다고 설명한다. 다른 네트워크들보다 확실히 좋은 성능을 내고 있다는 것으로 abstract에서 소개하고 있다.
- Introduction
이 논문에서 제안한 real-time detector는 주로 mobile GPU나 GPU 장치를 지지할 수 있다는 것을 희망한다고 한 것을 보아 GPU가 필요하다는 것으로 이해하였다. 또한 이 논문에서 제안된 방법들의 개발 방향을 현재 real-time detector들의 개발 흐름과 다르다고 설명한다. 훈련 과정의 최적화에 집중했다고 한다. 그래서 중점적인 것이 정확도를 향상시키기 위한 훈련 cost를 강화화는 최적화된 모듈과 최적 기법이라고 설명한다.
논문의 제목에서 나오는데 제안된 모듈들과 최적 기법들을 trainable bag-of-freebies라고 칭한다.
최근에, model re-parameterization이나 dynamic label assignment가 네트워크 훈련과 객체 인식에서 중요한 토픽이 되고 있는데, 여기서는 아래와 같은 방법을 사용한다.
model re-parameterization - gradient propagation path의 개념을 가진 다른 네트워크들 층에 적용가능한 model re-parameterization 전략들을 분석하고 re-parameterized model를 제안한다.
최종적으로 논문 요약은 아래와 같다. (급하면 이것만 보면 될 듯)
(1) - 몇몇의 훈련 가능한 bag-of-freebies들의 개발이다. (이는 inference cost를 증가시키지 않고 정확도 증가)
(2) - 논문에서 두 가지 이슈 발견. 첫 번째는 어떻게 re-parameterized module이 본래 module를 대체할지이며 두 번째는 어떻게 동적인 라벨 할당 전략이 다른 output layer들에 대한 배치를 다룰지이다. 그래서 이 이슈들로부터 오는 어려움들을 address 하는 방법을 제안한다.
(3) - 파라미터들과 computation을 효율적으로 활용할 수 있는 "extend"와 "compound scaling" 방법들을 제안한다.
(4) - 위 방법은 약 40% 파라미터와 50% 계산량을 줄일 수 있었다고 설명하고 더 빠른 inference 속도와 더 높은 정확도를 가지게 했다고 설명한다.
- Related Work
1. Real-time object detectors
보통 SOTA detector가 되기 위해서 아래와 같은 특징들이 필요하다.
(1) a faster and stronger network architecture (더 빠르고 강력한 아키텍처)
(2) a more effective feature integration method (더 효율적인 feature 통합 방법)
(3) a more accurate detection method (더 높은 정확도)
(4) a more robust loss function (더 강건한 손실 함수)
(5) a more efficient label assignment method (더 효율적인 label 할당 방법)
(6) a more efficient training method (더 효율적인 훈련 방법)
이 논문에서는 self-supervised learning이나 knowledge distillation 방법은 딱히 관심에 두지 않게 되고 새로운 trainable bag-of-freebies 방법 디자인에 초점을 맞추게 된다. 즉 이것은 위에서 언급한 (4), (5), (6)에 관련이 있다.
2. Model re-parameterization
model re-parameterization 기법은 inference 단계에서 다양한 computational 모듈들을 하나로 통합하는 것이다. (RepVGG 읽어보면 이해하기 편할 것이다.) 이것은 앙상블 기법이라고도 여겨질 수 있다고 언급한다. 또 이 앙상블은 두 가지 범주로 나눌 수 있는데 이는 module-level ensemble과 model-level ensemble이다.
model level re-parameterization을 위한 흔한 두 가지 방법이 있는데 이는 아래와 같다.
(1) 다른 훈련 데이터로 다양한 동일 모델을 훈련 시키고 가중치를 average 하는 것이다.
(2) 다른 반복 횟수로 훈련된 모델의 가중치를 average 하는 것이다.
최근에는 module level re-parameterization이 더 인기있는 주제인데 이는 한 모듈을 훈련동안 다양한 모듈 (동일할 수도 있고 다를 수도 있음.)으로 나눈 후에 inference 동안에 이 다양한 branched module들을 동일한 모듈로 합치는 것이다. 다만, 이 방법론들이 모든 아키텍처에 적용되는 것이 아니므로 새로운 re-parameterization 모듈을 개발했다고 나와있다.
3. Model scaling
2번은 많이 못들어봤을 지도 모르지만 비전 분야 전공자라면 scaling 관련은 상당히 많이 들어봤을 만한 주제이다.
(EfficientNet이 나왔을 당시도 최적의 compound scaling을 해보자는 취지로 압도적인 성능을 기록했었다.)
Model scaling 은 디자인된 모델 scale을 up 하거나 down 하는 과정으로 이를 통해 다양한 장치에서 컴퓨팅 가능하게 한다. 보통은 resolution, depth, width, stage와 같은 scaling factor를 사용한다.
NAS (Network architecture search)는 흔한 model scaling 방법 중 하나이며 한 번쯤은 접해보는 것을 추천한다. (개인적으로) 이것은 자동으로 적합한 scaling factor들을 계산해주게 된다. 다만 이것은 매우 복잡도가 높다는 단점이 있다.
논문 저자들은 거의 모든 scaling 방법들이 개별적인 scaling factor를 독립적으로 분석하는 것을 발견했다.
최종 결론은 제안된 아키텍처가 concatenation 기반이기 때문에 이 모델에 맞는 새로운 compound scaling method를 디자인 해야했다는 것이다.
- Architecture
1. Extended efficient layer aggregation networks
위 그림에서 나오는 (a), (b)에 대한 간단한 설명은 생략한다. 이 논문에서는 Extended-ELAN (E-ELAN)을 제안하게 되는데 이는 (c)의 ELAN의 확장 버전이다. ELAN은 깊은 네트워크가 효율적으로 learn과 converge 하는 것을 발견하였다. 제안된 E-ELAN은 original gradient path를 파괴하는 것 없이 네트워크의 learning 능력을 강화하는 능력을 달성하기 위해 expand(확장), shuffle(섞음), merge(통합) cardinality를 사용한다고 설명한다. 아키텍처 측면에서 보면 computational block만 바뀌었다고 설명한다. 전략은 group convolution을 사용하는것인데 이는 computational block들의 채널과 cardinality를 확장하게 된다.
group convolution이란 입력의 채널들을 여러 개의 그룹으로 나누어 convolution을 수행하는 방식이다. 한 computational layer의 모든 computational block들에 같은 group parameter와 채널 multiplier를 적용하게 된다. 그런 후에 각 computational block에 의해 계산된 특징 맵은 set group parameter g를 통해 g group들로 섞어지게 된다. 그리고 그것들을 concatenate 한다. 이 때, 특징 맵의 각 그룹에 채널 수는 본래 아키텍처에 채널 수와 같게 된다. 그리고 최종적으로 merge cardinality를 수행하기 위해 특징 맵의 g 그룹들을 추가하게 된다.
(사실상 위 내용을 이해하기 위해서는 CSPNet을 비롯한 inference cost optimization 과정을 좀 이해할 필요가 있는데 저도 이해하기 어려웠다..)
2. Model scaling for concatenation-based-models

결론부터 설명하자면 위 그림의 (c) 모델을 사용하게 된다. 저자들이 parameter와 computation의 양에 대해 각 scaling factor의 영향을 분석할 수 있었는데 만일 논문의 앞에서 설명한(EfficientNet, scaled YOLOv4 같은) 것을 concatenation-based model에서 수행했을 때 (본래는 ResNet이나 PlainNet에서 수행함), depth에 대해 스케일을 up 하거나 down을 수행했을 때 concatenation block 바로 뒤에 나오는 transition layer의 in -degree가 감소하거나 증가하게 될 것이라고 설명한다. 위 현상으로부터 concatenation-based model에서 scaling factor들을 독립적으로 분석할 수 없다는 것을 알 수 있고 통합적으로 고려돼야 한다고 언급한다.
그래서! concatenation-based model을 위한 compound model scaling method가 새롭게 제안해야 한다고 언급하며 이는 computational block의 depth factor를 scaling 할 때, 블록의 output channel의 변화를 계산해야 한다고 나와있다. 그런 후에 transition layer들에 변화의 같은 양에 대해 width factor scaling을 수행하였고 이는 그림 (c)와 같다. 그래서 제안된 compound scaling 방법은 초기 design에 가졌던 모델 특성을 유지하고 최적 structure를 유지하게 된다.
- Trainable bag-of-freebies
1. planned re-parameterized convolution
RepConv가 VGG에서 훌륭한 성능을 달성했지만, 다른 ResNet 같은 곳과 같은 아키텍처에서 사용하면 정확도가 상당히 떨어지는 현상을 발견하였다. RepVGG는 아래와 같다.
그래서 gradient flow propagation path들을 사용하여 어떻게 re-parameterized convolution이 다른 네트워크들과 결합돼야 하는지를 분석했다. 그래서 planned re-parameterized convolution을 디자인 하게 됐고 이는 아래와 같다.
여기서, RepConv에서 identity connection이 ResNet에서 residul이나 DenseNet에서 concatenation을 파괴하는 것을 발견하였고 이러한 이유로 RepConv를 identity connection 없는 RepConvN을 사용하기로 하였다.
2. Coarse for auxiliary and fine for lead loss
Deep supervision의 메인 concept은 추가 auxiliary head를 추가하고 얕은 네트워크에 보조적인 loss를 가이드로 제공하는 것이다.
이 논문에서 final output에 관련있는 head를 lead head라고 부르고 훈련을 돕는데 사용되는 head를 auxiliary head라고 지칭하겠다고 나와있다.
다음으로 label 할당 이슈를 언급하게 되는데 과거에는 직접적으로 ground truth를 가져와서 hard label를 생성하였다. 다만 최근에는 네트워크에 의한 예측 결과의 quality와 distribution을 종종 사용하게 된다. 그리고 ground truth와 함께 고려하여 reliable soft label을 생성하는 몇몇의 계산과 최적 기법을 사용하게 된다.
예를 들어서 YOLO 같은 경우에 bounding box 예측과 ground truth 간의 IoU 지표를 사용한다.
논문 저자들은 soft label assigner를 개발하는 동안 새로운 derivative 이슈를 발견하게 된다.
"어떻게 auxiliary head와 lead head에 soft label을 assign 할까?"
현재 가장 인기있는 방법의 결과가 위 그림에서 (c)로 나타난 그림이다. 이는 auxiliary head와 lead head를 분리하고 그들 자신의 예측 결과와 ground truth를 label 할당을 실행하기 위해 사용하게 된다.
이 논문에서 제안된 방법은 새로운 label 할당 방법이며 auxiliary head와 lead haed 둘 다 lead haed 예측으로 가이드하는 방법이다. 다시 말해서 lead head 예측을 coarse-to-fine 계층의 label들을 생성하기 위한 guidance로 활용하겠다는 것이다.
Lead head guided label assigner는 주로 lead head의 예측 결과와 ground truth에 기반하여 계산된다. 그리고 최적화 과정을 통해서 soft label를 생성하게 된다. 이 soft label set은 auxiliary head와 lead head를 위한 타깃 훈련 모델로 사용된다.
coarse-to-fine lead head guided label assigner는 예측된 lead head의 결과와 ground truth를 soft label를 생성하기 위해 사용된다. 여기서 auxiliary head의 learning 능력이 lead head 보다 약하기 때문에 학습 돼야 할 정보의 유실을 피하기 위해 auxiliary head의 recall을 최적화 하는데 초점을 두었다. lead head의 output에 대해서 높은 정확도 결과들을 필터링할 수 있다. 그러나 coarse label의 추가적인 weight가 fine label와 가까워지면 성능이 안좋아질 수 있다. 그러므로 추가적인 coarse positive grids가 덜 영향 받게 하기 위해서는 디코더에 제한을 주게 된다. (이 부분은 appendix를 읽어볼 필요가 있을 듯 하다.)
3. Other trainable bag-of-freebies
아래와 같은 사항들이 있다.
(1) Batch normalization in conv-bn-activation topology - batch normalization layer를 conv layer에 직접 연결하여 inference 단계에서 batch normalization의 평균과 분산을 conv layer의 바이어스와 weight와 통합하게 한다.
(2) Implicit knowledge of YOLOR combined with convolution feature map in addition and multiplication manner - YOLOR의 Implicit knowledge는 inference 단계에서 pre-computing으로 벡터를 간단히 할 수 있었다.
(3) EMA model
Comments
Post a Comment