논문명: You Only Look Once: Unified, Real-Time Object Detection
학회(출판연도): CVPR (2016)
연구분야: 딥러닝 기반 객체 탐지 및 컴퓨터 비전
✓ 단일 네트워크
입력(이미지)부터 출력(탐지 결과)까지 하나의 신경망이 책임지는 구조
ex. 객체 후보 영역→특징추출→분류를 따로따로 하지 않고
하나의 네트워크에서 한 번에 처리!
✓ 손실함수(Loss Function)
- 모델이 예측한 값과 실제 정답 사이의 차이를 수치로 나타낸 함수
- 값이 작을수록 → 예측이 정답에 가깝다.
- 값이 클수록 → 예측이 많이 틀렸다.
✓ 엔드 투 엔드(end-to-end) 학습
입력에서 출력까지 전체 과정을 “하나의 목적(손실함수)”으로 묶어 직접 최적화
<전통적>: Region Proposal 네트워크 따로, CNN 분류기 따로
→ 각각 부분 최적화: 탐지 성능(mAP 등)을 반영한 하나의 손실함수로
좌표+ 클래스 예측을 동시에 학습→ 네트워크 전체가 한 번에 업데이트!
(구간 별 개선X, 최종 기록 하나만 보고 훈련)
✓ 왜 목적이 손실함수?
머신러닝 모델은 학습 과정에서 “손실 함수의 값을 최소화”하는
방향으로 파라미터(가중치)를 업데이트→ 학습 과정 전체의 최종목표가 손실함수를 줄이는 것이기 때문
✓ YOLO에서의 손실함수 예시
- 바운딩 박스 위치 오차(좌표 손실)
- 박스 크기 오차(width, height)
- 객체 존재 여부(objectness)
- 클래스 분류 오차
✓ 엔드 투 엔드 방식의 장점
- 전체 최적화, 단순한 파이프라인, 빠른 학습 및 추론, 에러 누적 방지, 확장성과 일반화
→ 처음부터 끝까지 한 팀이 전체를 보고 최적화하기 때문에 최종 결과 품질이 좋아짐
✓ 각각의 다른 팀들이 따로 최적화를 하면 최종적인 결과가 이상해질 수도 있음
✓ YOLO(You Only Look Once)
→ “이미지를 단 한 번만 보고, 동시에 탐지와 분류를 끝낸다”
<전통적> R-CNN 계열: 이미지를 여러 번 본다
→ 먼저 영역 후보(region proposal)를 찾고 그 영역을 다시 CNN으로 분류
: 이미지를 딱 한 번만 본다(look once)
→ 한 번의 네트워크 연산으로 객체의 위치 + 클래스를 동시에 예측
✓ 이미지를 한 번만 전체적으로 훑어서,
그리드 단위로 객체의 위치(바운딩 박스)와 종류(클래스)를 “동시에 예측”하는
실시간 객체 탐지 알고리즘
기존 방식과의 차이점
<기존>
객체 탐지를 하나의 회귀(regression) 문제로 정의
→ 바운딩 박스 위치 + 클래스 확률을 동시에 예측
이미지를 입력받으면 “단일 신경망”이 바로 전체 탐지 수행
여러 단계X “한 번에(You Only Look Once)” 결과를 내는 구조
→ 엔드 투 엔드 최적화
(성능 기준으로 전체 네트워크를 직접 조정 가능)
YOLO의 특징
- 기본 YOLO: 초당 45프레임(실시간 영상 처리 가능)
- Fast YOLO: 초당 155프레임(매우 빠른 속도)
- mAP(mean Average Precision): 기존 실시간 탐지기보다 약 2배 높음
✓ 장점
✓ 단점
다른 최신 객체 시스템과 비교했을 때 위치(localization) 정확도가 떨어짐
(박스가 덜 정확할 수도)
⇒ YOLO는 “진짜 물체인지 아닌지(배경인지)”를 잘 구별하지만,
물체의 위치를 아주 정교하게 잘라내는 능력은 부족하다~
✓ 왜 객체 탐지가 중요한가?
<사람>: 한 번 흘끗 보기만 해도
①이미지 안에 무엇이 있는지 ②어디에 있는지 ③ 어떻게 상호작용하는지 즉시 파악
→ 이러한 능력을 컴퓨터가 갖추면, 자율주행, 시각 보조 등 다양하게 활용 가능해짐
✓ (P) 이전 방식의 한계 → (S) YOLO의 등장
| DPM | R-CNN | YOLO | |
|---|---|---|---|
| 핵심 아이디어 | 부분(Parts) 조합 + HOG | 영역제안 + CNN | 단일 네트워크 한번에 예측 |
| 특징 추출 | 수작업 특징(HOG) | CNN | CNN |
| 탐지방식 | 다중 스케일 슬라이딩 윈도우 | Selective Search로 후보 생성 → 후보마다 CNN | 이미지 그리드별로 동시 예측 |
| 학습 구조 | HOG + SVM | CNN 사전 학습→ SVM → BBox 회귀 | 엔드 투 엔드 단일 손실로 공동 학 |
| 속도 | 느림(실시간 불가) | 매우느림 | 실시간 |

DPM: 슬라이딩 윈도우 방식 ← 이미지 전체 일정 간격 위치에서 분류기 실행
R-CNN:
영역 제안(region proposal) → 이미지 내에 잠재적 바운딩 박스 생성
→ 이 박스 각각에 분류기 적용 → 후처리(박스보정, 중복제거, 재 점수화)
하나의 회귀(regression) 문제로 재정의
→ 이미지 픽셀에서 바로 바운딩 박스 좌표와 클래스 확률을 예측하는 방식
⇒ 한 번만 보더라도 “어떤” 객체가 “어디에”있는지 예측 가능

✓ 매우 빠름
- 탐지를 회귀문제로 정의하여 복잡한 파이프라인 필요없음
- 실시간 스트리밍 충분(기본: 45FPS, 빠른 버전: 150+FPS, 지연 25ms미만)
✓ 이미지 전체를 전역적으로 고려
객체 외형뿐 아니라 “맥락 정보”까지 포함 가능
↔ Fast R-CNN: 전체 맥락 못 봄
⇒ YOLO가 배경 오탐수 절반 이하
✓ 객체에 대한 일반화 가능한 표현 학습
자연 이미지로 학습 후, 예술작품으로 테스트했을 때, 성능하락 덜함
→ 새로운 도메인이나 예상치 못한 입력에도 견고
✓ 정확도는 아쉽긴 하다
- 작은 객체의 경우 정확한 위치를 지정하는데에 어려움
: 제안 → 분류 → 후처리 를 따로 돌리지 않고 한 개의 CNN이 한 번에 모든 박스와 클래스
동시 예측
⇒ 이미지 전체 맥락을 본 상태로 판단(엔드투엔드 학습, 실시간 처리 속도, 평균 정밀도)

✓ 조건부 확률
→ 어떤 사건이 이미 일어났다는 조건 하에 다른 사건이 일어난 확률
- P(A | B): 사건 B가 일어났을 때 사건 A가 일어난 확률
- P(A교B): 사건 A와 B가 동시에 일어날 확률
- P(B): 사건 B가 일어날 확률
✓ 예측값에서 왜 Bx5 일까?
출력 구조 : S x S x (B x 5 + C)
→ CNN으로 구현 후, PASCAL VOC 객체 탐지 데이터셋으로 성능 평가
→ 네트워크 초기 합성곱 계층은 이미지의 특징을 추출하고,
이후, 완전연결층(FC) 계층들이 츨력 확률과 좌표 예측

✓ 왜 굳이 1x1로 줄일까? 그냥 피쳐맵의 개수를 좀 줄이면 되는 거 아닌가?
그냥 채널 수를 줄이게 되면(필터수의 적게 잡거나, 일부 채널 버림)
→ 어떤 조합을 남길 지가 모델의 학습을 통해 정해지는 것이 아닌 설계자가 미리 결정하는 꼴이 됨
1x1 Conv는 각 위치에서 채널을 선형결합하여
“학습적으로”
“어떤 정보만 압축할지”를 선택→ 손실을 최소화하며 줄일 수 있음
- 연산량 K^2 x C_in x C_out
- 그냥 C_out을 줄이는 건 여전히 3x3xC_in을 모두 계산해야해서 비싸다
- 1x1로 먼저 C_in → C_mid로 압축 필요
✓ 사전학습
분류용 ImageNet(1000 class)로 앞쪽 20개 Conv 먼저 학습
그 위에 Average Pooling + FC 붙여서 약 1주 학습
→ ImageNet 2012 검증셋 Top-5 정확도 88% 달성
프레임워크: Darknet 사용
✓ 프레임워크
→ 딥러닝 모델을 구현, 학습, 추론할 수 있는 툴킷
✓ Darknet
→ YOLO 개발자가 직접 만든 초경량,초고속 딥러닝 프레임워크(C/CUDA 기반)
✓ 객체 탐지용으로 변환
✓ 최종 계층
→ 클래스 확률과 바운딩 박스 좌표 모두 예측
바운딩 박스의 너비, 높이 → 이미지의 너비, 높이로 정규화
바운딩박스의 x,y좌표는 해당 박스가 속한 격자 셀 위치를 기준으로 offset 형태로 예측
✓ 오프셋(offset) 형태
(x,y) 좌표를 셀 전체 이미지 좌표로 예측하지 않고,
셀 좌상단 기준 (0,0), 셀 크기를 1로 정규화한 상대좌표로 예측
⇒ 셀 안에서 상대적 위치를 [0,1] 범위 값으로 나타냄
✓ 왜 offset 형태로 할까?
- 안정적인 학습 가능
- 이미지 절대 좌표(0~448)를 직접 예측하면 값의 스케일이 크고 학습이 불안정
- 셀 단위 오프셋(0~1)은 범위가 작아서 학습이 쉬움
- 셀 단위 책임 부여
- 어떤 셀이 객체를 예측해야하는지 명확해짐
- 이 셀 안에서 객체 중심이 여기쯤 있다라는 방식으로 직관적으로 표현 가능
네트워크 중간/은닉 계층 → Leaky ReLU
일반 ReLU는 x<0일 때 죽어버리는 문제
Leaky ReLU는 음수여도 작은 기울기 0.1을 남겨서 뉴런이 완전히 죽지 않게!

네트워크 출력 계층 → Linear activation fuction(선형활성화함수)
✓ 선형활성화함수
→ 입력값을 가공하지 않고 그대로 출력하는 함수
✓ YOLO에서 선형활성화함수를 사용하는 이유?
→ 출력층에서는 경우에 따라 “비선형성이 필요 없는” 상황 존재
ex. 회귀: 예측값이 제한없이 연속적인 실수여야함
- YOLO의 최종 출력은 바운딩 박스 좌표(x,y,w,h)나 confidence 같은 실수값
- 값을 제한하면 불필요하게 꼬일 수 있기 때문에 선형활성화 사용!
✓ 출력
→ 제곱 오차 합(Sum-Squared Error, SSE)을 최소화 하도록 최적화
BUT (P): 최적화는 쉬우나, 평균정밀도(mAP) 최대화와 딱 들어맞진 않음
① 위치(localization) 오류와 분류(classification) 오류를 동일하게 가중
- 현실 영향도와 불일치
- mAP에선 어떤 장면에는 위치가 더 중요하고, 어떤 장면에서는 분류가 더 중요할 수 있는데 SSE는 구분하지 않고 같은 무게로 더해버림
② 빈 셀이 훨씬 많음(대부분의 격자 셀에 객체 X)
(P)
그 셀들의 confidence를 0으로 끌어내려는 항이 손실을 지배해서 정작 객체가 있는 셀의 신호가 묻힐 수 있음(초기 발산 위험)
(S)
바운딩박스좌표 예측 손실 가중치 ⬆️, 객체가 없는 박스의 신뢰도 예측손실 가중치 ⬇️
파라미터 (5와 0.5는 경험적으로 튜닝한 값)
→ coord =5 (좌표 오차_바운딩 박스 위치/크기에 곱하는 가중치)
: 바운딩 박스 좌표 손실을 얼마나 크게 볼 (정확한 위치 학습) … ①
→ noobj =0.5 (객체가 없는 셀의 confidence 오차에 곱하는 가중치)
: 배경셀의 confidence 손실 약화(배경에 끌려가지 않게) … ②
③ 큰 박스 vs 작은박스
(P)
같은 픽셀 편차라 해도 작은 박스에서 더 치명적인데 SSE는 같게 취급
부분적 (S)
너비와 높이 직접 예측이 아니라 제곱근을 예측하도록
✓ 왜 제곱근 변환이 해결책?
큰 박스: 실제 200px → 예측 210px(오차10) → 상대적으로 덜 중요
작은 박스: 실제 20px → 예측 30px(오차10) → 엄청 중요해야함
but, (S)제곱 오차는 두 경우 모두 10만큼 틀림으로 취급
(S) 제곱근으로 변환하면
큰 박스: 제곱근을 취하면 값이 압축 → 같은 차이라도 오차 작아짐
작은 박스: 제곱근을 취하면 값 변화율 커짐 → 작은 차이도 오차 크게 반영
⇒ 모델이 작은 객체 위치/크기 예측에 더 신경쓰도록 유
✓ 각 셀마다 여러 개의 바운딩 박스 예측 but 학습할 땐 한 객체당 한 박스만 책임지게끔!
→ 각 바운딩 박스 예측기는 특정 크기, 종횡비, 특정 클래스에 특화되어 재현율 향상에 기여
✓ 왜 셀마다 B개의 박스를 예측시키면서 학습할 땐 한 객체당 한 박스만 책임지게 할까?
- 경쟁 중복 방지
- 전문화(특정크기/종횡비/클래스)
- 손실설계와 정합
- 중복탐지, 후처리 부담 완화
✓ 다중 손실 함수(Multi-part Loss Function) 최적화
→ 학습 과정에서 다중 손실 함수 최적화

✓ 주의
- 분류 오차(Classification error)는 해당 셀에 객체가 존재할 때만 계산
- 바운딩 박스 좌표 오차는 해당 예측기가 책임 지는 경우에만 계산
→ 해당 셀 내 예측기 중 IoU가 가장 높은 경우
과적합 방지
드롭아웃(Dropout): 훈련중 랜덤하게 뉴런 일부를 꺼버리는 방식
데이터 증강(Data augmentation): 인위적으로 바꿔서 더 일반적인 패턴 배우게 함
이미지 크기 최대 ±20% 범위에서 임의 스케일 조정 및 평행 이동
HSV 색공간에서 노출과 채도를 ±1.5배 범위에서 랜덤 조정
(H: Hue, S: Saturation, V: Value - 색, 채도, 명도)
→ 학습과 마찬가지로 테스트 이미지에 대해 탐지 결과 예측하는 것도 한 번의 네트워크 평가만!
✓ 공간적 (위치) 다양성을 보장한다
= 예측되는 바운딩 박스들이 이미지 여러 위치에 고르게 분포되도록 구조적으로 유도
✓ 공간적 다양성을 보장하면 좋은 점?
- 여러 물체가 서로 떨어져 있을 때: 각 물체의 중심이 다른 셀에 들어가면 각 셀이 자기 물체 담당 → 놓칠 확률(재현율)↓
- 큰 물체/경계 근처 물체: 인접한 여러 셀에서 각각 “괜찮은” 박스가 나올 수 있어 후보 다양성↑
- 편향 완화: 데이터가 한 가운데에 많은 중앙편향이 있어도 구조적으로 주변부까지 커
✓ One Network Evaluation vs. End-to-End
One Network Evaluation End-to-End 의미 추론 시 CNN 1회 실행 학습 시 전체 네트워크를 한꺼번에 최적화 방식 Inference 방식 Training 방식 YOLO 장점 실시간 처리 가능 파이프라인 분리없이 직접학습 ✓ One Network Evaluation
보통 R-CNN계열은 복잡한 파이프 라인 가짐
→ CNN 여러번 실행
YOLO는 이미지를 넣으면 CNN 한 번만 forward 시켜서
→ BBox + class 확률 동시 예측⇒ 추론 과정에서 CNN 한 번만 돌리면 된다
✓ End-to-End
- 훈련 과정의 개념
- R-CNN: CNN 따로 학습 + SVM 따로 학습 + BBox regression 따로 학습
- YOLO: 입력이미지→출력(박스+클래스 확률)까지 하나의 네트워크로 구성
① 강한 공간적 제약
→ 각 격자 셀은 최대 2개의 바운딩 박스만 예측 + 하나의 클래스만 할당 가능
(모델 단순화, 각 predictor가 다른 형태에 특화되도록 유도/셀당 객체 중심 하나라는 가정)
⇒ 서로 가까이 있는 다수의 객체 예측하는 능력 제한(ex. 무리지어가는 새)
② 새롭거나 특이한 종횡비나 배치를 가진 객체에 대해 일반화X
← 데이터로부터 바운딩박스를 예측하는 법을 학습하기 때문
③ 바운딩 박스 예측에 상대적으로 거친 특징 사용됨
← 네트워크 아키텍쳐에 여러 단계의 다운샘플링이 포함되어 있기 때문
④ 작은 BBox와 큰 BBox 오차 동일하게 취급
→ 작은 BBox에서 IoU 큰 영향
⇒ 잘못된 위치 예측
✓ 공간적 다양성 vs 강한 공간적 제약?
공간적 다양성 보장
그리드로 나눠 셀마다 박스를 예측
→ 이미지 전역의 각 셀이 “내 구역”을 책임짐
→ 큰 물체는 여러 셀이 잡고 NMS로 최종 하나만 남김
강한 공간적 제약
- 각 셀의 예측 능력에 한계 두기
⇒ 그리드 설계가 후보를 전역에 뿌려주는 다양성을 주는 동시에
셀 단위 예측 한계라는 공간적 제약도 함께 갖는다.
✓ 객체 탐지 방식
전통 파이프 라인 vs. YOLO의 일체형(통합)모델
<전통> 특징 추출→후보/슬라이딩윈도우→분류/회귀→후처리 단계별로 나뉜 파이프라인
한 번의 CNN으로 박스+클래스를 동시에 예측 → 속도, 단순성 확 살아남
① DPM(Deformable Parts Models) - 슬라이딩 윈도우
DPM: 특징 추출, 영역 분류, 고득점 영역의 바운딩 박스 예측 등 서로 분리된 단계로 구성
↔ YOLO: 이 모든 단계를 하나의 CNN으로 대체
⇒ 특징추출, 바운딩박스 예측, NMS, 맥락 분석 동시에 수행
② R-CNN - 영역제안
③ Other Fast Detectors(Fast R-CNN, Faster R-CNN)
Fast R-CNN과 Faster R-CNN은 R-CNN 속도를 높이기 위해
① 연산 공유 + ② Selective Search 대신 신경망 기반 Region Proposal Network 사용
→ R-CNN 대비 속도, 정확도가 좋긴 하지만, “실시간 성능” 부족
YOLO: 처음부터 파이프라인 없애고 속도를 염두에 두고 설계
④ Single-class Detectors(단일 클래스 탐지기)
⑤ Deep MultiBox
Selective Search 대신 합성곱 신경망으로 ROI(관심영역) 예측
신뢰도 예측 대신 단일 클래스 예측을 수행하면 단일 객체 탐지 가능
BUT, 범용 객체 탐지 불가능 + 이미지 패치 분류가 필요한 대규모 탐지 파이프 라인에 불과
YOLO, Deep MultiBox 모두 합성곱 네트워크로 바운딩박스 예측
YOLO: 완전한 탐지 시스템
⑥ OverFeat
⑦ MultiGrasp
PASCAL VOC 2007에서 비교
Fast R-CNN과 YOLO 의 오류 분석
→ 서로 다른 오류 특성을 기반으로 YOLO를 이용해 Fast R-CNN 탐지 결과를 재점수
→ 배경에 대한 오탐을 줄이고, 성능 향상 가능

✓ Trade-off

YOLO 배경에 대한 잘못된 객체 탐지 훨씬 적게 발생
→ YOLO를 이용해 Fast R-CNN의 배경 탐지를 제거하면 성능이 크게 향상
⇒ Fast R-CNN이 예측한 각 바운딩 박스에 대해 YOLO가 유사한 박스를 예측했는지 확인
if 有) YOLO가 예측한 확률과 두 박스의 중첩도(IoU)에 기반하여 해당 예측 점수를 조정

⇒ 단순한 모델 앙상블 효과X
YOLO와 Fast R-CNN이 서로 다른 유형의 오류를 범하기 때문!
Fast R-CNN + YOLO 결합 모델: 상위권 성능!
R-CNN
VOC 2007에서는 높은 AP(Average Precision_평균정밀도)
예술작품에 적용하면 성능이 크게 하락
→ R-CNN의 바운딩 박스 제안이 자연이미지에 최적화되어 있으며,
분류 단계는 작은 영역만 보고 좋은 제안에 의존하기 때문
DPM
YOLO
→ YOLO를 웹캠에 연결해서 실시간 성능이 유지되는지 검증함
YOLO는 분류기기반 접근방식과 달리,
①탐지성능과 ②직접적으로 연관된 손실함수 로 학습, ③모델 전체를 공동(joint)학습
새로운 도메인에 대해서도 일반화 성능이 뛰어나서 다양한 응용이 가능하다.