포스트

YOLOv1은 왜 빠르지만 작은 물체에 약할까: 7×7 Grid와 Loss 해설

YOLOv1은 후보 영역을 따로 만들지 않고 이미지 한 장을 7×7 grid로 나눠 box와 class를 한 네트워크에서 함께 예측하기 때문에 빠르지만, 한 cell이 맡을 수 있는 물체가 제한돼 작은 물체가 몰리면 약합니다. 이 한계는 단순히 모델 크기의 문제가 아니라 7×7×30 출력이 물체를 표현하는 방식에서 생깁니다. 따라서 FPS만 보기보다 대상 장면의 물체 크기와 밀집도, 위치 오차가 업무에 미치는 영향을 함께 판단해야 합니다.

Region proposal을 없애면 왜 빨라지나

R-CNN 계열은 먼저 물체가 있을 법한 region을 만들고, 각 region을 분류한 뒤 box를 보정하고 중복 검출을 제거합니다. 여러 구성요소를 따로 학습하고 순서대로 실행해야 하므로 파이프라인이 복잡합니다.

YOLO는 object detection을 하나의 regression 문제로 바꿉니다. 448×448 이미지를 단일 CNN에 넣고, 공간적으로 분리된 bounding box와 class 확률을 한 번에 냅니다. 전체 입력과 출력을 직접 연결하므로 end-to-end로 최적화할 수 있습니다.

YOLO 단일 검출 시스템

논문 기록에서 YOLO는 초당 45 frame, Fast YOLO는 초당 155 frame을 처리했습니다. 속도만 빠른 것이 아니라 이미지 전체를 함께 보기 때문에 DPM이나 R-CNN보다 예술 작품 같은 자연스럽지 않은 표현에서도 일반적인 특징을 더 잘 학습하는 결과를 보였습니다. 반면 위치를 정확히 맞추는 localization error는 더 큰 편이었습니다.

7×7×30 출력은 무엇을 담나

입력을 S × S grid로 나누고, 물체 중심이 들어온 cell이 그 물체를 담당합니다. 각 cell은 B개의 box와 하나의 class 확률 묶음을 예측합니다. box 하나는 중심 x, y, 폭 w, 높이 h, confidence의 다섯 값으로 이뤄집니다.

1
confidence = probability(object) * IoU(truth, prediction)

PASCAL VOC 설정에서는 S=7, box 수 B=2, class 수 C=20이므로 최종 tensor는 다음 크기입니다.

1
7 × 7 × (2 × 5 + 20) = 7 × 7 × 30

class 값은 물체가 있다는 조건 아래의 확률입니다.

1
2
P(class | object) × P(object) × IoU
= P(class) × IoU

YOLO grid와 출력 구조

이 설계는 한 cell이 여러 box를 내더라도 class 확률 묶음은 하나만 예측한다는 제약이 있습니다. 같은 cell 안에 작은 물체가 여러 개 모이면 각각을 표현하기 어려운 이유가 여기서 나옵니다.

Loss는 box가 없는 cell을 어떻게 다루나

YOLOv1은 sum-squared error를 최적화하지만, 모든 오차를 같은 무게로 두면 문제가 생깁니다. 이미지 대부분의 cell에는 물체가 없으므로 confidence가 0으로 끌리고, 큰 box와 작은 box의 같은 좌표 편차도 실제 영향은 다릅니다.

YOLOv1 다중 손실 함수

손실은 다섯 부분으로 읽을 수 있습니다.

  1. 물체를 담당하는 box의 x, y 위치 오차
  2. w, h 크기 오차
  3. 물체가 있는 box의 confidence 오차
  4. 물체가 없는 box의 confidence 오차
  5. 물체가 있는 cell의 class 확률 오차

좌표 손실에는 λcoord=5, 물체가 없는 box의 confidence 손실에는 λnoobj=0.5를 사용합니다. 폭과 높이는 값 자체가 아니라 제곱근을 예측해 작은 box의 편차를 더 민감하게 반영합니다. 한 물체에 여러 predictor가 달라붙지 않도록 ground truth와 IoU가 가장 높은 box 하나를 “responsible” predictor로 정합니다.

학습에는 ImageNet에서 미리 학습한 convolution layer를 사용하고, detection을 위해 입력 해상도를 224×224에서 448×448로 높입니다. 원문 설정은 135 epoch, batch size 64, momentum 0.9, decay 0.0005를 사용하며 learning rate를 단계적으로 바꿉니다. dropout 0.5와 크기, 색상 변형도 과적합을 줄이는 데 사용합니다.

빠른 모델이 맞지 않는 장면

추론은 네트워크 평가 한 번으로 끝나고 PASCAL VOC 이미지마다 98개의 box와 class 확률을 예측합니다. 경계 근처의 큰 물체가 여러 cell에서 겹쳐 검출될 때는 Non-Maximum Suppression으로 중복을 줄일 수 있습니다.

그러나 구조적인 한계는 후처리만으로 사라지지 않습니다.

  • 작은 물체가 한 cell에 모이면 각각을 표현하기 어렵습니다.
  • box의 중심이 어느 cell에 속하는지에 따라 예측 책임이 갈립니다.
  • classification보다 localization error가 주요 실패가 됩니다.
  • end-to-end 모델이 빠르더라도 메모리나 layer 규모가 맞지 않으면 더 작은 네트워크로 나눠야 하며, 그 경우 전체 최적화를 보장하기 어렵습니다.

YOLOv1 결과 비교

YOLO 논문을 읽을 때는 FPS만 비교하기보다 출력 tensor가 한 cell에 무엇을 허용하는지, λcoordλnoobj가 어떤 불균형을 보정하는지, 실제 장면에 작은 물체가 밀집하는지를 함께 보는 것이 중요합니다.

YOLOv1이 맞는 문제인지 어떻게 판단하나

첫째, 처리 속도와 위치 정밀도 중 어느 쪽이 더 중요한지 정합니다. 화면에 큰 물체가 드문드문 나타나고 빠른 반응이 우선이라면 단일 검출 구조의 장점이 큽니다. 반면 작은 물체 수를 정확히 세거나 경계가 조금만 틀려도 후속 작업이 실패한다면 localization 오류가 더 큰 비용이 됩니다.

둘째, 입력을 7×7 cell 관점에서 살펴봅니다. 한 cell 크기보다 작은 물체가 여러 개 붙어 있거나 중심점이 같은 cell에 반복해서 들어오는지 확인합니다. 이런 장면에서는 학습 데이터 양을 늘려도 출력 표현 자체가 동시에 담을 수 있는 정보에 한계가 있습니다. NMS는 중복을 줄일 수 있지만 누락된 물체를 되살리지는 못합니다.

셋째, 오류를 class와 location으로 나눕니다. 물체 종류는 맞지만 box가 어긋나는지, 배경을 물체로 보는지, 작은 물체를 아예 놓치는지를 구분해야 loss의 어떤 항과 구조적 제약이 관련되는지 알 수 있습니다. 하나의 mAP나 FPS만으로 모델을 고르면 실제 실패 유형을 놓치기 쉽습니다.

함께 읽으면 이해가 이어지는 글

자주 묻는 질문

YOLOv1이 R-CNN 계열보다 빠른 핵심 이유는 무엇인가요?

후보 영역 생성과 영역별 분류를 따로 실행하지 않고, 전체 이미지를 한 CNN에 넣어 box와 class를 한 번에 예측하기 때문입니다. 파이프라인 전체를 end-to-end로 학습할 수 있다는 점도 차이입니다.

7×7 grid에서 작은 물체가 특히 어려운 이유는 무엇인가요?

물체 중심이 들어간 cell이 예측을 담당하고 한 cell의 class 확률 묶음이 하나뿐이어서, 같은 cell에 여러 작은 물체가 모이면 각각을 충분히 표현하기 어렵습니다.

NMS를 적용하면 YOLOv1의 작은 물체 문제가 해결되나요?

아닙니다. NMS는 겹친 중복 box를 줄이는 후처리입니다. Grid와 출력 표현이 처음부터 여러 작은 물체를 담지 못한 경우에는 제거할 box 자체가 없어 구조적 한계를 고칠 수 없습니다.

데이터셋에서 Grid 한계를 미리 확인하는 법

각 ground-truth box의 중심을 7×7 cell에 배정하고 한 cell에 몇 개의 중심이 들어오는지 셉니다. 충돌이 자주 일어나는 class와 장면을 따로 보면 작은 물체 누락이 우연한 학습 실패인지 출력 표현의 한계인지 예상할 수 있습니다. Box 크기도 입력 대비 비율로 나눠 작은 물체 구간의 recall을 별도로 봅니다.

오류 샘플은 분류 오류, 위치 오류, 배경 오검출, 완전 누락으로 구분합니다. 같은 mAP 감소라도 대응 방법은 다릅니다. 특히 한 cell에 여러 물체가 몰린 완전 누락은 NMS나 confidence 조절로 복구되지 않으므로, 해당 장면이 핵심 요구라면 다른 출력 구조를 비교해야 합니다.

속도는 전처리와 후처리까지 포함해 같은 장치에서 측정합니다. 논문의 FPS는 구조를 이해하는 근거이지만 현재 파이프라인의 보장값은 아닙니다. 목표 지연을 만족하는 범위에서 입력 크기와 batch, 누락 비용을 함께 기록해야 빠른 모델이라는 장점이 실제 요구와 연결됩니다.

Training과 평가의 이미지 resize 방식도 같아야 합니다. Box 좌표를 448 입력 기준으로 바꾸고 다시 원본으로 복원하는 과정에서 비율이 틀리면 localization error처럼 보일 수 있습니다. Raw output, 복원 전 좌표, 그린 결과를 단계별로 저장해 네트워크와 좌표 변환의 오류를 구분합니다.

THE END / OPSOAI

여기까지 읽었습니다

핵심 장면을 한 번 더 떠올려 보세요. 이해가 남았다면 이 책은 제 역할을 다했습니다.

다른 책 고르기
표지 1

키와 좌우 스와이프를 지원합니다. 읽던 페이지는 이 기기에 저장됩니다.

CONTENTS

이 책의 목차

    8개 장 15 분읽는 시간