최근 수정 시각 : 2024-09-13 22:14:05

You Only Look Once



||<tablealign=center><tablewidth=100%><tablebordercolor=#0066DC><tablebgcolor=#fff,#1c1d1f>
컴퓨터 과학 & 공학
Computer Science & Engineering
||
{{{#!wiki style="margin:0 -10px -5px; min-height:calc(1.5em + 5px)"
{{{#!folding [ 펼치기 · 접기 ]
{{{#!wiki style="margin:-5px -1px -11px; word-break:keep-all"
<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 V75.7. YOLO V65.8. YOLO V8
6. 여담

1. 개요

YOLO (you only look once) / 실시간 객체 검출 시스템]
YOLO는 조셉 레드몬에 의해 2015년 등장한 실시간 객체 검출 시스템 / real time object detection이다. 현재 많은 업데이트 인해 버전8(YOLO V8) 까지 작성되었다.

2. 특징

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

3. 동작과정

사진이 입력되면 가로 세로를 동일한 nxn 그리드 영역으로 나눈다.
Bounding Box 를 그려 그리드 영역에 대한 사물을 찾는 작업과 어떤 사물이 탐지되었는지에대한 Classification 작업이 동시에 실행된다. 일반적으로 그리드 셀별로 2개의 Bounding Box 2n^2개를 도출한다.
Classification이 끝나면 여러 Bounding Box중 확률이 높은 박스들만 남겨준다.
해당 객체(Bounding Box) 안의 Classification로 위치와 객체의 종류가 나오게된다.



4. 역사

YOLO (2016): Joseph Redmon과 그의 팀이 개발한 최초의 YOLO 모델은 객체 감지를 단일 회귀 문제로 정의하여 혁신을 일으켰다. 기존의 영역 제안분류 파이프라인과 달리 속도가 매우 빨랐지만, 특히 작은 물체 감지에서는 정확도가 낮았다.
YOLOv2 (2017): - YOLO9000 - 으로도 알려진 이 버전은 배치 정규화, 앵커 박스, Darknet-19 백본을 사용하여 성능을 개선했다. YOLOv2는 9000개 이상의 개체 범주를 감지할 수 있도록 지원하며, 더 빠르고 정확한 객체 감지를 가능하게 했다.
YOLOv3 (2018): - Darknet-53 - 을 백본으로 사용하고 기능 피라미드 네트워크를 도입하여 다중 스케일 예측을 가능하게 했다. 특히 작은 물체 감지 성능이 크게 향상되었고, 속도와 정확성의 균형을 잘 맞췄다.
YOLOv4 (2020): Alexey Bochkovskiy와 그의 팀이 개발한 이 버전은 모자이크 데이터 증대, CSP(Cross-Stage Partial Connection), Self-Adversarial Training 등 새로운 기술을 통합했다. 이를 통해 YOLOv4는 당시 가장 효율적이고 정확한 객체 감지기 중 하나로 자리잡았다.
YOLOv5 (2020): Ultralytics에서 출시한 YOLOv5는 간단하고 접근성이 좋은 코드와 사용자 친화적인 훈련 절차로 인기를 끌었다. PyTorch와의 통합을 통해 강력한 성능과 사용의 용이성을 제공하며, 원래 작성자가 아니더라도 널리 사용되었다.
YOLOv6 및 YOLOv7 (2022): 다양한 기여자들이 개발한 이 버전들은 모델 아키텍처 최적화와 훈련 절차 개선에 집중했다. 특히, 리소스가 제한된 장치에서도 뛰어난 성능을 발휘하도록 설계되었다.
YOLOv8 (2023): Ultralytics에서 개발한 YOLOv8은 객체 감지, 인스턴스 분할, 포즈 추정, 이미지 분류 등의 다양한 작업에서 최첨단 성능을 자랑한다. 유연하고 빠르며 정확한 이 모델은 ONNXTensorRT와 같은 다양한 배포 옵션을 지원한다.
참고로, 각 버전은 이전의 성과를 기반으로 추가 개선을 이루어 냈으며, 최신 버전인 YOLOv8은 속도와 정확성 면에서 새로운 기능과 최적화를 통해 지속적으로 발전하고 있다. ✨


YOLOv8 (2023): Ultralytics에서 개발한 YOLOv8은 객체 감지, 인스턴스 분할, 포즈 추정, 이미지 분류 등의 다양한 작업에서 최첨단 성능을 자랑합니다. 유연하고 빠르며 정확한 이 모델은 ONNX 및 TensorRT와 같은 다양한 배포 옵션을 지원합니다.

5. 버전

YOLO는 입력 이미지를 SxS grid로 나눈다. 만약 개체의 중심이 grid cell에 들어간다면, 그 grid cell은 해당 객체에 대해 detecting을 수행한다.
grid cell은 B개의 bounding box와 confidence score를 예측한다. confidence score는 박스가 물체를 포함하는지와 얼마나 정확하게 예측한 박스가 맞는지를 반영한다. confidence는 다음과 같이 정의된다.
[math(\begin{matrix} confidence=Pr(object)∗IOU(pred,truth) \\ \end{matrix})]

bounding box는 x,y,w,h,confidence를 예측한다.
x,y는 중심 좌표, w,h는 높이와 너비
confidence는 위에 정의한 confidence이다.

5.1. YOLO V1

기본적으로 YOLO는 1-stage detector로 하나의 네트워크로 detection을 수행한다.
20개의 convolutional layers를 ImageNet dataset을 이용해 classification을 수행하는 방법으로 pre-train 한다.

5.2. YOLO V2

‘’주요 변경점’’
batch normalization
Anchor Boxes 사용
offset을 예측하는 방식이 해결해야할 문제를 단순화하고, network의 학습을 쉽게 하기위해 fully-connected layer를 제거하고 bounding box 예측을 위해 anchor box를 이용함.

5.3. YOLO V3

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

“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




5.5. YOLO V5

5.6. YOLO V7

5.7. YOLO V6

5.8. YOLO V8

6. 여담


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