상세 컨텐츠

본문 제목

[ 2주차 / 박민규 / 1-Stage detector ] YOLO V1, SSD

2023 Summer Session/CV Team 2

by 민규라면 2023. 7. 17. 20:00

본문

[1] 1-Stage Detector

전체 이미지에서 class probabilites 및 bounding box offset을 직접 예측하는 구조이기 때문에, 2-stage 처럼 region proposal+feature resampling 단계를 진행하지 않아 실시간 detect가 가능하다는 장점이 있다.

하지만 특정 object 하나만을 포함하고 있는 RoI(관심영역)에서 classification과 localization을 수행하는 2-stage 보다 정확도가 떨어질 수 밖에 없다는 한계를 동시에 지니고 있다.

[2] Knowledge

2.1 IoU

물체가 있을 확률은 IoU(intersection over union)을 통해 계산된다.

물체의 절대적인 면적과 상관없이, 영역을 정확하게 잘 찾아내었는지 상대적인 비율을 구할 수 있으므로 모델이 영역을 잘 찾았는지 비교하는데 사용되는 지표이라는 특징이 있다.

YOLO에서 grid cell에 object가 없다면 IOU는 0이 된다. predicted box와 ground truth사이의 IoU가 1에 가까울 수록 많이 predicted box가 잘 예측된 것이라고 말할 수 있고, confidence score도 크다.

2.2 NMS

NMS(Non-max suppression)은 각 object에 대해 예측한 여러 Bbox 중에서 가장 정확한 Bbox를 선택하는 기법이다.

이미지에서 object는 다양한 크기와 형태로 존재하기 때문에, object을 완벽하게 detect하기 위해 여러개의 bounding box를 생성한다. 이중 하나의 bounding box만을 선택해야 하는데, 이때 적용되는 기법이 NMS이다.

NMS 과정은 다음과 같다.

  1. 하나의 class에 대한 Bbox 목록에서 가장 높은 점수를 가지고 있는 Bbox를 목록에서 선택한 후 제거하고, final box에 추가
  2. 선택된 Bbox를 Bbox 목록에 남아 있는 모든 bounding box와 IoU를 계산하여 비교
  3. IoU가 threshold보다 높으면 선택된 Bbox와 같은 object를 target으로하는 Bbox이므로 Bbox 목록에서 제거
  4. Bbox 목록에 남아있는 Bbox 중에서 가장 높은 점수를 가지고 있는 것을 선택한 후 제거하고, final box에 추가
  5. 다시 선택된 Bbox를 목록에 남아 있는 모든 bounding box와 IoU를 계산하여 비교
  6. 마찬가지고 threshold보다 높으면 목록에서 제거
  7. bounding boxes에 아무것도 남아 있지 않을 때까지 3~4를 반복
  8. 각각의 클래스에 대해서 1~5를 반복

[3] YOLO V1

You Only Look Once의 약자로 ConvNet 한번만 통과시킴에도 불구하고, regional proposal과 classification가 동시에 일어나는 1-stage detector이다.

3.1 Unified Detection

이미지 전체로 얻은 feature map을 활용하여 bbox의 위치&크기 예측과 모든 클래스에 대한 확률을 계산하는 전과정을 진행하였다.

즉, region proposal, feature extraction, classification, bbox regression 전과정을 one-stage detection으로 통합하였다.

grid를 4x4로 분할하고, grid cell마다 bounding box를 2개씩 예측하며, 분류할 수 있는 category가 20개라고 한다면 ConvNet의 output으로 한 grid cell 당 (4+1)*2+20 = 10개, 전체 feature map에 대해선 4x4x10의 output tensor가 출력된다.

x&y는 bbox의 중심좌표의 위치, w&h는 bbox의 너비와 높이를 나타낸다.

$p_c=Pr(Object)*IOU^{truth}_{pred}$ 는 물체가 Bbox 내 존재할 확률로, 물체가 bbox내에 있으면 1 없으면 0 값을 갖는다.

$c_i=Pr(class_i|object)$ 는 물체기 bbox 내에 존재할 때 grid cell에 있는 object가 i번째 class에 속할 확률로, cell에 있는 object가 i번째 class에 속한다면 1 속하지 않는다면 0 값을 갖는다.

3.2 DarkNet

Yolo v1 모델은 output tensor에 해당하는 7x7x30에 맞는 feature map을 생성하기 위해 DarkNet이라는 독자적인 ConvNet을 설계하였다.

DarkNet은 GoogLeNet 모델과 비슷한 정확도롤 보이며, 이후 모델이 detection task를 수행할 수 있도록 4개의 conv layer와 2개의 fc layer를 추가한다.

classifaction task를 위한 training 시에는 224x224 image를 사용하고, detection task를 위한 training 시에는 이미지의 크기를 키워 448x448 image를 사용한다.

detection task에서는 결이 고운(fine grained) 시각 정보를 필요로 하기 때문이다.

3.3 Training stage

특정 object에 responsible한 cell은 Ground Truth box의 중심에 위치한 grid cell로 할당한다.

Yolo는 Conv layer를 통과한 output 20개 bbox 중 GT와의 IOU가 가장 큰($IOU^{truth}_{pred}$이 가장 높은) Bbox 하나를 select하고, 하나만 사용하여 training한다.

- loss function

  1. 모든 grid cell에서 예측한 B개의 bbox 의 좌표와 GT box의 좌표의 loss
  2. 모든 grid cell에서 예측한 B개의 $c_i$(class에 속할 확률값)과 GT 값의 loss
  3. 모든 grid cell에서 $p_c$(confidence score)과 GT 값의 loss

으로 YOLO의 loss function이 구성되어 있다. → MSE

여기서 $\mathbb{I}^{obj}_{ij}$는 i번째 grid cell안의 j번째 Bbox가 prediction에 response하면 1, 하지않으면 0 값을 가진다. 즉, cell i에서 reponsible한 j번째 Bbox만을 loss function에 반영할 수 있다.

$\mathbb{I}^{obj}_{i}$는 i번째 grid cell에 object가 있으면 1, 없으면 0 값을 가진다.

3.4 Inference stage

grid cell 하나당 2개의 Bbox를 생성한다고 가정했기 때문에 결과적으로 이미지 1개당 7*7*2=98개의 Bbox가 생성된다.

생성되는 Bbox 개수가 많으므로 NMS를 적용해서 연산량을 줄여야 한다.

NMS는 class 별로 적용하여 각 class 마다 정확한 Bbox를 가지지 않는 Bbox들을 제거해준다.

첫번째 예시에서 #12 box의 score가 가장 높아 첫번째 강아지를 detect하는 가장 정확한 Bbox이다. #13의 경우 score는 두번쨰로 높지만 #12와 IoU가 threshold보다 커 같은 object를 target으로 했기에 제거한다.

두번째 예시에서 #16 box의 socre는 #13보단 낮지만 #12와 IoU가 threshold보다 작아 다른 object(세번째 강아지)를 target으로 하는 가장 정확한 Bbox이다.

만약 class가 강아지, 고양이로 다르다면 bbox는 다른 score를 가진다. #8이 강아지를 detect하는 가장 정확한 Bbox, #12는 고양이를 detect하는 가장 정확한 Bbox이다.

[4] SSD

YOLO v1은 whole image를 통합된 network으로 한번에 처리하기 때문에 detect 속도는 매우 빠르지만, grid cell 별로 2개의 Bbox를 선택하여 상대적으로 적은 view를 제공하기 때문에 정확도가 떨어진다는 특징을 지닌다.

SSD는 Single Shot multibox Detector의 약자로 다양한 view를 활용하면서 통합된 network 구조를 가진 1-stage detector로서 높은 정확도와 빠른 속도를 가진다.

또한 YOLO v1 아키텍트는 두 network를 연결하는 과정에서 FC-layer로 변환시키는 과정이 포함되어 있기에 속도가 지체된다. 이를 보완하여 SSD는 base network(VGG16)과 보조 네트워크를 연결하는 과정에서 fc layer 대신 conv layer를 넣어 속도를 향상시켰다.

4.1 Multiscale feature maps

SSD 모델의 핵심적인 아이디어는 다양한 scale의 feature map을 사용한다는 점이다.

YOLO v1은 ConvNet을 거친 단일 scale을 가진 7x7x30 크기의 feature map 만을 detection에 사용했다. 하지만 이러한 단일 scale의 feature map을 사용할 경우, 다양한 크기의 객체를 포착하기 어렵다는 단점이 존재한다.

SSD 모델은 SSD 네트워크 중간에 존재하는 Conv layer의 feature map들을 추출하여 detection시 사용한다.

base network의 conv4_3 layer에서 feature map을 추출하고, auxiliary network의 conv8_2, conv9_2, conv10_2, conv11_2 layer에서 feature map을 추출한다.

이과정을 통해 최종 feature map을 포함한 총 6개의 scale을 가진 feature map을 얻을 수 있기 때문에, 더 다양한 크기의 객체를 탐지하는 것이 가능하다.

4.2 Default boxes

feature map의 각 cell은 서로 다른 scale의 aspect ratio를 가진 default box를 생성한다.

Default box는 faster R-CNN에서 등장했던 anchor box와 개념이 유사하지만, default box는 서로 다른 크기의 feature map에 적용한다는 점에서 anchor box와 다르다고 한다.

SSD 모델은 base network에서 추출한 feature map(1개)에는 각 cell 마다 4개의 default box를 생성하고, 나머지 feature map(5개)에는 각 cell 마다 6개의 default box를 생성한다. 따라서 총 defulat box의 수는 8732(=38x38x4 + 19x19x6 + 10x10x6 + 5x5x6 + 3x3x6 + 1x1x4)개이다.

Default box에서 $s_k$는 원본 이미지에 대한 비율을 의미하며 aspect ratio는 가로 세로 비율이다. input image가 300x300 일때, $s_k$=0.1, aspect ratio=1:1 인 default box의 크기는 30x30이다.

4.3 Predictions

최종 predict를 위해 서로 다른 scale의 feature map을 추출한 후 3x3(stride=1, padding=1) conv 연산을 적용한다.

이때 default box의 수는 k, 예측하려는 class의 수를 c라고 할 때, output feature map의 channel 수는 k*(4+c)가 되도록 설계한다. default block 마다 class별 class score를 계산하고, 총 4개의 offset을 계산해야 한다. 그리고 하나의 cell을 구성하는 default block은 k개이기 때문에 channel수는 k*(4+c)가 된다.

 

학습을 진행하기전 어떤 default box가 어떤 GT box와 대응해야 하는지 학습 대상을 지정해주어야 한다.

GT box와 IoUrk 0.5 이상인 default box는 모두 positive label이고, 0.5 이하인 default box는 모두 negative label이다. negative 비율이 압도적으로 높기 때문에 hard negative mining으로 positive과 negative 비율을 1:3으로 맞추는 것이 좋다.

4.4 Loss function

SSD 모델의 loss function은 confidence loss인 L_{conf}와 localization loss인 L_{loc} 의 합으로 구성되어 있다. N은 GT box와 매칭된 default box 수이다.

location loss는 faster R-CNN 모델처럼 default box의 중심 좌표(x&y)와 너비와 높이(w&h)를 사용하여 smooth L1 loss를 통해 구한다.

$l$은 predicted box 좌표, $g$는 GT box 좌표를 의미하며, $x^k_{ij}$는 class가 k인 i번째 defulat box와 j번째 GT box와 매칭되었는지 여부를 나타내는 indicator parameter이다.

confidence loss는 모든 class에 대한 loss를 softmax loss를 통해 계산한다.

4.5 Detection

SSD 모델은 최종 detection 시 마지막 예측에 대하여 YOLO v1처럼 Non maximum suppression을 수행하여 default box를 적절하게 제거하여 정확도를 높히고 computataion power를 낮출 수 있었다.

[5] 참고 문헌

https://arxiv.org/abs/1512.02325

https://arxiv.org/abs/1506.02640

SSD 논문(SSD: Single Shot MultiBox Detector) 리뷰

[Paper Review] You Only Look Once : Unified, Real-Time Object Detection

https://www.notion.so/dlstudy/11-Detection-and-Segmentation-5a543c9eafc44215b4371fd97c377005#c41ead0b696d49dd874efd60ab66b4e9

 

관련글 더보기

댓글 영역