본문 바로가기

Deep Learning/GAN

(14)
Projected GAN 7 https://ostin.tistory.com/20 Projected GAN 4 요즘 포스팅 하기가 귀찮다... 누구 보여줄려고 하는것도 아니고 그냥 안쓰면 게을러져서 쓰는건데 쓰는것도 귀찮아지는중... 대충 추린 이미지 17000+로 학습 진짜 이미지 생성이미지 보간 동영 ostin.tistory.com 이 모델을 피라미터 조정을 통해 쪼끔만 더 개선하고 가짜 이미지 6만개를 생성, 기존 이미지 17000개를 합해 약 8만개의 데이터셋을 만든 후 stylegan2버전으로 학습을 진행해 보았다. 조금 되나 싶더니 하루정도 지나니까 모드붕괴되었다. stylegan2가 모드붕괴 되지 않고 오랫동안 학습했었던 이때 https://ostin.tistory.com/15?category=933364 styleGAN..
Projected GAN 6 오늘은 Projected-fastgan으로 배치 크기 테스트를 해보았다. 테스트 데이터셋 볼짤콘 2500개 batch_size = 4 시작(첫 평가) FID = 25 7시간 정도 학습후 25 ~ 18 batch_size = 8 시작 FID = 23 7시간 30분 정도 학습후 23 ~ 15 batch_size = 16 시작 FID = 23 7시간 정도 학습 후 23 ~ 15 stylegan2의 공식 구현의 디폴트 배치크기가 4이고 내가 처음 다룬 모델인 lucidrains의 stylegan2 모델도 배치가 5였어서 지금까지 그냥 생각없이 저배치를 사용하고 있었는데 일관적이고 단순한 데이터셋이라 그런지 저배치의 효율이 좋지 않은 것 같다. 16은 학습 초반에는 8보다 FID가 빠르게 줄어들었는데 시간이 갈수..
Projected GAN 5 생각보다 성능이 엄청 좋길래 난감한 데이터셋을 사용해 보았다. A.Shipwright라는 분이 다양한 사이트에 꾸준히 게재하는 판타지 한컷 낙서 시리즈이다. 대충 이런느낌 음.. 딱봐도 쉽지 않아보인다. 이미지 사이즈도 큰지라 배치를 8 이상으로 하면 colab의 메모리가 부족하길래 6으로 했다. 뭔가 같은 패턴무늬가 반복적으로 나타난다. 아무래도 Projected-fastgan은 스타일보단 형태를 인식하는데 더 적합하기 때문에 (그리고 GAN가 그냥 그렇다.) 비슷한 스타일 이지만 반복적인 형태가 거의 없는 이 데이터셋으로는 훈련이 안되는 듯 하다.
Projected GAN 4 요즘 포스팅 하기가 귀찮다... 누구 보여줄려고 하는것도 아니고 그냥 안쓰면 게을러져서 쓰는건데 쓰는것도 귀찮아지는중... 대충 추린 이미지 17000+로 학습 진짜 이미지 생성이미지 보간 동영상 후기 글자가 일관적이지 못해서 제대로 만들어지지 않는 듯 하다. 그래도 전체적인 퀄리티는 만족. 최고 FID 4.85
Projected GAN 3 projected gan의 베이스 모델을 stylegan2로 하고 잠재벡터 차원을 줄여서 학습해보니 확실히 다양한 색상이 나오긴 한다. 적은 수의 특징을 찾으려다 보니 색상이 가장 큰 특징이라 그런 것 같다. 하지만 계속 학습을 진행하니 또 모드붕괴됨... 내가 며칠동안 베이스모델을 stylegan2로 하고 fid를 끌어올려볼려고 많은 시도를 해봤는데 딱히 엄청난 성과가 있진 않았다. 지금까지 내가 이 데이터셋으로 stylegan2모델을 많이 돌려봤지만 fid가 50이하로 떨어진 적이 한번도 없었는데 fastgan으로 하면 첫 평가인 16000kimg만에 fid가 20 이하로 떨어진다. 개인이 다양하고 방대한 빅데이터를 마련할 수가 없으니 (물론 오픈된 데이터셋을 사용하면 되긴 하지만 나만의 데이터셋을 ..
Projected GAN 2 베이스 모델을 stylegan2로 바꿔서 돌려봤는데...(stylegan2, fastgan 중에 선택할 수 있다.) (스압 좀 길어요 글만 읽고 싶으면 맨아래로 ㄱㄱ) 그냥 답이 없는듯하다... 이 모델에서는 ADA를 사용하지 않았는데 ADA가 없어서 그런건지 그냥 데이터셋이 답이 없는건지... ADA도 사실 이미지 수를 늘리는 일종의 트릭이니 작은 데이터셋에서는 fastgan이 훨씬 효과적인듯 하다. 근데 fastgan에서는 자가복제 문제가 생기는데, 실제 이미지 중 세 명 이상이 나오는 이미지는 하나도 없는데도 불구하고 저런 이미지들이 생긴다. 엄청나게 빨리 수렴하긴 하지만 그 뒤로는 계속 발산하는 것도 문제고. 내가 샤워하면서 생각해낸 게 있는데, (아르키메데스 괜히 목욕탕에서 유레카를 외친게 아닌..
Projected GAN 1 styleGAN 포스팅의 끝에서도 언급했지만 https://github.com/autonomousvision/projected_gan GitHub - autonomousvision/projected_gan: [NeurIPS'21] Projected GANs Converge Faster [NeurIPS'21] Projected GANs Converge Faster. Contribute to autonomousvision/projected_gan development by creating an account on GitHub. github.com 앞으로 이 모델을 사용할 예정이다. 일단은 뭐... 모드 붕괴가 일어나 버렸고 밑에서부터 읽는 게 맞는건가 싶을 정도로 수상하게 발산하는 FID.... 시작전부터 ..
styleGAN 학습을 위한 여정 7 - 진짜 끝 1. Attention 진짜 별의별 시도를 다 해봐도 꿈쩍도 안하던 FID가 어텐션 레이어를 추가하니 조금씩 줄어들었다. 크게 개선되진 않았지만. 2. Palette Image 팔레트 이미지를 RGB로 변경하면 아래와 같은 경고가 뜨는데 경고만 항상 뜨고 에러가 발생하진 않고 이미지를 출력해봐도 별로 문제없길래 그냥 무시했었는데 실제로 RGB이미지로 변경이 되지 않았던 거였다. 팔레트 이미지는 RGBA로 변경한 다음 RGB로 변경해야 한다. RGBA로 변환한 후에 여정 6에 있던 RGB 변환 함수로 변환했다. 3. 그리고 여정을 끝내버린 치명적인 문제점이 있었는데... 내가 초기 데이터셋을 계속해서 추가, 삭제하면서 데이터셋의 많은 변화가 있었는데, 초기 데이터셋의 RGBA이미지들을 RGB로 강제변환 했..
styleGAN 학습을 위한 여정 6 5까지를 마지막으로 하고 후기까지 썼는데 그냥 완성해보고 싶어서 5탄에서 학습하던 모델 마저 돌려봄 계속 돌리니까 모양이 잡혔다. 그리고 여러가지 문제들을 수정했다. 1. RGBA 이미지 RGBA 이미지를 RGB 이미지로 변환 하면 투명한 부분이 이상한 패턴무늬로 바뀌는 경우가 있다. 대부분의 이미지들의 바탕이 흰색이기 때문에 다음 코드로 RGBA 이미지의 투명부분을 흰색으로 처리한 후 RGB이미지로 저장했다. img = Image.open('이미지 경로') if img.mode == 'RGBA': img.load() background = Image.new("RGB", img.size, (255, 255, 255)) background.paste(img, mask=img.split()[3]) # 3 i..
styleGAN 학습을 위한 여정 5 + 후기 데이터셋이 문제라는 것을 깨닫고 새로운 대책을 생각해 냈는데, 기존 데이터셋과 비슷하지만 다른 데이터셋을 가짜로 판단하도록 판별자를 학습시키는 것이다. 저번의 글에서 GAN는 생성 이미지의 확률분포와 목표 데이터셋의 확률 분포를 근사시키는 것이라고 했었다. 위 이미지의 진한 회색의 안쪽으로 근사될수록 더 진짜같은 이미지를 생성해 내는 것이다. 지금 내 데이터셋이 질이 좋지 않아 공간 자체가 모호한 상황이고 그래서 학습이 진행되지 않는다. 실제 latent vector는 단순한 2차원이 아닌 훨씬 고차원이기 때문에 쉽게 근사시키기가 힘들다. 다른 데이터셋을 가짜로 판단하도록 학습시킨다는 게 무슨 뜻이냐면 분포 내부에 대한 정보(실제 데이터셋) 뿐만 아니라 바깥에 대한 정보를 줌으로써 확률분포 공간의 경계에..
styleGAN 학습을 위한 여정 4 진짜 며칠동안 이것도 해보고 저것도 해보고 수많은 피라미터들과 씨름을 해온 결과 데이터셋이 문제인 것을 알았다. GAN의 학습은 latent vector에서 생성된 이미지의 확률분포를 실제 이미지의 확률분포에 근사시키는 과정인데 내 데이터셋은 이미지가 다양하지 않고 몇개씩 비슷한 이미지들이 꽤 많아서 바닐라GAN을 쓰기도, 조건부 GAN을 쓰기도 애매한 그런 위치에 있다. 보통의 GAN 학습에 쓰이는 데이터셋이 이런 고른 분포이고 조건부 GAN에는 이런 라벨별로 분류된 데이터가 쓰이는데 내 데이터셋은 뭔가 이런 느낌. 그냥 GAN을 쓰기엔 유사한 이미지들이 몇개씩 뭉쳐있고, 조건부 GAN을 쓰기엔 너무 종류가 많은데다 라벨별 데이터가 50개도 안된다. 그래서 일단 그냥 GAN을 쓰고 정답이 아닌 이미지를..
styleGAN 학습을 위한 여정 3 이전글 https://ostin.tistory.com/8 https://ostin.tistory.com/9 이전 글의 이미지들을 보면 여러 개의 이미지들이 거의 똑같이 생성됐다. 사실 이렇게 이미지들이 각각 다르게 생성되야 잘 훈련된 모델이다. 똑같은 이미지들이 계속 생성 되는 걸 모드 붕괴(Mode Collapse)라고 하는데 판별자의 성능이 생성자에 비해 너무 강해서 생성자가 판별자를 속이지 못하고 가장 손실이 낮은 하나의 이미지만 반복 생성하게 되는 것이다. 그 반대의 상황도 있을진 모르겠지만 어쨋든 거의 모든 상황에서는 판별자가 강하다. 모드 붕괴를 막기 위해서 여러가지 시도를 해 보았는데 1. 배치사이즈 줄이기 배치 사이즈가 클수록 판별자의 성능이 좋아진다고 한다 2.augmentation 늘리..