논문 출처 : https://arxiv.org/abs/2207.02696
Abstract
YOLOv7은 5FPS에서 160FPS 범위에서 속도와 정확성 모두 뛰어나며, GPU V100에서 30FPS이상의 Real-Time Object Detection이 가능하고 56.8%의 mAP를 달성했다. YOLOv7-E6 모델 (56 FPS V100, 55.9% AP)은 transformer 기반 detection인 SWIN-L Cascade-Mask R-CNN(9.2 FPS A100, 53.9% AP)에 비해 속도에서 509%와 정확도에서 2%에서 우수하며, 컨볼루션 기반 탐지기인 ConvNext-XL Cascade-Mask R-CNN (8.6 FPS A100, 55.2% AP)에 비해 속도에서 551% 빨라지고, 정확도에서 0.7% 나아졌다. 또한, YOLOv7은 YOLOR, YOLOX, Scaled-YOLOv4, DETR, Deformable DETR, DINO-5scale-R50, ViT-Adapter-B 및 기타 많은 객체 탐지 모델들보다 속도와 정확도가 뛰어나다. 또한, YOLOv7은 다른 데이터셋이나 사전 훈련된 가중치 없이 MS COCO 데이터셋만을 사용하여 처음부터 학습되었다.
Introduction
최근 몇 년간, real-time object detection은 다양한 edge device를 위해 개발되고 있다. 예를들어, MCUNET, NanoDet의 개발은 저전력 단일 칩을 생성하고 edge CPU에서의 추론 속도를 개선하는데 중점을 두었고, YOLOX와 YOLOR과 같은 방법은 다양한 GPU에서 추론 속도를 개선하는데 중점을 두었다. 최근에는 실시간 객체 탐지기의 개발이 효율적인 아키텍처 설계에 집중되고있고, CPU에서 사용할 수 있는 실시간 객체 탐지기는 주로 MobileNet, ShuffleNet, GhostNet을 기반으로 설계되었다. GPU를 위한 주요 실시간 객체 탐지기는 주로 ResNet, DarkNet, DLA를 사용하고 CSPNet strategy로 아키텍처를 최적화한다. 이 논문에서 제안하는 방법의 개발 방향은 현재 주요 real-time object detection과는 좀 다르다. 아키텍처 최적화 외에도, 훈련 과정의 최적화에 중점을 둔다. 여기서 제안하는 모듈과 최적화 방법을 'trainable bag of freebies'라고 부른다.
최근에 모델 재파라미터화(re-parameterization)와 동적 레이블 할당(dynamic label assignment)이 네트워크 훈련 및 객체 탐지에서 중요한 주제로 부각되었다. 이러한 새로운 개념이 제안된 이후, 객체 탐지의 훈련에서 많은 문제가 발생했다. 모델 재파라미터화에 대해서는, gradient 전파 경로의 개념을 적용하여 다양한 네트워크의 레이어에 적용 가능한 모델 재파라미터화 전략을 분석하고, 계획된 re-prameterization 모델을 제안한다. 또한, 동적 레이블 할당 기술을 사용할 때, 다양한 브랜치의 출력에 대해 동적 타켓을 어떻게 할당할 것인지에 대해서 이 논문 저자는 'coarse-to-fine lead guided label assignment'라는 새로운 레이블 할당 방법을 제안했다.
요약하면,
- 훈련 가능한 무료 항목(trainable bag-of-freebies) 방법을 여러 가지 설계하여, 실시간 객체 탐지가 추론 비용을 증가시키지 않으면서도 탐지 정확도를 크게 향상시킬 수 있도록 했다.
- 객체 탐지 방법의 진화에 따라, 원래 모듈을 어떻게 재파라미터화된 모듈로 대체할 것인지, 동적 레이블 할당 전략이 다양한 출력 레이어에 대한 할당을 어떻게 처리할 것인지라는 두 가지 새로운 문제를 발견했고, 이러한 문제에서 발생하는 어려움을 해결하기 위한 방법을 제안했다.
- 확장(extend) 및 복합 스케일링(compound scaling) 방법을 제안하여, 실시간 객체 탐지기가 파라미터와 계산을 효과적으로 활용할 수 있도록 했다.
- 우리가 제안한 방법은 최신 실시간 객체 탐지기의 약 40%의 파라미터와 50%의 계산을 효과적으로 줄이면서, 더 빠른 추론 속도와 더 높은 탐지 정확도를 보여준다.
Real-Time Object Detector
현재 최신 실시간 객체 탐지기들은 주로 YOLO(You Only Look Once)와 FCOS(Fully Convolutional One-Stage Object Detection)를 기반으로 하고 있다. 실시간 객체 탐지에 일반적으로 다음과 같은 특성이 필요한데,
- 더 빠르고 강력한 네트워크 아키텍처: 네트워크가 더 빠르고 효과적으로 작동할 수 있어야 한다.
- 더 효과적인 특징 통합 방법: 이미지에서 얻은 정보를 효과적으로 결합하여 더 나은 탐지를 할 수 있어야 함.
- 더 정확한 탐지 방법: 객체를 더 정확하게 탐지할 수 있는 방법이 필요하다.
- 더 강력한 손실 함수: 모델의 학습을 보다 효과적으로 유도할 수 있는 손실 함수가 필요하다.
- 더 효율적인 레이블 할당 방법: 객체의 레이블을 보다 효율적으로 할당할 수 있어야 한다.
- 더 효율적인 훈련 방법: 모델 훈련을 보다 효율적으로 수행할 수 있어야 한다.
이 논문에서는 자가 감독 학습(self-supervised learning)이나 지식 증류(knowledge distillation)와 같이 추가 데이터나 큰 모델이 필요한 방법을 탐구하지 않는다. 대신, 'trainable bag-of-freebies' 방법을 통해 모델의 성능을 향상시키면서 추론시 추가 비용을 증가시키지 않는 방법을 모색했다.
Model re-parameterization
이 기술은 여러 계산 모듈을 추론 단계에서 하나로 통합하는 기술이다. 앙상블 기법의 일종으로, 두 가지 주요 접근 방법이 있다.
- 모델 수준의 앙상블:
- 여러 개의 동일한 모델을 서로 다른 데이터로 훈련한 후, 이들 모델의 가중치를 평균화하여 최종 모델을 얻는다.
- 서로 다른 반복에서 학습된 모델의 가중치를 가중 평균해 최종 모델을 생성한다.
- 모듈 수준의 앙상블:
- 훈련 중에 모듈은 여러 개의 동일하거나 서로 다른 브랜치로 나누고, 추론 단계에서 이들 브랜치를 하나의 통합된 모듈로 결합한다.
모듈 수준의 재파라미터화는 다양한 네트워크 아키텍처에 적용할 시 완벽하지 않을 수 있다. 따라서 새로운 재파라미터화 모듈을 개발하고 다양한 아키텍처에 맞는 응용 전략을 설계하는 것이 중요하다.
VGG에서 RepConv가 좋은 성능을 달성했었지만, ResNet이나 DenseNet등 다른 아키텍처에 사용할 때 심각한 정확도 손실을 야기시켰다고 한다. RepConv에서 identity connection을 사용하는 경우, ResNet에서의 잔차(Residual)연결이나 DenseNet에서의 concatenation 구조에 부정적인 영향을 미친다는걸 확인했다고 한다. ReNet의 경우, 잔차 연결이 gradient의 다양성을 제공하여 더 좋은 학습을 가능하게한다. DenseNet의 경우, 여러 층에서 특징을 연결해 더 강력한 표현 능력을 제공한다.
이를 해결 하기 위해, identity connection이 없는 RepConvN을 사용해 아키텍처를 설계했다. RepConvN은 잔차 또는 연결이 있는 컨볼루션 레이어를 대체할 때 identity connection을 포함하지 않는다. YOLOv7에서의 Planned re-parameterized convolution은 RepConvN을 사용해 설계되었다. 이는 ResNet이나 DenseNet과 같은 네트워크에 적절히 적용될 수 있도록 설계된 새로운 형태의 컨볼루션이다.
Model Scaling
모델 스케일링은 이미 설계된 모델을 다양한 컴퓨팅 장치에 맞게 크기를 조정하는 방법이다. 이는 보통 다양한 스케일링 요소를 사용해 네트워크 파라미터의 양, 계산량, 추론 속도 및 정확도 사이의 균형을 맞추려고 노력한다.
- 해상도: 입력 이미지의 크기
- 깊이: 레이어의 수
- 너비: 채널의 수
- 단계: 피쳐 피라미드의 수
NAS(Network Architecture Search)는 모델 스케일링에서 일반적으로 사용되는 방법 중 하나이다. 이는 복잡한 규칙을 정의하지 않고도 search space에서 적절한 스케일링 요소를 자동으로 검색할 수 있다. 하지만 시행하기 위해선 매우 많은 비용이 소요된다.
대부분의 모델 스케일링 방법은 각 스케일링 요소를 개별적으로 분석하고 최적화한다. 복합한 스케일링 방법조차도 요소를 독립적으로 조정하는 경우가 많은데, NAS 아키텍처들이 서로 상관관계가 크지 않은 스케일링 요소를 다루기 때문이다. DenseNet, VovNet과 같은 concatenation 기반의 모델에서는 깊이가 조정될 때 일부 레이어의 입력 너비가 변경된다는걸 발견했다. 이러한 연결 기반의 모델일 경우, 기존의 스케일링 방법으로는 제대로 된 조정이 어려울 수 있다. 따라서, 이러한 모델에 맞춘 새로운 복합 스케일링 방법을 설계할 필요가 있다.
Training Techniques: Coarse for auxiliary and fine for lead loss
- Deep Supervision: YOLOv7은 딥 슈퍼비전 기법을 사용해, 모델 학습을 지원하는 보조 헤드를 추가한다. 이를 통해 모델의 학습 성능과 안정성을 높인다
- Coarse-to-Fine Label Assignment: YOLOv7은 레이블 할당 전략으로 Coarse-to-Fine 방식을 사용하여, 정확한 소프트 레이블을 생성하고 학습 효율성을 높였다.
YOLOv7 Archtecture
- 네트워크 아키텍처
- Backbone:
CSPDarknet을 백본으로 사용. 이는 기존의 Darknet을 개선하여, 더 효율적인 특징 추출을 가능케하고, 깊이와 넓이 스케일링을 통해 성능을 향상시킨다. CSP(Cross-Stage Partial Network)는 네트워크의 각 단계에서 파라미터의 양을 줄이면서도 정보의 흐름을 유지해준다. - Neck:
PANet(Path Aggregation Network)과 FPN(Feature Pyramid Network) 구조를 결합하여, 다양한 스케일의 특징을 효과적으로 결합한다. PANet은 특징 맵의 세부 정보를 잘 유지하면서, 물체의 다양한 크기를 감지 할 수 있게 해준다. - Head:
YOLO 헤드를 사용하여, 객체 탐지와 분류를 수행한다. YOLOv7은 이전 YOLO 헤드보다 더욱 향상된 구조를 가지고 있으며, 다양한 크기의 객체를 더 정확하게 탐지 할 수 있다.- Decoupled Head:
분리형 헤드 구조를 채택하여, bbox regression과 객체 분류를 별도의 네트워크로 분리한다. 이 접근 방식은 두 가지 작업을 독립적으로 최적화할 수 있게 해준다. - Anchor-Free Approach:
객체 탐지에서 앵커 박스를 사용하지 않고, 보다 유연하고 직접적인 방법으로 객체의 위치를 예측한다. 이 방식은 객체의 위치를 더 정확하게 예측할 수 있게 한다.
- Decoupled Head:
- Backbone:
source code : https://github.com/WongKinYiu/yolov7