본문 바로가기

Deep Learning/GAN

styleGAN 학습을 위한 여정 2

이전 글

https://ostin.tistory.com/8

 

augmentation을 수정하고 그 이후로도 계속 학습을 진행 했는데....

16000 ~ 22000 steps

 

이미지가 계속 뭉쳐졌다 풀어졌다를 반복하며 어느 단계 이상으로 진행이 안 된다.

오히려 7000스텝 때의 이미 더 형체가 있을 정도다.

7000 step

보면 실제 이미지 중 하나와 비슷하다.

훨씬 비슷한 이미지가 있기는 한데 데이터갯수가 갯수인지라 그냥 이걸로 ㅎ

 

loss를 코드 제작자가 소개한 dual constrative loss를 쓰고 있었는데 hinge loss로 바꾸고 다시 돌려봤다.

이전보다 더 괜찮은 결과나 나오긴 한다.

하지만 다시 뭉개지는 모습.....

 

 

계속해서 뭉개지는 이미지들을 보니 이건 피라미터만의 문제가 아니라는 생각이 들었고..

augmentation을 diff-augment에서 ada로 바꾸는 게 좋을 것 같았다. 

stylegan2 official code https://github.com/NVlabs/stylegan2-ada-pytorch

여기서 ada의 구조를 보고 내가 쓰던 네트워크에 적용해 보기로 했다.

사실 저걸 구현 해 보려다가 당시엔 내가 너무 모르는 게 많아서 포기한 적이 있었고 이번에도 코드를 보니 약간 어지러웠지만.. 정신을 붙잡고 천천히 뜯어보면서 ada를 이식하는 데 성공했다. torch_utils와 dnnlib은 그대로 쓰긴 했지만.

 

그리고 hinge loss가 자주 쓰인다고 하던데 내가 본 코드제작자가 코드를 잘못 썼는지? D의 출력결과가 이상하게 나오고 그게 맞다고 해도 ada를 업데이트 하는데 알맞는 출력 유형이 아니라서 softplus 함수를 이용한 logistic loss로 바꾸었다.

 

ada 이식하다가 충격적인 것을 발견했다.

내가 구도 맞추려고 이미지 위치를 이동시키는 augmentation을 다 뺐었는데, augmentation 말고 model 라이브러리에 hflip 하는 코드가 한줄 있었음... 보고 놀라서 바로 지웠다.

 

attention layer도 잡아먹는 자원에 비해 성능 향상이 좋지 않다는 글을 보고 그냥 뺐다.

 

진짜 쌩독학에 모르는 코드도 너무 많아서 하루종일 걸림..;

 

 

 

 

+ hflip 문제 아님. 다시 추가함