Semantic Segmentation

1. 시맨틱 분할이란

jwjwvison 2021. 11. 20. 17:25

 이번 포스팅에서는 화상 처리 중 하나인 시맨틱 분할(semantic segmentation)을 학습하면서 딥러닝 모델인 PSPNet(Pytamid Scene Parsing Network)를 설명한다. 먼저 시맨틱 분할의 개요와 VOC 데이터셋, PSPNet을 활용한 시맨틱 분할의 입출력에 대해 알아보겠다.

 

  • 개요

 한 장의 화상에 포함된 여러 물체의 영역과 이름을 픽셀 수준에서 지정하는 작업을 시맨틱 분할이라고 한다. 다음 그림은 학습시킨 모델로 분할한 결과이다.

 시맨틱 분할에서는 픽셀 수준으로 '어디에서 어디까지 어떠한 클래스 물체인지' 라벨을 붙인다. 

 

 제조업의 흠집 탐지, 의료 영상 진단의 병변 감지, 자율 운전의 주변 환경 파악 등에서 시맨틱 분할 기술을 사용한다.

 

  • 시맨틱 분할의 입출력

 시맨틱 분할의 입력은 화상이고 출력은 각 픽셀이 속한 클래스의 라벨 정보이다. 입력 화상의 크기가 세로 300픽셀, 가로 500픽셀, 분류할 물체의 클래스 수가 21종류라고 하자. 출력은 300x500 배열이 되고, 배열의 요소에는 물체의 클래스를 나타내는 인덱스 값 0~20중 하나가 저장되어 있다. 이 출력(각 픽셀이 어떠한 물체 클래스에 속하는지의 인덱스 값)을 화상으로 만들면 위의 그림중 아래의 그림과 같은 모습이 된다.

 

 일반적으로 화상 데이터는 RGB 3요소 (또는 투명도 A를 합한 4요소)의 배열로 표현된다. 그렇지만 시맨틱 분할의 출력은 요소가 하나이고 RGB 정보가 아닌 물체 클래스의 인덱스 값이 라벨 정보로 저장되어 있다.

 

 화상 표현 기법은 색상 정보를 표현하는 컬러 팔레트 형식을 취한다. 0부터 순서대로 각 숫자에 RGB를 대응시킨 컬러 팔레트를 준비하고 해당 숫자(물체 라벨)와 RGB 값을 대응시킨다. 즉 컬러 팔레트 한 요소의 RGB를 표현할 수 있다. 예를 들면, 물체 라벨이 0이면 배경 클래스를 나타내고 컬러 팔레트 값은 RGB=(0,0,0) = 검은색을, 물체 라벨이 1이면 비행기 클래스를 나타내고 컬러 팔레트 값은 RGB=(128,0,0)=빨간색으로 한다고 해보자. 출력이 300x500인 배열에서 배열 값이 0인 부분은 검게 하고 1인 부분은 빨갛게 나타내게 된다.

 

 

  • VOC 데이터셋

 PASCAL VOC2012 데이터 중 시맨틱 분할용 어노테이션이 포함된 화상 데이터만 사용한다. 각 화상에는 어노테이션 데이터로 컬러 팔레트 형식의 PNG 데이터가 준비되었다.

 

  • PSPNet을 활용한 물체 감지 흐름

다음 그림은 PSPNet을 활용한 시맨틱 분할의 4단계 흐름이다.

 3단계에서 픽셀별 신뢰도가 최고로 높은 클래스 정보가 시맨틱 분할의 출력이 된다.