[논문리뷰]WHAT IS YOLOV8: AN IN-DEPTH EXPLORATION OF THEINTERNAL FEATURES OF THE NEXT-GENERATION OBJECTDETECTOR
YOLOv8은 어떻게 성능을 높였는지에 대해서 정리하고, Python 패키지 및 CLI와 같은 개발자 친화적인 개선사항에 대해서도 정리해본다.
Introduction
survey의 목적은 v8 이 어떤 구조로 이루어져있으며, 해당 모델을 사용할 때 많은 종류의 시나리오에서 어떤 모델을 적용하는게 적합한지 설정하기 위한 내용이 주된 내용임 key focus
- CSPNet Backbone & FPN + PAN 구조의 영향
- anchor-free의 이점
- Python package & CLI의 역할
- COCO Roboflow 100 benchmark
Evolution of YOLOv8
2023년 부터 Ultralytics에서 개발하기 시작하면서 매우 큰 발전하기 시작했음 기본적으로 YOLOv5 기반 위에서 구축하였고, 중요한 아키텍처 및 방법론 혁신을 통합하였음
개발 타임라인
날짜 | 변경 사항 | 핵심 효과 |
---|---|---|
2023-01-10 | YOLOv8 공식 출시: 앵커 프리(Anchor-free) 아키텍처 도입 | 앵커 설정/튜닝 제거로 학습 단순화, 다양한 물체 스케일/비율에 더 유연, 정확도 향상 |
2023-02-15 | YOLOv8 Python 패키지 및 CLI 공개 | 학습/검증/추론/배포 워크플로우 간소화, 명령어/짧은 코드로 일관된 사용성 제공 |
2023-03-05 | 고급 데이터 증강: Mosaic, MixUp 도입 | 데이터 다양성 증대로 일반화 성능 향상, 오버피팅 감소 |
2023-04-20 | CSPNet 백본 + 하이브리드 FPN+PAN 넥 통합 | 효율적 특징 추출과 다중 스케일 결합으로 작은~큰 물체 탐지 성능 향상 |
2023-06-01 | ONNX/TensorRT 내보내기 지원 | 다양한 하드웨어(엣지 포함)로의 배포 용이, 지연 시간 단축 및 추론 속도 개선 |
Architecture
YOLOv8에서는 classification 과 localization 에 대한 task를 single end-to end 신경망 네트워크로 속도와 정확도의 밸런스를 맞추었다.
Backbone
- multi-scale features input을 위해 설계된 Backbone은 CSPDarknet의 확장이거나 또 다른 효율적인 아키텍처로 설계되었음
- 해당 구조는 계층적 특서 맵을 저장하는 방식임(저수준, 고수준)
Neck
- 계층적 특성 맵 간의 정보 흐름을 개선하기 위해 PANet(Path Aggregation Network)를 적극적으로 활용한다.
- 멀티 스케일을 처리하는 방식은 여러 스케일의 물체를 감지하는 데 중요함. 이를 메모리 사용량과 계산 효율성을 더욱 최적화하기 위해 기존 PANet에 대한 수정이 되어있음
Head
- 특징 맵을 받아 최종 예측을 만듬: Box coordinates, confidence scores(객체 존재 확률), class labels
- 단 YOLOX와 같이 decoupled head 구조를 통해 classification과 Bounding Box 를 분리해서 예측함
anchor-free
- 하이퍼 파라미터 수 감소
- 예측 과정 단순화
- 적응력 증가
Training Methodologies
Advanced Data Augmentation
- mosic: 여러개의 input 이미지들을 모자이크처럼 잘라서 붙여 학습시키는 데이터 증강 기법
- mixup: 여러개의 이미지의 투명도를 다르게 해서 겹쳐서 학습시키는 데이터 증강 기법
Focal Loss Function
- 분류 작업에 초첨을 둔 loss function을 통해 분류가 어려운 샘플에 더 큰 가중치를 부여함
- 이를 통해 클래스 불균형 문제를 완화시키고 작은 물체나 가려진 물체에 대한 탐지 능력을 향상 시킴
Transition to pytorch with Optimization
- PyTorch로의 전환을 위해 GPU 아키텍처를 활용하기 위해 모델 아키텍처와 훈련 프로세스를 최적화시켰음
- 이를 통해 더 빠른 훈련 속도와 추론 속도를 달성할 수 있었음
Anchor-Free Bounding Box Prediction
- anchor-free 방식을 통해 bounding box를 예측하는 방식을 통해서 계산 복잡성을 줄인다.
- 특히 다양한 종횡비와 크기의 물체를 탐지할 때 모델 효율성을 향상시킴
Loss Calculation
- Focal Loss for Classification: 분류가 어려운 샘플에 더 큰 가중치를 주면서, 분류 문제에 대한 탐지 능력을 높임
- IoU Loss for localization: 예측 상자내에 실제 객체가 있도록 하는 능력 개선
- Objectness Loss: 실제 박스에 객체가 존재하는지 여부
Mixed Precision Training
- 훈련과 추론 과정에서 16비트 부동 소수점 정확도를 활용함. 이는 NVIDIA A100이나 T4모델과 같은 호환 가능한 GPU에서 훈련 과정을 크게 가속화함.
- 메모리 소비량을 줄여 큰 배치 사이즈 처리 및 더 효율적인 GPU 활용을 가능하게 함
- 모델의 순전파와 역전파의 계산과 활성화 값 계산은 FP16 으로 적용함.
- 대신 곱셈 누적/ 가중치 업데이트 일부 리덕션은 FP32 → 수치 안정성을 위해
CSP Backbone and Efficient Layer Aggregation
- CSP 고급 버전을 통합함으로써 컴퓨팅 계산의 빈도수를 줄이고 기능 재사용성을 높임
- FPN을 개선하여 다중 스케일 특징을 더 효과적으로 더 빠른 추론이 가능하도록 함
- Enhanced PANet Neck: v5에서 사용했던 PANet아키텍처를 기반으로 개선된 버전을 적용
- 특징 정보 흐름을 최적화하여 모델의 다양한 규모와 맥락에서 물체를 탐지하는 능력을 향상시킴
- 최적화된 PANet은 복잡한 물체 탐지나 밀집된 물체가 존재하는 경우에서 효과적임
Performance Metrics
메트릭 | 의미 | 중요성/해석 |
---|---|---|
mAP (Mean Average Precision) | 클래스 전반에 걸친 객체 검출 정확도 지표 | 값이 높을수록 전체 검출 성능이 좋음 |
Inference Time | 이미지 한 장(또는 배치)을 처리하는 추론 속도 | 실시간 응용에 중요, 짧을수록 좋음(지연 감소) |
Training Time | 최적 성능에 도달하기까지의 학습 소요 시간 | 효율성 지표, 짧을수록 개발/실험 속도 향상 |
Model Size | 파라미터 수/메모리 차지 등 배포 자원 요구량 | 작을수록 메모리·연산 제약 있는 장치에 유리 |
- mAP 5% point 상승
- 추론 시간 5ms 감소
- Training Time 2시간 감소
YOLOv8 models
모델명 | 파라미터 수 (백만) | 정확도 (mAP@0.5) | CPU 추론시간(ms) | GPU 추론시간(ms) | 특징/ 활용 예시 |
---|---|---|---|---|---|
YOLOv8n | 2 | 47.2 | 42 | 5.8 | - 가장 작고 빠름, IoT/엣지/모바일 구현에 적합, 성능은 다소 낮음 - ONNX Runtime, TensorRT와의 통합을 통해 배포 유연성 향상 |
YOLOv8s | 9 | 58.5 | 90 | 6.0 | - 표준형, 속도와 정확도의 균형, 소형 물체 탐지 및 CPU/GPU 모두 적합 - 시리즈의 베이스 모델 향상된 SPP와 개선된 PANet이 적용된 모델 |
YOLOv8m | 25 | 66.3 | 210 | 7.8 | 중간형, 다양한 상황에서 실시간/정확도 균형, 실무 일반용 |
YOLOv8l | 55 | 69.8 | 400 | 9.8 | 대형, 복잡한 물체/고해상도 이미지 인식, 의료/자율주행 등 정밀 응용 |
YOLOv8x | 90 | 71.5 | 720 | 11.5 | - 가장 크고 정확, 산업·보안·의료 같은 최고의 정밀도 요구 환경 - 고급 GPU 필요 권장 |
Annotation Format
Pytorch TXT 포멧을 계승
라인 구조: ”
- 좌표는 이미지 크기에 대한 정규화 값
- 보조 파일: YAML 구성 파일로 클래스 라벨, 데이터 경로, 모델 설정 등을 지정
- 호환/변환: Roboflow, VOTT, LabelImg, CVAT 등에서 직접 YOLO 포맷으로 내보내거나 변환 지원. 데이터셋별 포맷을 YOLOv8에 맞게 변환해 사용.
Labelling Tools
- 권장 툴: Roboflow(라벨링/증강/포맷 내보내기 일원화, YOLOv8과 원활 통합).
- 주요 통합 플랫폼과 역할:
- Deci: 모델 최적화/양자화로 추론 가속 및 모델 크기 축소(엣지 배포 효율화).
- ClearML: 실험 추적, 원격 학습, 협업형 MLOps 워크플로우.
- Roboflow: 라벨링, 증강, 데이터셋 관리 및 YOLOv8 호환 내보내기.
- Weights & Biases: 학습 런 추적, 하이퍼파라미터 튜닝, 시각화.
Review & Discussion
이전에 연구들과 다르게 노골적으로 end-to-end를 구현하기 위해 노력하였음을 말하면서 YOLOv8을 설명하는 방식으로 작성되어있었다. YOLO가 궁극적으로 가려고 하는 방향을 확실하게 하는 생각이 들었다. 그리고 모델의 크기의 다양성을 늘려서 산업에서 사용시에 적절한 복잡도의 모델을 지원하고자 하는 노력이 느껴졌다.
지금까지의 방식과 다르게 산업이나, 개발자 친화적인 부분을 좀 더 강조한 느낌이 있었다. 특히 pytorch의 포멧을 계승한 내용과 labelling tool의 지원을 통해 적용하고자 하는 산업에 편의성을 좀 늘려주는데 집중한 업데이트를 진행하였다.
모델의 복잡도나 이런 부분을 신경쓰기 보다는 최적화를 어떻게 진행했는지에 대한 부분을 강조하였다.
댓글남기기