Deep Learning/Computer Vision

w15 과제 2 pix2pix 또는 cycleGAN 예제 코드를 다른 데이터셋을 활용하여 실행해보기

makeitworth 2021. 8. 17. 16:35

사실 custom YOLO / custom MaskRCNN 만들기 과제가 더 어렵고, 남는 게 많을 것 같았지만, 과제 1에서 수많은 시행착오를 겪는데 너무 많은 시간을 소비해서 상대적으로 가벼운 과제를 선택해 실행하였다.

 

pix2pix와 cycleGAN은 텐서플로우 튜토리얼 코드를 실행하면서 walkthrough 로 코드를 간단히 설명해주는 동영상 강의를 보았는데, 솔직히 line by line 코드를 이해하기는 어렵다는 생각이 들었다.

 

https://www.tensorflow.org/tutorials/generative/pix2pix?hl=ko 

 

Pix2Pix  |  TensorFlow Core

이 노트북은 Conditional Adversarial Networks를 사용한 이미지 간 변환에서 설명한 대로 조건부 GAN을 사용한 이미지간 변환을 보여줍니다. 이 기법을 사용하여 흑백 사진을 채색하고, 구글 지도를 구글

www.tensorflow.org

https://www.tensorflow.org/tutorials/generative/cyclegan?hl=ko 

 

CycleGAN  |  TensorFlow Core

이 노트북은 CycleGAN이라고도 하는Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks에 설명된 것처럼 조건부 GAN을 사용하여 쌍으로 연결되지 않은 이미지 간 변환을 보여줍니다. 이 논

www.tensorflow.org

그래서 코드를 많이 수정하지 않고, 인풋 부분만 손을 보는 정도로만 과제를 수행하기로 했다.

 

 

1. 새로운 데이터로 pix2pix모델을 실행해보는 과제를 실시하였습니다. 
2. 데이터셋은 https://www.kaggle.com/norod78/sketch2pokemon 에서 다운로드 받은 830개 포켓몬 캐릭터의 스케치와 채색된 ground truth 쌍 데이터 셋을 활용하였습니다.
3. 데이터가 train-test split 정도를 제외하면 크게 전처리하는데 어려움이 없는 데이터였기 때문에 어렵지 않게 pix2pix model을 재현해 볼 수 있었습니다.
4. real image보다 색상이나 구조의 조합이 단순했기 때문에 비교적 퀄리티 높은 결과물 출력이 가능했다고 생각합니다.

 

 

cycle GAN의 경우는 튜토리얼 코드가 아예 데이터도 tfds에서 불러오고, 코드도 설치된 tensorflow_examples 패키지를 통해 Pix2Pix에서 사용되는 생성기와 판별자를 가져온 것이었다. (그러고 보니, pix2pix 패키지이니만큼, pix2pix 과제도 이 패키지를 활용해 고쳐볼 수 있을 것이다.)

그리고 연산속도도 pix2pix 보다 더 느리고 생성된 결과물도 사람의 눈으로 볼 때 썩 만족스럽지는 않았다. (예제 코드에 나온 epoch 40 정도의 수준에서는. 논문에서는 200회로 적혀있다고)