|
논문 분석 및 용어 정리 글(설명이 깊게 들어가야 하는 내용들은 링크로 연결).
YOLOv10: Real-Time End-to-End Object Detection
직역해 보자면 YOLOv10 : 실시간 객체 검출기(End-to-End 의 형태를 가진)이다.
간단하게 End-to-End의 용어를 집고 넘어가자면 객체의 특징 추출부터 추론까지의 과정을 하나의 Architecture 내에서 진행하는 모델의 구조를 의미한다.
위 이미지는 이전의 전통적으로 진행되던 딥러닝 모델에서는 데이터가 들어오면 그에 대한 특징 추출과 특징에 대한 추정 최종 결과까지 여러 단계의 파이프라인을 지나치게 되며 OUTPUT값을 보내지만 End-to-End 구조의 경우에는 이전에 나누어지던 파이프라인들을 하나의 딥러닝 네트워크 내에서 진행한다. 통상적으로 end2end로 적기도 한다.
Abstract
이전 YOLO 모델부터 이미지 처리를 위해서 컴퓨팅 자원 소모와 처리 시간에 대한 감소를 목적으로 계속해서 발전해왔지만 YOLOv8의 단계까지 왔음에도 해결하지 못한 몇몇 문제점이 존재하는데 해당 논문에서는 후처리 및 모델 아키텍처에서의 YOLO 성능과 효율성의 단계를 증진시키는것을 목적으로 작성되었다.
논문에서 제시한 YOLOv10에서 이전의 YOLO 시리즈들과 대비되어 해결한 내용들은 아래와 같다.
1. 객체를 탐지하고 후처리 과정에서 진행해야 하는 NMS(Non-Maximum-suppression)
2. 특징(feature)을 추출하는 단계에서 모델의 크기가 증가할수록 증가하게 되는 연산 오버헤드(Computational Overhead)
3. 정확도와 효율성에 대한 개선
결과적으로는 YOLOv10은 이전 버전 혹은 다른 모델과 비교하였을 때 하나의 INPUT값에 대해 적은 수의 파라미터와 낮은 수의 FLOPs과 Latency를 가진다.
FLOPs(Floating point Operations) : 부동소수점 연산을 의미하며 여기에서 연산은 사칙연산, log, exp등의 연산이 포함된다.
-FLOPs는 동일 성능 대비 낮을수록 좋다고 생각할 수 있다.(해당 모델에서 소비하는 컴퓨팅 자원이 적다는 것을 의미함)
Latency : 직역은 대기시간으로 딥러닝 추론의 시작부터 완료까지 걸리는 시간을 의미한다, Latency(f)가 붙은 것들은 이미지 후처리에 대한 시간을 제외한 나머지 시간을 의미한다.
Introduction
소개에서는 이제동안 YOLO시리즈가 발전해온 과정과 NMS가 왜 문제가 되는지에 대해서 소개해준다.
NMS는 Non-Maximum-suppression의 약자로 YOLOv8을 기준으로 이미지에서 예측되는 Bounding Box를 모두 특정 임계값에 대해 일차적으로 처리를 하였을 때 남게되는 중복되는 Bounding Box들이 있다.
위 이미지를 보았을 때 각 Bounding Box들이 하나의 객체에 대해서 여러개의 후보군들이 있는데 이 때 NMS를 통하여 우측의 사진처럼 하나의 객체에 하나의 Bounding Box만이 남게 된다. 하지만 해당 과정은 병렬적으로 계산되는 것이 아닌 각 Bounding Box에 대해서 1:1매칭으로 비교되는 계산법으 높은 시간 복잡도를 가지고 있어 최종 결과물의 Latency시간에 큰 영향을 미치게 된다.
NMS의 단점으로는 다른 객체에도 영향을 미치게 되는 것으로 클래스별로 계산되는 과정에서 같은 클래스의 Bounding Box가 2개 이상 존재하는 경우에 서로 다른 객체이더라도 하나만 살리는 등의 문제점이 존재한다.
추가적으로 NMS는 end-to-end 구조를 가진 YOLO시리즈에 대해서 부정적인 영향을 미친다고 평가되어왔다.(후처리가 직접적으로 들어가기 때문)
NMS의 대체제로 DETR(End-to-End Object DEtection-with-TRansfor)이나 RT-DETR(Real-Time-DEtection-with-Transformers)등을 도입해 보았지만 정확도와 추론 오버헤드(다른 객체를 없애는 등)의 문제점이 남아있다는 단점이 존재한다.
Backbone과 Neck 영역에서 계산의 효율성과 정확도에 대한 기능은 충분히 이끌어 내어서 자신들은 Head영역에서 진행하였고 방식으로는 Dual Label Assignments와 Consistent Match. Metric을 채택하였다.
이후 연산 오버헤드와 정확도, 효율성의 개선 방식으로 다음과 같은 방식을 사용하였다.
Efficiency
● Lightweight classification head.
● Spatial-channel decoupled downsampling.
● Rank-guided block design.
Accuracy
● Large-kernel convolution.
● Partial self-attention (PSA).
위 방식들을 통해 YOLOv10 -N / S / M / B / L / X 의 Scale을 가진 모델들을 제작하였고 다음과 같은 성능을 보였다.
APval에서 좌측 값은 one-to-one Head의 값을 나타내며 우측 ' † ' 가 들어간 값은 one-to-many Head의 값을 나타낸다.
Methodology
이제까지의 YOLO모델들은 one-to-many Head를 적용시켜 일반적으로 TAL(Task-ALigned)를 기반으로 생성되었으나 NMS 사후처리에 의존해야 하기 때문에 연산량이 증가되는 문제점이 있고 NMS를 사용하지 않기 위해 제작된 one-to-one Head를 사용하는 모델에 대해서도 추론 오버헤드(존재하는 객체를 인지하지 않는)를 발생시키거나 최적화 되지 않는 문제점이 남아있다.
따라서 해당 논문은 one-to-many Head와 one-to-one Head 두가지를 모두 사용하는 Consist Dual Assignment를 사용하여 NMS를 제거하여 연산량을 해결하고 여러 객체에 대한 정확도를 높이는 작업을 수행함.
◆ Consist Dual Assignment는 Dual Label Assignments영역과 Consistent Match. Metric영역으로 분리되어 사용된다.
one-to-one, one-to-many에 대해 ultralytics에서 제공하는 글
Dual Label Assignments(이중 레이블 할당)
one-to-one Head는 하나의 객체에 대해 하나의 예측값을 출력하여 NMS의 사후 처리가 필요하지 않은 Head이나 Supervision에 대한 정보가 충분치 않아 Accuracy와 Convergence speed를 최적화시키지 못한다.
one-to-many Head는 각 객체에 대해 여러가지의 예측값을 출력하는 대신 단일로 사용될 때 NMS와 같은 후처리가 필요하다.
YOLOv10에서는 두 Head를 모두 사용하여 모델의 학습시에는 one-to-one Head와 one-to-many Head에서 나오는 Supervision값들을 사용하여 두 개의 Head와 Backbone 및 Neck영역의 가중치들을 빠르고 정확하게 최적화하며 추론할 때에는 one-to-many Head를 사용하지 않고 one-to-one Head를 사용하여 상위 1개의 Bounding Box를 채택하여 end-to-end 형식의 YOLO 모델을 사용한다. one-to-one매칭에서 훈련 시간이 적은 Hungarian matching과 동일한 성능을 달성한다고 나와있는데 Hungarian matching은 2개의 집합에 대해 최적의 매칭을 잡아 높은 이익의 결과물을 가져오는 알고리즘을 의미한다.
Consistent Matching Metric(일관된 매칭 메트릭)
p : 분류 점수
s : 예측의 앵커 포인트가 인스턴스 내 존재하는 공간의 정보(IoU값으로 계산)
b_hat, b : 예측값과 인스턴스의 bbox
α, β : 의미 예측 작업과 회귀 작업에 사용되는 하이퍼파라미터.
m_o2m=m(α_o2m, β_o2m) : one-to-many에 대한 Metric
m_o2o=m(α_o2o, β_o2o) : one-to-one에 대한 Metric
Consistent Matching Metric에서는 두 Head에서 나온 Supervision들을 토대로 학습을 수행하는 영역이다.
두 Head에서 제공되는 Supervision의 격차를 분석하여 학습을 진행하며 최초 시행시 동일한 값으로 초기화된 두 개의 Head에 대해 검사를 시작하여 동일한 예측값을 생성되는 것을 전제로 동일한 p값과 IoU값을 생성하는 경우에는 두 Head의 결과가 동일한 것으로 판단되고 학습 시 발생하는 차이는 회귀 단계가 아닌 분류에 대한 부분에서 발생한다.
동일한 값을 출력한 예측 값은 공유하고 예측 값이 다른 경우에는 무시되면서 해당 격차는 1-Wasserstein distance로 도출된다.
1-Wasserstein distance의 거리 값이 가장 작은 때의 distance는 Wasserstein distance로 지칭된다.
A는 Supervision의 격차를 의미하며이를 최소화하기 위해 Metric값을 𝛼𝑜2𝑜=𝑟⋅𝛼𝑜2𝑚 및 𝛽𝑜2𝑜=𝑟′⋅𝛽𝑜2𝑚으로 설정되고 이는
를 의미한다.
위 과정을 통해 학습 시 one-to-many Head의 최상의 표본은 one-to-one Head에서도 최상의 표본이 되며 두 헤드간의 결과를 일관성을 유지하며 모델을 최적화 시킬 수 있다.
◆ Holistic Efficiency-Accuracy Driven Model Design
효율적으로 모델을 운용하기 위해서 YOLO의 구성 요소 중 계산 비용이 낮은 stem을 제외한 downsampling layers, basic building blocks, head에 대해 설계를 수행함.
Lightweight classification Head (분류 헤드 경량화)
이전 모델들의 Head를 조사하던 도중 특이점을 발견하였는데 Classification Head와 Regression Head에 있어 각 영향을 분석한 결과 Classification Head은 학습에 별로 도움이 되지 않고 Regression Head가 YOLO 성능에 더 높은 영향을 미치는 것을 확인하였다. 따라서 Classification Head를 조금 lightweight화 시켜 계산에 있어 조금 더 낮은 리소스를 투자하도록 하였다.
(분류 헤드는 객체의 클래스의 확률을 정하며 회귀는 Bounding Box의 좌표와 각 예측에 대한 신뢰도를 계산)
Spatial-channel decoupled downsampling (공간-채널 분리 다운샘플링)
이전의 모델들은 stride 2의 값을 지닌 3*3 convolution 작업에 대해서 공간적 다운샘플링 (H * W)을 (H/2 * W/2)로 나누고 채널을 (C에서 2C)로 늘림 위 작업은 O(9^2HWC^2)의 계산 비용과 O(18C^2)의 파라미터 수를 가지게 되는데
pointwise convolution을 통해서 Channel Dimension을 조절하고 이후 Depthwise Convolution작업을 수행하여 다운샘플링을 수행하였다.
해당 작업은 O(2HWC2 + (9/2)HWC) 계산 비용과 O(2C2+18C)의 매개변수 수로 감소되는 결과를 도출하였다.
Pointwise는 3차원 Depth의 레이어들이 있다면 1*1*3의 fillter를 통과시켜 1차원 Depth의 레이어 하나가 있도록 하는 기법으로 채널 자원을 조정하며 Depthwise convolution은 3 차원 Depth의 레이어가 있을 경우 각 차원별로 3*3*1 filter로 conv를 진행시켜 각 Depth에 대해 합성곱을 진행한다.
해당 방식은 다운 샘플링을 진행하는 동안 정보의 변화를 최소화하면서도 Latency 값의 감소를 유도한다.
Rank-guided block design(순위 기반 블록 설계)
YOLO모델들은 특징을 추출하는 단계에서 모델이 크고 깊은 수준의 특징을 추출할 때 같은 내용의 연산을 중복하여 연산하는 경우가 많다. 이를 해결하기 위해 CIB(Compact Inverted Block)를 사용한다 CIB는 바로 위에서 설명한 depthwise convolution와 pointwise convolution을 채택한 블록 구조이다.
CIB 블록은 ELAN(efficient layer aggregation network)구조에 포함되어 YOLOv10의 기본 구조로 포함된다.
ELAN을 간단하게 설명하자면 특성맵을 받아 여러 채널 그룹으로 분할시키고 각 그룹을 독립적으로 처리하며 서로 다른 해상도의 특징들을 조합하며 학습이 가능한 블록 구조이다.
◆ Accuracy driven model design
모델의 정확도를 높이기 위한 모델 설계로는 Large-kernel convolution과 Partial self-attention(PSA)가 있다.
Large-kernel convolution (대형 커널 합성곱)
각 특성 맵은 깊이에 따라 특성간의 거리에 있어 같은 값들을 가지게 되는데 모든 단계에서 3*3의 kernel size를 유지하게 되면 작은 객체를 감지할 때 얕은 수준의 특성의 학습에 대해 부정적인 영향을 미치고 고해상도 단계에서는 같은 특성의 학습을 계속해서 반복하는 등의 컴퓨팅 소스를 낭비하게 된다. 해당 문제를 해결하기 위해서 깊은 단계의 특성맵들을 계산할 때에는 CIB 내부에서 Dilation rate값을 증가시키면서 kernel size를 7*7로 증가시키는 작업을 통해 추론-오버헤드(계산량의 증가) 없이 수용영역(kernel size가 증가함에 따른 전역적인 특징의 감지)을 늘린다.
(사진에서는 Kernel size가 3 * 3으로 유지되고 있지만 각각 5*5와 7*7이 맞는 표현이다. 그림에서는 추론-오버헤드 없이 진행됨을 강조하기 위해 kernel size를 3*3으로 유지한 것으로 보임.)
(해당 합성곱은 대형 모델에 대해서는 사용하지 않을 수 있다. - 이미 많은 파라미터와 가중치를 가지고 있기 때문이다.)
Partial Self-Attention(PSA)(부분적 자기 주의) - 사진의 C에 해당
Attention에 대한 설명(이미지로 예시를 들다면 각 특성들에 대한 연관성이고 문장으로 예시를 들면 각 단어 각 문장 사이의 연관성의 강도를 의미한다.)
Self-attention은 널리 사용되지만 높은 계산 복잡도와 메모리 사용량을 동반하기에. 1*1 convolution 후에 채널을 두 부분으로 나누어 한 부분만 MHSA(Multi-Head Self-Attention)와 FFN(Feed-forward Network) 블록을 통과하게 하고 Self-Attention 작업은 낮은 해상도를 가지는 파트에서만 적용되어 낮은 계산 비용으로 Self-Attention작업을 수행한다. 그림의 [* N_PSA]는 해당 점선으로 그려진 영역의 반복 횟수를 의미한다.
이후 처음 분리했던 블록과 1*1 convolution에 의해 합쳐진다.
논문에서는 가장 낮은 해상도인 Stage 4 이후에만 배치된다고 하나 Stage 4가 어느 지점을 이야기하는지 정확히 명칭하는 바는 아직 확인하지 못하였다.
해당 작업에서 빠른 추론을 위해 LayerNorm을 BatchNorm으로 변경하는 등의 작업도 수행되었다.
Conclusion
NMS 후처리를 대체하기 위해 Consist Dual Assignment을 제안
전체적인 모델의 정확도와 효율성을 개선하기 위해 합성곱을 진행하는 방식과 커널 사이즈 및 Self-Attention을 부분적으로 적용하는 등의 작업을 통해 연산량은 유지(Kernel Size를 증가시키며 Dilation rate값도 증가) 혹은 감소(중복하여 진행하는 연산은 제거)시키면서 정확도를 증가시킴.