본문 바로가기
Data Science: 이론/etc

[cs231n] Lecture 11 | Detection and Segmentation

by WoodyAhn 2019. 5. 15.

Computing Vision Tasks

Semantic Segmentaion

입력받은 이미지를 픽셀 단위로 classify 한다. 개별 픽셀이 어떤 레이블에 속하는지 알려준다.

하지만 같은 물체가 여러개 있을 때 따로 따로 인식하지 못한다.

 

학습을 시키려면 이미지 전체에 대해 CNN을 적용해야 하는데 

이 방법은 엄청난 computing cost를 발생시킨다.

 

그래서 "down sampling" 과 "up sampling" 기법을 사용한다.

up sampling 과정에서 원본이미지를 그대로 재현하지 못하고 pixel의 실추가 발생하는 문제가 있다.

이 문제를 해결한게 FCN(Fully Convolutional Network) 다. 

FCN 개발된 이후 segmentation의 성능이 월등히 좋아졌다.

 

Classification + Localization

입력 받은 이미지에서 물체(object)를 찾아내 어떤 레이블에 속하는 지 classify 하고 물체 주변에 바운딩 박스를 생성한다.

 

입력받은 이미지에 CNN을 적용시켜 나온 결과(vector 형태)에 classfication(for 클래스 분류) 과 regression(for 바운딩 박스) 을 실행한다.

 

Object Detection

한 이미지에 들어있는 '여러개'의 물체(object)를 찾아내 클래스를 분류하고 바운딩 박스를 생성한다.

앞서 나온 'Classification + Localization'과 다른 점은 detect 하는 갯수가 여러개 라는 것!

하지만, 그러다보니 계산해야할 양이 많아지고 기존에 바운딩 박스 위치를 잡는데 사용되던 regression으로 처리하기 비효율적.

그래서 새로운 방법으로 제안된 게 classifcation에 해당하는 sliding window방식의 "Region Proposal"

 

Region Proposal: 입력받은 이미지에서 물체(object)가 있을 법한 구역을 제안하는 것.

대표적인 예) selective search 알고리즘(하나의 이미지에서 약 2000개의 Region Proposal 생성한다)

 

Object Detection의 업그레이드 과정

R-CNN(2013) -> Fast R-CNN(2015) -> Faster R-CNN(2016)

 

selective search를 통해 얻은 RoI(Region of Interest)에만 CNN 실행시킨다. CNN의 결과로 나온 vector에 대해 regression 과 classification 수행한다.

문제점: 약 2000개에 달하는 RoI에 전부 CNN을 돌리기 때문에 많은 시간과 비용이 들어간다

 

Fast R-CNN

앞서 문제가 됐던 2000개의 RoI에 적용되는 CNN에 들어가는 시간과 비용을 해결하기 해결하기 위해 고안된 Fast R-CNN

입력받은 이미지에 CNN을 딱 한번 돌린 뒤에 나온 feature map에 selective search 알고리즘으로 RoI를 생성한다.

* CNN을 왜 돌리는지, 돌린 결과 어떻게 되는 지 아직 모르겠다. 이 부분은 서칭 후 다시 작성..

 

Fast R-CNN은 시간을 획기적으로 줄이는 데 성공했다.

이제 남은 문제는 2초가량 소요되는 Region Proposal 단계를 줄이는 것

 

Faster R-CNN에선 기존에 Region Proposal에 사용되었던 외부 모델 selective search 대신

Region Proposal Network를 사용해 모델 내부에서 Region Proposal 단계를 수행했다.

입력받은 이미지에 CNN 돌리고 나온 feature map에 RPN(region proposal network)를 사용해 RoI를 출력한다.

그 결과 이미지 하나 테스트에 걸리는 시간을 0.2초로 감축시키는 데 성공했다!

 

Instance segmentation

Object detection에서 물체를 찾아내 바운딩 박스를 쳤다면,

instance segmentation에선 각 바운딩 박스에서 물체에 해당하는 픽셀을 분류한다.

 

대표적인 모델이 바로 Mask R-CNN

 

Mask R-CNN의 결과

 

Mask R-CNN은 2017년 facebook research center에서 발표됐다.

현재 Instance segmentation 분야에서 가장 성능이 좋은 모델로 평가받고 있다.

 

Mask R-CNN의 architecture는 다음과 같다.

구조는 생각보다 단순하다

object detection에서 가장 성능이 높은 Faster R-CNN과 semantic segmentation에서 역시 가장 높은 성능을 보이는 FCN 모델을 결합했다.