최종적으로 3x3 conv와 1x1 conv를 feature map에 적용하여 13x13(x125) feature map을 출력한다.
=> 각 그리드 별로 5개의 bounding box 정보 + 20개의 class score
=> fine-grained feature를 사용해서 1% 성능 향상
Multi-Scale Training
다양한 이미지 입력을 사용한 네트워크 학습
10 batch마다 입력 이미지의 크기를 32배수 {320, 352, ..., 608} 중에 랜덤하게 선택하여 학습
Faster : detection 속도를 향상
Darknet-19
당시 대부분 객체 탐지 모델은 background model로 VGG-16을 사용하고 있었다.
그러나 이는 너무 무거운 모델이라 판단되었고, YOLO v2는 DarkNet-19를 만들 사용한다.
YOLO v1 모델은 네트워크 마지막에 fullly-connected layer를 통해 예측을 수행
=> 파라미터 수 증가, detection 느려짐
=> global average polling을 사용하여 파라미터 수를 줄이고, 속도를 향상
Training for classification
DarkNet-19는 class의 수가 1000개인 ImageNet 데이터셋을 통해 학습
학습 결과 top-1 정확도는 76.5%, top-5 정확도는 93.3%의 성능을 보였습니다.
이 부분은 빨라지는 것과는 연관성이 떨어지지만 논문 순서에 따라 여기에 껴 있다. training 방법을 설명하기에 적절한 위치였던 것 같다.
Training for detection
Darknet-19를 detection task로 사용하기 위해 마지막 conv layer를 제거하고, 3x3(x1024) conv layer로 대체한다.
이후 1x1 conv layer를 추가 => 1x1 conv layer의 channel 수는 예측할 때 필요한 수
각 그리드마다 5개의 bounding box가 5개의 값(confidence score, x, y, w, h)
PASCAL VOC 데이터셋의 20개의 class score
따라서 1x1 conv layer에서 channel 수를 125(=5x(5+20))개로 지정
Stronger : 더 많은 범위의 class를 예측
본 논문에서는 classification 데이터와 detection 데이터를 함께 사용하여 학습 함으로써 보다 많은 class를 예측하는 YOLO 9000을 소개한다. 여기서 detection 데이터셋은 범용적인 객체에 대한 정보를 가지고, classification 데이터셋은 보다 특징적인 정보를 가진다고 하자. 예를 들어, detection이 개 라면 classification은 개 중에서도 풍산개인 것이다.
읭 그러면 두 데이터셋을 배타적인 class로 분류할 가능성이 있는데 어떻게 하느냐? 하면 아래에 방법을 기술한다.
Hierarchical classification
YOLO v3에서는 ImageNet label로부터 계층 트리(Hierarchical tree)인 WordTree를 구성하는 방법을 제안한다.
WordTree: 각 노드는 범주를 의미하고, 하위 범주는 자식 노드가 된다.
물리적 객체(physical object)를 루트 노드로 두고, 하위 범주는 자식 노드가 되고, 자식 노드의 하위 범주는 자식 노드가 되어 점차 뻗어나간다.
요크셔 테리어 -> 물리적 객체 - 동물 - 포유류 - 사냥개 - 테리어 노드를 거쳐 도달할 수 있다.
트리 구조에서 특정 범주에 속할 확률은 루트 노드로부터 해당 범주 노드까지 조건부 확률의 곱으로 표현할 수 있다.
Dataset combination with WordTree
위 방법으로 ImageNet Dataset + COCO Dataset WordTree를 구성한다. 그림은 아래에..
Joint classification and detection
ImageNet Dataset + COCO Dataset -> 9418개의 범주를 가지는 WordTree 구성
ImageNet과 COCO 데이터셋의 비율이 4:1이 되도록 조정
YOLO v2 모델을 그리드 별로 3개의 anchor box를 사용하여 학습한다.
detection 데이터셋의 이미지를 보는 경우
detection loss는 평소와 같이 loss를 backward pass
classification loss의 경우에는 특정 범주와 상위 범주에 대해서만 loss를 계산
개라는 범주에 대하여 detection 데이터셋은 하위 범주를 포함하고 있지 않기 때문에 물리적 객체 - 동물 - 포유류 - 개에 대한 조건부 확률을 사용하여 loss를 구한다.
classification 데이터셋의 이미지 보는 경우
오직 classification loss에 대하여 backward pass를 수행
이 때 ground truth box와의 IoU 값이 0.3 이상인 경우에만 역전파를 수행한다.
이 같은 Joint training 방식을 통해 YOLO 9000 모델은 COCO 데이터셋을 활용하여 이미지 내에서 객체를 찾는 detection task와 ImageNet 데이터셋을 통해 보다 넓은 범주의 객체를 분류할 수 있도록 학습한다.
Training
Training은 크게 4가지 단계로 이루어진다.
DarkNet-19로 Feature 추출
Feature map 재구축 (reorganize)
Feature map 결합 (concat)
Conv layer를 적용한 예측
사실 위에 Better, Faster, Stronger를 설명하면서 모든 내용을 담았다. 한번 더 설명할 필요가 없다.
loss function 또한 YOLO v1과 같은 방법을 사용했다고 한다. 따라서 생략
마치며
쓰다 보니 YOLO에 빠져서 내용이 너무 길어지고 있네요. 시리즈가 길어질 것 같습니다. YOLO 재밌어용
YOLO가 벌써 버전 8까지 나왔다고요? 제 기억 속의 YOLO는 버전 4가 끝이었는데... 그래서 써봅니다.
YOLO v1
객체 탐지 딥러닝에서 유서 깊은 모델이다. 등장은 2015년이지만, CVPR에 등재된 건 2016년이다.
논문 정보
동작 과정 (Overview)
Pr(Object) * IoU
로 정의한다.Pr(Object)
: Bounding Box 안에 물체가 존재할 확률IoU
: Bounding box에 감지된 객체가 실제 ground truth와 얼마나 일치하는지 나타내는데 사용되는 방식구조
총 24개의 CNN 레이어 계층으로 구성되어 있으며, 기존 신경망인
GoogLeNet
을 사용하여 Classification에 사용했다. 위 구조는 논문에 기재된 구조이고, 더 간단히 표현하면 아래와 같다.Loss
YOLO는 객체 탐지 및 classification을 해야 하므로 3가지 loss를 더한다. 여기서 공통적으로
i
는그리드의 index
,j
는bounding box predictor index
이다.lambda_noobj
로 가중치를 부여하여 loss를 나타낸다.YOLO v2
2017년 CVPR에 동일 저자가 발표한 두 번째 버전이다. 이 작자는 천재가 틀림 없다. 제목부터 자신감이 넘친다. Better, Faster, Stronger.. 진짜 멋있다.
논문 정보
Better : 정확도 향상
Batch Normalization
High Resolution Classifier
Convolutional with Anchor Boxes
YOLO v1에서 bounding box를 쓰면서 좌표를 직접 설정해서 저장하였다.
다른 논문인 Faster R-CNN 모델에서
anchor box
개념을 제시하는데, 이는 사전에 9개의 anchor box를 정의한 후 bounding box regression을 통해 x, y 좌표와 aspect ratio(offset)을 조정하는 과정을 거친다.좌표 대신 offset을 예측하는 문제가 보다 단순하고 네트워크가 학습하기 쉽다는 장점이 있다.
YOLO v2는
anchor box
를 도입한다. 이것을 위해서 모델 구조를 수정하고, 예측한 총 bounding box의 개수가 달라지게 된다.bounding box 개수
정확도 (mAP:객체 평균 검출 정확도, recall: true인 값을 true로 예측한 비율)
Recall 값이 높다 => 모델이 실제 객체의 위치를 예측한 비율이 높음
YOLO v1이 recall 값이 낮은 이유는 region proposal 기반의 모델에 비해 이미지 당 상대적으로 적은 수의 bounding box를 예측하기 때문
하지만 YOLO v2에서 anchor box를 통해 더 많은 수의 bounding box를 예측하면서 실제 객체의 위치를 보다 잘 포착하게 되고, 이를 통해 recall 값이 상승하게 된다.
또한, 네트워크 학습이 쉬워지면서 mAP 지표가 낮아지는 것에 비해 이점이 더 큰 것이다.
Dimension Clusters
기존에는 anchor box의 크기와 aspect ratio를 사전에 미리 정의(hand-picked) => 더 좋은 조건으로 한다면?
Ground truth box의 width, height 값을 사용한
k-means clustering
를 통해 최적의 prior를 탐색하는 방법을 제시일반적인 k-means clustering의 경우 유클리안 거리(Euclidean distance)를 통해 centroid와 sample간의 거리를 계산
이러한 distance metric을 사용할 경우 큰 bounding box는 작은 box에 비해 큰 error를 발생
위와 같은 방식은 box와 centroid의 IoU값이 클수록 겹치는 영역이 크기 때문에 거리가 가깝다는 점을 나타낸다.
실험적으로
k=5
인 경우 복잡도와 recall 사이의 적절한 trade-offDirect location prediction
c_x
,c_y
는 grid cell의 좌상단 offset이다.t_x
,t_y
값에 logistic regression 함수(σ
)를 적용하여 0~1 사이의 값을 가지도록 조정한다.dimension clustering
을 통해 최적의 prior를 선택하고 anchor box의 중심부 좌표를 직접 예측함으로써 recall이 5% 정도 향상된다.Fine-Grained Features
Convolutional with Anchor Boxes
에서 언급했던 것처럼 13x13 크기의 feature map을 출력한다(작음).Multi-Scale Training
Faster : detection 속도를 향상
Darknet-19
VGG-16
을 사용하고 있었다.DarkNet-19
를 만들 사용한다.Training for classification
DarkNet-19
는 class의 수가 1000개인 ImageNet 데이터셋을 통해 학습이 부분은 빨라지는 것과는 연관성이 떨어지지만 논문 순서에 따라 여기에 껴 있다. training 방법을 설명하기에 적절한 위치였던 것 같다.
Training for detection
Darknet-19
를 detection task로 사용하기 위해 마지막 conv layer를 제거하고, 3x3(x1024) conv layer로 대체한다.Stronger : 더 많은 범위의 class를 예측
본 논문에서는 classification 데이터와 detection 데이터를 함께 사용하여 학습 함으로써 보다 많은 class를 예측하는 YOLO 9000을 소개한다. 여기서 detection 데이터셋은 범용적인 객체에 대한 정보를 가지고, classification 데이터셋은 보다 특징적인 정보를 가진다고 하자. 예를 들어, detection이
개
라면 classification은개
중에서도풍산개
인 것이다.읭 그러면 두 데이터셋을 배타적인 class로 분류할 가능성이 있는데 어떻게 하느냐? 하면 아래에 방법을 기술한다.
Hierarchical classification
요크셔 테리어
->물리적 객체 - 동물 - 포유류 - 사냥개 - 테리어
노드를 거쳐 도달할 수 있다.Dataset combination with WordTree
위 방법으로
ImageNet Dataset
+COCO Dataset
WordTree를 구성한다. 그림은 아래에..Joint classification and detection
ImageNet Dataset
+COCO Dataset
-> 9418개의 범주를 가지는 WordTree 구성개
라는 범주에 대하여 detection 데이터셋은 하위 범주를 포함하고 있지 않기 때문에물리적 객체 - 동물 - 포유류 - 개
에 대한 조건부 확률을 사용하여 loss를 구한다.이 같은 Joint training 방식을 통해 YOLO 9000 모델은 COCO 데이터셋을 활용하여 이미지 내에서 객체를 찾는 detection task와 ImageNet 데이터셋을 통해 보다 넓은 범주의 객체를 분류할 수 있도록 학습한다.
Training
Training은 크게 4가지 단계로 이루어진다.
사실 위에
Better, Faster, Stronger
를 설명하면서 모든 내용을 담았다. 한번 더 설명할 필요가 없다. loss function 또한 YOLO v1과 같은 방법을 사용했다고 한다. 따라서 생략마치며
쓰다 보니 YOLO에 빠져서 내용이 너무 길어지고 있네요. 시리즈가 길어질 것 같습니다. YOLO 재밌어용
참고