이 paper에서 저자들은 object detection을 regression problem으로 생각해서 spatially separated bounding obx와 associated class probability를 예측하도록 구성했다.
따라서 전체 파이프라인을 single neural network 로 구성이 가능해 end-to-end training을 가능하게 했다.
이 Unified architecture는 속도 면에서 큰 성능 향상을 보였다.
Methods
전체 모델 구조를 훑어보면 다음과 같다.
앞쪽은 image의 feature를 추출하는 feature extractor로 보면 되고
뒤쪽의 linear layer는 각 bounding box와 class를 탐색하는 detector로 보면 된다.
이 구조를 통하여 [448, 448, 3] 의 image를 [7,7,30] 으로 만들준다.
Training pipeline은 다음과 같이 구성된다고 생각하면 된다.
dataset
input으로는 image [448, 448, 3] 이 들어간다.
이 image에 대한 label로는 detect된 object의 주위에 둘러싸인 bounding box 들을 생각해 보면 되는데,
다음과 같다.
예제로 grid = 3으로 생각했지만 실제에서는 7을 사용했다고 한다.
width, height를 normalize 하고 top-left , bottom-right 좌표가 주어졌을 때 object 가 위치한 center point와 image의 width, height를 구할 수 있다. 이때 이 center point가 위치한 cell의 confidence 값이 1 이고, 이때의 center x와 center y 좌표는 cell 크기에 맞춰서 rescale 된다.
traning loss
전체적인 loss function은 다음과 같다.
[448, 448, 3] 의 image가 모델을 통과하면 [7, 7, 30] 이 된다. 이 30개의 channel dimension의 value들을 가지고 object의 center x, y 그리고 w, h, confidence score를 예측하고 해당 cell의 class를 예측한다!
한 image당 7*7 개의 cell이 있을 텐데, 모든 cell에 대해서 prediction을 하는 것이 아니라, object center가 위치해 있는 cell에 대해서 (위에서 구했던 confidence 값이 1인 cell에 대해서)만 loss 계산을 진행한다.
한 cell 에 대해서 여러 개의 bounding box들이 예측되는데, (이 개수는 학습 시 고정 논문에서는 2 사용) 예측된 값과 ground truth와의 IOU 를 계산해서 더 높은 쪽의 bounding box 를 학습에 사용한다.
여기서 학습 시에 ground truth confidence score for obj, 는
다음과 같이 나타낼 수 있다. 따라서 각 cell의 Ci는 prediction과 ground truth간의 iou 를 예측하도록 학습되는것이다.
non-obj의 경우에는 0이 된다.
다음은 class prediction인데, 마찬가지로 obj prediction에 대해서만 값을 예측해 준다.
Inference 할 때는?
tensor [7, 7, 30] 을 가지고..
object detection
각 cell 별로 가장 responsible한 bounding box 결정 [confidence prob을 가지고] -> x, y, w, h 값 얻음
confidence prob이 너무 낮은 cell들은 버려
x, y, w, h값을 normalized -> 진짜 scale 로 변환해서 left-top right-bottom 좌표 구함
object classification
class prob * conf prob 해서 최종 class probability를 구함.
다음과 같이 각 cell 별로 예측된 bounding box 확인 가능
NMS와, threshold detection를 수행해서 probable 한 bounding box 만 남긴다!
Experiments
다른 모델들보다, 확연하게 빠른 속도 & 약간 낮은 accuracy 를 보인다. 둘의 trade off가 존재한다고 한다.
동영상에 대해서도 real-time detection이 가능하도록 만든게 고무적이다.
Some limitations
YOLO는 bounding box predcition에서 strong spatial constraints 를 주는데 (각 grid cell 당 2개의 bounding box..), 이 때문에 근처에 있는 object들을 제한적으로 찾을 수밖에 없다.
data를 통해서 학습하는 것이기 때문에.. unseen object나 unusal rate object에 대해서는 일반화가 잘 안된다