mir.pe (일반/밝은 화면)
최근 수정 시각 : 2024-12-04 14:29:54

You Only Look Once



[[컴퓨터공학|컴퓨터 과학 & 공학
Computer Science & Engineering
]]
[ 펼치기 · 접기 ]
||<tablebgcolor=#fff,#1c1d1f><tablecolor=#373a3c,#ddd><colbgcolor=#0066DC><colcolor=white> 기반 학문 || 수학( 해석학 · 이산수학 · 수리논리학 · 선형대수학 · 미적분학 · 미분방정식 · 대수학( 환론 · 범주론) · 정수론) · 이론 컴퓨터 과학 · 암호학 · 전자공학 · 언어학( 형태론 · 통사론 · 의미론 · 화용론 · 음운론) · 인지과학 ||
하드웨어 구성 SoC · CPU · GPU( 그래픽 카드 · GPGPU) · ROM · RAM · SSD · HDD · 참조: 틀:컴퓨터 부품
기술 기계어 · 어셈블리어 · C/ C++ · C# · Java · Python · BIOS · 절차적 프로그래밍 · 객체 지향 프로그래밍 · 해킹 · ROT13 · 일회용 비밀번호 · 사물인터넷 · 와이파이 · GPS · 임베디드 · 인공신경망 · OpenGL · EXIF · 마이크로아키텍처 · ACPI · UEFI · NERF · gRPC · 리버스 엔지니어링 · HCI · UI · UX · 대역폭 · DBMS · NoSQL · 해시( SHA · 브루트 포스 · 레인보우 테이블 · salt · 암호화폐) · RSA 암호화 · 하드웨어 가속
연구

기타
논리 회로( 보수기 · 가산기 · 논리 연산 · 불 대수 · 플립플롭) · 정보이론 · 임베디드 시스템 · 운영 체제 · 데이터베이스 · 프로그래밍 언어{ 컴파일러( 어셈블러 · JIT) · 인터프리터 · 유형 이론 · 파싱 · 링커 · 난해한 프로그래밍 언어} · 메타데이터 · 기계학습 · 빅데이터 · 폰노이만 구조 · 양자컴퓨터 · 행위자 모델 · 인코딩( 유니코드 · MBCS) · 네트워크 · 컴퓨터 보안 · OCR · 슈퍼컴퓨터 · 튜링 머신 · FPGA · 딥러닝 · 컴퓨터 구조론 · 컴퓨터 비전 · 컴퓨터 그래픽스 · 인공지능 · 시간 복잡도( 최적화) · 소프트웨어 개발 방법론 · 디자인 패턴 · 정보처리이론 · 재귀 이론 · 자연어 처리( 기계 번역 · 음성인식) · 버전 ( 버전 관리 시스템 · Git · GitHub)

1. 개요2. 특징3. 동작과정4. 역사5. 버전
5.1. YOLO V15.2. YOLO V25.3. YOLO V35.4. YOLO V45.5. YOLO V55.6. YOLO V65.7. YOLO V75.8. YOLO V8
6. 여담

1. 개요

YOLO (you only look once) / 실시간 객체 검출 시스템]
YOLO (You Only Look Once)는 실시간 객체 검출 시스템으로, 2015년 조셉 레드몬에 의해 처음 소개되었다.
현재 버전 11(YOLOv11)까지 발전하며 지속적으로 개선되고 있다.

2. 특징

CNN(Convolutional Neural Networks) 딥러닝 모델을 기반으로 특징을 추출한뒤 이를 이용해서 물체의 종류와 위치를 Bounding Box 로 표시해 Label로 분류한다.
실시간 object detection이 가능하다.
R-CNN계열의 방식처럼 이미지를 분할 후 여러번 분석하는것이 아닌 원본 이미지 그대로를 통과시킨다.

3. 동작과정

1. 이미지 분할
입력 이미지를 SxS 크기의 균일한 그리드로 나눈다.
2. Bounding Box 예측
각 그리드 셀에서 B개의 Bounding Box를 예측한다.
일반적으로 그리드 셀별로 2개의 Bounding Box를 예측하여 총 2S^2개의 Bounding Box를 도출한다.
3. 신뢰도 점수 계산
각 Bounding Box에 대한 신뢰도 점수를 계산한다.
confidence=Pr(object)∗IOU(pred,truth)
Pr(object): 박스 내 객체 존재 확률
IOU: 예측된 박스와 실제 박스의 겹침 정도
4. 클래스 확률 계산
각 그리드 셀에서 객체의 클래스 확률을 계산한다.
5. 최종 검출
높은 신뢰도 점수를 가진 Bounding Box만 선택하여 최종 객체 위치와 클래스를 결정한다.

4. 역사

<rowcolor=#fff>버전 연도 주요 개발자 주요 특징
YOLOv1 2016 조셉 레드몬, 알리 파르하디 • CNN 기반 단일 신경망 사용
• 실시간 처리 가능
• 작은 객체 검출에 한계
YOLOv2 [1] 2017 조셉 레드몬, 알리 파르하디 • Batch Normalization, Anchor Box 도입
• Darknet-19 백본 사용
• 9000개 이상 객체 클래스 검출 가능
YOLOv3 2018 조셉 레드몬, 알리 파르하디 • Darknet-53 백본 사용
• Feature Pyramid Networks (FPN) 도입
• Residual Block 사용으로 네트워크 깊이 증가
YOLOv4 2020 Alexey Bochkovskiy, Chien-Yao Wang, Hong-Yuan Mark Liao • CSPNet 사용
• 모자이크 데이터 증강 기법 도입
• Self-Adversarial Training 적용
YOLOv5 2020 Ultralytics • PyTorch 기반 구현
• 다양한 모델 크기 제공 (S, M, L 등)
• 쉬운 설치와 구현
YOLOv6 2022 Meituan • Anchor-Free 검출 방식 도입
• 실시간 객체 검출 최적화
• 경량화 모델 제공
YOLOv7 2022 Wang Chien-Yao, Alexey Bochkovskiy • 높은 정확도와 속도
• 경량화된 모델 제공
• E-ELAN 구조 도입
YOLOv8 2023 Ultralytics • 다양한 컴퓨터 비전 작업 지원
• Anchor Free Detection 사용
• 직관적인 API 제공
YOLOv11 2024 Ultralytics • C3k2 블록 도입
• SPPF 및 C2PSA 컴포넌트 사용
• 향상된 특징 추출 능력
• 다양한 컴퓨터 비전 작업 지원
• 파라미터 수 감소로 효율성 증가

5. 버전

5.1. YOLO V1

- 객체 감지를 단일 회귀 문제로 정의한다.
- 빠른 속도를 자랑하지만 작은 물체 감지에 취약하다.
- 20개의 convolutional layers를 ImageNet dataset을 이용해 classification을 수행하는 방법으로 pre-train 한다.

5.2. YOLO V2

- 배치 정규화를 도입하여 모델 안정성을 향상시킨다.
- 앵커 박스 개념을 도입하여 다양한 크기와 형태의 객체 감지를 개선한다.
- Darknet-19 백본 네트워크를 사용한다.
- fully-connected layer를 제거하고 bounding box 예측을 위해 anchor box를 이용한다.

5.3. YOLO V3

(1) Backbone을 통해 3개의(최종, 중간, 초반) Feature map을 출력한다.
Selective Search[2] 방식이 RPN[3] 적용된 아키텍쳐 적용된 아키텍쳐를 사용한다.

“Backbone”, “Neck”, “Head” 3가지 구조가 도입되는데
Backbone : 이미지를 모델에 input으로 사용해, 이미지의 특징(feature map)을 ouptput으로 내보내는 모델
이때 Darknet 53을 사용해 v2보다 큰 모델을 사용해서 ResNet 152와 비슷한 성능을 확보했다. 그렇지만 전체 연산량은 ResNet 152보다 낮고 초당 1.5배 많은 양을 처리한다
(2) Neck에서 FPN을 통해 3개의 Feature map을 Upsampling과 Concatnation과정으로 3개 Feature map에 유의미한 특징을 부여한다
neck : Neck은 Backbone에서 나온 Feature map을 더 유의미하게 만들어주는 작업 (FPN사용)
head : Head는 이미지의 BoundingBox를 구하고 Classification Anchor Box라는 개념도입

(3) 3개의 Feature map에 각각 Anchor Box기법을 적용해 BoudingBox를 구한후 Classification한다.

5.4. YOLO V4

YOLOv4는 Alexey Bochkovskiy와 그의 팀이 개발했으며, 성능을 크게 향상시킨 여러 기술을 통합했다. 모자이크 데이터 증대, Cross-Stage Partial Connections (CSP), Self-Adversarial Training (SAT) 등의 기술이 사용되었으며, 이를 통해 이미지 내 작은 객체 감지 성능을 크게 높였다.

모자이크 데이터 증대: 데이터 증대 기법으로, 여러 이미지를 결합하여 네트워크가 다양한 객체 크기와 위치에 대해 학습할 수 있도록 한다.
CSP: CNN 네트워크의 성능을 개선하는 기법으로, 모델의 파라미터 효율성을 높이고 연산 속도를 향상시킨다.
SAT: Self-Adversarial Training은 네트워크가 스스로 방어적인 데이터 증대를 수행하여 더욱 강력한 객체 검출 성능을 얻을 수 있도록 돕는다.
YOLOv4는 속도와 정확성의 균형을 맞추며, 특히 작은 객체 감지와 같은 복잡한 작업에서 매우 효율적인 성능을 발휘한다.

5.5. YOLO V5

YOLOv5는 2020년에 Ultralytics에서 개발되었다. YOLOv5는 PyTorch를 기반으로 개발되어, 기존 YOLO 모델들보다 훈련이 쉽고 코드가 간단하다는 장점이 있다.

PyTorch 기반: 코드가 간결하고 접근성이 좋아져 많은 연구자와 개발자들이 YOLOv5를 사용하게 되었다.
모듈화된 구조: YOLOv5는 각 요소가 모듈화되어 있어, 쉽게 수정 및 업데이트가 가능하다.
YOLOv5는 매우 빠르고 효율적이며, 특히 소형 디바이스에서도 높은 성능을 유지할 수 있도록 최적화되었다.
Ultralytics는 YOLOv5의 지속적인 업데이트를 통해, 여러 하드웨어와 다양한 딥러닝 작업에 적용할 수 있도록 확장 가능성을 높였다.

5.6. YOLO V6


YOLOv6는 다양한 기여자들에 의해 개발된 모델로, 주로 경량화된 아키텍처추론 속도에 집중되었다.

경량화된 구조: YOLOv6는 자원 제한이 있는 디바이스에서도 높은 성능을 유지할 수 있도록 아키텍처를 경량화했다.
추론 속도 개선: 모델의 구조를 최적화하여 더 빠른 속도로 객체를 탐지할 수 있게 했다.
효율적인 훈련 절차: 훈련 과정을 개선하여, 적은 데이터와 자원으로도 높은 정확도를 달성할 수 있도록 설계되었다.
YOLOv6는 실시간 감지와 같은 고속 처리가 필요한 작업에 적합한 모델로 자리 잡았다.

5.7. YOLO V7


YOLOv7은 YOLOv6의 성능을 기반으로 추가적인 아키텍처 개선과 최적화를 통해 더욱 발전된 성능을 제공했다.

추론 효율성 개선: YOLOv7은 YOLOv6보다도 더욱 빠르고 효율적인 추론 성능을 제공하도록 아키텍처가 개선되었다.
모듈성 강화: 여러 작업에 유연하게 적용할 수 있도록 모델의 모듈성이 강화되었으며, 다양한 스케일의 물체를 감지하는 데 더욱 최적화되었다.
적응형 훈련 전략: YOLOv7은 훈련 과정에서 데이터에 더 적응할 수 있는 기법을 도입하여, 기존보다 더 높은 정확도를 달성할 수 있도록 돕는다.
YOLOv7은 특히 경량화된 모델임에도 불구하고 다양한 환경에서 빠르고 정확한 성능을 제공한다.

5.8. YOLO V8


2023년, Ultralytics에서 출시한 YOLOv8은 현재까지의 YOLO 모델 중 가장 강력하고 유연한 성능을 제공한다.

다양한 작업 지원: YOLOv8은 객체 감지, 인스턴스 분할, 포즈 추정, 이미지 분류 등의 다양한 작업을 수행할 수 있도록 설계되었다.
배포 유연성: YOLOv8은 ONNX, TensorRT 등 다양한 배포 옵션을 지원하며, 여러 환경에서 최적의 성능을 낼 수 있도록 한다.
최첨단 성능: YOLOv8은 최신 기술과 최적화를 통해 이전 버전보다 더 빠르고 정확한 성능을 제공하며, 실시간 감지 작업에서도 높은 정확도를 유지할 수 있다.
YOLOv8은 속도와 정확성 모두에서 최첨단 기술을 반영한 모델로, 다양한 딥러닝 작업에 폭넓게 사용될 수 있다.

6. 여담


[1] YOLO9000 [2] object recognition을 실행하기 전에 segment한 후 object recognition [3]