YOLO v1 리뷰
You Only Look Once: Unified, Real-Time Object Detection (2016)
1. Introduction
앞서 리뷰한 2 stage detection 모델들에 이어서 object detection 분야에서 획기적이었던 YOLO 모델의 첫 번째 페이퍼를 리뷰해보려고 합니다. 먼저 논문의 Abstract를 살펴봅시다.
A single neural network predicts bounding boxes and class probabilities directly from full images in one evaluation. Since the whole detection pipeline is a single network, it can be optimized end-to-end directly on detection performance.
기존의 R-CNN에서는 region proposal과 classification을 거친 2-stage detection이였다면, 이를 보완하여 단일 네트워크 하에서 end-to-end 학습이 가능하게하였습니다. 또한 selective search를 통해 ROI를 구하는 것 대신에 full image가 들어간다고 합니다.
- 기존의 RCNN은 잠재적인 boundng box를 찾아내는 방법인 region proposal과 예측된 BB에 대한 분류기를 학습하는 두 단계로 나눠져있는데, 학습시간이 오래걸리며 최적화가 힘들다는 단점이 있습니다. 그렇지만 YOLO는 이를 단일화시켜 기존 모델보다 빠릅니다. 즉 batch processing이 없습니다.
- 모델에 전체 이미지가 들어가기 때문에 문맥적인 클래스 정보까지 인코딩됩니다. 따라서 기존모델에서 background patch를 놓치는 문제를 해결했습니다.
- generalizable representation이 가능합니다.
2. Unified Detection

일단 input image를 S X S grid로 나눕니다. 나눠진 격자 하에서 BB box와 박스들의 confidence score가 결정되는데 수식은 다음과 같다.
Pr(Object)∗IOUtruthpred
따라서 격자 안에 물체가 없으면 점수 자체는 0이 나옵니다. 각각의 BB는 5개의 값을 지니는데, x좌표와 y좌표, width와 height, 그리고 Confidence Score(Score)수치입니다. 자세한 내용은 아래서 설명하겠습니다.
참고로 논문에서는 S = 7, B = 2, C = 20을 사용하였다.
- x,y : grid cell의 정중앙을 기준으로 BB가 어느쪽에 위치하느냐에 관한 상대값입니다

- w,h : predicted relative to the whole image로 전체 이미지 대비 BB의 상대적 크기입니다
- Confidence level : object가 있을 확률 * object의 IOU
- PR(object)는 object를 잘 인식하고 있는지에 관한 것으로 배경만 있다면 0이 됩니다. IOU는 학습 데이터의 ground truth BB와 pred BB의 intersection Union을 구하는 식이다.
- Class probablity(C) : 앞의 confidence값을 이용하여 BB가 배경이 아닌 object 를 포함하고 있을 때 각 클래스별 조건부확률을 구할 수 있습니다.∗∗PR(Classi|Object)PR(Object)IOU=Pr(Classi)|IOU
이를 통해 각각의 바운딩 박스마다 class-specific한 confidence score를 계산할 수 있으며 이 값은 밑의 두가지 특징을 인코딩합니다.- box 안에 특정 class가 등장할 확률
- bounding box 가 object를 얼마나 fit하게 잡는지 여부
최종적으로 예측하는 값은 (S X S X (B*5 + C)) 이기 때문에 7 X 7 X 30 tensor 이 됩니다.
이를 통해 기존 2-stage model이 region proposal과 classification 을 나눠서 함으로써 발생했던 문제들을
class-specific한 score를 구하는방식으로 unify함으로써 해결했다고 볼 수 있습니다.
3. Network Design

YOLO는 24개의 Convolutional layer과 2개의 FC layer 의 구조를 사용합니다.
주황색 프레임은 pretrained Network인 GoogleNet으로 20개의 CV layer를 사용하였고, 결과적으로 top-5 acc가 88%가 나왔다고 합니다.
여기서 눈여겨볼점은 기존 ImageNet 데이터셋 크기가 224x224였는데 scale factor를 2로잡아 인풋 이미지가 448x448x 3이라는점입니다.
논문에서는 "Detection often requires fine-grained visual information so we increase the input resolution of the network"라고 하며 , 경계선이 흐릿한 이미지에서 학습이 더 잘 됐다는 해석이 있습니다.
4. Training
Training Network에서는 추가적으로 4xConv 층과 FC layer를 거쳐서 최종적으로 1470의 Tensor 가 출력됩니다. (7x7x30) 여기서 dataset의 class 개수는 20(C)입니다.
- x , y , w , h 를 normalize하여 0~1사이의 값으로 바꿨다.
- Activation function으로는 leaky rectified linear activation (LReLu)를 사용하였다.
- 최적화에 있어서는 SSE 사용 (Sum-squared error)하였다.⇒ 이를 loss function 의 정의를 통해 해결하였다.
- 사실 이 방법이 localization, classifiaction 에러의 가중치를 똑같이 잡기 때문에 이상적이진 않다. 또 object가 없을 때 C score는 0이 되는 셀들이 많으므로, "overpowering gradient" 문제도 있다.
- Loss function
-
- λcoord 는 객체가 존재할 때의 값으로 5 , λnoobj 는 그렇지 않을 경우로 0.5값을 가진다. S2은 grid의 수이므로 행렬이니 제곱인 49가 될것이다. B는 Si 셀의 bb이며 총 개수는 98가 됩니다.
- i 번째 셀의 j 번째 박스만을 학습하겠다는 뜻이다. 모든 셀의 bb에 대해서 학습하는 건 비효율적이기 때문에 각 객체마다 IOU가 가장 높은 bb에만 패널티를 주는 식으로 학습이 진행됩니다.
- 객체가 존재하지 않을경우의 가중치값은 0.5로 학습에 영향을 미치지 않게 하고
- i,j bb에 객체가 없을 때만 작동한다는 뜻입니다.
- 식을 크게봤을 때 localization과 classification 으로 나눌 수 있는데 클래스 분류에 해당하는 부분으로 앞과는 달리 패널티가 없습니다. 이는 앞서말한 localization 에러의 비중을 더 높게 해야하 문제와 대응됩니다.
- 각 셀별 클래스 분류 오차에 관한 것입니다.
5. deepresearch slide
여기까지 논문을 다 읽고도 정확한 Non-max suppresion 이 어떻게 이루어지는지 확실히 이해가 되지 않아 Deepresearch 팀에서 만든 슬라이드 자료를 첨부하였습니다.

위 그림은 앞서 설명한 전체 네트워크에 대한 구조이며 output 인 7x7x30 tensor 에 대해서 살펴보겠습니다.

SXSX(B∗5+C)의 부분으로 grid cell당 bounding box는 2개 이기 떄문에 5*2 이고, 뒤의 20은 dataset의 class 개수입니다.

class prob.에서 $PR(Class_i|Object)*PR(Object)*IOU = Pr(Class_i)|IOU$ 라고 했는데, 그림은 bb1 score를 구하는 부분으로 PR(object)* IOU로 confidence score, 거기에 20개의 class 중 속할 확률인 PR(Class|Object) 를 multiply 하는 파트입니다.

이 과정을 each grid cell(49)당 BB(2)씩 연산하게 되므로 total BB는 다음과 같습니다.
이제 계산한 confidence score를 가지고 어떻게 classification을 할까요

20 개의 클래스 중 첫번째는 개에 대한 분류라고 하겠습니다. 기준치인 일정 threshold값 (그림에선 0.2) 가 넘는 것만 뽑아서 sort descending를 하여 0인 값들에 대해서는 NMS(non-max supression)을 합니다.

bb47 이 가장 큰 값이므로 bbox_max, 이며 그 다음값인 bb20은 bbox_cur(i) 이라고 하겠습니다. 이 때 이 둘의 IOU인 IOU(bbox_max,bbox_cur) > 0.5 이면 ⇒ bbox_cur 값은 0이 됩니다.
이 과정을 bbox_max를 제외한 모든 bbox_cur(아마 97?)에 대해서 수행하여 0.5 이상인 값들만 zero vector 로 바꿉니다.

이를 통해 0은 아니지만 크지않은 위의 분홍, 파랑 박스들 같은 inefficient한 BB들의 스코어가 0이되며 NMS의 Intition이라고 할 수 있습니다. 이 과정을 통해 target box에 해당되지 않는 많은 BB들의 스코어값이 0이 되었을 것입니다.

제가 해석한 바로는 20개의 score 중 max_index 를 가진 값을 통해 (vertical하게 봤을 때), class 를 결정하고, 그 class에 속하는 값 중 max_score가 최종 class를 대변하는 bounding box가 된다고 봤습니다. 가령 bb4와 bb82가 모두 class가 cat일 수 있고, bb82 중에서도 max score가 class_cat 이 0.5, class_dog가 0.6 이 될 수 있지 않을까(horizental) , 그 중 가장 높은 값을 최종적으로 선택한다고 이해하였습니다.

max_bbox 를 통한 최종 deteection 결과입니다.
'machine learning > Article review' 카테고리의 다른 글
Asymmetric Loss For Multi-Label Classification 리뷰 (1) | 2021.12.20 |
---|---|
BERT4Rec review (0) | 2021.12.19 |
Fast & Faster R-CNN 리뷰 (0) | 2021.12.03 |
[R-CNN] Rich feature hierarchies for accurate object detection and semantic segmentation (0) | 2021.12.03 |
[GoogLeNet] Going deeper with convolutions (0) | 2021.11.29 |
댓글
이 글 공유하기
다른 글
-
Asymmetric Loss For Multi-Label Classification 리뷰
Asymmetric Loss For Multi-Label Classification 리뷰
2021.12.20Asymmetric Loss For Multi-Label Classification 안녕하세요 오늘 리뷰 할 논문은 Asymmetric Loss For Multi-Label Classification로 줄여서 ASL Loss라고 합니다. 6개월 전쯤에 패션 스타일 데이터의 multi label 문제를 풀다가 paperwithcode 에서 당시 2위로 높은 순위를 기록하고 있길래 적용을 했는데 좋은 효과를 보아서 소개하려고 합니다. 저도 그랬지만 주위에서 Data imbalance 문제를 겪는 문들을 많이 봤습니다. 보통은 upsampling을 쓰는 smote 기법이나 undersampling 등을 많이 사용하지만 크게 효과를 보지는 못하는 것 같습니다. 그중에서도 focal loss가 좀 더 좋다고 알려… -
BERT4Rec review
BERT4Rec review
2021.12.19BERT4Rec 1. Introduction Bert4rec이라고도 불리는 Sequential Recommendation with Bidirectional Encoder Representations from Transformer 에 대하여 간략하게 리뷰하려고 합니다. 대부분의 추천모델은 interaction histories에 기반한 Collaborative filtering 모델을 사용합니다. 그 중에서도 유저와 아이템의 latent vector 연산을 통해 선호를 예측하는 Matrix Factorization 을 활용하는 방법이 주로 쓰입니다. 다른 한 가지 방법은 아이템 기반의 neighborhood 방식입니다. 이는 사전에 계산된 아이템들간의 유사도를 활용해 user interaction 을 통해… -
Fast & Faster R-CNN 리뷰
Fast & Faster R-CNN 리뷰
2021.12.031.Introduction object detection의 stage는 크게 region proposal과 classification을 차례로 수행하는 2-stage detector과 동시에 이루어지는 1-stage detector로 나눌 수 있습니다. R-CNN 계열의 localization과 classification을 따로 하고 어느정도 정확도를 보장하지만 연산량이 많고 시간(fps)이 오래걸려 실시간으로 쓰기에는 무리가 있습니다. 논문이름이 Towards real-time detection이라니 재밌네요. 지난번 R-CNN에 이어서 간략하게 Fast R-CNN에 대해 알아보고 오늘 주제인 Faster R-CNN 에 대해 알아보겠습니다. 2. Fast R-CNN 기존의 R-CNN에서는 selecti… -
[R-CNN] Rich feature hierarchies for accurate object detection and semantic segmentation
[R-CNN] Rich feature hierarchies for accurate object detection and semantic segmentation
2021.12.03Introduction 기존에 요약정리했었던 내용이라 업로드 하려고 보니 조금 짧네요 R-CNN 시리즈의 첫번째 논문이자 현재 인용수가 17,000번이 넘은 논문이다. Two stage object detection 이며 전체 task는 크게 region proposal과 region classification으로 이루어진다. abstract에서는 "we combined region proposals with CNNs" , 그러므로 R-CNN 이라고 한다. Region Proposal Input image에서 selective search 알고리즘을 이용해 2000여개의 물체가 존재할 만한 곳을 탐색을 한다. selective search는 segmentation에서 주로 사용되며 유사한 픽셀값을 그룹핑…
댓글을 사용할 수 없습니다.