R-CNN: R-CNN, Fast R-CNN, Faster R-CNN

calico·2026년 1월 2일

Artificial Intelligence

목록 보기
152/164

https://wikidocs.net/148633

R-CNN, Fast R-CNN, Faster R-CNN

R-CNN 계열과 YOLO

  • R-CNN은 “금속탐지기로 바닥을 쪼개서 검사”
    • 땅을 작은 구역으로 나누고
    • 의심되는 구역을 하나씩 파보면서
    • 그 안에 뭐가 있는지 확인
      정확하지만 시간이 오래 걸립니다.
  • YOLO는 “드론으로 한 번 촬영하고 지도에 표시”
    • 한 번 촬영한 사진을 보고
    • 지도 위에 “여기 사람, 여기 차”라고 바로 좌표를 찍어줌
      빠릅니다.

1. “객체 탐지는 회귀(regression) 문제다”가 무슨 뜻인가


기존(R-CNN 계열)은 “여러 번의 작은 문제”로 쪼갬


전통 파이프라인은 대략 이런 식입니다.

  • (1) 어디에 물체가 있을 것 같은지 후보 박스(Region Proposal)를 많이 뽑고

  • (2) 각 후보 박스를 잘라서 분류기(CNN)에 넣고 “이게 사람/차/아님?”을 판단하고

  • (3) 박스 위치를 다시 미세 조정하고(NMS 등)

즉, “후보 생성 → 분류 → 위치 보정”을 서로 다른 단계로 처리합니다.



YOLO는 “한 번에 숫자들을 바로 뱉는 문제”로 봄


YOLO의 관점은 이겁니다.

이미지 한 장을 입력하면, 모델이 바로
(x, y, w, h) 같은 좌표 값(연속값) + 클래스 확률을 출력하면 된다.

여기서 핵심은 좌표가 연속값이라는 점입니다.

  • 분류(classification): “고양이/개/차”처럼 범주(카테고리)를 고르는 문제

  • 회귀(regression): 연속적인 숫자를 맞추는 문제 (예: 좌표, 길이, 크기)

Bounding Box는 바로 이런 연속값입니다.

  • 중심 좌표: (x, y)

  • 너비/높이: (w, h)

그래서 “객체 탐지는 회귀 문제”라는 말은 정확히는

  • 박스 위치/크기 예측은 회귀

  • 클래스 예측은 분류

  • YOLO는 이 둘을 하나의 네트워크가 동시에 출력하도록 묶었다

라는 뜻입니다.



2. “Region Proposal 제거”가 실제로 의미하는 것


R-CNN에서 Region Proposal은 “1차 필터 + 후보 생성기”


R-CNN 계열은 이미지에서 “여기가 물체일 것 같아” 하는 박스 후보를 수백~수천 개 생성합니다.

그 다음에 그 후보들을 각각 CNN에 넣고 평가합니다.

즉, CNN을 후보 개수만큼 반복 실행합니다.
후보가 많을수록 정확도는 올라갈 수 있지만 느려집니다.



YOLO는 후보를 따로 만들지 않는다


YOLO는 “후보 박스를 뽑는 별도 알고리즘”이 없습니다.

대신 이미지 전체를 일정한 그리드로 나누고, 각 칸이 “내가 담당할 물체가 있나?”를 예측합니다.

  • 후보 생성기(Region Proposal) 없이 모델이 직접 “어디에 박스를 둘지”까지 한 번에 출력합니다.

    • R-CNN: 후보 박스는 외부 단계에서 먼저 만들어짐 → CNN은 뒤에서 평가

    • YOLO: 후보 박스 자체도 네트워크 출력으로 같이 나옴



3. “Classification과 Localization을 단일 신경망에서 동시에 수행”이 의미하는 것


객체 탐지는 본질적으로 두 가지를 해야 합니다.

  1. Localization(어디?): 물체가 이미지의 어디에 있는지 (박스 좌표)

  2. Classification(무엇?): 그 물체가 무엇인지 (클래스)

YOLO는 한 네트워크가 한 번에 아래를 같이 예측합니다.

  • “이 위치에 박스 하나 둘게: (x,y,w,h)”

  • “그 박스는 사람일 확률 0.7, 차일 확률 0.2, …”

  • “그리고 이 박스가 진짜 물체를 잘 감싸는지(신뢰도/IOU 관련)”

즉, 좌표 예측(회귀) + 클래스 예측(분류)를 “따로 모델 2개 돌리는 것”이 아니라 출력 벡터 하나로 동시에 뽑아내는 구조입니다.



4. “한 번의 Forward Pass로 전체 이미지의 객체를 예측”이 진짜 핵심인 이유


Forward Pass가 뭔가


Forward Pass는 “신경망에 입력을 넣고 출력이 나오는 한 번의 계산”입니다.

  • 이미지 1장 → CNN 통과 → 결과 텐서 출력
    이 한 번이 Forward Pass 1회입니다.



R-CNN 방식은 Forward Pass가 “후보 수만큼” 필요


Region Proposal이 2000개면?

  • 2000개 후보를 잘라서

  • CNN을 2000번(또는 feature 공유하더라도 후보마다 추가 계산) 돌려야 함

그래서 느립니다.



YOLO는 이미지 1장에 대해 “딱 1번”만 돌림


YOLO는 이미지 전체를 한 번에 네트워크에 넣고

  • 그리드/박스/클래스 확률까지 한 번에 예측합니다.

그래서 속도가 빠릅니다.

  • R-CNN 계열

    “일단 후보 박스들을 잔뜩 만들어 놓고, 박스 하나하나를 검사해서 정답을 찾자.”

  • YOLO

    “후보를 만들지 말고, 이미지를 한 번 보고, 어디에 무엇이 있는지 숫자로 바로 말하자.”



profile
개인 블로그

0개의 댓글