본문 바로가기

AI

[object detection 기초] R-cnn, fast-r cnn, faster r-cnn 정리

728x90
반응형

안녕하세요. WH 입니다.

사실 이 부분을 다룰까 말까 고민을 많이 했습니다.

그치만, 간단하게 정리하고 넘어가면 도움이 되겠다 싶어 정리해봅니다.

여튼! 한번은 짚고 넘어가야 하니 정리해보도록 하겠습니다.

시작하기 전에 cnn에 대한 의미 정리가 필요함으로 앞에 정리한 글을 읽고 시작하시길 추천드립니다.

2022.04.26 - [AI] - computer vision AI ( feat. CNN 기초 이론의 의미 )

 

computer vision AI ( feat. CNN 기초 이론의 의미 )

안녕하세요. WH입니다. 조금 빠르게 너무 간략하게 이론들을 건너뛴 감이 없지않아 있지만 여러분의 목표는 기초가 아닐꺼라고 생각하기에 정말 기본만 다루고 넘어갈게요 필요하다면, 더욱 다

developer-wh.tistory.com

 

Image Recognition

  결국 시작은 single object classification 에서 시작하여 single object에 대해 classification + localization으로 발전합니다. classification + localization = objectect detection이라고 하는 데, multi object에 대해 object detection과 instacne segmentation까지 발전을 하게 됩니다. 아래 사진은 용어에 대한 이미지를 가져온겁니다.

object detection

 object detection의 경우 방식에 따라 2 가지로 나뉘게 되는 데, 1-Stage와 2-Stage 입니다. 즉 한번에 예측할거냐 ( 1-Stage) 아니면 2번에 예측할거나( 2-Stage) 로 나뉘게 되죠. 무엇을 예측하냐? 바로 class가 무엇인지와 위치가 어디인지 입니다. ( classification과 localization ) 조금만 더 설명을 드리면 classification에서는 softmax를 활용해 ( 물론 이전에는 binary SNM 을 활용하기도 했지만 ) 현재 사진에 있는 물체가 무슨 class 인가를 분류합니다. localization에서는 물체의 위치를 찾아 박스를 치게 됩니다. 그렇다면 object detection에서는 5개의 값을 찾는다고 볼 수 있습니다. class에 대한 score 그리고 위치에 해당하는 좌표 ( 중심 좌표 ( x, y ) , 높이, 넓이 ) 이렇게 찾게 되죠.  각각을 간단하게 정리하면 아래와 같습니다.

 

1 - stage

  real time에 쓰기 위해 많이 사용하며, edge device에서 활용도가 높습니다. 다만 정확도가 2-stage에 비해 낮다는 점이 있지만, 요즘은 꼭 그렇지만도 않은것 같아요. 대표적으로는 ssd , yolo 등이 있겠지요. 이 부분은 추후 다루도록 하겠습니다.

 

2 - stage

https://github.com/ndb796/Deep-Learning-Paper-Review-and-Practice/blob/master/lecture_notes/Faster_R-CNN.pdf 참조

   오늘 다룰 내용의 3가지가 모두 2-stage에 해당 합니다. 위의 단계를 따르는데, Region proposals 는 말 그대로 물체의 위치가 어디있는지 알아보는 방법 입니다. 즉 물체의 위치가 어디있는지 찾고, 물체가 무엇인지 찾습니다. 이렇게 2가지 단계를 거치기 때문에 2-stage라 불립니다. faster r-cnn 전에는 region proposal을 위해 SS ( selective search ) 를 사용했습니다만, SS는 cpu에서 작동되고 약 2초의 시간이 소요되기 떄문에 실용적이지 못했습니다. 그래서 faster r-cnn에서는 region proposal 과정을 새로운 region proposal( RPN ) 이라는 층을 만들어 gpu 연산이 가능하게 함으로써, 속도에 비약적인 향상을 가져온 겁니다. 또한 SS 알고리즘이 층으로 바뀌게 되어 end-to-end 연산이 가능하게 됩니다.

Resion proposal

  층으로 등장하기 이전 ( RPN )에 resion proposal에는 2 가지 방식이 사용되었습니다. sliding window와 selective search 인데요, sliding window는 다양한 형태의 네모박스( 윈도우 )를 이동시켜가며 물체가 있는지를 확인하는 방식입니다. 다양한 윈도우롤 만드는 방법에서 사진의 사이즈를 조절하는 방법과 말 그대로 다양한 window를 사용하는 방법이 존재합니다. Selective Search의 경우 인접한 영역끼리 유사성을 측정하고 큰 영역을 차례대로 통합해 나가는 방법이며 r-cnn과 fast r-cnn에서 사용됩니다. 이 정도만 알아도 될 것 같아서 간단하게 하고 넘어갑니다.

 

기타 필요 개념

IoU

  intersection over union 의 줄임말입니다. 즉 겹치는 부분 / 전체 라고 생각하시면 됩니다. 아래 그림을 참조해 주세요

 

NMS

  IoU만 적용하게 되면 하나의 object를 검출하는데 여러개의 box가 생길 수 있습니다. 때문에 bounding box를 하나로 합치는 방법이 있어야하고 이 방법을 NMS( non Maximum suppression ) 이라고 합니다. 뭐가 어떻게 되는 거지라기 보다 이 개념이 무엇인지 알고 가시면 됩니다. 즉 나중에 이 용어를 들었을 때 무엇인지 알고만 계시면 됩니다.

 

 

반응형

자 이제 논문을 간단하게 들여다볼 준비가 되었습니다. 여전히 길었지만 이번 글로 아 기본을 채우는 구나 생각하시면 되겠습니다. 우리가 수능을 봐야하는데 더하기도 모르고 수학을 풀 수는 없잖아요? 이제 다시 시작해봅시다.

 

R-cnn

  가장 먼저 흐름을 정리해 보면 아래와 같습니다.

 

  1. Selective search를 통해 2000개의 region proposal을 생성

    1-1. image crop( 자르기 ), image resize ( 일정한 크기로 변환 )

  2. CNN을 통해 Featrure vector 추출

  3. SVM ( classificatoin ) + Regression( localization ( 점 찾기 ) )

 

 

  이런 아이디어로 진행됩니다. 챙기고 가셔야 하는 부분은 region proposal 후에 이미지를 정제하여 특징을 추출하고 classifier 와 regressor를 활용하여 원하는 결과를 뽑는다. 이 정도로 요약되겠습니다. 그럼 단점을 알아볼까요? CNN 은 특징을 추출하는 데, 우리는 추출된 특징을 가지고 결과를 뽑으므로, SVM과 bbox의 결과를 통해 다시 CNN을 업데이트 할 수 없습니다. 즉 end-to-end 방식의 학습이 불가합니다. 또한 SS 를 진행해야함으로 많은 시간이 소요됩니다. 또한 모든 RoI( region of interest )를 모두 보아야 함으로 2000번( region proposal이 2000개 임으로 )의 CNN 연산이 필요합니다. 이 말은 test time 역시 많은 시간이 필요함을 뜻하게 된답니다. 후아 엄청 짧게 요약했네요. 한숨 돌리시고 다시 갑니다.

 

Fast r-cnn

  이 논문의 핵심은 모든 region proposal을 cnn에 넣는 것이 아니라 이미지 자체를 cnn에 넣고 생성된 피처맵에 원래 이미지에서 SS를 활용한 region proposal, 즉 RoI( region of interest )를 projection 시킵니다. 또한 softmax가 사용된다는 것 역시 하나의 특징이라 할 수 있습니다. 즉 아래와 같은 방식으로 진행됩니다. 다만 주의 하실 점은 classfication과 localization은 모두 각각의 roi에 대해 진행된다는 점은 같습니다. 다만 그 장소가 피처맵으로 바뀌었기 때문에 cnn연산을 2000번 할 필요가 없어진 것이지요.

 위의 그림을 보면 RoI pooling이라는 것이 있는 데, 이는 기본적으로 max pooling을 사용합니다, 그런데 max pooling을 할 영역에 대해 비율적으로 잘 잘라서 넣어주게 됩니다. 마지막으로 Faster R-CNN 입니다.

Faster r-cnn

  위의 2 개 ( r-cnn과 fast r-cnn )의 모델은 region proposal을 cpu 기반 Selective Search를 활용했기 때문에 bottleneck( 병목 현상, 하나의 오래 걸리는 처리과정 때문에 전체 과정이 길어지는 현상 )이 발생합니다. 이를 해결하기위해 RPN ( region proposal network)를 도입함으로써 end-to-end 학습은 물론 비약적인 속도의 발전을 가져오게 됩니다.

RPN

  RPN 의 특징은 앵커 박스( 사용자가 사이즈를 정해놓은 물체의 위치를 찾기 위한 윈도우 박스) 를 활용 해서 슬라이딩 윈도우를 거처 각 위치에 대해 regression과 classification을 수행합니다. 즉 k개의 앵커 박스를 활용하는데 보통 1*1 1*2 2*1 2*2 등의 박스가 활용됩니다. 또한 슬라이딩을 하려면, 슬라이드 될 기준 공간이 필요하겠죠? 즉 이미지를 나누면 나눠진 칸들을 grid라고 하며 grid 마다 앵커 박스를 그려보며 물체가 있는지와 점의 위치를 찾게 됩니다. 주의 하실 점은 물체가 무엇인지를 알아 내는 것이 아니라, 물체가 있는지를 알아본다는 점을 기억하셔야 합니다.

위의 사진을 보시면 2k개의 의미는 k개의 앵커 박스를 활용했고 있는지 없는지를 판단함으로 2k개 오른 쪽 reg layer에서는 점위 위치는 찾음으로 중심 좌표와 높이 넓이 해서 4k 개를 찾는 것을 볼 수 있습니다. 자 오늘은 여기까지 간단하게 정리해보겠습니다. 그럼 이상 wh 였습니다. 기초가 부족하고 깊은 통찰이 필요하다면 이전 글들도 참조해 주세요.

728x90
반응형