네이버 부스트캠프 학습 정리/4주차

[CV basic] Object Detection

AI쟁이J 2023. 4. 2. 13:19

R-CNN

Object Detection 분야에 최초로 딥러닝 기법을 적용한 모델. 

전체 태스크를 다음의 두 단계로 나눠 2-stage Detector라고 한다.

1. 물체 위치를 찾는 Region proposal

2. 물체를 분류하는 Region Classfication

 

입력 이미지에서 bounding box를 만들어 내고 해당 부분에 대해 extract region proposal를 진행한다. 이후 박스 크기를 고정값으로 Warped한 후 해당 image regions에서 CNN - pretrained 모델에서 forward 연산을 통해 feature map을 추출한다. 이후 해당 부분에서 SVM을 통해 분류를 진행 후, bounding-box regression 역시 추가로 진행한다. 하지만 이 경우 입력 이미지에서 2000개의 RoI를 추출 한 경우 CNN 연산을 2000번 진행해야 해 연산이 엄청나게 많이 필요한 단점이 있다.

 

 

Fast R-CNN

위 모델의 연산이 많아 오래 걸린다는 단점을 개선해 빨라진 모델인 Fast R-CNN이다. 위 계산에서 2000개의 region proposals를 CNN에 입력시키는 점을 개선해 1개의 region proposal을 사용하며, RoI pooling을 통해 고정된 크기의 feature vector를 FC layer에 전달한다. 

FC layer를 통과한 값은 한개는 softmax, 한개는 R-CNN에서와 마찬가지로 b-box regressor를 통해 분류를 진행한다. 

 

RoI pooling

h,w의 크기를 가진 RoI(=region proposal)을 사용하기 위해 feature map에 그리드를 나눈다. 그리고 그리드 내부를 split 한 이후 각 split 된 그리드 내에서 max pooling을 진행해 split된 그리드 당 한개의 값을 가지게 한 후, 위 작업을 통해 H x W 크기를 가진 feature vector를 추출한다.

 

위 과정을 통해 Fast R-CNN은 2000번의 연산에서 1번의 연산으로 줄일 수 있으며, 변경된 feature vector는 기존의 region proposal을 projection 한 결과이므로 bbox regression에도 문제가 없다. 

 

 

Faster R-CNN

말 그대로 Fast 보다 더 빠른. Faster 모델이다

Fast R-CNN에서 사용한 selective search의 속도를 개선한 모델이다. 이 과정이 CPU에서 돌아가기 때문에 느리기 때문에 GPU에서 돌아갈 수 있도록 Conv layer에서 생성하는 아이디어로, RPN + Fast R-CNN구조라고 볼 수 있다.

RPN 네트워크에서 사용하는 CNN과 Fast R-CNN의 classification, bbox regression에서 사용한 CNN 네트워크를 공유한다

 

RPN (Region Proposal Network)

이전 CNN에서 뽑은 feature map을 RPN의 input으로 넣음으로서 Conv channel에서 selective search를 수행하게 된다.

H x W x C 의 피처 맵에 대해 3x3 conv를 수행 후, Intermediate Layer를 뽑는다. feature map과 같은 크기의 위 사이즈가 나온다면 각각 1x1 conv연산을 수행해 각 classification result와 bounding box regression result를 뽑는다. calssification result를 위한 연산에는 1x1 Conv가 2x9 채널을 가지는데, 이는 위에 설명된 cls layer에 들어가는 2k scores를 위해 검출 결과가 검출하고자 하는 객체가 맞는지에 대한 경우의 수 (True/False) 2 x 9 (앵커 박스의 수 9개) 의 연산을 의미한다. 

아래의 bounding box regression result를 위한 4x9 채널 연산은 4k score의 4 x 9 (앵커 박스의 수) 이므로 두 개의 결과에 대해 RoI를 적용해 Classification 값이 높은 순으로 K개의 앵커를 추린 후 해당 앵커들에 대해 Bounding box regression을 적용하며 비최대 억제를 사용해 최종 RoI를 구한다.

위의 과정들을 반복해 가장 객체일 확률이 높은 바운딩 박스만 남겨 표시한다.

 

One-Stage Detector

Region Proposal Network를 사용하지 않고 feature map 상에서 바로 검출하는 기법.

YOLO

간단하게 하나의 Convolution network가 여러 bounding box 와 그 박스들의 확률에 대해 바로 계산을 수행한다. 따라서 매우 빠르게 연산을 수행하기 때문에 동영상처럼 프레임이 매우 많은 영상에서도 실시간으로 객체 검출이 가능하다.

 

이미지를 S x S 그리드로 나눈 후 grid cell 내부에 객체가 있다면 객체를 탐지하며, 동시에 grid cell 내에서 bounding boxes + confidence(신뢰도) 와 Class probablility map을 동시에 검출한다. 

이후 Pr(Object) * IOU의 식으로 score를 측정한다.

IOU는 두 영역이 겹치는 부분을 두 영역의 전체 합집합으로 나눈 스코어를 말한다. 겹치는 부분이 많을수록 그 값이 1에 수렴하고, 정확한 탐지라고 볼 수 있다.

각 bounding box는 x,y,w,h + confidence의 5개로 이루어졌으며 (x,y)는 그리드 셀 내부에서의 상대적 위치, 그리고 (w,h)는 bounding box의 너비와 높이를 전체 이미지와 상대적으로 비교한다. 이후 confidence score를 적용해 bounding box 내부에 특정 클래스 객체가 있을 확률 Pr(Classi) 와 예측된 bounding box가 객체와 얼마나 겹치는지에 대한 IOU score를 곱해 Confidence score를 측정한다.

 

논문에서는 GoogLeNet의 구조를 빌려 FC layer를 사용해 7x7x30 구조를 뽑았고, 앞에서 설명한 confidence score를 측정하는 방식으로 네트워크를 구성했다.

 

SSD (Single Shot MultiBox Detector)

SxS 의 grid로 나누는 것이 아닌 사전에 정의된 앵커 박스를 통해 feature map의 모든 위치에 이를 지정한다. 이후 이 앵커 박스의 위치와 사이즈를 줄이며 객체를 탐지하고 점수를 지정한다. 

L = 1~6에 따라 anchor box가 스케일링되는 과정.

 

 

 

 

 

 

 

 

Reference

https://ganghee-lee.tistory.com/37

 

(논문리뷰&재구현) Faster R-CNN 설명 및 정리

이전글 : (논문리뷰) Fast R-CNN 설명 및 정리 Fast R-CNN 설명 및 정리 이전글 : Object Detection, R-CNN 설명 및 정리 Object Detection, R-CNN 설명 및 정리 컴퓨터비전에서의 문제들은 크게 다음 4가지로 분류할

ganghee-lee.tistory.com

https://lilianweng.github.io/posts/2018-12-27-object-recognition-part-4/

 

Object Detection Part 4: Fast Detection Models

In Part 3, we have reviewed models in the R-CNN family. All of them are region-based object detection algorithms. They can achieve high accuracy but could be too slow for certain applications such as autonomous driving. In Part 4, we only focus on fast obj

lilianweng.github.io

 

'네이버 부스트캠프 학습 정리 > 4주차' 카테고리의 다른 글

4주차 회고  (0) 2023.04.02
[CV basic] Semantic Segmentation  (0) 2023.04.01
[CV basic] GoogLeNet/ResNet  (0) 2023.03.31
[CV basic] Data Efficient Learning  (0) 2023.03.31
[CV basic] AlexNet/VGGNet  (0) 2023.03.30