펭로그

논문으로 시작하는 딥러닝 - Image Detection 방법론 본문

Study/Computer Vision

논문으로 시작하는 딥러닝 - Image Detection 방법론

노랑펭귄 2018. 7. 29. 13:36

강의 링크 : https://www.edwith.org/deeplearningchoi

* 본 포스팅은 위의 강의를 보고 요약 정리한 내용입니다.


1. R-CNN

논문 :
https://github.com/sjchoi86/dl_tutorials_10weeks/blob/master/papers/Rich%20feature%20hierarchies%20for%20accurate%20object%20detection%20and%20semantic%20segmentation.pdf

- CNN에서 fully connected layer 때문에 입력 이미지가 항상 고정된 사이즈를 필요로 하는 문제를 해결하기 위해 R-CNN에서는 여러 다른 사이즈를 갖는 bounding box를 샘플로 사용

- 딥러닝과 상관 없이 물체가 있을 것 같은 공간에 region proposals을 해줌 (시간 오래 걸림)

- CPU로 처리시 이미지 1장당 1분 이상 소요

- 지정된 region pre-trained CNN을 사용하여 feature를 뽑아 linear SVMs로 분류

- 종횡비를 전혀 고려하지 않고 crop이나 warp를 통해 동일한 크기의 fixed size image로 바꾼후 CNN 처리


Selective search 알고리즘을 사용한 예시) 다양한 bounding box를 잡았어도 원하는 물체를 detection 하지 못하면 아무 의미 없는 알고리즘


2000개의 region proposals를 뽑고 227*227resize CNN을 이용하여 4,096 벡터를 뽑고 SVMs로 분류

GPU를 사용해도 한 장당 처리속도가 느린편


하나의 bounding box를 중심점, 종횡비(ratio), width, height을 얼만큼 바꿔야지 ground truthbounding box와 일치하는지 측정가능


이미지 안에 큰 물체만 잡는 등 성능이 좋지 못함



2. SPPnet (Spatial Pyramid Pooling)

논문 
https://github.com/sjchoi86/dl_tutorials_10weeks/blob/master/papers/Spatial%20Pyramid%20Pooling%20in%20Deep%20Convolutional%20Networks%20for%20Visual%20Recognition.pdf

R-CNN에서 2000개의 bounding box를 각각 CNN으로 처리하였다면 SPPnet에선 1회만 CNN 처리 후 나온 convolutional feature map에서 해당하는 영역에 있는 정보만 가져옴

Crop/warp으로 왜곡이나 정보 손실이 발생하는 부분을 원본에서 conv layer를 먼저 추출하는 방법을 통해 보완 (최대 100배 정도 시간 단축 가능)


Convolutional layers에서 뽑힌 bounding box의 종횡비나 사이즈에 관계 없이 영역을 동일한 사이즈로 나눠 평균 값을 구해서 fixed-length representation을 찾아서 fully-connected layer로 넘겨주는게 SPPnet에서의 pooling 방법, 4*4 / 2*2 / 1*1 등으로 pooling한 결과를 합쳐서 출력


[R-CNN SPPNet의 차이]

- R-CNN은 이미지 영역에서 feature 추출하여 모든 Region proposal 마다 CNN을 돌려 성능이 매우 느림

- SPPNetcrop/warp을 하지 않고 바로 conv layers를 구해서 feature Map 내부에서 일부 영역을 취해서 feature를 추출



3. Fast R-CNN

논문 :
https://github.com/sjchoi86/dl_tutorials_10weeks/blob/master/papers/Fast%20R-CNN.pdf

SPPNet과 동일하나 Spatial Pyramid Pooling 대신에 ROI Pooling 사용


- SPP와 다르게 하나의 층만 가져와서 pooling하는 것이므로 속도가 더 빠름

- classification lossbounding box regression loss 발생



4. Faster R-CNN

논문 :
https://github.com/sjchoi86/dl_tutorials_10weeks/blob/master/papers/Faster%20R-CNN-%20Towards%20Real-Time%20Object%20Detection%20with%20Region%20Proposal%20Networks.pdf

- Fast R-CNN에서 region proposal 생성 방식을 개선

- Bounding box를 찾는 것을 뉴럴네트워크로 해결한 Region proposal Net(RPN)을 사용

- 같은 feature map으로 ROI Pooling을 수행하는 레이어와 Bounding box를 추출하는 레이어 추출

- 이미지 사이즈 자체를 줄여서 multiple scaled images를 한번에 고려 (pyramids of images)

- 필터 사이즈 자체를 줄여서 multiple references를 한번에 고려 (pyramids of filters)

- 미리 정해져 있는 Bounding box (pyramids of anchors) 사용 (논문에선 9개 사용)


입력 이미지를 conv layers를 추출 후 RPN에서 resion proposal을 추출하고 roi pooling 수행


Conv feature map에서 각 픽셀마다 지정된 크기의 k개의 anchor (1:1, 1:2, 2:1 ..)에서 그 안에 물체가 들어있을 확률 계산 + 어느 위치로 옮겨야 할지


큰 물체와 작은 물체를 구분 가능



5. 4가지 방식의 차이

1) R-CNN : Region을 먼저 추출하여 모든 region에 대하여 convolution 수행

2) SPP Net : convolution 1회만 수행 후 regionpyramid pooling

3) Fast R-CNN : SPP Net에서 pyramid pooling 대신 ROI pooling 사용

4) Faster R-CNN : bounding box를 찾는 것 조차 neural network 이용하여 BB 분류와 ROI pooling을 동일한 feature layers로 처리


Comments