동그리동동 강의

YOLO 객체 탐지 교재

You Only Look Once — 사진 속에서 "무엇이 어디에" 있는지 찾아내기

CHAPTER 1

1. 큰 그림 — YOLO는 어디쯤에 있나

새 용어가 쏟아지기 전에 지도를 먼저 볼게요. 자주 듣는 말들이 사실은 서로 포함 관계라, 큰 상자 안에 작은 상자가 들어가는 모양이에요.

큰 상자 안의 작은 상자

AI 인공지능 — 똑똑한 일을 대신해주는 기계 전부
Machine Learning 규칙을 사람이 짜는 대신, 데이터를 보고 스스로 찾게 하기
Deep Learning 신경망을 여러 겹 깊게 쌓는 방식
Computer Vision 그중에서 이미지와 영상을 다루는 분야
Object Detection (객체 탐지)YOLO가 바로 여기

한 문장으로 줄이면 이래요. YOLO는 사진 한 장을 한 번만 훑어보고, 그 안에 무엇이(class) 어디에(box) 있는지를 동시에 찾아내는 모델이에요. 이 한 문장에 들어있는 단어를 하나씩 풀어가는 게 이 교재 전부입니다.

CHAPTER 2

2. 컴퓨터한테 사진은 그림이 아니라 숫자다

가장 먼저 넘어야 할 벽이에요. 우리 눈엔 고양이 사진이지만, 컴퓨터 눈엔 숫자가 잔뜩 적힌 표일 뿐이에요. 사진을 이루는 작은 점 하나를 픽셀(pixel)이라고 하는데, 흑백 사진이면 픽셀마다 밝기 숫자가 하나씩(0이면 검정, 255면 흰색) 들어있어요. 컬러는 빨강·초록·파랑(RGB) 세 숫자가 겹쳐 있고요.

직접 해보기 — 사진을 확대하면 숫자가 보여요

슬라이더를 오른쪽으로 밀면 점점 확대돼서, 컴퓨터가 실제로 보는 밝기 숫자(0~255)가 드러나요.

전체 그림이 보입니다. 오른쪽으로 드래그하세요.

흑백 기준이고, 컬러는 이런 표가 R·G·B 세 장 겹쳐 있는 거예요.

고양이를 알아본다는 건 결국 이 숫자들의 패턴을 보고 "고양이일 확률"을 계산하는 일이에요. 컴퓨터는 끝까지 숫자만 봅니다.

CHAPTER 3

3. CNN — 숫자 더미에서 의미를 뽑아내는 법

숫자 표만 보고 어떻게 고양이를 알아낼까요? 한 번에 "고양이!"라고 하는 게 아니라, 단계를 밟아요. 처음엔 경계선(엣지)이나 색이 바뀌는 곳 같은 단순한 무늬를 찾고, 그게 모여 눈·귀 같은 부분이 되고, 다시 그게 모여 고양이 얼굴이 됩니다.

이 일을 하는 게 CNN (Convolutional Neural Network, 합성곱 신경망)이에요. 작은 필터(filter, 예를 들면 3×3짜리 숫자판)를 도장처럼 사진 위를 훑고 다니면서 "여기 이런 무늬가 있나?"를 확인해요.

직접 해보기 — 필터가 사진을 훑고 다녀요

노란 칸이 필터예요. 한 칸씩 옮겨다니다가 경계선을 만나면 반응이 확 커집니다.

대기 중…

예전엔 "고양이는 귀가 뾰족하고…" 하는 특징을 사람이 일일이 손으로 정해줬어요. CNN의 똑똑한 점은, 어떤 필터(도장)가 쓸모 있는지를 학습으로 스스로 찾아낸다는 거예요. 그래서 층을 깊게 쌓을수록 점·선에서 부분으로, 부분에서 물체로 이해가 넓어집니다.

CHAPTER 4

4. 이미지를 다루는 세 가지 일

같은 사진 한 장이라도 무엇을 물어보느냐에 따라 하는 일이 달라져요. 버튼을 눌러 비교해 보세요.

직접 해보기 — 같은 장면, 다른 질문

버튼을 눌러 비교하세요.
하는 일물어보는 것나오는 답
분류 Classification이 사진은 뭐야?사진 전체에 이름표 하나
탐지 Detection (YOLO)무엇이, 어디에, 몇 개?물체마다 박스 + 이름표
분할 Segmentation어느 픽셀이 그 물체야?물체의 정확한 윤곽

탐지는 분류보다 어려워요. 무엇인지뿐 아니라 어디에 몇 개가 있는지까지 맞혀야 하니까요.

CHAPTER 5

5. 바운딩 박스와 신뢰도

바운딩 박스 (Bounding Box)

물체를 감싸는 네모예요. YOLO에서 라벨을 적을 땐 이름번호 x중심 y중심 너비 높이 순서로 적는데, 이 숫자들이 픽셀 값이 아니라 사진 크기로 나눈 0~1 사이 비율이라는 점이 중요해요. 라벨링 도구가 알아서 바꿔주긴 하지만, 형식을 알아두면 나중에 뭔가 잘못됐을 때 원인을 빨리 찾아요.

신뢰도 (Confidence Score)

모델이 "여기 진짜 그 물체가 있다"고 얼마나 확신하는지를 0~1로 나타낸 값이에요. 임계값(threshold)을 정해서 "이 값 넘는 것만 보여줘"라고 거를 수 있어요. 임계값을 올리면 확실한 것만 남고, 내리면 어정쩡한 것까지 다 잡혀요.

직접 해보기 — 신뢰도 임계값 옮겨보기

박스 위 숫자가 그 박스의 신뢰도예요. 임계값보다 낮으면 사라집니다.

여기엔 정답이 없어요. 임계값을 높이면 헛다리(오탐)는 줄지만 진짜를 놓치고, 낮추면 다 잡지만 헛것도 같이 잡혀요. 무엇에 쓰느냐에 따라 적당한 선을 정하는 거예요.

CHAPTER 6 · 핵심

6. IoU — 두 박스가 얼마나 겹치나

IoU (Intersection over Union)는 두 네모가 얼마나 겹치는지를 0~1로 재는 자예요. 계산은 간단해요. 겹친 넓이를 합친 넓이로 나누면 끝. 종이 두 장을 포개놓고, 겹친 부분이 전체에서 차지하는 비율을 보는 거랑 똑같아요. 1이면 완벽히 일치, 0이면 안 겹친 거고, 보통 0.5 넘으면 "제대로 잡았다"고 봐요.

직접 해보기 — 박스를 끌어서 IoU 바꿔보기

초록 = 정답(ground truth)   빨강 = 모델 예측(prediction). 두 박스를 끌어다 겹쳐보세요.

IoU 0.00

IoU는 두 군데에 쓰여요. 하나는 채점할 때예요 — 모델 예측이 정답 박스를 얼마나 잘 맞혔는지 재는 거죠. 또 하나는 바로 다음 장에 나오는 NMS의 핵심 도구로 쓰입니다.

CHAPTER 7 · 핵심

7. NMS — 겹친 박스 정리하기

여기서 좀 의외인 사실 하나. 옛날 방식의 YOLO는 일부러 한 물체에 박스를 여러 개 뱉도록 학습돼요. 그래야 놓치는 게 줄거든요. 문제는 그 결과로 한 물체 위에 비슷한 박스가 우르르 겹쳐 나온다는 거예요. 이걸 정리하는 청소 단계가 NMS (Non-Maximum Suppression, 비최대 억제)예요.

방법은 단순해요. 신뢰도가 제일 높은 박스를 하나 고른 다음, 그것과 많이 겹치는(IoU가 큰) 박스들을 지워요. 남은 것 중에서 또 1등을 고르고, 또 지우고… 이걸 반복하면 물체마다 박스가 딱 하나씩만 남아요. "한 사람 얼굴에 친구 다섯 명이 동시에 네모를 그렸을 때, 제일 자신 있어 하는 한 명 것만 남기고 나머지를 지우는" 느낌이에요.

직접 해보기 — NMS를 한 단계씩 실행

처음엔 한 물체에 박스 5개가 겹쳐 있습니다.

IoU 임계값을 바꿔보면 정리 강도가 달라져요. 너무 빡세게(임계값 낮게) 잡으면 진짜로 가까이 붙어있는 다른 두 물체까지 하나로 지워버릴 수 있어요. 이게 NMS의 약점이에요.

CHAPTER 8

8. NMS가 있는 모델 vs 없는 모델 (YOLO11 vs YOLO26)

방금 본 NMS는 "박스를 잔뜩 뱉고 나중에 청소한다"는 발상이에요. 그런데 생각해보면, 처음부터 물체마다 박스를 딱 하나씩만 내도록 모델을 훈련시키면 청소가 아예 필요 없겠죠? 그게 바로 최신 모델들이 가는 방향이에요. 우리 수업에서 쓸 두 버전이 정확히 이 차이를 보여줍니다.

YOLO11 (NMS 있음)YOLO26 (NMS 없음)
박스 정리잔뜩 뱉고 나중에 NMS로 청소학습 때부터 물체당 1개만 나오게 훈련
속도청소 단계가 시간을 잡아먹음청소가 없어 더 빠름
라즈베리파이잘 되지만 약간 느림저전력 기기에 맞춰 설계됨 (유리)
자료·예제아주 많음 (막혀도 검색 쉬움)최신이라 아직 적은 편

그럼 NMS 없는 26이 무조건 좋은 걸까요? 꼭 그렇진 않아요. NMS-free는 공짜로 얻은 게 아니라, "물체마다 박스 하나만 나오게 학습시키는 기법"을 수년간 연구해서 NMS 수준의 정확도를 겨우 따라잡은 결과예요. 따라잡고 나니 속도와 배포 편의가 남아서 요즘 흐름이 이쪽인 거죠.

자동변속기와 수동변속기 같은 관계예요. 요즘은 자동(NMS-free)이 편하지만, 클러치(NMS)가 뭔지 알아야 차가 어떻게 굴러가는지 이해하잖아요. 그래서 NMS는 "옛날 지식"이 아니라, 지금 쓰는 detector 대부분의 기본기이고 26이 왜 똑똑한지 이해하는 토대예요.

실습에서는 코드 맨 위 모델 이름만 yolo11n.ptyolo26n.pt로 바꿔서 직접 둘 다 돌려보고, FPS와 결과가 어떻게 다른지 눈으로 비교해 볼 거예요.

CHAPTER 9

9. YOLO 원리 — 왜 "한 번만 본다"인가

옛날 방식(R-CNN 같은)은 "물체가 있을 법한 후보 영역을 수천 개 뽑은 다음, 하나씩 들여다보며 분류"하는 식이라 느렸어요. YOLO는 발상을 바꿨어요. 사진을 격자(grid)로 나누고, 신경망을 딱 한 번 통과시키는 것만으로 모든 칸의 박스와 이름을 한꺼번에 예측해요. 그래서 빠르고, 실시간도 됩니다. 이름 "You Only Look Once"가 여기서 나왔어요.

직접 해보기 — 격자 위에서 한꺼번에 예측

각 칸은 "내 영역에 물체 중심이 있나?"를 맡은 작은 탐지기예요.

옛날 YOLO는 이렇게 나온 박스 더미를 NMS로 정리하고, 26 같은 신형은 그 단계를 모델 안에 넣어버렸어요.

모델 크기 고르기

YOLO 모델은 크기별로 n(nano) → s → m → l → x 순서로 커져요. 클수록 정확하지만 그만큼 느리고 무거워요. 노트북이나 라즈베리파이에서는 가장 작은 nano(yolo11n.pt, yolo26n.pt)를 기본으로 쓰는 게 좋아요.

라즈베리파이에서 느리면 입력 크기를 640 대신 320으로 줄여보세요. 훨씬 빨라집니다.

CHAPTER 10

10. 잘 배웠는지 어떻게 아나 — 평가

모델을 만들었으면 성적표를 볼 줄 알아야 해요. 핵심은 두 개예요. 정밀도(Precision)는 "모델이 잡았다고 한 것 중에 진짜가 몇 %냐", 재현율(Recall)은 "실제로 있던 것 중에 몇 %를 찾아냈냐"예요. 한쪽을 올리면 보통 다른 쪽이 내려가는 시소 관계라, 임계값으로 균형을 맞춰요.

직접 해보기 — Precision과 Recall 시소

아래는 모델이 매긴 신뢰도순으로 정렬한 예측 카드예요. 임계값을 옮기면 두 값이 어떻게 반대로 움직이는지 보세요.

실제 정답   실제 오답   진한 색 = 임계값 통과

이 둘을 여러 기준으로 종합해 하나의 점수로 만든 게 mAP (mean Average Precision)예요. 0~1 사이 값이고 높을수록 좋아요. 객체 탐지에서 모델 실력을 말할 때 제일 많이 쓰는 대표 점수입니다. 학습이 끝나면 자동으로 그려지는 결과 그래프(results.png, confusion_matrix.png)를 보면서 "우리 모델은 어두운 사진에 약하네" 같은 약점을 직접 찾아보는 게 진짜 공부예요.