YOLOv10: Real-Time End-to-End Object Detection, Ao Wang, et al., 2024 를 읽고 요약, 정리한 글입니다.
github : https://github.com/THU-MIG/yolov10
◼️contrbution
- 기존 YOLO 아키텍쳐는 NMS에 대한 의존성이 높아 정확도는 향상시키지만 latency를 초래함.
- 본 논문은 NMS 없는 YOLO 모델을 만들기 위해 이중 할당 전략을 제안하여 중복 예측 문제를 해결함.
- 본 논문은 계산 중복을 줄이기 위해 lightweight classification head, spatial-channel decoupled downsampling, rank-guided block design을 포함한 아키텍쳐를 제안함.
◼️ NMS(Non-Maximum Suppression) 없는 훈련을 위한 일관된 이중 할당(Dual Assignments) 전략
NMS는 객체 탐지에서 여러 후보 박스 중 가장 높은 확률을 가진 객체 박스를 선택하는 것으로 추가적인 계산을 필요로 하기 때문에 추론 속도에 영향을 미친다.
기존에 사용하던 일대다 매칭은 하나의 객체에 대해 여러 개의 앵커 박스가 학습되는 할당으로 해석이 되며 학습하기에는 용이하고 우수한 성능을 달성하지만 NMS 후처리 연산이 필수적인 것이 단점이다.
이를 해결하기 위해 본 논문은 이중 할당 전략(Dual Assignments)을 제시한다.
일반적으로 모델 학습 시 여러 개의 예측을 할당 해 더 많은 supervision 신호를 제공해서 모델이 더 잘 학습할 수 있도록 돕지만 추론 시에는 NMS를 통해 중복된 예측을 제거해야 한다는 단점이 있다.
하나의 객체에 하나의 예측만 할당하면 NMS 연산이 필요가 없지만 supervision 신호가 부족해 학습 시 성능이 떨어질 수 있다. 따라서 이중 레이블 할당(Dual Label Assignments) 전략과 일관된 매칭 메트릭(Consistent Matcing Metric) 전략을 사용해서 NMS를 배제한 학습 전략으로 높은 성능을 달성하였다.
◾ 이중 레이블 할당 (Dual Label Assignments)
일대일 할당 헤드는 일대다 헤드에 비해 학습 시 수렴 효과 및 정확도가 떨어지는 것으로 보이기 때문에 학습 시에는 일대다 헤드와 일대일 헤드를 모두 사용해 높은 학습 효과를 기대한다.
일대다 헤드와 일대일 헤드를 동시에 학습시키기 때문에 이중 레이블 할당이라고 칭한다.
추론 시에는 일대일 헤드만 사용하도록 하여 순수 모델 아키텍쳐 추론 시간 외에 후처리 연산 비용이 들지 않는다.
◾ 일관된 매칭 메트릭 (Consistent Matching Metric)
일대일 및 일대다 할당 헤드 모두 인스턴스 간의 일치 수준을 정량적으로 평가하기 위해 메트릭을 활용한다.
두 브랜치 모두 예측 인식 매칭을 달성하기 위해 일관된 매칭 메트릭을 사용한다.
p는 분류 점수, bhat과 b는 각각 예측과 인스턴스의 bbox, s는 예측의 앵커 포인트가 인스턴스 내에 있는지를 나타내는 공간의 사전 정보로 예측과 실제 인스턴스의 IoU 정보를 활용한다.
a, b는 의미 예측 작업과 위치 회귀 작업의 영향을 균형있게 하는 두 가지 중요한 하이퍼파라미터이며 일대다와 일대일 메트릭을 각각 𝑜2𝑚=𝑚(𝛼𝑜2𝑚,𝛽𝑜2𝑚) 와 𝑚𝑜2𝑜=𝑚(𝛼𝑜2𝑜,𝛽𝑜2𝑜)로 표시한다. 이 메트릭은 두 헤드에 대한 레이블링 할당 및 지도 학습 정보에 영향을 미친다.
학습 중에 발생하는 무작위성으로 인해 두 헤드가 동일한 값으로 초기화되고 동일한 예측을 생성하는 상황을 전제로 한다.
일대일 헤드와 일대다 헤드는 각 예측-인스턴스 쌍에 대해 동일한 p와 IoU를 생성하며 두 브랜치의 회귀 타겟은 충돌하지 않는다. 이 말은 즉, 일대일 헤드와 일대다 헤드의 결과가 동일하다는 것을 의미한다. 학습 시 일어나는 차이는 회귀가 아닌 분류에 대한 부분에서 발생하는 것이다.
매칭 된 예측은 동일한 타켓을 공유하고 매칭 되지 않은 예측은 무시 되며 두 브랜치 간의 supervision 격차는 서로 다른 분류 목표의 1-Wasserstein distance로 도출한다.
두 확률 분포의 연관성을 측정하여 그 거리의 기대값이 가장 작을때의 distance를 wasserstein distance라고 한다.
supervision 격차 𝐴가 가장 최소화 되기 위해서, 일대다 헤드의 결과와 일대일 헤드의 최상의 결과를 매칭 하기 위한 메트릭을 𝛼𝑜2𝑜=𝑟⋅𝛼𝑜2𝑚 및 𝛽𝑜2𝑜=𝑟′⋅𝛽𝑜2𝑚으로 제시한다(r=1로 적용하면 𝛼𝑜2𝑜=𝛼𝑜2𝑚 및 βo2o=βo2m이 됨).
일대다 헤드에 가장 좋은 positive sample은 일대일 헤드에도 가장 좋으며 두 헤드는 일관되고 조화롭게 최적화 될 수 있다.
◼️효율 중심 모델 설계
◾경량화 된 분류 헤드
YOLO는 stem, downsampling layer, basic building block stage, head로 구성되어 있으며 stem은 계산 비용이 적게 들기 때문에 나머지 세 부분에 대해 효율성 주도 모델 디자인을 수행한다.
YOLO에서 분류 헤드와 회귀 헤드는 보통 동일한 아키텍쳐를 공유하며, YOLOv8-S에서 분류 헤드의 FLOPs와 매게변수 수(5.95G/1.51M)는 각각 회귀 헤드 (2.34G/0.64M)의 2.5배와 2.4배이지만, 헤드 부분에서 효율성을 제고하기 위해 분류 오류와 회귀 오류의 영향을 분석한 후(표 6 참조) 같은 아키텍쳐 임에도 계산 오버헤드는 서로 다름을 알게 된다.
이를 통해 회귀 헤드가 YOLO의 성능에 더 중요한 역할을 한다는 것을 발견한다.
depth 별로 분리 가능한 컨볼루션이 포함된 단순화 된 아키텍쳐를 사용해 성능에 큰 영향을 주지 않고 계산 오버 헤드를 줄였으며 분류 헤드를 위해 3x3 커널 크기의 두 개의 depthwise separabel convolution과 1x1 convolution으로 구성된 가벼운 아키텍쳐를 채택했다.
성능에 대한 영향 분석결과 더 연산량이 작은 회귀 헤드가 YOLO의 성능에 더 중요한 역할을 한다는 것을 확인하였으며, 분류 헤드의 아키텍쳐를 변경하기로 했다.
◾공간 감소와 채널 증가를 분리해 계산 비용을 줄이고 정보 유지
YOLO는 일반적으로 스트라이드 2의 정규 3x3 표준 convolutions을 사용하여 공간 다운 샘플링 (𝐻×𝑊에서 𝐻/2×𝑊/2)과 채널 변환 (𝐶에서 2𝐶 )을 동시에 수행하는데 이는 무시할 수 없는 계산 비용과 매개변수 수를 사용한다.
대신 공간 축소와 채널 증가 작업을 분리 해 더 효율적인 다운 샘플링을 가능하게 하고 채널 자원을 조정하기 위해 pointwise convolution을 활용한 다음 depthwise convolution을 사용 해 공간 다운 샘플링을 수행한다.
다운 샘플링 동안 정보 유지력을 극대화하여 지연 시간 감소와 함께 경쟁력 있는 성능으로 제공한다.
◾순위 기반 블록 설계
YOLO는 일반적으로 모든 단계에 대해 동일한 bsic building block을 사용한다.
본 논문에서는 각 단계의 마지막 기본 블록에서 마지막 convolution의 수치 순위를 계산하며, 임계값보다 큰 특이값의 수를 센다.
고유 순위 분석을 사용해 모델 단계의 중복성을 식별하고 줄이고 복잡한 블록을 소형 역전 블록과 같은 보다 효율적인 구조로 대체한다.
YoloV8을 보면 깊은 단계와 큰 모델이 더 많은 중복성을 나타내는 경향이 있음을 알 수 있으며 이는 모든 stage에 동일한 블록 설계를 단순히 적용하는 것이 최고의 용량-효율성 트레이드 오프에 최적이 아님을 시사한다.
본 논문은 중복성이 있는 stage의 복잡성을 줄이기 위해 컴팩트 아키텍쳐 디자인을 사용하는 rank-guided block design 방식을 제안한다.
또, 공간 혼잡을 위한 저렴한 depthwise convolution과 채널 혼합을 위한 비용 효율적인 pointwise convolution을 채택한 컴팩트 인버티드 블록(CIB) 구조를 제시한다.
이는 ELAN 구조에 포함된 효율적인 basic building block으로 작용할 수 있다.
경쟁력 있는 용량을 유지하면서 최고의 효율성을 달성하기 위해 rank-guided block 할당 전략을 제안하며 주어진 모든 stage를 내제 순위(intrinsic rank)에 따라 오름 차순으로 정렬한다.
leading stage에서 basic block을 CIB로 대체할 때의 성능변화를 추가로 검사하고 주어진 모델과 비교해 성능 저하가 없으면 다음 단계의 교체를 진행하고 그렇지 않으면 과정을 중지한다.
성능을 저하시키지 않으면서 더 높은 효율성을 달성하기 위해 단계 및 모델 규모에 걸쳐 적응형 CIB 디자인을 구현할 수 있다.
◼️ 정확도 중심 모델 설계
최소한의 비용으로 성능을 향상시키기 위해 대형 커널 컨볼루션(large-kernel convolution)과 셀프 어텐션(self-attention)의 추가를 추가로 탐구한다.
◾ large kernel convolution
얕은 단계에서 오버헤드를 피하기 위해 선택적으로 대형 커널 깊이 별 컨볼루션을 사용해 깊은 단계의 수용 필드를 늘려 모델 기능을 향상 시킨다.
depthwise convolution의 커널 사이즈를 늘리는 것이 성능을 향상 시키는 좋은 방법이지만 작은 개체를 감지하거나 I/O 오버헤드에 악영향을 가져올 수 있으므로 깊은 스테이지에서 CIB의 컨볼루션 커널을 3*3에서 7*7로 적용하고 re-parametrization을 활용한 3*3 브랜치를 도입하여 추론 오버헤드 없이 + 수용영역 증가를 달성한다.
◾ partial self-attention(PSA)
self attention은 다양한 시각적 작업에 널리 사용되지만 높은 계산 복잡도와 메모리 사용량을 보인다.
본 논문은 널리 퍼져 있는 헤드의 중복성을 고려해 PSA 모듈 설계를 제시한다.
1×1 컨볼루션 후에 채널 전반에 걸쳐 특징을 두 부분으로 균등하게 분할 하며 멀티 헤드 셀프 어텐션 모듈(MHSA)과 피드 포워드 네트워크(FFN)으로 구성된 𝑁𝑃𝑆𝐴 블록에 한 부분만 입력한다. 이후 그 다음 두 부분을 연결하고 1×1 컨볼루션으로 융합한다.
기능을 분할하고 기능의 일부에 self attention을 적용해 효율적인 self attention을 통합하여 계산 복잡성과 메모리 사용량을 줄이는 동시에 전역 표현 학습을 향상 시킨다.
PSA는 가장 낮은 해상도의 Stage 4 이후에만 배치되어 셀프 어텐션의 이차 계산 복잡도로 인한 과도한 오버헤드를 피한다. 이는 self attention의 글로벌 학습 능력을 YOLO에 효율적으로 녹일 수 있다.
글로벌 표현 학습 능력이 더 낮은 계산 비용으로 YOLO에 통합되어 모델의 능력을 향상 시키고 성능을 개선한다.
◼️ 실험 결과
NMS 없는 훈련을 위해 일관된 이중 할당(consistent dual assignments)을 사용하고, 이를 기반으로 전체적인 효율성-정확성 주도 모델 설계를 수행하여 YOLOv10 모델을 제공한다.
YOLOv10은 YOLOv8과 동일한 변형 모델을 가진다(N/S/M/L/X).
YOLOv10-M의 너비 스케일 팩터를 단순히 증가시킨 새로운 변형 모델 YOLOv10-B를 도출했다.
동일한 기초부터 학습 설정 하에서 COCO에서 제안된 디텍터를 검증했다.
Latencyf 은 NMS 후처리 없는 지연 시간을 나타내며 †는 일대다 헤드를 사용한 YOLOv10의 결과를 나타내고 없는 것이 일대일 헤드의 결과이다.
◼️ Concolusion
◾ 개선점
- NMS 후처리를 없애기 위한 경량 분류 헤드, 공간-채널 분리 다운샘플링, CIB를 활용한 순위 유도 블록 디자인
- 정확도와 지연의 트레이드오프 효율을 고려한 모델 설계 측면에서 CIB 내의 Large-kernel convolution 및 PSA 도입
◾ 한계점
- Object365와 같은 대규모 데이터셋 에대한 학습을 진행하지 않음.
- NMS가 없는 모델에 대한 성능은 여전히 일대다 학습에 비해 어느 정도 낮은 방향의 격차가 있을 수 있으며, 특히 YOLOv10-N/S와 같은 작은 모델에서 보임.
논문을 읽은 후 정리하고 요약한 글입니다. 때문에 해당 포스팅에 대한 의견 제시 및 오타 정정은 언제나 환영입니다.
늦더라도 댓글 남겨주시면 확인하겠습니다.