YOLOv3 워크스루 글 다시 보다가, 정작 흥미로운 부분은 따로 있었음
어디선가 본 영문 YOLOv3 페이퍼 워크스루 글을 한국 개발자 입장에서 다시 정리. Darknet-53, 멀티스케일 예측, 독립 로지스틱 분류기 같은 변경점을 설명만 하고 끝나는 게 아니라, 그 중에서 실제로 의미 있었던 변화는 무엇인지, 페이퍼 자체의 묘한 톤과 저자의 그 이후 행보까지 묶어서 보는 큐레이션 후기.
객체 인식 공부할 때 한 번씩 다시 들춰보게 되는 게 YOLO 시리즈인데, 며칠 전에 어디서 봤더라, 영문 블로그에서 YOLOv3 페이퍼 워크스루 글이 하나 떴길래 천천히 읽었어요. PyTorch로 아키텍처를 바닥부터 짜보는 식으로 진행되는 글이었음.
근데 다 읽고 나서 든 생각: "이 글이 짚은 부분"보다 "이 글이 안 짚은 부분"이 더 흥미로웠다는 거.
일단 빠르게, 뭐가 바뀌었는가
YOLOv3가 v2 대비 바꾼 건 사실 많지 않습니다. 페이퍼 제목 자체가 "An Incremental Improvement"인데, 이게 살짝 자조적인 게 함정. 실제로 저자(Joseph Redmon)는 본문 도입부에서 "그냥 트위터하면서 한 해 보냈고 GAN 좀 갖고 놀았다" 같은 걸 진심 반 농담 반으로 적어놨거든요. 학회 캠레디 데드라인 때문에 어쩔 수 없이 테크 리포트 쓴다, 라는 톤이 페이퍼 곳곳에 깔려 있어요.
핵심 변경점만 압축하면 대략 이런 정도:
- 백본을 Darknet-19 → Darknet-53으로 교체. 잔차 연결 추가됨 (ResNet 영향)
- 3개 스케일에서 예측 (13×13, 26×26, 52×52) — FPN스러운 구조
- 앵커 박스 총 9개 (스케일당 3개)
- 분류기를 softmax에서 독립 로지스틱으로 교체. 다중 라벨 가능
워크스루 글에서는 백본 구조 설명에 분량을 가장 많이 썼던데, 솔직히 백본은 ResNet 쓸 거면 ResNet 쓰면 되는 거고 그렇게 흥미로운 포인트는 아닌 듯.
정작 큰 변화는 분류기 쪽
내가 보기엔 softmax → 독립 로지스틱으로 바꾼 게 가장 실무적으로 의미 있는 변화임. 워크스루 글은 이걸 "multi-label 가능"이라고만 짧게 짚고 넘어갔는데, 한국에서 실제 데이터셋으로 학습 돌릴 때 이게 진짜 자주 걸리는 문제거든요.
예를 들면 "person"하고 "woman" 같은 라벨이 한 박스에 동시에 붙는 데이터가 꽤 많은데, softmax는 이걸 강제로 둘 중 하나로 밀어넣음. Open Images 계열 데이터셋 한 번이라도 만져본 사람은 이 부분에서 짜증 한 번씩 났을 거라고 봐요. 독립 로지스틱은 라벨별로 sigmoid 따로 돌리는 거라 이 문제가 깔끔하게 풀립니다.
근데 워크스루 글에서는 이 변화를 그냥 "구조 차이" 정도로만 다루고 넘어가서 좀 아쉬웠음. 이게 사실 진짜 실무에서 와닿는 변경점이거든요.
멀티스케일 예측은 사실 FPN 영향
3개 스케일에서 예측한다는 게 YOLOv3의 시그니처처럼 회자되는데, 이게 사실상 FPN(Feature Pyramid Network) 아이디어를 가져온 거임. 페이퍼 본문에서도 저자가 "다른 사람들 좋은 아이디어 많이 가져왔다"고 그냥 솔직하게 인정해버려요. 작은 객체 검출이 약했던 v2 약점을 이걸로 어느 정도 메꾼 거고.
워크스루 글은 이 부분을 "독립적인 발명"처럼 풀어놔서 그 부분도 좀 의아했어요. FPN 맥락 없이 보면 "왜 굳이 3개 스케일?"이라는 의문이 안 풀리거든요. 큐레이션 글이라면 이런 외부 맥락은 한 줄이라도 짚어줘야 한다고 봅니다.
공식 벤치 한 줄짜리에 숨은 의미
arxiv 페이퍼 어디 보면 Titan X 기준 51ms에 57.9 AP_50, 같은 시점 RetinaNet은 198ms에 57.5 AP_50라는 수치가 있어요. 이거 놓고 페이퍼는 "비슷한 성능에 3.8배 빠름"이라고 자랑하는데, 이게 또 함정인 게 — COCO 표준 메트릭인 AP[.5:.95]에서는 YOLOv3가 RetinaNet에 꽤 밀립니다.
저자도 이걸 알고 페이퍼 후반부에서 "AP[.5:.95] 메트릭 자체가 좀 이상한 거 아니냐, IoU 0.7쯤은 이미 사람 눈으로 구분 안 되는 수준인데 왜 거기서 페널티를 줘야 하냐"라고 항변하는 부분이 나와요. 직접 안 돌려본 입장에서 단정하긴 어려운데, 페이퍼 톤만 보면 묘하게 설득력 있어요. 적어도 메트릭 자체에 대한 비판은 그냥 변명으로만 들리진 않더라고요.
잠깐 옆길로 — 페이퍼 말미의 그 부분
YOLOv3 페이퍼는 컴퓨터 비전 페이퍼 중에 톤이 가장 이상한 축에 들어요. 차트 축을 0부터 시작 안 하면 자기 모델이 더 좋아 보인다는 농담을 진지하게 그래프 캡션에 적어놓고, "이 페이퍼 누가 자기 페이퍼 인용한대? 이 사람임 →" 이러면서 자기 자신을 인용하는 식.
근데 이 농담 톤 뒤에 마지막 섹션에서 저자가 갑자기 이 기술이 군사용으로 쓰일 가능성에 대한 무거운 얘기를 꺼내요. 이게 복선이었던 게, 2020년에 Joseph Redmon은 컴퓨터 비전 연구를 윤리적 이유로 그만뒀거든요. 군사 응용과 프라이버시 침해 우려를 못 견디겠다는 트위터 한 줄로요. YOLOv3가 그가 직접 발표한 마지막 YOLO 버전임. 이후 v4부터는 다른 연구자들이 이어받음.
워크스루 글에서는 이 맥락이 빠져 있었는데, 사실 이 페이퍼를 진짜 흥미롭게 만드는 건 아키텍처 변화 그 자체보다 이쪽에 가깝다고 봐요. 그냥 기술 문서가 아니라 한 연구자의 마지막 작별 인사 같은 분위기가 깔려 있거든요.
한계 — 2026년 시점에서 다시 보면
지금 시점에서 YOLOv3를 직접 쓰는 경우는 별로 없어요. 한국에서도 실무는 거의 ultralytics YOLOv8/v11 쪽으로 넘어갔고, 윈도우/리눅스 환경에서 pip install 한 줄로 끝나는 시대니까 다크넷 빌드할 일 자체가 없습니다.
그래서 이 워크스루 글이 "PyTorch로 처음부터 짜보자" 컨셉인데, 솔직히 학습용으로는 의미 있어도 실무 가치는 거의 없어요. 차라리 v8/v11 코드베이스 뜯어보는 게 훨씬 실용적임. 글이 살짝 박물관 투어 같은 느낌이 들었던 이유가 이거.
그리고 한 가지 더. PyTorch 구현체를 처음부터 짜는 글들이 흔히 빠지는 함정이 있는데, "구현 가능한가"와 "왜 이렇게 만들었나"를 구분 안 하고 그냥 코드만 쭉 깐다는 거예요. 이번 글도 그 경계에 살짝 걸쳐 있는 느낌이었어요.
별 상관 없는 얘기
페이퍼를 다시 읽으면서 느낀 건데, 2018년에는 이렇게 농담 가득한 톤으로 페이퍼를 써도 SOTA가 나오면 그냥 받아주는 분위기가 있었던 듯. 지금이라면 어떨까. NeurIPS broader impact 섹션 의무화 이후로는 이런 톤이 거의 멸종됐어요. 좀 아쉽기도 하고. 그런 점에서 YOLOv3 페이퍼는 그 시대의 마지막 화석 같은 문서이기도 한 듯.
정리하면
- YOLOv3는 알고리즘 자체가 혁신적이지는 않음. 좋은 아이디어 모음집에 가까움
- 가장 실무적 의미가 큰 변경은 다중 라벨 분류 가능해진 거 (softmax 제거)
- 멀티스케일은 FPN 영향. 단독 발명 아님
- 페이퍼 자체가 작품임. 한 번쯤 직접 읽어볼 만함
- 학습 목적 외에는 지금 쓸 일 별로 없음
다음 글에서는 v8 / v11 가서 anchor-free 방식이 어떻게 바뀌었는지, 그리고 ultralytics 라이브러리가 사실상 표준이 되면서 생긴 코드 구조의 변화를 정리해볼 예정. 거기서 또 흥미로운 게 나오거든요.

댓글
NEXT_PUBLIC_GISCUS_*환경변수 구성 필요)