본문 바로가기
개발 관련 이야기

YOLOv1 논문 리뷰

by 꿈틀쓰 2022. 8. 17.

이번 논문은 물체 인식에서 아주 유명한 YOLO의 첫번째 논문이다. 글을 쓰는 현재 기준으로 YOLOv5가 가장 최신의 모델이다. 논문의 원 저자가 개발에 참여한 것은 YOLOv3까지로, 이후에는 YOLO 및 Computer Vision 연구에 손을 뗐다. 그 이유는 군사적/사생활 문제 관련에서 자신이 개발한 기술이 사용되는 것을 원치 않아서이다.

 

개요

YOLO는 기존의 object detection 모델과 달리 하나의 Neural network로 bounding box를 찾고 classify까지 하는 모델이다. YOLO의 저자는 이 모델의 주요 장점과 그 이유를 다음과 같이 설명했다.

 

  1. YOLO는 굉장히 빠르다. Detection 작업을 regression으로 바라보면서 더 이상의 복잡한 파이프라인이 필요 없어졌기 때문이다.
  2. YOLO는 이미지 전체를 보고 추론한다. 전체 이미지를 한번에 보기 때문에 sliding window 기법보다 context를 더 잘 이해할 수 있다.
  3. YOLO는 object의 일반화 가능한 표현법을 배운다. 현실에서 찍은 이미지로 훈련하고 인공 이미지로 테스트를 해도 DPM이나 R-CNN 같은 애들보다 훨씬 좋은 성능을 보였다. 즉, 예상치 못한 환경에서도 일반화를 잘 해서 기존의 다른 모델들보다 좋은 성능을 내는 것이다.

 

YOLO 모델 구조

YOLO 모델 구조

24개의 convolutional layer와 2개의 FC layer로 이루어져 있다. Convolutional layer는 특징을 추출하는데 사용되고, FC layer는 확률과 좌표를 계산한다.

이 모델은 GoogLeNet에서 영감을 받긴 했지만 inception 모듈 대신에 1x1 reduction layer를 convolutional layer 뒤에 배치하였다.

네트워크의 결과는 7x7x30 크기의 텐서이다.

 

YOLO의 Detection 과정

전체적인 과정을 단순화해서 살펴보면 다음과 같다.

  1. input image resize 수행하여 448x448로 만든다.
  2. 입력 이미지를 CNN에 넣는다.
  3. 최종 바운딩 박스를 선정한다. (Non-max suppression)

CNN이 하는 일을 직관적으로 설명하면 다음과 같다.

  1. 이미지를 S x S 그리드로 나눈다.
  2. 각 그리드 셀은 B개의 bounding box를 예측한다. 이는 x, y, w, h, confidence의 다섯개의 값을 예측하는 것이다.
  3. 각 그리드 셀은 각 bounding box에 대한 confidence score를 계산한다. 이는 모델이 그 box를 얼마나 신뢰하는가를 보여준다.
  4. 각 그리드 셀은 C개의 조건부 클래스 확률을 계산한다.
  5. 결과 텐서의 dimensiond은 S x S x (B * 5 + C)이다.

YOLO의 트레이닝

독자적인 프레임워크 Darknet을 이용하여 개발하였다. 

주요 하이퍼 파라미터 값은 다음과 같다.

  • Epoch : 135
  • Batch size : 64
  • Momentum : 0.9
  • Weight decay : 0.0005
  • Dropout : 0.5

Bounding box의 width와 height를 이미지의 width와 height로 normalize하여 0~1의 범위로 맵핑하고, 좌표 (x, y) 또한 그리드 셀 기준으로 offset를 계산하여 0~1로 맵핑한 후 트레이닝 시켰다.

Activation function은 마지막 레이어에서 linear activation을 사용한 것을 제외하고는 모드 leaky ReLU를 사용하였다. leaky ReLU 식은 다음과 같다.

YOLO에서 사용한 leaky ReLU

Optimization은 

Loss Function

위 사진과 같다. 굉장히 복잡해 보이지만 각각의 의미를 살펴보면 이해하기 쉽다.

여기서는 SSE를 목적에 부합하도록 약간 변형해서 사용하였다. 

λcoord : bounding box의 좌표 예측 loss 가중치, 5로 사용함

λnoobj : object가 없는 box의 confidence 예측 loss 가중치, 0.5로 사용함.

각 loss 항별 설명

 

YOLO의 한계

YOLO가 빠르고 정확한 모델임은 확실하지만 완벽한 모델은 당연히 아니다. 논문의 저자는 YOLO는 작은 object들이 무리지어서 나타나는 경우에 detect하는데 어려워하며, 트레이닝 때 경험하지 못했던 ratio나 cofiguration에 성능이 잘 나오지 않는다고 언급하였다.

 

'개발 관련 이야기' 카테고리의 다른 글

SAA-C02 공부 내용 요약  (0) 2022.08.24
AWS Certified Solutions Architect - Associate (SAA-C02) 합격 후기  (2) 2022.08.22
TCP 패킷 분리 현상  (0) 2022.08.16
VGG 논문 리뷰  (0) 2022.08.09
OpenCV로 영상 녹화  (0) 2022.08.08

댓글