본문 바로가기

인공지능

Semantic segmentation에서 입력 데이터 전처리 하는 방법

Semantic segmentation이란?

 

이미지에 무엇이 있으며, 어디에 있는지 레이블링을 하는 것이다.

 

자율주행에 사용되는 실시간으로 segmented된 도로

 

Labeling을 하는 방법

 

입력으로 들어가는 RGB 이미지의 shape은 (H x W x 3)이다.

그리고 semantic segmentation model을 통과해서 나온 결과 이미지의 shape은 (H x W x 1)이다.

쉽게 설명하기 위해 5개의 label로 간단히 표현하였다.

 

그래서 데이터 전처리를 하는 방법은?

 

Semantic Segmentation 모델도 Supervised Learning을 하기 때문에, 입력으로 이미지와 그에 해당하는 segmented map을 넣어야 한다.

Semgented map은 앞에서 설명했듯이 shape이 (H x W x 1)이다. 그리고 각 픽셀은 클래스를 나타낸다.

 

Segmented map을 모델에 넣기 위해서는 one-hot encoding을 사용하여 shape이 (H x W x class의수)가 되도록 만들어야 한다.

 

 

PyTorch 코드로 정리하면 다음과 같다.

 

label_map = segmap.long() # segmented map
bs, _, h, w = label_map.size()
nc = args.label_nc # the number of classes
FloatTensor = torch.cuda.FloatTensor if torch.cuda.is_available() else torch.FloatTensor
input_label = FloatTensor(bs, nc, h, w).zero_() # 새로 만들어질 map의 shape이 (bs, nc, h, w)가 된다.
input_semantics = input_label.scatter_(1, label_map, 1.0) # 새로 만들어진 map인 input_semantics

 

총평

Semantic segmentation을 활용한 모델을 만들 때, 가장 어려웠던 것 중 하나가 데이터 전처리였다.

Segmented Image를 사용해 본 적이 없었기 때문에 헤매었었다.

다음번에는 데이터 전처리 부분을 헤매지 않고 후딱 처리하길 기대한다!

 

참고

https://www.jeremyjordan.me/semantic-segmentation/

 

An overview of semantic image segmentation.

In this post, I'll discuss how to use convolutional neural networks for the task of semantic image segmentation. Image segmentation is a computer vision task in which we label specific regions of an image according to what's being shown. "What's in this im

www.jeremyjordan.me

 

'인공지능' 카테고리의 다른 글

초거대 AI란 무엇인가?  (1) 2022.10.27
Multi-Modal (멀티 모달) AI  (1) 2022.10.26
Convolutional Neural Networks 기초  (0) 2022.10.25
Few-Shot Learning  (0) 2022.10.24
FID (Frechet Inception Distance) 란 무엇인가?  (0) 2022.10.24