[Segmentation] Image Segmentation

김고은·2022년 10월 6일
1

What is Segmentation

바운딩 박스(Bounding box)로 검출된 물체들을 나타내는 객체검출(Object detection)과는 다르게 이미지 분할(Image segmentation)은 픽셀의 분류(Classification) 문제이다.

네트워크가 입력 이미지 안의 모든 픽셀을 (지정된 개수의)클래스로 분류하는 것을 목표로 한다.

Segmentation의 종류

  • Sementic Segmentation
    : 각 pixel이 어떤 클래스인지 구분하는 문제
  • Instance Segmentation
    : Sementic Segmentation보다 더 나아가 같은 클래스 안에서 서로 다른 객체 (instance) 까지 구분하는 문제

Image Segmentation Network

작동 원리

Image Segmentation Network는 아래의 첫번째 이미지와 같이 각 pixel이 N개의 클래스 중 어떤 클래스에 속하는지를 나타낸 Segmentation map을 출력한다.

(Segmentation map은 클래스의 개수와 동일하게 N개의 channel로 구성되어 있다.)

최종적으로는 두번째 이미지와 같이 Segmentation map에 argmax를 통해서 아래 이미지처럼 1 channel 이미지를 출력으로 내보낸다.

기본 구조 : Encoder & Decoder

핵심 아이디어

  1. 입력 이미지의 W, H 를 줄이고, channel 수를 늘려 feature의 개수를 증가시킨다.
  2. W, H 를 입력이미지의 사이즈로 회복, channel 수는 클래스의 사이로 맞춰 Segmentation map을 생성한다.

물론 입력이미지의 W, H를 보존하면서 feature를 추출하면 좋겠으나, 메모리 문제로 입ㄹ겨이미지의 W, H를 유지하면서 feature를 추출할 수 없다.

아래와 같이 네트워크를 구성하고 학습을 진행하면 Instance/Sementic 별 pixel이 분할되도록 네트워크의 가중치가 학습된다.

profile
veloger

0개의 댓글