수리수리연수리 코드얍

[EECS 498-007/598-005] 16강. Detection and Segmentation(3) 본문

놀라운 Deep Learning/Deep Learning for Computer Vision

[EECS 498-007/598-005] 16강. Detection and Segmentation(3)

ydduri 2023. 3. 3. 15:03

4. Segmentation: Instance Segmentation

지금까지의 16강에서 object detection, semantic segmentation 등의 내용을 다루었는데, computer vision의 task는 아직 끝나지 않았다. 또다른 segmentation 방법을 소개하기에 앞서 things와 stuff에 대해 정의하고 가도록 하자. object는 크게 things와 stuff로 분류될 수 있는데, things란 instances로 나뉠 수 있는 object, 예를 들면 고양이, 자동차, 사람 등을 의미하고, stuff란 instances로 나뉠 수 없는 object, 일례로 하늘, 풀, 물, 나무 등이 이에 속한다.

지금까지 본 computer vision task 중 object detection은 things에 대해서만 detection을 하는 것이고, semantic segmentation의 경우 things, stuff 모두에 대해 라벨링을 하지만, things object의 instances를 세분화할 수는 없었다.

지금부터 다룰 instance segmentation은 object detection과 segmentation의 콜라보라고 할 수 있다. things에 대해서만 detection을 한 뒤에, 각 things를 instance로 세분화하여 라벨링까지 하는 작업이다. 먼저 object detection을 수행한 뒤, 각 object에 대해 segmentation을 하게 된다.

이를 구현하기 위해서는 mask R-CNN을 이용해야 하는데, 이는 앞서 object detection 파트에서 배운 faster R-CNN과 구조가 매우 흡사하나, 우리가 detect한 object들에 대해 segmentation을 수행하는 ‘mask prediction’ branch가 추가됐다는 차이점이 있다.

mask R-CNN은 faster R-CNN과 비슷한 구조를 가진 만큼 동작 과정도 유사하다. image level features를 얻기 위해 input image를 backbone CNN에 집어넣는다는 점, region proposal network를 통과한다는 점, 각 region proposal에 대해 feature map을 얻기 위해 RoI Align을 수행한다는 점은 object detection 과정과 동일하다.

이후 segmentation mask를 예측하기 위해 앞서 과정을 통해 detect한 object에 대해 semantic segmentation network를 수행하게 되는데, 이것도 이미 배웠던 내용이다. 차이점이라면 전체 input image가 아니라 object detection을 통해 추출한 object에 대해서만 semantic segmentation을 수행한다는 것이 다를 뿐, 지금까지 배운 object detection과 semantic segmentation의 조합이라고 보면 된다.

아래 그림의 예시들은 segmentation mask의 training target이 bounding box에 따라 달라지는 것을 볼 수 있도록 해주는데, bounding box가 의자 크기에 딱 맞게 생성됐을 때는 위와 같은 형태로, 조금 더 여백을 두고 생성됐을 때는 아래와 같은 형태로 segmentation이 이루어진다.

segmentation 결과는 object의 카테고리 라벨에 따라서도 달라지는데, segmentation을 하고자 하는 object를 소파로 잡았을 때는 위와 같은 형태로, object를 사람으로 잡았을 때는 아래와 같은 형태로 segmentation이 이루어진다.

mask R-CNN을 사용했을 때 instance segmentation 결과가 매우 좋은 것을 확인할 수 있다.

5. Beyond Instance Segmentation

1) Panoptic Segmentation

여기서부터는 좀 더 발전된 형태의 segmentation task를 가볍게 소개하는 시간이니 편하게 보면 될 것 같다. semantic segmentation과 instance segmentation을 합친, things와 stuff 모두에 대해서 labeling을 해주면서 각각의 instance를 구분까지 할 수 있는 panoptic segmentation도 존재하는데,

이 또한 매우 좋은 성능을 내고 있다고 한다.

2) Human Keypoints

특히 사람에 대해서 segmentation을 하는 것에서 더 나아가, 그들의 포즈를 보다 디테일하게 분석하려는 시도도 존재하는데, 이를 위한 방법론 중 하나가 key point estimation이다. 눈, 귀, 코, 관절 등을 key point로 하여 각각의 위치를 예측하는 방식이다.

keypoint estimation에도 mask R-CNN이 좋은 성능을 발휘한다. instance segmentation을 위해서 faster R-CNN에 mask prediction을 더해 mask R-CNN을 만들었던 것처럼, mask R-CNN을 keypoint estimation 작업에 활용하기 위해서는 keypoint prediction을 추가해야 한다. 모델의 동작 방식은 mask R-CNN과 동일하나, 딱 한 가지, semantic segmentation mask 대신 k개의 keypoints에 대한 keypoint mask를 활용한다는 차이점이 있다.

이 task에 대해서도 굉장히 좋은 성능을 내고 있는 것을 볼 수 있다.

3) Dense Captioning

그밖에도, faster R-CNN의 뼈대에 caption prediction을 위한 LSTM 모델(자연어 처리-NLP- 분야의 모델_을 더해서 detect한 object에 대해 자연어로 설명을 덧붙일 수 있는 연구도 진행되었다.

4) 3D Shape Prediction

또한, mask R-CNN에 mesh head를 결합함으로써 2D image로부터 3D shapes를 생성해내는 기술도 개발되었다고 하는데, 이에 대해서는 다음 강의에서 자세히 다룰 예정이다.

5) General Idea

지금까지 설명을 들으면서 감이 왔겠지만, computer vision의 많은 task들은 이처럼 faster R-CNN이나 mask R-CNN에, 새로운 종류의 output을 낼 수 있도록 특화된 추가적인 ‘head’를 붙임으로써 수행할 수 있다.

 

Comments