본문 바로가기
AI/기술

CycleGAN으로 성별 전환 프로그램 만들기 (2)

by ai.forme 2020. 12. 11.
반응형

학교 수업의 일환으로 학교 서버를 빌렸는데, 서버가 잠깐 노는 동안 CycleGAN을 학습시켜보았습니다.

시간 부족으로 Tuning을 제대로 하지 못하여 결과가 웃기긴 하지만 어쨌든 가능성은 보이네요!

 

CycleGAN의 코드에 대한 설명은 하지 않도록 하겠습니다.

시간이 없어 코드 정리도 제대로 못했고, 튜밍도 안되어서!

그럼 중간 결과 포스팅 해보겠습니다.

 


데이터 전처리

 

연예인의 사진에서 얼굴만 Crop 하는 전처리 과정을 거쳤다면, 이번에는 수동으로 데이터의 일관성을 맞추어주는 작업을 거쳤습니다. 제 해석으로는, 남녀의 성별적인 차이를 제외하곤 다른 차이점이 사진에 존재하지 않는 것이 학습에 유리할 것이라고 생각하였기 때문입니다. 그렇기 때문에 특이한 각도의 사진, 분장 사진과 같은 평범한 사진들과는 차이가 큰 사진들을 수동으로 제거해주었습니다. 그렇게 남자 347장, 여자 194장의 사진이 모델 학습에 사용되었습니다. 여자 사진 데이터가 상당히 부족해 보이네요. 아래는 학습에 사용된 사진들의 예시입니다.

 

 

학습에 사용된 예시 사진들

 

앞으로 해줘야 할 데이터 전처리들이 많습니다.

아직 시험 기간이기도 하고, 종강을 안 해서 시간이 많이 없네요!

 

 

학습 곡선

 

Learning Curve

 

모델 학습 곡선을 Tensorboard에 그려보았는데요. 총 800 Epoch으로 돌렸더니 과적합된 것 같습니다.

현재 수치적으로 그 결과를 평가할 수 있는 방법이 없어 휴리스틱 하게 학습을 시키고 있습니다.

다음번에는 모델 튜닝 후 200~300 Epoch정도 돌리면 충분할 것 같습니다.

생각보다 학교 서버 GPU의 성능이 뛰어나 Batch 10으로 하니 금방금방 학습이 되네요.

 

중간 결과

 

충격받지들 마시고.. 중간 결과일 뿐이니! 그저 한번 학습해보고 결과를 출력했을 뿐입니다.

연예인 분들께 올려도 되는지 진심으로 허락을 받아야 되나 고민했는데, 괜찮겠죠..?

 

 

여자 > 남자

 

솔직히 결과가 너무 이상하고 웃기지만, 가능성은 보이지 않나요...? 아닌가요...?

 

 

남자 > 여자

 

연예인분들 제가 정말 귀한 얼굴 제가 망쳐서 죄송합니다.

다음번엔 잘해볼게요...

 

 

추후에 할 작업들

 

결과를 보시면 아시겠지만, 웃음만 나오네요. 덕분에 하루의 시작이 모델 학습 끝난 거 확인하고, 예측 결과 보는 것인데 웃음으로 시작할 수 있어 너무 즐겁습니다. 주위 사람들에게 재미를 주기엔 충.. 분한 것 같지만 좀 더 나은 성능을 위해서 가야 할 길이 아직 멀어 보입니다.

 

 

1. 누끼 따서 배경 제거

성별적인 차이 이외에 다른 부분들을 일정하게 맞춰주기 위한 과정입니다.

 

2. 이미지 화질 맞추기

학습 과정에서 사진을 256 * 256으로 재조정하기 때문에 적어도 256px 이상의 사진을 사용하는 것이 모델 학습에 도움이 될 것 같습니다.

 

3. 사진 더 구하기

사실 2번의 과정이 되려면 3번의 과정이 선행되어야 합니다. 고화질 사진 너무 없어요..

 

4. StarGAN 알아보기

Face Generation 쪽으로 StarGAN이 굉장히 유명하던데, 논문을 한 번 찾아 읽어봐야겠습니다.

 

5. 모델 Tuning

제 프로젝트에 맞게 모델을 수정하는 작업이 좀 필요해 보입니다.

 

 

종강하고는 Kaggle 도 입문해보려고 하는데, 인턴 생활과 함께 이런 토이 프로젝트들 할 시간이 남을지 모르겠네요. 아무튼 하면서도 너무 설레고 재밌는 프로젝트입니다! 연예인분들 다시 한번 죄송합니다..

반응형