Deep Learning study

[Pytorch] GAN 을 이용한 Black & White image Colorization 최종 본문

AI/Pytorch

[Pytorch] GAN 을 이용한 Black & White image Colorization 최종

HwaniL.choi 2018. 4. 6. 14:48
반응형

이전에 3번의 시도에 거쳐서 했던 실험을 끝내려고 한다 


최종으로 만들어낸 모델을 살펴 보자.


사실 음.. 전에 것과 별반 차이는 없는것 같다.. 


Generator


내가 구성한 모델은 다음과 같다.



흑백이미지를 노이즈와 합쳐준것을 input으로 넣어준다.


Conv layer 와 maxpool 로 이미지를 encode 한다 (encode한다는 말이 맞는건지는 잘 모르겠다.)


그런다음 maxpool layer를 거치면서 줄어든 사진크기를 deconvolution 으로 decode 하면서 크기를  복원시켜나간다.


decode 하는 과정중에 encode 과정에서의 output을 계속해서 더해줬는데 , 저 과정 없이 실행을 했었더니(trial2) 형체를 알아보기 힘든 모양이 나왔다.


그래서 원래 이미지의 모양을 잊지 말라고 상기시켜주는 ..? 정도의 작업으로 생각하고 더해주었다. 


그리고나서 마지막 layer에는 tanh 로 (-1,1) 의 값을 뽑아내고 3개의 channel로 conv 해서 RGB이미지를 표현할 수 있도록 했다.


Discriminator


Discriminator는 이미지 분류학습을 하듯이, Conv layer를 거치면서 마지막에 Fully Connected Layer를 붙여서 이미지가 Real 인지 Fake 인지를 구분 할 수 있도록 만들어 주면 된다. 


이것에 대해서는 생략해야겠다.



Result



어쨌든 결과는 아래와 같다.

차례대로  input(흑백이미지)

original image(원래의 color 이미지)

output(Generator 가 생성해낸 color 이미지)


순서이다.




보면 잘 된것도 있고 , 아닌것도 있는데 잘 안된것을 보면 원래 사진조차도 알아보기 힘든 경우가 많았다. 


그리고 결정적인 이유 (매우 주관적인) 는 RandomResizedCrop을 쓰니 일단 개와 고양이가 아닌 부분들이 잘려서 input이 되는 경우가 많았다.


예를들어, 다리부분만 짤린다던가 몸통만 짤린다던가 심지어 배경만 나오는 등의 경우가 많았고, 또한 이 이미지들은 kaggle cat vs dog  classification 을 위한 이미지들이라서 원본 자체가 품질이 좋지가 않다.


어찌됐던 내 생각보다는 꽤나 성공적이였던것 같다.


나중에 좀 더 많은 데이터가 생기고, 더 많은 지식이 생긴다면 다시 한번 해봐야겠다.


코드는 제 GitHub 오시면 보실 수 있습니다. 



Reference

https://taeoh-kim.github.io/blog/gan을-이용한-image-to-image-translation-pix2pix-cyclegan-discogan/

https://github.com/yunjey/pytorch-tutorial/tree/master/tutorials/03-advanced/deep_convolutional_gan

반응형
Comments