YOLO 모델 구조 완전 정복

모델 분석 사진


딥러닝을 활용한 객체 탐지 프로젝트를 처음 진행하면서 YOLO 모델을 접하게 되었고, 단순히 모델을 실행하는 수준을 넘어서 내부 구조를 이해하고 싶다는 필요성을 느꼈습니다. 왜 YOLO가 실시간 객체 탐지에 강한지, 어떤 방식으로 이미지를 처리하고 예측하는지 알고 나니 모델을 튜닝하거나 오류를 분석할 때 큰 도움이 되었습니다. 이번 글에서는 YOLO 모델의 전체 구조를 구성 요소별로 완전히 정리해보고자 합니다.

YOLO의 전체 구조 개요

YOLO는 You Only Look Once의 줄임말로, 입력 이미지를 한 번에 처리해 객체의 위치와 클래스 정보를 동시에 예측하는 딥러닝 기반 객체 탐지 모델입니다. YOLO는 크게 세 가지 주요 구성 요소로 나뉩니다. 바로 백본(Backbone), 넥(Neck), 헤드(Head)입니다. 각각은 이미지로부터 특징을 추출하고, 다양한 스케일에서 정보를 통합하며, 마지막으로 객체의 위치와 클래스를 예측하는 역할을 수행합니다.

YOLOv1부터 YOLOv8까지 버전이 발전하면서 구조적인 개선이 반복되었지만, 기본적인 흐름은 유지되어 왔습니다. YOLOv3에서는 Darknet-53을 백본으로 사용했고, YOLOv5에서는 CSPDarknet을 사용하면서 성능과 경량화 사이의 균형을 맞추었습니다. 최신 버전인 YOLOv8은 anchor-free 구조와 새로운 C2f 블록을 도입하여 효율성과 정확성을 동시에 개선했습니다.

YOLO의 가장 큰 특징은 단일 신경망을 통해 예측을 수행한다는 점입니다. 이로 인해 R-CNN 계열처럼 복잡한 후보 영역 추출 과정 없이 빠르게 결과를 낼 수 있습니다. 이제 각 구성 요소를 자세히 살펴보겠습니다.

백본 – 특징 추출의 핵심

백본은 입력 이미지를 받아 CNN을 통해 고차원 특징 맵으로 변환하는 역할을 합니다. 초기 YOLO 모델에서는 Darknet-19 또는 Darknet-53을 사용했고, 이후 YOLOv5에서는 CSP(Cross Stage Partial) 구조를 기반으로 한 CSPDarknet이 적용되었습니다. 이 구조는 연산량을 줄이면서도 정보 손실 없이 깊은 특징을 효과적으로 추출할 수 있도록 설계되었습니다.

CSP 구조는 특징 맵을 두 경로로 나누어 일부는 그대로 전달하고, 나머지는 블록을 거쳐 통합하는 방식으로 연산 효율성과 정확도를 모두 높이는 효과가 있습니다. 최근 YOLOv8에서는 C2f라는 새로운 구조가 도입되었으며, 이는 Bottleneck 구조를 확장한 형태로 채널 분할과 병합을 반복하면서 효율적인 정보 흐름을 유지합니다.

백본에서 생성된 특징 맵은 각 객체의 모양, 질감, 위치 등과 관련된 다양한 정보를 담고 있으며, 이 정보를 기반으로 넥과 헤드에서 객체를 탐지하게 됩니다. 백본의 성능은 전체 모델의 성능과 직결되기 때문에, 실무에서는 목적에 따라 경량화된 백본(yolov5n, s) 또는 고성능 백본(yolov5x, yolov8x)을 선택합니다.

넥 – 다중 스케일 정보 통합

넥은 백본에서 추출된 여러 수준의 특징 맵을 통합하여, 다양한 크기의 객체를 동시에 탐지할 수 있도록 도와주는 구조입니다. YOLOv3 이후에는 FPN(Feature Pyramid Network)이 널리 사용되었고, YOLOv4와 v5에서는 PANet(Path Aggregation Network)이 추가되어 상하 방향의 정보 흐름을 모두 활용하는 구조로 발전했습니다.

PANet은 상위 레벨의 추상적인 정보뿐만 아니라, 하위 레벨의 세부 정보도 활용할 수 있도록 경로를 구성하여 작은 객체에 대한 탐지 성능을 개선합니다. 이는 작은 글자, 도로 위의 물체처럼 크기가 작고 분류가 어려운 대상에 특히 효과적입니다.

YOLOv8에서는 BiFPN과 유사한 형태로 정보 통합 방식을 개선하였으며, 파라미터 효율성과 특징 결합의 유연성을 높이는 방향으로 발전했습니다. 넥 구조의 핵심은 다양한 크기의 객체에 대해 강건한 특징 표현을 가능하게 하는 것이며, 이는 실제 영상에서 크기와 위치가 다양한 사물을 탐지할 때 매우 중요합니다.

헤드 – 위치와 클래스 예측

헤드는 넥에서 통합된 특징 맵을 바탕으로 최종적으로 객체의 바운딩 박스 좌표와 클래스 확률을 출력하는 부분입니다. 기존 YOLO 모델은 앵커 박스를 기반으로 다수의 바운딩 박스를 예측하고, 그중 신뢰도가 높은 것을 선택하는 방식이었습니다. 이 방식은 높은 정확도를 보장했지만, 앵커 설정에 따라 성능이 달라지는 단점이 있었습니다.

YOLOv8에서는 이러한 단점을 보완하고자 anchor-free 구조를 도입하였습니다. 이는 중심점 중심의 예측 방식으로, 객체 중심의 좌표만을 예측하면서 더욱 단순하고 유연한 구조를 갖습니다. 이 방식은 학습 속도와 수렴 안정성을 향상시키는 데 도움이 되며, 다양한 객체 크기에 대해서도 강건한 성능을 보여줍니다.

헤드에서는 일반적으로 클래스 수만큼의 softmax 또는 sigmoid 출력층과, 바운딩 박스를 위한 좌표 예측층이 함께 구성됩니다. 학습 시에는 바운딩 박스 손실 함수(GIoU, CIoU 등)와 클래스 손실(Cross Entropy 또는 BCE)이 동시에 사용되어 최적의 예측 성능을 달성합니다. YOLO의 헤드는 단일 단계(single stage) 구조로, 탐지 속도를 크게 높일 수 있다는 장점도 있습니다.

결론 – YOLO 구조의 효율성과 진화

YOLO 모델은 단일 신경망으로 객체의 위치와 클래스를 동시에 예측하는 구조적 효율성 덕분에, 객체 탐지 분야에서 가장 널리 사용되는 딥러닝 모델 중 하나가 되었습니다. 백본, 넥, 헤드로 이어지는 구조는 각 단계마다 최적화가 이루어져 있으며, 버전이 업그레이드될수록 정확성과 속도 면에서 지속적으로 발전하고 있습니다.

제가 경험한 프로젝트에서도, YOLO의 구조를 충분히 이해하고 나니 모델 선택과 튜닝이 훨씬 수월해졌고, 성능 향상에도 큰 도움이 되었습니다. 특히 anchor-free 방식의 YOLOv8은 설정이 간단하면서도 뛰어난 성능을 보여주었고, 다양한 해상도와 환경에서 일관된 결과를 제공했습니다.

앞으로도 YOLO 모델은 새로운 백본 구조나 최적화 기법을 반영하면서 계속 진화할 것이며, 실시간 객체 탐지의 핵심 기술로 자리 잡을 것입니다. YOLO의 구조를 정확히 이해하는 것은 단순히 모델을 사용하는 것을 넘어, 실제 문제에 효과적으로 적용할 수 있는 핵심 역량으로 이어집니다.

댓글

이 블로그의 인기 게시물

모델 평가 지표 정리 – 정확도, 정밀도, F1 Score까지

선형회귀와 로지스틱 회귀 – 가장 기초적인 예측 모델들

지도학습 vs 비지도학습 – 머신러닝의 대표 학습 방식 비교