You Only Look Once: Unified, Real-Time Object Detection
[https://arxiv.org/abs/1506.02640]
2016년 Facebook-AI에서 나온 One Stage-Object Detection 논문입니다.
[Introduction]
해당 논문에서는 크게 3가지의 이점으로 제안한 YOLO모델의 유효성을 제시하고 있습니다.
1. 빠른 속도
- YOLO모델은 Titan X GPU기준으로 45fps, Fast-YOLO모델은 150fps의 속도를 나타냅니다.
2. 이미지 전체를 보고 추론
- Sliding window나 Region propasal과 같은 기법들과는 다르게 이미지의 전체적인 정보를 봅니다.
3. 다른 도메인이나 예상치 못한 input에 강함
[Unify detection]
- 이미지를 $S$x$S$로 분할합니다.
- 각각의 cell은 $B$개의 bounding box(이하 bbox)와 confidence score를 갖고있습니다.
bbox coordinate= $x, y, width, height$
confidence score=$P_{r}(Object) * IOU^{truth}_{pred}$이며 cell에 object가 있다면 $P_{r}(Object)$이 될것이고 없다면 0이될것입니다.
- 각각의 cell은 $C$개의 conditional class probabilities를 갖고있습니다.
$C$=$Pr(Class_{i}|Object)$
- 최종 출력은 $S$x$S$x($B$x$5$+$C$)의 tensor를 갖게됩니다.
[Network architecture]
- Google net의 inception module을 사용하는 대신에 1x1 conv를 사용하여 채널을 줄이고 연산속도도 향상하는 효과를 보았습니다.
- input shape는 448x448로 detection관점에서 좀 더 세밀한 정보가 필요하기 때문에 기존 224x224 shape에서 2배 scaling-up을 진행하였습니다.
[Training]
- bbox들을 normalization하여 [0, 1]사이로 맵핑시켰습니다.
- activation function은 leaky-ReLU를 사용하였습니다.
- loss function은 위와 같습니다. SSE(Sum squared error)를 적용하였는데 AP(Average precision)을 최대화하려는 목적과
부합하지는 않지만 optimize하기 쉬워 적용했다고 합니다.
- 여기서 $\mathbb{I}_{ij}^{obj}$는 $0<=i<=S^{2}$범위에 GT object가 존재하며 $0<=j<=B$번째 bbox가 $i$구간에 있는 모델이 추론한 bbox들을 말합니다.
- 현 YOLO의 구조에서는 cell들의 대부분이 object가 포함되어 있지 않은데 이로 인해 confidence score가 0쪽으로
치우쳐져 있게 됩니다. 이 현상은 모델이 불안정해지고 train이 조기에 빗나갈 수 있도록 만드는데
$\lambda_{coord}$와 $\lambda_{noobj}$의 hyper-parameter를 대안으로 냈습니다.
- 파라미터 셋팅은 다음과 같습니다.
- batch size: 64
- lr momentum: 0.9
- lr decay: 0.0005
- lr epoch: slowly raise first epoch lr $10^{-3}$ to $10^{-2}$, $10^{-2}$ until 75epoch, $10^{-3}$ for 30epoch, $10^{-4}$ for 40 epoch
- used dropout rate with 0.5
- data augmentation: random scaling, translate up to 20% original image size,
exposure and saturation by factor of 1.5 in HSV channel
[Limitation of YOLO V1]
- $S$x$S$범위에서 bbox 2개와 하나의 object class밖에 추론할 수 없어서 작은 object들이 무리로 나오는 데이터에는 굉장히 취약합니다.