🗺️ YOLOv10의 구조 및 탐지 과정
YOLOv10의 가장 큰 목표는, YOLO가 오랫동안 의존해왔던 1) '앵커 박스(템플릿)'의 번거로움과 2) 'NMS(청소부)'라는 속도 저하 요인을 모두 제거하여, 더 빠르고 간결한 'End-to-End' 모델을 만드는 것이었습니다.
[1단계] 백본 (Backbone - 특징 추출)
- 구조: 최적화된 CSPNet (YOLO의 전통적인 CNN 구조)
- 설명: 이미지를 입력받아, '선', '모서리', '질감' 같은 기본 특징부터 '바퀴 모양', '눈 모양' 같은 복잡한 시각 특징까지 추출합니다. 이 단계는 강력한 특징 추출에 집중하며, 이는 기존 YOLO 모델들과 유사한 방식입니다.
- CT 영상을 여러 해상도로 분석합니다. 작은 출혈부터 큰 출혈까지 놓치지 않기 위해서입니다.
[2단계] 넥 (Neck - 정보 통합)
- 구조: PANet (Path Aggregation Network)
- 설명: 백본이 추출한 특징들을 섞어주는 '믹서기'입니다. '작은 물체'를 잘 찾는 고해상도 정보(초기 레이어)와 '큰 물체'를 잘 찾는 저해상도 정보(후기 레이어)를 효율적으로 융합합니다. 이를 통해 뒤따르는 헤드(뇌)가 모든 크기의 물체를 균형 있게 잘 찾도록 돕습니다.
- 위아래 정보를 섞어서 더 정확한 위치를 파악합니다.
[3단계] 헤드 (Head - 최종 판단): ⭐️ YOLOv10의 핵심 혁신 ⭐️
YOLOv10의 모든 혁신은 이 '헤드' 부분에 집중되어 있습니다. 여기서 앵커 박스와 NMS라는 두 가지 오래된 문제를 해결합니다.
위치와 종류를 파악합니다.
- 1. '앵커 프리'로 앵커 박스(Anchor Box) 문제 해결:
- 기존 문제 (YOLOv3~v7): '앵커 박스'라는 미리 정의된 '템플릿'을 사용했습니다. 이 방식은 데이터셋이 바뀔 때마다 K-means 클러스터링 같은 복잡한 '사전 준비' 작업으로 템플릿을 다시 계산해야 하는 번거로움이 있었습니다.
- YOLOv10의 해결 (Anchor-Free): '템플릿' 자체를 완전히 없앴습니다. 따라서 '사전 준비' 작업이 필요 없어졌습니다. 대신 모델이 물체의 중심점에서 '왼쪽/오른쪽/위/아래' 경계선까지의 **'거리'**를 직접 예측하는 방식으로 바뀌어, 훨씬 유연하고 간결해졌습니다.
- 2. '이중 헤드'로 NMS(중복 제거) 문제 해결:
- 기존 문제 (YOLOv1~v8): 앵커 기반이든 앵커 프리든, 한 물체에 대해 수십 개의 '중복된 박스'가 쏟아져 나왔습니다. 이 중복을 정리하기 위해 **'NMS(청소부)'**라는 '후처리' 과정이 필수였고, 이 NMS 자체가 속도 저하의 주범이었습니다.
- YOLOv10의 해결 (Dual Head): 훈련(공부) 방식 자체를 바꿔서 '청소부'를 해고했습니다. 훈련 시 헤드(뇌)를 2개 사용합니다.
- 느슨한 헤드 (One-to-Many): 하나의 '고양이(정답)'를 찾을 때, 100% 완벽한 예측(칸) 1개만 "정답"이라고 하지 않습니다.대신, "이 고양이일 가능성이 높은" (예: 정답과 꽤 많이 겹치는) 상위 후보 5개(예시)를 모두 '긍정적인 신호(정답)'로 간주하고 보상(칭찬)을 줍니다.(AI가 특징을 풍부하게 배우도록 도움)
- 엄격한 헤드 (One-to-One): 동시에, "저 고양이 1마리는 3행 5열 너 하나만 맡아!"라고 1:1로 담당자를 '강제 할당'합니다. 예측 시 엄격한 헤드만 사용해 "물체 하나당=박스 하나"의 깔끔한 예측을 수행합니다.
[4단계] 탐지 과정 (결과)
- 훈련이 끝나면, '느슨한 헤드'는 버리고 실제 예측 시에는 '엄격한 헤드(One-to-One)'만 사용합니다.
- 이 '엄격한 헤드'는 이미 "물체 하나당 = 담당자 하나"라고 1:1로 말하도록 훈련되었습니다.
- 최종 결과: 예측할 때 애초에 중복된 박스가 거의 나오지 않으므로, 'NMS(청소부)'가 필요 없는(NMS-Free) 깔끔한 결과물이 '한 번에(End-to-End)' 나옵니다.
🤖 1부: 기존 DETR의 작동 원리 (똑똑했지만 느렸던 '번역가')
YOLO와 달리, DETR(DEtection TRansformer)은 "객체 탐지를 '번역' 문제로 풀자!"는 완전히 새로운 철학으로 시작했습니다.
A. DETR의 기본 작동 원리 (A-Z)
- [1단계] 백본 (Backbone - 특징 추출 ):
- 구조: CNN (예: ResNet)
- 설명: 이미지를 입력받아 '특징 맵(요약본)'을 만듭니다. 여기서 가장 큰 문제가 발생합니다. DETR은 백본이 만든 여러 요약본 중, 오직 '최종 저해상도 요약본(C5)' 1장만 사용했습니다. (예: 20x20 크기 맵)
- 문제점: 이 1장의 맵에는 '전체 맥락'은 담겨있지만, 이미지가 너무 압축(뭉개짐)되어 '작은 물체' 정보가 완전히 사라졌습니다.
- [2단계] 인코더 (Encoder - 1차 브레인스토밍): ⭐️ DETR의 '느린 주범' ⭐️
- 구조: 트랜스포머 인코더
- 설명: 1단계에서 만든 1장의 '저해상도 맵'(예: 20x20 = 400개 픽셀)을 넣습니다.
- 작동: '셀프 어텐션(Self-Attention)'이라는 '전체 회의'를 시작합니다. 400개의 픽셀이 "나는 나머지 399개 픽셀과 각각 얼마나 관련이 깊지?"를 모두(All-to-All) 비교합니다.
- 계산: (400 x 400) = 160,000번의 비교가 일어납니다. 이 N x N 계산은 끔찍하게 느렸습니다.
- 결과: 느리지만, "저기 '바퀴' 픽셀은 멀리 떨어진 '핸들' 픽셀과 '자동차'라는 맥락으로 연결된다"는 '전체 맥락'을 파악해냅니다.
- [3단계] 디코더와 쿼리 (Decoder & Queries - 2차 회의):
- 구조: 트랜스포머 디코더 + 객체 쿼리(Object Queries)
- 설명:
- '탐정(쿼리)': AI는 100개(예시)의 '빈 질문 카드(탐정)'를 미리 준비합니다.
- 질문: 100명의 탐정들이 디코더에 들어가, 2단계에서 만든 '전체 맥락'을 참조(Cross-Attention)합니다. "1번 탐정, 네가 맡을 물체는 뭐고 어디 있니?"
- 답변: 각 탐정은 "내가 전체 맥락을 훑어보니, '고양이'를 찾았고 좌표는 (x, y, w, h)인 것 같다"라고 답을 채워 넣습니다.
- [4단계] 탐지 과정 (결과):
- 헝가리안 매칭: 100개의 예측(답변)과 실제 정답(예: 고양이 1, 자동차 1)을 1:1로 짝짓습니다.
- [1번 탐정 -> 고양이] (정답)
- [2번 탐정 -> 자동차] (정답)
- [3~100번 탐정 -> 객체 없음(No Object)] (정답)
- 결과: 처음부터 1:1로 짝지어지므로, NMS(중복 제거)가 원천적으로 필요 없었습니다.
- 최종 평가: NMS가 없는 완벽한 End-to-End 모델이었지만, 2단계의 '전체 회의'가 너무 느리고 '작은 물체'를 못 찾는 치명적인 단점이 있었습니다.
- 헝가리안 매칭: 100개의 예측(답변)과 실제 정답(예: 고양이 1, 자동차 1)을 1:1로 짝짓습니다.
🚀 2부: RT-DETR의 구조 및 탐지 과정 (A-Z)
RT-DETR(Real-Time DETR)의 목표는 "DETR의 NMS-Free 장점은 유지하되, (1)속도를 빠르게, (2)작은 물체도 잘 찾게 만들자!"는 것이었습니다.
- [1단계] 백본 (Backbone - CNN 특징 추출):
- 구조: HGNetv2 (최적화된 CNN)
- 설명: 이미지를 훑어보며 '요약본'을 만듭니다. 여기서 핵심! 기존 DETR과 달리, 1장의 맵만 쓰는 게 아니라 3가지 크기(해상도)의 요약본을 모두 저장합니다. 먼저 CNN으로 CT 영상의 특징을 추출합니다.
- C3 (고해상도): '작은 물체' 정보가 살아있음. (예: 80x80)
- C4 (중해상도): '중간 물체' 정보. (예: 40x40)
- C5 (저해상도): '전체 맥락' 정보. (예: 20x20)
- [2단계] 하이브리드 인코더 (Hybrid Encoder - ⭐️ RT-DETR의 핵심 혁신 ⭐️):
- 구조: Efficient Hybrid Encoder (AIFI + CCFM)
- 설명: "어떻게 3개의 맵을 쓰면서도 빠를 수 있지?"에 대한 답입니다. '비싼 작업'과 '싼 작업'을 분리했습니다.
- A. 비싼 작업 (AIFI - 트랜스포머 회의):
- "회의(셀프 어텐션)"는 계산량이 너무 비싸니까(N x N), 가장 싼 '저해상도(C5, 20x20)' 맵에만 적용합니다.
- 결과: '전체 맥락'을 빠르게 파악했습니다. (하지만 '작은 물체' 정보는 아직 모름)
- B. 싼 작업 (CCFM - CNN 융합):
- "이제 '고해상도(C3)'와 '중해상도(C4)'의 '세부 정보'를 섞어야 하는데... 여기서 또 '회의'를 하면 느려지겠지?"
- 해결: '회의(트랜스포머)' 대신, 엄청나게 빠르고 가벼운 'CNN(컨볼루션)'을 사용합니다.
- A에서 얻은 '전체 맥락' + C4의 '세부 정보' ➡️ CNN으로 융합! ➡️ "업그레이드된 C4"
- "업그레이드된 C4" + C3의 '세부 정보' ➡️ CNN으로 융합! ➡️ "업그레이드된 C3"
- 기존 DETR은 모든 픽셀을 전체 맥락과 한꺼번에 비교해서 너무 느렸습니다. RT-DETR은 다양한 해상도의 특징들을 효율적으로 융합합니다. Self-Attention으로 CT의 모든 부분을 동시에 비교하며 관계를 파악합니다.
- [3단계] 디코더와 '스마트' 쿼리 (Decoder & Query Selection):
- 쿼리 선택: 기존 DETR처럼 '빈 카드(탐정)' 100개를 쓰지 않습니다. 2단계에서 풍부해진 정보(주로 C5)를 보고 "여기 뭔가 있을 것 같아!"라고 의심되는 중요한 위치 300개를 '똑똑한 탐정(스마트 쿼리)'으로 선발합니다.
- 탐지: 300명의 '스마트 탐정'들이 디코더에 들어가, 3개의 맵(C3, C4, C5)을 모두 참조합니다.
- 추론: "C5에서 '전체 맥락'을 보니 차고, C3에서 '세부 정보'를 보니 바퀴네... 이건 '자동차'가 확실해!"
- Cross-Attention으로 인코더가 파악한 정보를 참조하며 답을 찾습니다. 각 질문(쿼리)이 하나씩 담당해서 중복 없이 출혈을 찾습니다.
- 모델이 300개의 질문을 던집니다: "여기 출혈 있나요? 1번 위치에? 2번 위치에?..."Cross-Attention으로 인코더가 파악한 정보를 참조하며 답을 찾습니다. 각 질문(쿼리)이 하나씩 담당해서 중복 없이 출혈을 찾습니다.
- [4단계] 탐지 과정 (결과):
- 300명의 탐정이 각자 1:1로 물체를 할당받아(헝가리안 매칭) 답을 내놓습니다. 실제 출혈이 5개라면, 300개 질문 중 5개만 정답과 짝지어집니다. 나머지 295개는 "여기 없음"이라고 배웁니다. 이 방식 덕분에 NMS(중복 제거) 불필요 → End-to-end 학습 가능!
- 최종 결과:
- NMS-Free: NMS(청소부)가 필요 없습니다. (DETR의 장점)
- Real-Time: '하이브리드 인코더' 덕분에 속도가 매우 빠릅니다. (YOLO와 경쟁 가능)
- High Accuracy: '다중 해상도 맵(C3)'을 사용해 작은 물체도 잘 찾습니다.
YOLOv10과 RT-DETR은 둘 다 'NMS(후처리)'가 필요 없는 빠르고 효율적인 End-to-End 모델이라는 공통점이 있지만, 그 방식은 완전히 다릅니다.
YOLOv10은 전통적인 CNN(그리드) 방식을 극한까지 최적화했습니다. '앵커 프리(Anchor-Free)'를 채택해 K-means 같은 복잡한 '앵커 박스' 준비 과정을 없앴습니다. NMS 문제는 훈련 시 '이중 헤드(Dual Head)'*를 사용해 해결했습니다. '느슨한 헤드(One-to-Many)'가 풍부한 특징 학습을 돕고, '엄격한 헤드(One-to-One)'가 "물체 하나당=담당자 하나"를 강제로 할당합니다. 예측 시에는 이 '엄격한 헤드'만 사용하여 하나의 물체에 대해 여러 번 중복해서 Bounding box를 그리지 않도록 했습니다.
RT-DETR은 '트랜스포머' 방식을 '실시간'에 맞게 개선했습니다. 기존 DETR은 '저해상도 맵' 1장만 사용해 '전체 회의(셀프 어텐션)'를 하느라 느리고 작은 물체를 놓쳤습니다. 반면 RT-DETR은 HGNetv2 백본으로 '다중 해상도 맵(C3-C5)'을 추출합니다. '하이브리드 인코더'를 사용해, 비싼 '셀프 어텐션'은 저해상도(C5) 맵에만 적용하고, 고해상도(C3, C4) 정보는 빠른 CNN으로 융합하고, 이후 헝가리안 매칭으로 NMS 없이 결과를 도출합니다.
'ai' 카테고리의 다른 글
| Yolo 모델? (feat. 객체 탐지 모델) (0) | 2025.11.08 |
|---|---|
| DETR 모델? (feat. 초보자용 설명) (1) | 2025.11.08 |
| 원드라이브 ↔ 구글드라이브 파일 옮기기, 이렇게 하면 됩니다 (0) | 2025.10.24 |
| 생성형 AI, 일터의 생산성을 끌어올리다: 한국은 지금 어디에 와 있나? (0) | 2025.10.23 |
| 취업·대외활동·교육 사이트 총정리 및 실전 팁! 이것만 보고 완벽하게 준비하세요! (0) | 2025.10.23 |