본문 바로가기
AI/vision

Image Segmentation 실습

by lucian 2021. 8. 9.

지난번 옥스포드 pets영상을 사용하기로 함.

지난 번 6개 라인(헤더)은 제거하고 나머지에 대해서 라인을 읽음

 

image_file은 원본영상이고, mask_file은 segmantic된 영상이 있는 파일이다.

 

예시.

데이터셋은 numpy로 바꿔준 다음에

split을 한 후 리턴해줌.

 

load_oxford_pets_2()란 함수를 정의를 했음.

x_train과 x_test는 기존 데이터셋에 0~1사이의 값으로 normalize해서 넣어준다.

 

y_train에선 1: 배경 2:object 3:boundry 픽셀을 -1로 해서 0,1,2로 해줌

 

train dataset은 5880개, test dataset은 1469개

상이즈는 128x128 채널은 RGB 3개의 채널

y_train은 채널이 한개짜리 라벨 마스크

 

3개의 채널을 갖는 128x128 이미지가 들어가고, 구분할 num_classes는 3개이다.(배경, 객체, boundry)

down은 계속 사이즈가 작아지는(downsampling) layer를 뜻한다.

center는 여기서는 사이즈를 바꾸진 않지만 conv를 두번정도 수행해줌

up은 upsampling이 일어남.

 - concatenate함수가 down1과 up1를 합치는 부분(손실된 정보를 채우는 부분)

 - upSampling을 먼저 수행후 같은 사이즈를 만들어 놓고 concatenate함수를 수행

1x1 conv를 수행해서 하나의 채널이 나오게 함. (채널은 클래스별로 나옴)

 

 

 

 

이제 fit함수를 써서 학습을 시키면..

#7에서 test 데이터에 대해 pred_mask를 만든 후

display함수를 써서 원래 영상과 y_test(ground truth)와 pred_mask를 비교한다)

epoch를 현재는 3인데 3은 너무 적고 최소 20은 해야함.

 

아주 간단한 UNet이라 결과가 좋진 않음..

 

이번엔 Unet 구조를 조금 더 깊게 만들어 보자.

모델의 구조가 많이 복잡해짐을 볼 수 있다.

 

이제 아까 학습시키는 코드를 사용하여 학습을 시켜 결과를 보게 되면.

 

predicted Mask가 true Mask와 많이 가까워진 것을 확인할 수 있다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'AI > vision' 카테고리의 다른 글

GAN - Pix2Pix, ConditionalGAN, CycleGAN  (0) 2021.08.10
DCGAN 실습  (0) 2021.08.09
MaskRCNN, custom MaskRCNN  (0) 2021.08.09
Pose and Face Estimation  (0) 2021.08.09
Semantic Segmentation - FCN/PSPNet  (0) 2021.08.09

댓글