YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors
Real-time object detection는 컴퓨터 비전에서 매우 중요한 주제입니다. 객체 추적, 자율주행, 로봇, 등 에지 장치에서 작업이 되는 경우 작업 속도 향상에 중점을 둡니다.
Yolov7은 에지에서 클라우드, CPU, 모바일 GPU 를 전부 타겟합니다.
Jun 22, 2023
YOLOv7은 5FPS에서 160FPS 사이에서 알려진 모든 object detector 중 가장 높은 56.8% AP를 가지고 있습니다.
Introduction
Real-time object detection는 컴퓨터 비전에서 매우 중요한 주제입니다.
객체 추적, 자율주행, 로봇, 등 에지 장치에서 작업이 되는 경우 작업 속도 향상에 중점을 둡니다.
Yolov7은 에지에서 클라우드, CPU, 모바일 GPU 를 전부 타겟합니다.
본 논문에서는 아키텍처 최적화 외에도 교육 프로세스의 최적화에 초점을 두었습니다.
추론 비용을 늘리지 않고 객체 감지의 정확도를 향상시키기 위한 training cost를 줄 최적화된 모듈과 최적화 방법에 초점을 맞췄습니다.
이러한 모듈과 최적화 방법을
trainable bag-of-freebies
부릅니다.- Real-time object detection가 추론 비용을 증가시키지 않고 정확도를 크게 향상시킬 수 있도록 몇 가지 trainable bag-of-freebies 방법을 설계합니다.
- model re-parameterization , dynamic label assignment 을 적용하였습니다.
- parameter와 연산을 효과적으로 활용할 수 있는 “extend” 와 “compound scaling” 방법을 제안합니다.
- 제안한 방법은 약 40% 적은 parameter와 50%의 연산으로 sota 모델보다 빠르고 높은 정확도를 달성했습니다.
Related work
Real-time object detectors
최근 state-of-the-art real-time object detector는 YOLO와 FCOS를 기반으로 합니다.
sota object detection이 되려면 아래의 항목들이 필요합니다.
- 빠르고 강력한 백본 네트워크 아키텍쳐
- 효과적인 feature 통합 방법
- 더 정확한 detection 방법론
- robust한 손실 함수
- 율적인 라벨 할당 방법
- 효율적인 학습 방법
이 중 4,5,6 번을 활용한 새로운 trainable bag-of-freebies 방법을 설계했습니다.
Model re-parameterization
Model re-parameterization은 추론 단계에서 여러 모듈을 하나로 병합합니다.
Model re-parameterization 두 가지 일반적인 방법이 있습니다.
- 하나는 서로 다른 훈련 데이터로 동일한 모델을 여러 개 훈련한 다음 여러 훈련된 모델의 가중치를 평균화하는 것입니다.
- 다른 하나는 다른 반복 횟수에서 모델 가중치의 가중 평균을 수행하는 것입니다.
이러한 유형의 방법은 훈련 중에 다른 여러 모듈 분기로 나누고 추론 중에 여러 분기된 모듈을 완전히 동등한 모듈로 통합합니다.
그러나 제안된 모든 재매개 변수화된 모듈이 모든 아키텍처에 완벽하게 적용되지 않습니다
그래서 re-parameterization 모듈을 개발하고 다양한 아키텍처에 대한 관련 응용 전략을 설계했습니다.
Model scaling
모델 스케일링은 이미 설계된 모델을 Scale Up 또는 Scale Down하여 다양한 컴퓨팅 장치에 적합하게 만드는 방법입니다.
모델 스케일링 방법은 일반적으로 해상도(입력 이미지 크기), 깊이(레이어 수), 너비(채널 수) 및 단계(피처 피라미드 수)와 같은 서로 다른 스케일링 요소를 사용하여 네트워크 매개 변수의 양, 계산, 추론 속도 및 정확도에 대한 좋은 균형을 달성합니다.
Network architecture search(NAS)은 일반적으로 사용되는 모델 확장 방법 중 하나입니다.
NAS는 너무 복잡한 규칙을 정의하지 않고도 검색 공간에서 적절한 스케일링 팩터를 자동으로 검색할 수 있습니다.
하지만 제안된 아키텍처는 연결 기반이므로 이 모델에 대한 새로운 복합 스케일링 방법을 설계해야 합니다.
Architecture
- Extended efficient layer aggregation networks
- VoVNet
Input channel 수가 일정한 Densenet과 유사한 구조
- CSPVoVNet
input channel을 반으로 나누어 cross stage connection 과정을 거침.
- 기울기 path 증가
- 각 레이어의 밸런스 맞춘 계산량
- 메모리 traffic 감소
- ELAN
computational block 을 stack 처럼 쌓아 가장 짧은 gradient path 와 가장 긴 gradient path를 극대화
너무 많이 쌓을 경우 벨런스가 무너짐
- E-ELAN
ELAN의 단점을 보완하기 위한 방식
그룹 컨볼루션을 추가하여 계산된 feature map을 shuffle을 통해 병합
이러한 작동 방식은 computational block이 많이 쌓여도 벨런스가 무너지지 않게 합니다.
Model scaling for concatenation-based models
Model scaling의 주요 목적은 모델의 파라미터를 조정하여 다양한 환경에서 사용할 수 있는 다양한 추론 속도의 모델을 만드는 것입니다.
예를 들어, EfficientNet은 은 너비, 깊이 및 해상도를 고려하여 모델들을 만들었습니다.
Scaled Yolov4는 Model scaling 를 위해 Layer의 수를 다양하게 가져갑니다.
하지만 위의 방법은 주로 PlainNet 또는 ResNet과 같은 아키텍처에서만 유효합니다.
이러한 아키텍처가 Scale Up또는 Scale Down을 실행할 때 각 계층의 in-degree 및 out-degree는 변경되지 않으므로 각 scaling factor가 매개변수 및 계산량에 미치는 영향을 독립적으로 분석할 수 있습니다.
그러나 concatenation-based 모델인 E-ELAN은 scaling을 하면 transition layer의 input과 output의 channel이 변경되며 scaling factor를 계산할 수 없게 됩니다.
이러한 concatenation-based 모델을 위해 compound model scaling method를 제안합니다.
- Computation black의 depth를 Scaling up 하는 경우 후속 Transition 층의 input width 도 같이 Scaling이 되어야 한다.
- 또한 transition의 width가 scale 된 만큼 Partial도 width가 scale 됨으로써 compound scaling method의 초기 설계 시 모델이 가지고 있는 특성을 유지할 수 있게 된다.
따라서 computation block의 depth만 scaling을 하면 concatenation-based 모델이 알맞게 scaling이 됩니다.
Trainable bag-of-freebies
- Planned re-parameterized convolution
RepConv가 VGG에서 탁월한 성능을 달성했지만, ResNet 및 DenseNet 및 기타 아키텍처에 직접 적용하면 정확도가 크게 저하됩니다.
RepConv은 3×3 컨볼루션, 1×1 컨볼루션, Identity를 하나의 Convolution layer에 결합합니다.
이때의 Identity Connection은 ResNet의 residual이나 DenseNet의 concatenation 과정과 중복 되고 결과적으로 기능을 destroy하게 됩니다.
따라서 Yolov7은 RepConv에서 Identity Connection을 제거한 RepConvN 를 사용합니다.
- Coarse for auxiliary and fine for lead loss
Deep supervision은 심층 네트워크를 훈련하는 데 자주 사용되는 기술입니다.
주요 개념은 네트워크의 중간 계층에 보조 헤드를 추가하고 assistant loss를 통해 얕은 네트워크 가중치를 추가하는 것입니다.
일반적으로 잘 수렴되는 ResNet 및 DenseNet과 같은 아키텍처의 경우에도 Deep supervision은 여전히 많은 작업에서 모델의 성능을 크게 향상시킬 수 있습니다.
최종 출력을 담당하는 헤드를 Lead Head라고 하며, 훈련을 보조하는 데 사용되는 헤드를 Aux Head라고 합니다.
auxiliary head를 사용할 때 label assignment를 하기 위해서는 지금까지는 아래의 방법처럼 각각의 로스를 계산했습니다.
Deep supervision label assignment에서 효과적인 라벨 할당을 위해 두가지 구조를 제안합니다.
- Lead head guided label assigner
Lead head guided label assigner는 GT와 예측 결과를 기반으로 soft label을 생성합니다.
이는 Lead Head와 Aux Head 학습에 전부 사용됩니다.
Aux head 의 라벨도 Lead Head의 예측 결과를 활용하는 이유는 Lead Head 자체의 학습 능력이 강해 GT 와 Prediction의 분포와 상관관계를 더 잘 나타내기 때문입니다.
또한 Aux head는 Lead Head가 학습하지 못한 residual 정보를 학습하는 데 집중하게 됩니다.
- Coarse-to-fine lead head guided label assigner
Coarse-to-fine lead head guided label assigner은 Fine Label과 Coarse Label을 생성합니다.
Fine Label
Fine Label은 위의 Lead head guided label assigner이 생성한 label과 동일합니다.
Coarse Label
Coarse Label은 Positive sample을 할당하는 제약을 완화하여 더욱 더 많은 Grid가 Positive sample이 되도록 만듭니다.
Lead Head는 Recall과 Precision을 전부 높이도록 학습되며
Aux Head는 Lead Head만큼 학습 능력이 강하지 않기 때문에 Recall을 높이는 데 중점을 둡니다.
Other trainable bag-of-freebies
Yolov7에서 추가적으로 trainable bag-of-freebies 을 위해 사용한 방식입니다.
- Batch normalization in conv-bn-activation topology
- Implicit knowledge in YOLOR combined with convolution feature map in addition and multiplication manner
- model exponential moving average(EMA)
학습 시 가중치가 너무 크게 변동하지 않도록 평균 학습 방향을 유지하게 도와줌
Experiments
Share article