TT Lab
요금제

한국어

시작하기
블로그

블로그

물체 검출 2: 한 단계 YOLO 계열과 실시간성, 그리고 라이선스

상태: 초안 (2026-10-13), 일부 실측. 격자·AP 예제는 노트북 CPU 에서 직접 돌린 값입니다(code/06_yolo_ap.py, 1초 안). 논문 수치는 원문을 열어 조건과 함께 옮겼고, 하드웨어는 등급으로 적었습니다. 라이선스 내용은 각 저장소의 LICENSE 파일과 공식 안내를 2026-10-13 에 확인한 것이며, 법률 자문이 아닙니다. 작성 규칙: 실측 데이터가 기본이고, 못 잰 것은 「미실측」으로 표시합니다.

목차

1. 한 번만 본다

5편의 Faster R-CNN 은 그림당 약 5fps 였습니다. 후보를 뽑고(1단계), 후보마다 잘라 판정하기(2단계) 때문입니다. Redmon 등의 YOLO(You Only Look Once, 2016)는 질문을 바꿉니다. 「검출을 회귀 문제 하나로 풀 수 없을까?」 그림을 망에 한 번 통과시키면 모든 상자와 클래스가 한꺼번에 나오게 하자는 것입니다.

YOLO: 그림을 S×S 격자로 나눠 한 번에 예측 선수 상자의 중심이 떨어진 칸이 그 선수를 책임진다 칸마다 내는 것 상자 B개 × (x, y, w, h, 신뢰도) 클래스 확률 C개(한 벌) v1: 7×7×(2·5+20) = 7×7×30 후보 98개 → 신뢰도 문턱 → NMS 약점: 한 칸에 중심이 몰린 작은 물체들 (새 떼, 라켓과 손, 멀리 있는 공) 뒤 세대: 여러 해상도에서 예측(v3), 앵커 없이(YOLOX), NMS 없이(v10)
그림: 그림을 7×7 격자로 나누고, 물체 중심이 떨어진 칸이 그 물체를 책임지는 YOLO 의 출력 구조

YOLO v1 의 규칙은 이렇습니다.

직접 해 보기: 어느 칸이 책임지나

448px 그림에서 칸 하나는 64px 입니다. 탁구 장면에 대입해 보았습니다(실측).

선수 몸 중심  (200,260) → 칸 (행 4, 열 3)
공 중심       (330,95)  → 칸 (행 1, 열 5)
라켓 중심     (215,270) → 칸 (행 4, 열 3)   ← 선수와 같은 칸

선수와 라켓의 중심이 같은 칸에 떨어졌습니다. 그 칸은 클래스 확률을 한 벌만 내므로 「사람」과 「라켓」이 다툽니다. 논문도 한 칸이 제한된 수의 물체만 예측하는 것을 약점으로 들고, 새 떼처럼 작은 물체가 몰린 경우에 약하다고 적었습니다.

손실의 설계

손실은 상자 좌표·신뢰도·클래스의 오차 제곱 합인데, 몇 가지 손질이 「왜」를 보여 줍니다.

결과(논문)

모델 VOC 2007 mAP 속도 조건
YOLO 63.4 45fps 데스크톱 GPU, 배치 없이
Fast YOLO 52.7 155fps 〃

같은 논문의 오류 분석에서 YOLO 는 위치 오류가 가장 큰 오류 유형이었습니다. 대신 배경을 물체로 착각하는 일은 Fast R-CNN 보다 적어서, 둘을 합치면 VOC 2012 에서 75.0(Fast R-CNN 단독 71.8)으로 올랐습니다. 그림 전체를 한 번에 보니 맥락 실수는 적고, 격자가 거칠어 위치는 덜 정확한 것입니다.

2. 계보: 앵커, 다중 해상도, 앵커 없이, NMS 없이

모델(연도) 바꾼 것 논문 수치(조건)
SSD(2016) 여러 해상도의 특징 지도마다 기본 상자로 예측 SSD300 VOC 2007 74.3%, 59fps(데스크톱 GPU, 배치 8)
YOLOv2(2017) 앵커 도입. 크기를 손으로 정하지 않고 학습 상자들을 k-평균으로 묶어 5개 416×416 에서 VOC 2007 76.8, 67fps(데스크톱 GPU)
YOLOv3(2018) 세 해상도에서 예측(FPN 과 비슷), 앵커 9개를 해상도마다 3개씩 COCO AP50 57.9, 51ms(608×608, 데스크톱 GPU) 대 RetinaNet 57.5, 198ms
YOLOX(2021) 앵커 없이, 분류·위치 머리 분리, 정답 배정(SimOTA) YOLOX-L COCO 50.0 AP, 68.9fps(데이터센터 GPU, FP16, 640×640)
YOLOv10(2024) NMS 없이: 학습 땐 일대다·일대일 머리를 함께, 추론 땐 일대일만 v10-S 46.3 AP 2.49ms 대 RT-DETR-R18 46.5 AP 4.58ms(추론용 데이터센터 GPU, TensorRT FP16)

몇 가지 설계 이유를 짚으면 이렇습니다.

3. 직접 해 보기: AP 계산

검출 논문의 숫자는 거의 다 AP(Average Precision)입니다. 정답 공 5개가 있는 장면에서 검출기가 상자 8개를 냈다고 합시다. 점수 높은 순으로 정답과 IoU 0.5 이상으로 짝지어지면 맞음(1), 아니면 틀림(0)입니다(실측).

점수 순 맞음/틀림: [1, 1, 0, 1, 0, 1, 0, 0]
재현율: [0.2, 0.4, 0.4, 0.6, 0.6, 0.8, 0.8, 0.8]
정밀도: [1.0, 1.0, 0.67, 0.75, 0.6, 0.67, 0.57, 0.5]
AP = 0.683

AP 는 재현율(찾은 정답의 비율)을 가로축, 정밀도(낸 것 중 맞은 비율)를 세로축으로 한 곡선의 넓이입니다. 정밀도를 「오른쪽에서 본 최댓값」으로 펴서 계산합니다(모든 점 보간). 정답 5개 중 4개만 찾았으므로 재현율은 0.8 에서 멈추고, 그 뒤 넓이는 0 입니다.

같은 상자 8개라도 점수 순서가 바뀌면 AP 가 달라집니다.

점수 순서 AP
맞은 4개가 먼저 [1,1,1,1,0,0,0,0] 0.800
원래 순서 0.683
맞은 4개가 나중 [0,0,0,0,1,1,1,1] 0.400

AP 는 「맞혔나」뿐 아니라 「맞은 것에 높은 점수를 줬나」까지 채점합니다. 신뢰도 점수가 엉망인 검출기는 같은 상자를 내도 AP 가 낮습니다. 논문의 AP 를 읽을 때 기억해 둘 점입니다.

4. 실시간성이란

「실시간」은 상대적인 말입니다. 탁구 영상이 초당 60장이면 한 장에 쓸 수 있는 시간은 16.7ms 이고, 그 안에 디코딩·전처리·모델·후처리·판정이 다 들어가야 합니다. 논문의 fps 를 읽을 때는 조건을 같이 봐야 합니다.

TT Score 의 공 찾기(BlurBall)는 서버 GPU 에서 창 하나(3프레임)에 10.5ms 였습니다(실측, TT Score 모델 해부 2편). 「몇 fps」보다 「한 장에 몇 ms, 무엇을 포함해서」로 적어야 비교가 됩니다.

5. 라이선스: AGPL 이 웹 서비스에서 뜻하는 것

YOLO 라는 이름은 여러 저장소가 나눠 씁니다. 라이선스가 저장소마다 다릅니다(각 LICENSE 파일, 2026-10-13 확인).

저장소 라이선스
Darknet(원조 YOLO) 「YOLO LICENSE」 — 사실상 무엇이든 해도 된다는 공공 영역에 가까운 조건
YOLOX(Megvii) Apache-2.0
RT-DETR(공식) Apache-2.0
Ultralytics 패키지(YOLOv8·YOLO11 등, YOLO-World·YOLOE 이식 포함) AGPL-3.0 또는 유료 기업 라이선스
YOLOv10(공식, Ultralytics 코드 기반) AGPL-3.0

AGPL-3.0 은 GPL 에 네트워크 조항(13조)을 더한 것입니다. 프로그램을 고쳐서, 사용자가 네트워크로 그 프로그램과 상호작용하게 하면 그 사용자에게 고친 판의 소스 코드를 받을 방법을 제공해야 합니다. 배포하지 않고 서버에서만 돌려도 의무가 생긴다는 점이 GPL 과 다릅니다. Ultralytics 는 자기 안내 페이지에서 AGPL 의 공개 의무 없이 쓰려면(상업 제품, SaaS·API, 임베디드 기기, 상업적으로 쓰는 미세조정 모델 등) 기업 라이선스가 필요하다고 설명하고, 학습한 모델도 기본적으로 AGPL-3.0 을 따른다는 입장입니다. 마지막 주장(가중치에도 AGPL 이 미친다)이 법적으로 어디까지 성립하는지는 이 글이 판단할 수 없습니다. 다만 회사가 그렇게 주장하고 있다는 사실이 이미 위험 요소입니다.

TT Score 는 웹 서비스입니다. 그래서 공 찾기에는 코드가 MIT 인 WASB·BlurBall 을, 탁구대에는 Apache-2.0 인 SAM 2.1 을 골랐고, YOLO 계열 분할 모델은 AGPL 조건 때문에 후보에서 뺐습니다(TT Score 모델 해부 1편). 모델을 고를 때 정확도·속도와 같은 무게로 라이선스를 보는 이유입니다.

6. 한계와 우리 프로젝트

다음 글은 합성곱을 버린 Vision Transformer 입니다.

티티 한마디. 같은 상자 여덟 개인데 점수 순서만 바꿨더니 AP 가 0.8 에서 0.4 가 됐어요. 맞힌 것에 자신 있게 높은 점수를 주는 것도 실력이에요.

참고 문헌

로그인하면 좋아요를 누를 수 있습니다

댓글

아직 댓글이 없습니다.

로그인하면 댓글을 쓸 수 있습니다