Deep Learning study

Object detection - R-CNN, Fast R-CNN, Faster R-CNN 본문

AI/papers

Object detection - R-CNN, Fast R-CNN, Faster R-CNN

HwaniL.choi 2018. 5. 9. 14:03
반응형

 

이번 포스팅은 YOLO를 읽기전에 한 번쯤 읽어보아야 할 것 같아서 간략하게나마 정리 보았다.

 

R-CNN, Fast-RCNN , Faster-RCNN에 대해서 알아보자



R-CNN


R-CNN은 Region proposals with CNN 의 줄임으로 이미지 안에 어떤 object 들이 있는지 찾아내는 것을 목적으로 한다. 



먼저 input 이미지에서 2000개 정도의 subimage를 뽑아낸다. object들이 존재할 것 같은 부분을 잘라내어 주는것이다.

그리고 그 각각의 이미지들을 CONV net을 통과시키기 위해 알맞는 사이즈로 변환후 CNN을 통해 분류작업(classification)을 한다.

그 후에 SVM(support vector machine)을 이용해 각 object 들을 분류해준다.

또한 object가 존재하는 위치에 bounding box를 만들어 주기 위해 selective search 알고리즘을 사용하고 linear regression모델을 이용해 박스위치를 조정해 준다.


 되게 간단한 방법인것 같다. 사실상 앞의 resion proposal(가능한 영역을 찾아내는 것)을 뽑아내는 것을 빼면 그냥 classification이다. 그리고 단순한 만큼 성능이 좋진 않다. 엄청 느리고 mAP도 그렇게 높진 않은 것 같다.


region proposal알고리즘을 수행할때 CPU를 사용하기 때문에 병목현상이 일어나는 것 같다.


R-CNN paper 읽어보기



Fast R-CNN


Fast R-CNN은 기존의 R-CNN의 개선시킨 것이다.


1. mAP를 R-CNN보다 높게했다.

2. multi-task loss 를 이용해, 학습이 한번에 이루어진다.

3. 학습에서 모든 network layer들이 업데이트된다.

4. feature caching에 디스크 저장공간이 필요하지 않다.


특징이라면 기존의 R-CNN에서는 각 region proposal 마다 CNN을 거쳐야했는데 , Fast R-CNN에서는 전체 이미지와 object proposal 들을 한번에 CNN을 거치게 했다는 것 이다. 


bounding box를 한 이미지에서 2000개 정도를 추출해내다 보면 겹치는 부분이 엄청 많을 것이다. 이런 비효율을 해결하기위해서 전체 이미지와 RoI(region of interest)들을 함께 Conv layer를 통과시킨다. 그후 RoI pooling layer를 와 fully connected layer를 거쳐서 RoI의 feateure vector를 뽑아낸다. 각 RoI vector마다 두개의 출력을 가지는데,  하나는 fc와 softmax를 이용한 object classification을 위한 것이고, 다른 하나는 fc와 regression을 이용하여 bounding box의 위치를 조정해주는 것 이다. 이 모든 작업들이 multi-task loss를 이용해 한번에 학습이 이루어 진다.


10-100배정도 빨라졌다고하지만 빠른 수준은 아니다 . 그당시에는 빨랐을 지도모른다 ㅠㅠ 


Fast R-CNN 읽어보기



Faster R-CNN



Fast 도 아닌 Faster라니 . 당연한 말이겠지만 Fast R-CNN의 후속버전이다.





Fast R-CNN에서 문제였던 region proposal의 병목현상을 해결하기 위해서 Region proposal Networks(RPN)를 사용한다. RPN은 input으로 하나의 이미지가 들어가게 되고 output으로 직사각형의 object proposal들과 object score를 내놓는다. 

bounding box regression을 위해 임의의 3개의 서로다른 비율과 3개의 서로다른 3개 크기의 조합으로 총 9개의 anchor box를  지정한다. 그리고 sliding window 의 각 지점마다 적용하고 각각의 anchor box들로부터 bounding box proposal을 계산하게 된다. 주의할점은 RPN에서는 object인지 background인지만의 분류작업만을 한다. 그후 RoI pooling 을 거쳐 분류작업과 정확한 bounding box position을 뽑아낸다. 


Faster R-CNN paper 읽어보기





관심을 가지고 있던 object detection에 대해 공부를 해 보았다. 

생각보다 새로운것이 너무 많아서 공부할게 너무 많았다. 논문에서 주로 쓰는 단어들이나 그런게 잘 와닿지 않아서 힘들었고, 논문에있는 그림들을 이해하는데에 조금 어려움이 있어서 검색을 꽤나 많이 해보았던것 같다. 

다음은 YOLO인데, 이건 더 어려웠다.. 그래도 정말 정리를 잘 해놓은 ppt를 발견해서 그걸로 정리를 해봐야겠다. 

반응형
Comments