1.데이터 준비
고래, 고양이, 공룡 등 여러가지 동물 데이터셋을 수집하였다.
각각 500~700장 가량 수준이 모였다.
2. Training Set 준비 (전처리)
pix2pix를 학습시키기 위해서는 아래와 같은 이미지를 준비해야 한다
좌측이 입력이미지, 우측이 출력이미지가 된다.
이러한 이미지를 학습시키면 트레이닝이 끝난 후 왼쪽과 같은 스타일의 이미지를 입력했을때
우측과 같은 이미지를 만들어 낸다
왼쪽의 이미지는 꼭 스케치한 형태가 아니어도 된다. 아래 이미지처럼 좌측 이미지의 형태를 우측으로 바꾸는데 적용할 수 있다.
다른 것도 그렇지만 흑백이미지를 컬러로 변환하는 것도 눈길을 끈다.
다시 고양이로 돌아가서 스케치한 이미지와 고양이 이미지를 준비할때 개인적인 생각으로 고양이를 사람이 직접 그린것을 쌍으로 준비하면
더 재미있는 결과가 나올 것 같다. 하지만 많은 데이터셋을 준비해야 하기 떄문에 Canny Edge Detection이라는 알고리즘을 사용하였다.
그냥 윤곽선 따주는 알고리즘으로 이해하자
이런 이미지를 Canny Edge Detection 알고리즘을 적용하면
import cv2 def makeImage(input_img, output_img): sum_img = Image.new("RGB",(512,256),(256,256,256)) img = cv2.imread(input_img) img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) img = cv2.resize(img, (256,256)) edges = cv2.Canny(img,170,200) edges = cv2.bitwise_not(edges) img_left = Image.fromarray(edges.astype('uint8')) img_right = Image.fromarray(img.astype('uint8'),'RGB') sum_img.paste(im=img_left, box=(0,0)) sum_img.paste(im=img_right, box=(256,0)) plt.figure(figsize=(15,15)) plt.imshow(sum_img) sum_img.save(output_img) inputimg = './animal_dataset/zebra/122. zebras-makgadikgadi-pans-national-park-631.jpg' outputimg = './test.jpg' makeImage(inputimg, outputimg) |
Canny Edge Detection 의 결과가 개인적으로 만족스럽지 못하다.
알고리즘이 문제라기 보다는 목적에 알고리즘이 맞지 않는 것이 맞겠다
비교적 괜찮은 결과를 보여주는 팬더곰으로 데이터셋을 잡아보자
대략 300개의 데이터를 변환하였다.
'Tech > Machine Learning' 카테고리의 다른 글
Dlib Face Recognition에서 CUDA 가속하기 (1) | 2019.11.15 |
---|---|
pix2pix (2) - 데이터 학습 및 테스트 (0) | 2018.09.14 |
[추천시스템] 딥 오토인코더 추천시스템 논문 번역 : Training Deep AutoEncoders for Collaborative Filtering (0) | 2018.09.12 |