yolov2_title

개요

YOLO9000: Better, Faster, Stronger 의 얕은 리뷰 포스팅. YOLOv1 포스팅에 이어서 달려보겠습니다.

해당 논문에서 YOLOv2 및 YOLO9000 이라는 2개의 목표를 향해 달려가며, 실시간 객체 감지를 위한 발달 된 방법론을 다룬다. 기존의 GoogLeNet 기반의 YOLOv1에서 향상된 모델을 보여준다. 해당 논문은 CVPR 2017에 발표되었다.

YOLOv2

YOLOv2는 이미지 데이터로 부터 특징을 추출하기 위한 네트워크 백본으로 Darknet-19를 제안한다. 해당 네트워크의 구조는 다음과 같다.
table6
기존의 24개의 convolution을 사용하던 YOLO에서 19개의 convolution, 5개의 맥스 풀링을 사용하며 각 컨볼루션 뒤에 BN(Batch Normalization)을 붙인다. 이를 통해 드롭아웃을 제거하면서도 mAP를 향상시킨다. 해당 Darknet-19는 분류 백본 네트워크이고 객체 감지를 위해선 마지막 컨볼루션(필터가 1000인)을 제거하고 3개의 컨볼루션(1024필터, 3*3 커널) 및 출력 컨볼루션(1*1 커널)을 추가하도록 네트워크가 수정된다.

논문의 제목과 같이 크게 3개의 키워드로 더 정확하고, 빠르며, 강한 모델을 지향하는 방법론들을 가져왔다. 성능을 향상 시키기 위한 방법론이 상당히 많다 소주제 별로 정리해보았다.

Better

  • 배치 노멀라이즈의 사용: 모델의 정규화 성능 및 오버피팅을 방지하고 드롭아웃 없이도 mAP 향상을 달성한다.
  • 학습 해상도 변경: 기존의 YOLO는 $224\times 224$ 로 학습한 뒤 탐지를 위해 입력 해상도를 448로 증가시켰는데, 처음 분류 단의 학습을 $448 \times 448$ 로 변경하여 더 높은 해상도의 이미지들에 대한 성능을 올렸다.
  • 앵커박스의 사용: R-CNN의 RPN(Region Proposal Network)에서 사용한 앵커 박스를 도입하여 각 그리드 셀에 대한 앵커 박스 위치에 대한 예측을 도입하였다. 객체 감지 단에서 입력 해상도를 $416 \times 416$ 으로 사용하여 32배의 다운샘플링과 $13 \times 13$ 의 그리드셀을 사용한다. 기존 YOLO의 $7\times 7$ 에 비해 더 세밀하게 볼 수 있다. 기존 YOLO가 98개의 예측을 출력으로 내는 것에 비해 천 개 이상의 박스를 출력하여 정확도를 올리는 방법이다. 아래의 두 항목은 앵커 박스 사용의 단점을 완화하기 위한 방법이다.
  • K-means clustering: 앵커 박스를 도입하는 것은 어느정도 규격화 된 바운딩 박스 형태로 제한하는 단점이 있는데 해당 클러스터링 기법을 통해 학습 데이터로부터 앵커 박스의 형태를 제안하기 위한 프라이어를 찾아 유효하고 성능 좋은 앵커박스를 제안한다.
  • Direct location prediction: 기존 앵커 박스의 위치 추출 방법론이 가지는 문제는 전역적인 위치를 바로 예측하므로 학습 시에 안정화되는데에 오래 걸리는 문제가 있었다. 이를 그리드 셀에 따른 상대적인 위치 좌표 학습으로 변형하여 예측한다. 이는 값의 분포를 제한하여 학습의 난이도를 낮추며 네트워크의 안정성을 향상 시킨다.
  • Fine-Grained Features: 여기서 말하는 passthrough 는 Resnet의 shortcut과 유사한 의도로 사용한 키워드 같은데, 이 전단계의 이미지 피쳐를 다음 단계의 채널로 쌓아서 고해상도의 특징과 저해상도의 특징을 연결한다. 이를 통해 크기가 작은 객체에도 감지 성능을 올리려 시도하였다.
  • Multi-Scale Training: 분류 모델의 학습 해상도는 가로, 세로 448 픽셀의 해상도로 학습하였고, 앵커 박스를 통한 감지 모델로 학습 시 416 픽셀의 해상도로 학습하였는데 이는 네트워크 구조가 32배의 다운샘플링을 수행하며 $13\times 13$ 의 그리드 셀을 의도했기 때문이다. 그런데 Darknet-19의 구조에서 분류 헤드를 제외하면 Convolution과 MaxPooling만 있으므로 입력해상도 변경이 가능했다. 이를 통해 입력 해상도를 32의 배수 인 $320\times 320$ 부터 $608\times 608$ 까지 변경해가면서 다양한 입력 해상도에 대해 잘 예측을 수행하도록 학습하였다고 한다.

Faster

  • Darknet-19의 도입: 기존 YOLO의 백본에서 해당 백본으로 교체한다. 특징은 $3\times 3$ 특징 표현의 압축을 위한 $1\times 1$ 컨볼루션의 사용과 예측을 위한 Global Average Pooling의 사용이다. VGG-16 대비 적은 파라미터 및 연산량을 가진다.

Stronger

  • YOLOv2를 YOLO9000으로 만드는 착안점이 여기서 나오는데 당시 COCO 데이터 뿐아니라 이미지 분류에 사용했던 ImageNet 데이터 셋을 공동으로 활용하여 학습하는 메커니즘을 제안한다. COCO에는 ‘개’라고 되어있는 클래스가 ImageNet으로 오면 “노퍽 테리어”, “요크셔 테리어”등 너무 디테일한 카테고리로 나뉘어 클래스가 상호배타적이지 않다는 문제가 있었다.
  • Hierarchical classification: 언어 데이터 베이스인 WordNet으로 부터 구조화 아이디어를 얻어 가장 디테일한 개체 명으로 부터 이를 점점 추상화하는 상위 개념을 도입하고 이를 조건부확률로 구조화 하여 결국 트리 구조 형태의 라벨링을 가능하게 한다.
    • 예를 들어 “노퍽 테리어”는 “테리어” -> “사냥개” -> “…” -> “포유류” -> “동물” -> “개체” 로 계층화 될 수 있다.
    • 이러한 WordTree 모델을 만들게되어 1000개의 ImageNet 데이터 셋의 클래스는 369개의 중간 노드를 모두 추가하여 총 1369개의 카테고리로 확장되었다.
  • Joint classification and detection: 결과적으로 COCO 뿐 아니라 ImageNet 데이터 셋을 같이 활용하여 분류 및 탐지에 대한 공동 모델 학습을 할 수 있게 되었고 이는 총 9,418개의 클래스를 가지게 되었다. 이러한 데이터에서 5개의 프라이어 대신 3개의 프라이어와 YOLOv2 아키텍쳐를 사용한 상태로 YOLO9000 을 결과로 보인다. 모델의 구조 보단 데이터 셋의 결합 및 학습에 방점을 두고 있다.

결론

기존의 YOLO 아키텍쳐로부터 향상 된 Darknet 백본을 사용한 YOLOv2를 제안하였다. 다양한 스케일에 대한 학습 및 예측을 가능하게 하여 속도-정확도 간 효율성을 제공한다. 또한 9,000개 이상의 클래스를 학습하는 YOLO9000을 제안하였다. 이는 데이터 셋을 가공하고 연계하여 학습에 활용 가능하도록 만드는 방법론을 제시한다.

번역

Abstract

우리는 9000개 이상의 객체 범주를 탐지할 수 있는 최첨단 실시간 객체 탐지 시스템인 YOLO9000을 소개합니다. 먼저 우리는 기존 작업에서 새롭게 도출된 다양한 YOLO 탐지 방법 개선 사항을 제안합니다. 개선된 모델인 YOLOv2는 PASCAL VOC와 COCO와 같은 표준 탐지 작업에서 최첨단 기술입니다. 새로운 다중 스케일 훈련 방법을 사용하여 동일한 YOLOv2 모델은 다양한 크기에서 실행될 수 있어 속도와 정확성 사이의 쉬운 균형을 제공합니다. 67 FPS에서 YOLOv2는 VOC 2007에서 76.8 mAP를 기록합니다. 40 FPS에서는 YOLOv2가 78.6 mAP를 기록하여 ResNet과 SSD가 있는 Faster R-CNN과 같은 최첨단 방법을 능가하면서도 훨씬 빠르게 실행됩니다. 마지막으로 우리는 객체 탐지와 분류를 공동으로 훈련하는 방법을 제안합니다. 이 방법을 사용하여 우리는 COCO 탐지 데이터셋과 ImageNet 분류 데이터셋에서 동시에 YOLO9000을 훈련합니다. 우리의 공동 훈련은 YOLO9000이 레이블이 없는 객체 클래스에 대한 탐지를 예측할 수 있게 합니다. 우리는 ImageNet 탐지 작업에서 우리의 접근 방식을 검증합니다. YOLO9000은 200개 클래스 중 44개 클래스에 대한 탐지 데이터만 가지고도 ImageNet 탐지 검증 세트에서 19.7 mAP를 기록합니다. COCO에 없는 156개 클래스에서 YOLO9000은 16.0 mAP를 기록합니다. 하지만 YOLO는 단지 200개 이상의 클래스를 탐지할 수 있습니다. 9000개 이상의 다양한 객체 범주에 대한 탐지를 예측합니다. 그리고 여전히 실시간으로 실행됩니다.

1. Introduction

일반 목적의 객체 탐지는 빠르고 정확해야 하며 다양한 객체를 인식할 수 있어야 합니다. 신경망이 도입된 이후로 탐지 프레임워크는 점점 더 빠르고 정확해졌습니다. 그러나 대부분의 탐지 방법은 여전히 적은 수의 객체 집합에 제한되어 있습니다.
현재의 객체 탐지 데이터셋은 분류 및 태그 지정과 같은 다른 작업의 데이터셋에 비해 제한적입니다. 가장 일반적인 탐지 데이터셋은 수천에서 수십만 개의 이미지와 수십에서 수백 개의 태그를 포함합니다. 분류 데이터셋은 수백만 개의 이미지와 수만에서 수십만 개의 범주를 가지고 있습니다.
우리는 탐지가 객체 분류 수준으로 확장되기를 원합니다. 그러나 탐지를 위한 이미지 레이블링은 분류 또는 태그 지정을 위한 레이블링보다 훨씬 더 비쌉니다(태그는 종종 사용자가 무료로 제공합니다). 따라서 가까운 미래에 분류 데이터셋과 동일한 규모의 탐지 데이터셋을 보는 것은 어려울 것입니다.
우리는 이미 보유한 대량의 분류 데이터를 활용하여 현재 탐지 시스템의 범위를 확장하는 새로운 방법을 제안합니다. 우리의 방법은 객체 분류의 계층적 보기를 사용하여 서로 다른 데이터셋을 결합할 수 있게 합니다.
우리는 또한 탐지 및 분류 데이터 모두에서 객체 탐지기를 훈련할 수 있는 공동 훈련 알고리즘을 제안합니다. 우리의 방법은 레이블이 지정된 탐지 이미지를 활용하여 객체를 정확하게 위치를 학습하고, 분류 이미지를 사용하여 어휘와 강건성을 향상시킵니다.
이 방법을 사용하여 우리는 9000개 이상의 다른 객체 범주를 탐지할 수 있는 실시간 객체 탐지기인 YOLO9000을 훈련합니다. 먼저 기본 YOLO 탐지 시스템을 개선하여 최첨단 실시간 탐지기인 YOLOv2를 만듭니다. 그런 다음 데이터셋 결합 방법과 공동 훈련 알고리즘을 사용하여 ImageNet의 9000개 이상의 클래스와 COCO의 탐지 데이터를 사용하는 모델을 훈련합니다.
우리의 모든 코드와 사전 훈련된 모델은 http://pjreddie.com/yolo9000/에서 온라인으로 이용할 수 있습니다.

2. Better

YOLO는 최첨단 탐지 시스템에 비해 다양한 단점을 가지고 있습니다. Fast R-CNN과 비교한 YOLO의 오류 분석에 따르면 YOLO는 상당한 수의 위치 지정 오류를 발생시킵니다. 또한 YOLO는 영역 제안 기반 방법에 비해 비교적 낮은 재현율을 가지고 있습니다. 따라서 우리는 주로 재현율과 위치 지정을 개선하는 동시에 분류 정확도를 유지하는 데 중점을 둡니다.
컴퓨터 비전은 일반적으로 더 크고 깊은 네트워크로 나아가는 추세입니다. 더 나은 성능은 종종 더 큰 네트워크를 훈련시키거나 여러 모델을 앙상블하는 것에 달려 있습니다. 그러나 YOLOv2에서는 여전히 빠른 더 정확한 탐지기를 원합니다. 네트워크를 확장하는 대신, 네트워크를 단순화하고 표현을 더 쉽게 학습할 수 있도록 만듭니다. 우리는 과거 작업에서 다양한 아이디어를 수집하고 우리만의 새로운 개념을 추가하여 YOLO의 성능을 향상시킵니다. 결과 요약은 표 2에서 찾을 수 있습니다.

Batch Normalization

배치 정규화는 수렴의 상당한 개선을 가져오며 다른 형태의 정규화 필요성을 제거합니다. YOLO의 모든 합성곱 층에 배치 정규화를 추가함으로써 mAP가 2% 이상 향상됩니다. 배치 정규화는 모델을 정규화하는 데도 도움이 됩니다. 배치 정규화를 통해 오버피팅 없이 모델에서 드롭아웃을 제거할 수 있습니다.

High Resolution Classifier

모든 최첨단 탐지 방법은 ImageNet에서 사전 훈련된 분류기를 사용합니다. AlexNet에서 시작하여 대부분의 분류기는 $256 \times 256$ 이하의 입력 이미지에서 작동합니다. 원래 YOLO는 분류기 네트워크를 $224 \times 224$ 에서 훈련하고 탐지를 위해 해상도를 448로 증가시킵니다. 이는 네트워크가 객체 탐지를 학습하고 새로운 입력 해상도에 맞추는 것을 동시에 전환해야 함을 의미합니다.
YOLOv2에서는 먼저 분류 네트워크를 ImageNet에서 10 에포크 동안 전체 448 x 448 해상도로 미세 조정합니다. 이는 네트워크가 더 높은 해상도의 입력에서 더 잘 작동하도록 필터를 조정할 시간을 제공합니다. 그런 다음 결과 네트워크를 탐지에 맞게 미세 조정합니다. 이 고해상도 분류 네트워크는 거의 4%의 mAP 증가를 제공합니다.

Convolutional With Anchor Boxes

YOLO는 합성곱 특징 추출기 상단에 완전히 연결된 층을 사용하여 바운딩 박스의 좌표를 직접 예측합니다. 좌표를 직접 예측하는 대신 Faster R-CNN은 사전 설정된 프라이어를 사용하여 바운딩 박스를 예측합니다. Faster R-CNN의 영역 제안 네트워크(RPN)는 합성곱층만을 사용하여 앵커 박스의 오프셋과 신뢰도를 예측합니다. 예측 층이 합성곱형이기 때문에 RPN은 특징 맵의 모든 위치에서 이러한 오프셋을 예측합니다.
우리는 YOLO에서 완전히 연결된 층을 제거하고 앵커 박스를 사용하여 바운딩 박스를 예측합니다. 먼저 네트워크의 합성곱층 출력을 더 높은 해상도로 만들기 위해 하나의 풀링 층을 제거합니다. 또한 네트워크를 축소하여 448×448 대신 416 입력 이미지에서 작동하도록 합니다. 우리는 특징 맵에서 중앙 셀 하나가 있도록 홀수 개의 위치를 원하기 때문에 이렇게 합니다. 객체, 특히 큰 객체는 이미지의 중앙을 차지하는 경향이 있으므로 네 개의 근처 위치 대신 중앙에 위치한 하나의 위치에서 이러한 객체를 예측하는 것이 좋습니다. YOLO의 합성곱층은 이미지를 32배 다운샘플링하므로 416 입력 이미지를 사용하면 13×13 출력 특징 맵을 얻을 수 있습니다.
우리가 앵커 박스로 이동할 때 클래스 예측 메커니즘을 공간 위치에서 분리하고 대신 각 앵커 박스에 대해 클래스와 객체성을 예측합니다. YOLO를 따라 객체성 예측은 여전히 실제값과 제안된 박스의 IOU를 예측하며, 클래스 예측은 객체가 있을 때 해당 클래스의 조건부 확률을 예측합니다.
앵커 박스를 사용하면 정확도가 약간 감소합니다. YOLO는 이미지당 98개의 박스만 예측하지만 앵커 박스를 사용하면 모델이 천 개 이상의 박스를 예측합니다. 앵커 박스 없이 중간 모델은 81%의 재현율로 69.5 mAP를 기록합니다. 앵커 박스를 사용하면 모델은 85%의 재현율로 69.2 mAP를 기록합니다. mAP는 감소했지만 재현율의 증가는 모델이 개선될 여지가 더 많다는 것을 의미합니다.

Dimension Clusters

YOLO에서 앵커 박스를 사용할 때 두 가지 문제에 직면합니다. 첫 번째는 박스 크기가 수동으로 선택된다는 것입니다. 네트워크는 상자를 적절하게 조정하는 법을 배울 수 있지만, 네트워크가 시작할 더 나은 프라이어를 선택하면 네트워크가 좋은 탐지를 예측하는 법을 배우기 더 쉽게 만들 수 있습니다.
프라이어를 수동으로 선택하는 대신, 우리는 훈련 세트의 바운딩 박스에 대해 k-평균 클러스터링을 실행하여 자동으로 좋은 프라이어를 찾습니다. 유클리드 거리로 표준 k-평균을 사용하면 큰 박스가 작은 박스보다 더 많은 오류를 생성합니다. 그러나 우리가 진정으로 원하는 것은 박스 크기와 무관하게 좋은 IOU 점수를 제공하는 프라이어입니다. 따라서 우리의 거리 측정값은 다음과 같습니다:

\[d(\text{box}, \text{centorid})= 1-\text{IOU}(\text{box},\text{centroid})\]

우리는 다양한 k 값에 대해 k-평균을 실행하고 가장 가까운 중심점과의 평균 IOU를 플로팅합니다. 그림 2를 참조하십시오. 모델 복잡성과 높은 재현율 간의 균형을 고려하여 $k=5$ 를 선택합니다. 클러스터 중심점은 수동으로 선택된 앵커 박스와 크게 다릅니다. 짧고 넓은 박스는 적고, 길고 얇은 박스는 많습니다.
fig2

VOC와 COCO에서 박스 크기의 클러스터링. 우리는 모델을 위한 좋은 프라이어를 얻기 위해 바운딩 박스의 크기에 대해 k-평균 클러스터링을 실행합니다. 왼쪽 이미지는 k의 다양한 선택에 따른 평균 IOU를 보여줍니다. 우리는 k = 5가 재현율 대 모델 복잡성의 균형을 잘 맞춘다고 판단합니다. 오른쪽 이미지는 VOC와 COCO에 대한 상대적인 중심점을 보여줍니다. 두 세트의 프라이어 모두 더 얇고 키가 큰 박스를 선호하며, COCO는 VOC보다 크기 변동이 더 큽니다.

표 1에서 클러스터링 전략과 수동으로 선택된 앵커 박스의 평균 IOU를 가장 가까운 프라이어와 비교합니다. 단 5개의 프라이어에서 중심점은 9개의 앵커 박스와 유사하게 작동하며 평균 IOU는 60.9에 비해 61.0입니다. 9개의 중심점을 사용하면 훨씬 더 높은 평균 IOU를 볼 수 있습니다. 이는 k-평균을 사용하여 바운딩 박스 프라이어를 생성하면 모델이 더 나은 표현으로 시작하고 학습하기 쉬워진다는 것을 나타냅니다.
table1

VOC 2007에서 가장 가까운 프라이어에 대한 박스의 평균 IOU. 다른 생성 방법을 사용하여 VOC 2007의 객체와 가장 가까운, 수정되지 않은 프라이어에 대한 평균 IOU입니다. 클러스터링은 수동으로 선택된 프라이어를 사용하는 것보다 훨씬 더 나은 결과를 제공합니다.

Direct location prediction

YOLO에서 앵커 박스를 사용할 때 두 번째 문제에 직면합니다: 초기 반복 동안 모델 불안정성. 대부분의 불안정성은 박스의 (x, y) 위치를 예측하는 데서 발생합니다. 영역 제안 네트워크에서 네트워크는 t_x 및 t_y 값을 예측하고 (x, y) 중심 좌표는 다음과 같이 계산됩니다:

\[x = (t_x * w_a) - x_a \\ y = (t_y * h_a) - y_a\]

예를 들어, $t_x=1$ 의 예측은 앵커 박스의 너비만큼 박스를 오른쪽으로 이동시키고, $t_x=-1$ 의 예측은 동일한 양만큼 왼쪽으로 이동시킵니다. 이 공식은 제약이 없으므로 어떤 위치에서 박스를 예측하든 상관없이 앵커 박스가 이미지의 어느 지점에나 위치할 수 있습니다. 무작위 초기화로 인해 모델이 합리적인 오프셋 예측으로 안정화되기까지 오랜 시간이 걸립니다.
오프셋을 예측하는 대신 우리는 YOLO의 접근 방식을 따라 그리드 셀의 위치에 상대적인 위치 좌표를 예측합니다. 이는 실제값이 0과 1 사이에 있도록 제한합니다. 우리는 네트워크의 예측이 이 범위에 들어가도록 제한하기 위해 로지스틱 활성화를 사용합니다.
네트워크는 출력 특징 맵의 각 셀에서 5개의 바운딩 박스를 예측합니다. 네트워크는 각 바운딩 박스에 대해 $t_x,t_y,t_w,t_h,t_o$ 의 5개 좌표를 예측합니다. 셀이 이미지의 왼쪽 상단 모서리에서 ($c_x, c_y$)만큼 오프셋되고 바운딩 박스 프라이어의 너비와 높이가 $p_w, p_h$ 인 경우, 예측은 다음에 해당합니다:

\[\begin{align} b_x=\sigma(t_x)+c_x \\ b_y=\sigma(t_y)+c_y \\ b_w=p_we^{t_w} \\ b_h=p_he^{t_h} \end{align}\] \[Pr(\text{object})*IOU(b,\text{object})=\sigma(t_o)\]

위치 예측을 제약하기 때문에 매개변수화가 더 쉬워져 네트워크가 더 안정적입니다. 치수 클러스터를 사용하고 바운딩 박스 중심 위치를 직접 예측하면 앵커 박스를 사용한 버전보다 YOLO가 거의 5% 향상됩니다.

fig3

차원 프라이어와 위치 예측이 포함된 바운딩 박스. 우리는 클러스터 중심점의 오프셋으로 상자의 너비와 높이를 예측합니다. 우리는 필터 적용 위치에 대한 상자의 중심 좌표를 시그모이드 함수를 사용하여 예측합니다.

Fine-Grained Features

이 수정된 YOLO는 13×13 특징 맵에서 탐지를 예측합니다. 이는 큰 객체에는 충분하지만, 작은 객체를 로컬라이즈하는 데 더 세밀한 특징이 유리할 수 있습니다. Faster R-CNN과 SSD는 모두 네트워크의 다양한 특징 맵에서 제안 네트워크를 실행하여 여러 해상도를 얻습니다. 우리는 26×26 해상도의 이전 층에서 특징을 가져오는 패스스루 층을 추가하는 다른 접근 방식을 취합니다.
패스스루 층은 ResNet의 정체성 매핑과 유사하게 공간 위치 대신 인접한 특징을 다른 채널로 스태킹하여 고해상도 특징을 저해상도 특징과 연결합니다. 이는 26×26×512 특징 맵을 13×13×2048 특징 맵으로 변환하여 원래 특징과 연결할 수 있게 합니다. 우리의 탐지기는 이 확장된 특징 맵 위에서 실행되어 세밀한 특징에 접근할 수 있습니다. 이는 약간의 1% 성능 향상을 제공합니다.

Multi-Scale Training

원래 YOLO는 448×448의 입력 해상도를 사용합니다. 앵커 박스를 추가하면서 해상도를 416×416으로 변경했습니다. 그러나 우리의 모델은 합성곱과 풀링 층만 사용하므로 즉석에서 크기를 조정할 수 있습니다. 우리는 YOLOv2가 다양한 크기의 이미지에서 실행될 수 있도록 훈련합니다.
입력 이미지 크기를 고정하는 대신 우리는 몇 번의 반복마다 네트워크를 변경합니다. 매 10 배치마다 네트워크는 새로운 이미지 차원 크기를 무작위로 선택합니다. 모델이 32의 배수로 다운샘플링하므로 32의 배수 중 다음 값에서 선택합니다: {320, 352, …, 608}. 따라서 가장 작은 옵션은 $320\times 320$ 이고 가장 큰 옵션은 $608\times 608$입니다. 우리는 네트워크를 해당 크기로 조정하고 훈련을 계속합니다.
이 체제는 네트워크가 다양한 입력 차원에서 잘 예측할 수 있도록 강제합니다. 이는 동일한 네트워크가 다양한 해상도에서 탐지를 예측할 수 있음을 의미합니다. 네트워크는 더 작은 크기에서 더 빠르게 실행되므로 YOLOv2는 속도와 정확성 간의 쉬운 균형을 제공합니다.
낮은 해상도에서 YOLOv2는 저렴하고 상당히 정확한 탐지기로 작동합니다. 288×288에서 90 FPS 이상으로 실행되며 mAP는 Fast R-CNN과 거의 동일합니다. 이는 작은 GPU, 고프레임레이트 비디오 또는 여러 비디오 스트림에 이상적입니다.
고해상도에서 YOLOv2는 78.6 mAP로 최첨단 탐지기로 작동하면서 여전히 실시간 속도 이상으로 작동합니다. VOC 2007에서 다른 프레임워크와 YOLOv2의 비교는 표 3을 참조하십시오. 그림 4 table3

PASCAL VOC 2007의 탐지 프레임워크. YOLOv2는 이전 탐지 방법보다 더 빠르고 정확합니다. 또한 속도와 정확성 간의 쉬운 균형을 위해 다양한 해상도에서 실행할 수 있습니다. 각 YOLOv2 항목은 실제로 동일한 가중치를 가진 동일한 훈련 모델이며, 단지 다른 크기로 평가된 것입니다. 모든 타이밍 정보는 Geforce GTX Titan X(원래 모델, Pascal 모델 아님)에서 제공됩니다.

fig4

Further Experiments

우리는 VOC 2012에서 탐지를 위해 YOLOv2를 훈련시킵니다. 표 4는 최첨단 탐지 시스템과 비교한 YOLOv2의 성능을 보여줍니다. YOLOv2는 경쟁 방법보다 훨씬 빠르게 실행되면서 73.4 mAP를 달성합니다. 우리는 또한 COCO에서 훈련하고 표 5에서 다른 방법과 비교합니다. VOC 메트릭(IOU = .5)에서 YOLOv2는 SSD와 Faster R-CNN에 필적하는 44.0 mAP를 기록합니다.

table4

PASCAL VOC2012 테스트 탐지 결과. YOLOv2는 ResNet과 SSD512를 사용한 Faster R-CNN과 같은 최첨단 탐지기와 동등한 성능을 발휘하며 2 – 10배 더 빠릅니다. table5

3. Faster

우리는 탐지가 정확하기를 원하지만 또한 빠르기를 원합니다. 로봇공학이나 자율주행차와 같은 대부분의 탐지 응용 프로그램은 낮은 지연 예측에 의존합니다. 성능을 극대화하기 위해 우리는 YOLOv2를 처음부터 빠르게 설계합니다.
대부분의 탐지 프레임워크는 VGG-16을 기본 특징 추출기로 사용합니다. VGG-16은 강력하고 정확한 분류 네트워크이지만 불필요하게 복잡합니다. VGG-16의 합성곱층은 224 x 224 해상도에서 단일 이미지를 한 번 통과하는 데 306억 플로팅 포인트 연산이 필요합니다.
YOLO 프레임워크는 Googlenet 아키텍처를 기반으로 하는 맞춤형 네트워크를 사용합니다. 이 네트워크는 VGG-16보다 빠르며, 전방 통과에 85.2억 연산만 사용합니다. 그러나 정확도는 VGG-16보다 약간 떨어집니다. 224 x 224에서 단일 크롭, 상위 5위 정확도의 경우 YOLO의 맞춤형 모델은 VGG-16의 90.0%에 비해 ImageNet에서 88.0%를 기록합니다.

Darknet-19

우리는 YOLOv2의 기반으로 사용될 새로운 분류 모델을 제안합니다. 우리의 모델은 네트워크 설계에 대한 이전 작업과 이 분야의 일반적인 지식을 기반으로 합니다. VGG 모델과 유사하게 대부분 3 x 3 필터를 사용하고 풀링 단계마다 채널 수를 두 배로 늘립니다. Network in Network (NIN) 작업을 따라 우리는 전역 평균 풀링(GAP)을 사용하여 예측을 하고 3 x 3 합성곱 사이의 특징 표현을 압축하기 위해 1 x 1 필터를 사용합니다. 우리는 배치 정규화를 사용하여 훈련을 안정화하고 수렴 속도를 높이며 모델을 정규화합니다.
Darknet-19이라는 우리의 새 모델은 19개의 합성곱층과 5개의 최대 풀링 층을 가지고 있습니다. 전체 설명은 표 6을 참조하십시오. Darknet-19는 이미지를 처리하는 데 55.8억 연산만 필요하며 ImageNet에서 72.9%의 top-1 정확도와 91.2%의 top-5 정확도를 달성합니다.
table6

Training for classification

우리는 Darknet 신경망 프레임워크를 사용하여 표준 ImageNet 1000 클래스 분류 데이터셋에서 네트워크를 160 에포크 동안 학습합니다. 이때 확률적 경사 하강법을 사용하며, 초기 학습률은 0.1, 학습률 감소 지수는 4, 가중치 감소는 0.0005, 모멘텀은 0.9로 설정합니다. 훈련 중에는 랜덤 자르기, 회전, 색조, 채도 및 노출 변화와 같은 표준 데이터 증강 기법을 사용합니다.
위에서 논의한 바와 같이, 224 x 224 이미지에서 초기 훈련 후 448 크기로 네트워크를 미세 조정합니다. 이 미세 조정을 위해 위의 매개변수로 10 에포크 동안 학습하고 학습률은 10^-3으로 시작합니다. 이 고해상도에서 우리의 네트워크는 76.5%의 top-1 정확도와 93.3%의 top-5 정확도를 달성합니다.

Training for detection

마지막 합성곱층을 제거하고 대신 각 1024개의 필터가 있는 3개의 3 x 3 합성곱층을 추가하고 필요한 출력을 갖춘 최종 1 x 1 합성곱층을 추가하여 탐지를 위해 이 네트워크를 수정합니다. VOC의 경우 각 5개의 좌표가 있는 5개의 박스와 박스당 20개의 클래스를 예측하므로 125개의 필터가 필요합니다. 우리는 또한 마지막 3 x 3 x 512 층에서 마지막에서 두 번째 합성곱층으로 패스스루 층을 추가하여 모델이 세밀한 특징을 사용할 수 있도록 합니다.
우리는 초기 학습률을 $10^-3$ 으로 설정하고 60 및 90 에포크에서 10으로 나누어 160 에포크 동안 네트워크를 훈련시킵니다. 우리는 0.0005의 가중치 감소와 0.9의 모멘텀을 사용합니다. 우리는 YOLO 및 SSD와 유사한 랜덤 자르기, 색상 변경 등의 데이터 증강을 사용합니다. 우리는 COCO와 VOC에서 동일한 훈련 전략을 사용합니다.

4. Stronger

우리는 분류 및 탐지 데이터를 공동으로 훈련하는 메커니즘을 제안합니다. 우리의 방법은 탐지를 위해 라벨이 지정된 이미지를 사용하여 바운딩 박스 좌표 예측 및 객체성 같은 탐지 특화 정보를 학습하고 일반 객체를 분류하는 방법을 학습합니다. 분류 라벨만 있는 이미지를 사용하여 탐지할 수 있는 범주 수를 확장합니다.
훈련 중 우리는 탐지 및 분류 데이터셋의 이미지를 혼합합니다. 네트워크가 탐지를 위해 라벨이 지정된 이미지를 볼 때 전체 YOLOv2 손실 함수에 따라 역전파할 수 있습니다. 분류 이미지를 볼 때는 분류 특화된 아키텍처 부분에서만 손실을 역전파합니다.
이 접근 방식은 몇 가지 문제를 제기합니다. 탐지 데이터셋에는 “개” 또는 “보트”와 같은 일반 라벨이 붙은 일반적인 객체만 있습니다. 분류 데이터셋에는 훨씬 더 넓고 깊은 범위의 라벨이 있습니다. ImageNet에는 “노퍽 테리어”, “요크셔 테리어”, “베들링턴 테리어”를 포함하여 100가지 이상의 개 품종이 있습니다. 두 데이터셋 모두를 훈련하려면 이러한 라벨을 병합하는 일관된 방법이 필요합니다.
대부분의 분류 접근법은 모든 가능한 범주에 걸쳐 소프트맥스 층을 사용하여 최종 확률 분포를 계산합니다. 소프트맥스를 사용하면 클래스가 상호 배타적이라고 가정합니다. 이는 데이터셋을 결합하는 데 문제를 제기합니다. 예를 들어, 이 모델을 사용하여 ImageNet과 COCO를 결합하면 “노퍽 테리어”와 “개” 클래스가 상호 배타적이지 않기 때문입니다.
대신 우리는 상호 배타성을 가정하지 않는 다중 라벨 모델을 사용하여 데이터셋을 결합할 수 있습니다. 이 접근 방식은 데이터에 대해 알고 있는 모든 구조를 무시합니다. 예를 들어 COCO 클래스가 모두 상호 배타적이라는 것입니다.

Hierarchical classification

ImageNet 라벨은 개념과 그 관계를 구조화하는 언어 데이터베이스인 WordNet에서 가져옵니다. WordNet에서 “노퍽 테리어”와 “요크셔 테리어”는 모두 “사냥개”의 일종인 “테리어”의 하위어이며, 이는 “개”의 일종이고, “개과”입니다. 대부분의 분류 접근 방식은 라벨에 평면 구조를 가정하지만, 데이터셋을 결합할 때는 구조가 정확히 필요합니다.
WordNet은 트리가 아닌 방향 그래프로 구조화되어 있습니다. 왜냐하면 언어는 복잡하기 때문입니다. 예를 들어, “개”는 “개과”의 일종이자 “가축”의 일종이며, 이는 모두 WordNet의 동의어 집합입니다. 전체 그래프 구조를 사용하는 대신, 우리는 ImageNet의 개념에서 계층적 트리를 구축하여 문제를 단순화합니다.
이 트리를 구축하기 위해 우리는 ImageNet의 시각적 명사를 검사하고 WordNet 그래프를 통해 루트 노드(이 경우 “물리적 객체”)로 가는 경로를 봅니다. 많은 동의어 집합은 그래프를 통해 하나의 경로만 가지므로 먼저 모든 경로를 트리에 추가합니다. 그런 다음 남은 개념을 반복적으로 검사하고 트리를 최소한으로 성장시키는 경로를 추가합니다. 따라서 개념이 루트로 가는 두 가지 경로를 가지고 있고 한 경로가 트리에 세 개의 에지를 추가하고 다른 경로가 하나의 에지만 추가한다면, 우리는 더 짧은 경로를 선택합니다.
최종 결과는 시각적 개념의 계층적 모델인 WordTree입니다. WordTree로 분류를 수행하기 위해 우리는 각 동의어 집합의 하위어가 주어진 동의어 집합의 확률에 대한 조건부 확률을 각 노드에서 예측합니다. 예를 들어 “테리어” 노드에서 우리는 다음을 예측합니다:

\[\begin{align} Pr(\text{Norfolk terrier}|\text{terrier}) \\ Pr(\text{Yorkshire terrier}|\text{terrier}) \\ Pr(\text{Bedligton terrier}|\text{terrier}) \\ \text{...} \end{align}\]

특정 노드에 대한 절대 확률을 계산하려면 단순히 트리를 통해 루트 노드로 가는 경로를 따라 조건부 확률을 곱합니다. 따라서 우리가 노퍽 테리어의 사진인지 알고 싶다면 다음과 같이 계산합니다:

\[Pr(\text{Norfolk terrier}|\text{terrier}) \\ *Pr(\text{terrier}|\text{hunting dog}) \\ *...* \\ *Pr(\text{mammal}|\text{animal}) \\ *Pr(\text{animal}|\text{physical object})\]

분류 목적을 위해 우리는 이미지에 객체가 포함되어 있다고 가정합니다: $Pr(\text{physical object})=1$.
이 접근 방식을 검증하기 위해 우리는 1000 클래스 ImageNet을 사용하여 구축된 WordTree에서 Darknet-19 모델을 훈련합니다. WordTree1k를 구축하기 위해 우리는 중간 노드를 모두 추가하여 라벨 공간을 1000에서 1369로 확장합니다. 훈련 중에 실제 라벨을 트리 위로 전파하여 이미지가 “노퍽 테리어”로 라벨링되면 “개”와 “포유류”로도 라벨링되도록 합니다. 조건부 확률을 계산하기 위해 모델은 1369개의 값 벡터를 예측하고 동일한 개념의 하위어인 모든 동의어 집합에 대해 소프트맥스를 계산합니다. 그림 5를 참조하십시오.

fig5

ImageNet과 WordTree의 예측. 대부분의 ImageNet 모델은 하나의 큰 소프트맥스를 사용하여 확률 분포를 예측합니다. WordTree를 사용하여 우리는 공-하위어에 대해 여러 소프트맥스 연산을 수행합니다.

이전과 동일한 훈련 매개변수를 사용하여 우리의 계층적 Darknet-19는 71.9%의 top-1 정확도와 90.4%의 top-5 정확도를 달성합니다. 369개의 추가 개념을 추가하고 네트워크가 트리 구조를 예측하도록 했음에도 불구하고 정확도는 약간만 감소합니다. 이러한 방식으로 분류를 수행하는 것은 몇 가지 이점이 있습니다. 새로운 또는 알려지지 않은 객체 범주에서 성능이 점진적으로 저하됩니다. 예를 들어 네트워크가 개의 사진을 보지만 어떤 종류의 개인지 확신하지 못하면 “개”를 높은 신뢰도로 예측하지만 하위어 사이에 낮은 신뢰도가 퍼집니다.
이 공식은 탐지에도 작동합니다. 이제 우리는 모든 이미지에 객체가 있다고 가정하는 대신 YOLOv2의 객체성 예측기를 사용하여 $Pr (\text{physical object})$ 값을 제공합니다. 탐지기는 바운딩 박스와 확률 트리를 예측합니다. 우리는 트리를 내려가면서 각 분할에서 가장 높은 신뢰 경로를 선택하여 임계값에 도달할 때까지 내려가고 해당 객체 클래스를 예측합니다.

Dataset combination with WordTree

WordTree를 사용하여 여러 데이터셋을 합리적으로 결합할 수 있습니다. 데이터셋의 범주를 트리의 동의어 집합에 단순히 매핑합니다. 그림 6은 ImageNet과 COCO의 라벨을 결합하는 데 WordTree를 사용하는 예를 보여줍니다. WordNet은 매우 다양하여 대부분의 데이터셋에 이 기법을 사용할 수 있습니다.
fig6

WordTree 계층 구조를 사용하여 데이터셋 결합. WordNet 개념 그래프를 사용하여 시각적 개념의 계층적 트리를 구축합니다. 그런 다음 데이터셋의 클래스들을 트리의 동의어 집합에 매핑하여 데이터셋을 함께 병합할 수 있습니다. 이는 설명을 위해 단순화된 WordTree의 모습입니다.

Joint classification and detection

이제 WordTree를 사용하여 데이터셋을 결합할 수 있게 되었으므로 분류 및 탐지에 대한 공동 모델을 훈련할 수 있습니다. 우리는 매우 대규모 탐지기를 훈련하고자 하므로 COCO 탐지 데이터셋과 전체 ImageNet 릴리스에서 상위 9000개의 클래스를 사용하여 결합된 데이터셋을 만듭니다. 우리의 방법을 평가하기 위해 ImageNet 탐지 챌린지에서 아직 포함되지 않은 모든 클래스를 추가합니다. 이 데이터셋에 대한 해당 WordTree는 9418개의 클래스를 가지고 있습니다. ImageNet은 훨씬 더 큰 데이터셋이므로 COCO를 과샘플링하여 데이터셋을 균형 있게 하여 ImageNet이 4:1의 비율로만 더 커지게 합니다.
이 데이터셋을 사용하여 YOLO9000을 훈련합니다. 우리는 기본 YOLOv2 아키텍처를 사용하지만 출력 크기를 제한하기 위해 5개 대신 3개의 프라이어만 사용합니다. 네트워크가 탐지 이미지를 볼 때 손실을 정상적으로 역전파합니다. 분류 손실의 경우, 라벨의 해당 수준 이상에서만 손실을 역전파합니다. 예를 들어, 라벨이 “개”인 경우, 우리는 나무 아래쪽의 “독일 셰퍼드” 대 “골든 리트리버” 예측에 오류를 할당하지 않습니다. 왜냐하면 우리는 그 정보를 가지고 있지 않기 때문입니다.
분류 이미지를 볼 때는 분류 손실만 역전파합니다. 이를 위해 우리는 단순히 해당 클래스에 대해 가장 높은 확률을 예측하는 바운딩 박스를 찾아 예측된 트리에서만 손실을 계산합니다. 우리는 또한 예측된 박스가 실제 라벨과 최소 0.3 IOU 이상 겹친다고 가정하고 이 가정을 기반으로 객체성 손실을 역전파합니다.
이 공동 훈련을 사용하여 YOLO9000은 COCO의 탐지 데이터를 사용하여 이미지에서 객체를 찾는 방법을 배우고 ImageNet의 데이터를 사용하여 이러한 객체를 다양하게 분류하는 방법을 배웁니다.
우리는 YOLO9000을 ImageNet 탐지 작업에서 평가합니다. ImageNet의 탐지 작업은 COCO와 44개의 객체 범주를 공유하므로 YOLO9000은 대부분의 테스트 이미지에 대해 탐지 데이터가 아닌 분류 데이터만 보았습니다. YOLO9000은 19.7 mAP를 기록하며, 레이블이 지정된 탐지 데이터를 본 적이 없는 156개의 객체 클래스에서 16.0 mAP를 기록합니다. 이 mAP는 DPM이 달성한 결과보다 높지만 YOLO9000은 부분적인 감독으로 다른 데이터셋에서 훈련되었습니다. 또한 9000개의 다른 객체 범주를 동시에 실시간으로 탐지합니다.
ImageNet에서 YOLO9000의 성능을 분석할 때 새로운 동물 종을 잘 학습하지만 의류 및 장비와 같은 범주를 학습하는 데 어려움을 겪는 것을 알 수 있습니다.
새로운 동물은 COCO의 동물에서 객체성 예측이 잘 일반화되기 때문에 학습하기 더 쉽습니다. 반대로 COCO에는 의류 유형에 대한 바운딩 박스 라벨이 없고 사람에 대해서만 있기 때문에 YOLO9000은 “선글라스”나 “수영복”과 같은 범주를 모델링하는 데 어려움을 겪습니다.

5. Conclusion

우리는 YOLOv2와 YOLO9000, 실시간 탐지 시스템을 소개합니다. YOLOv2는 최첨단 기술이며 다양한 탐지 데이터셋에서 다른 탐지 시스템보다 빠릅니다. 또한 다양한 이미지 크기에서 실행할 수 있어 속도와 정확성 간의 원활한 균형을 제공합니다.
YOLO9000은 탐지와 분류를 공동으로 최적화하여 9000개 이상의 객체 범주를 탐지하기 위한 실시간 프레임워크입니다. 우리는 다양한 소스의 데이터를 결합하기 위해 WordTree를 사용하고 ImageNet과 COCO에서 동시에 훈련하기 위한 공동 최적화 기술을 사용합니다. YOLO9000은 탐지와 분류 사이의 데이터셋 크기 격차를 좁히는 강력한 단계입니다.
우리의 많은 기술은 객체 탐지 외부로 일반화됩니다. ImageNet의 WordTree 표현은 이미지 분류를 위한 더 풍부하고 세부적인 출력 공간을 제공합니다. 계층적 분류를 사용한 데이터셋 결합은 분류 및 분할 도메인에서 유용할 것입니다. 다중 스케일 훈련과 같은 훈련 기술은 다양한 시각 작업에 이점을 제공할 수 있습니다.

Joseph Redmon, Ali Farhadi YOLO9000: Better, Faster, Stronger

Leave a comment