- R-CNN은 “금속탐지기로 바닥을 쪼개서 검사”
- 땅을 작은 구역으로 나누고
- 의심되는 구역을 하나씩 파보면서
- 그 안에 뭐가 있는지 확인
정확하지만 시간이 오래 걸립니다.- YOLO는 “드론으로 한 번 촬영하고 지도에 표시”
- 한 번 촬영한 사진을 보고
- 지도 위에 “여기 사람, 여기 차”라고 바로 좌표를 찍어줌
빠릅니다.
전통 파이프라인은 대략 이런 식입니다.
(1) 어디에 물체가 있을 것 같은지 후보 박스(Region Proposal)를 많이 뽑고
(2) 각 후보 박스를 잘라서 분류기(CNN)에 넣고 “이게 사람/차/아님?”을 판단하고
(3) 박스 위치를 다시 미세 조정하고(NMS 등)
즉, “후보 생성 → 분류 → 위치 보정”을 서로 다른 단계로 처리합니다.
YOLO의 관점은 이겁니다.
이미지 한 장을 입력하면, 모델이 바로
(x, y, w, h) 같은 좌표 값(연속값) + 클래스 확률을 출력하면 된다.
여기서 핵심은 좌표가 연속값이라는 점입니다.
분류(classification): “고양이/개/차”처럼 범주(카테고리)를 고르는 문제
회귀(regression): 연속적인 숫자를 맞추는 문제 (예: 좌표, 길이, 크기)
Bounding Box는 바로 이런 연속값입니다.
중심 좌표: (x, y)
너비/높이: (w, h)
그래서 “객체 탐지는 회귀 문제”라는 말은 정확히는
박스 위치/크기 예측은 회귀
클래스 예측은 분류
YOLO는 이 둘을 하나의 네트워크가 동시에 출력하도록 묶었다
라는 뜻입니다.
R-CNN 계열은 이미지에서 “여기가 물체일 것 같아” 하는 박스 후보를 수백~수천 개 생성합니다.
그 다음에 그 후보들을 각각 CNN에 넣고 평가합니다.
즉, CNN을 후보 개수만큼 반복 실행합니다.
후보가 많을수록 정확도는 올라갈 수 있지만 느려집니다.
YOLO는 “후보 박스를 뽑는 별도 알고리즘”이 없습니다.
대신 이미지 전체를 일정한 그리드로 나누고, 각 칸이 “내가 담당할 물체가 있나?”를 예측합니다.
후보 생성기(Region Proposal) 없이 모델이 직접 “어디에 박스를 둘지”까지 한 번에 출력합니다.
R-CNN: 후보 박스는 외부 단계에서 먼저 만들어짐 → CNN은 뒤에서 평가
YOLO: 후보 박스 자체도 네트워크 출력으로 같이 나옴
객체 탐지는 본질적으로 두 가지를 해야 합니다.
Localization(어디?): 물체가 이미지의 어디에 있는지 (박스 좌표)
Classification(무엇?): 그 물체가 무엇인지 (클래스)
YOLO는 한 네트워크가 한 번에 아래를 같이 예측합니다.
“이 위치에 박스 하나 둘게: (x,y,w,h)”
“그 박스는 사람일 확률 0.7, 차일 확률 0.2, …”
“그리고 이 박스가 진짜 물체를 잘 감싸는지(신뢰도/IOU 관련)”
즉, 좌표 예측(회귀) + 클래스 예측(분류)를 “따로 모델 2개 돌리는 것”이 아니라 출력 벡터 하나로 동시에 뽑아내는 구조입니다.
Forward Pass는 “신경망에 입력을 넣고 출력이 나오는 한 번의 계산”입니다.
Region Proposal이 2000개면?
2000개 후보를 잘라서
CNN을 2000번(또는 feature 공유하더라도 후보마다 추가 계산) 돌려야 함
그래서 느립니다.
YOLO는 이미지 전체를 한 번에 네트워크에 넣고
그래서 속도가 빠릅니다.
R-CNN 계열
“일단 후보 박스들을 잔뜩 만들어 놓고, 박스 하나하나를 검사해서 정답을 찾자.”
YOLO
“후보를 만들지 말고, 이미지를 한 번 보고, 어디에 무엇이 있는지 숫자로 바로 말하자.”