송편 생성기 (추석 대회)

created : 2020-04-07T11:16:06+00:00
modified : 2020-04-08T03:41:51+00:00

추석을 맞아 송편을 창의적으로 출력하기 대회가 열렸다. 먼가 인공지능으로 가장 완벽한 송편을 출력해보고 싶어졌다.

0. Configuration

먼저 인공지능 스택으로 배운건 Tensorflow, Keras이기 때문에 언어는 편하게 모두 python으로 하기로 결정했다.

그렇게 언어를 정하고 과정을 다음과 같이 나눴다.

  1. 송편 이미지 크롤링 하기
  2. Keras를 통해 GAN모델을 구현해서 한번 테스트 해보기
  3. 나온 결과를 확인하고 모델을 학습 데이터 특성에 맞춰서 재설계, 데이터 가공, 통계적으로 분석… 등등 원하는 결과를 내도록 설계

이렇게 정하고 나니 필요한 라이브러리는 다음과 같았다. requests, beautifulsoup, tensorflow, keras, pandas

최근에 i3로 환경을 재구축하다보니 재대로된 python 환경이 하나도 없어서 겸사겸사 아는분 (양예비역님 떠나고 나서야 빛인줄 알았습니다.이 추천해준 anyenv 까지 설정해보기로 했습니다.

anyenv 로 pyenv 설치

git clone [https://github.com/anyenv/anyenv](https://github.com/anyenv/anyenv) ~/.anyenv

echo 'export PATH="$HOME/.anyenv/bin$PATH"' >> ~/.zshrc

echo 'eval "$(anyenv init -)"' >> ~/.zshrc

anyenv를 다 깔았으니 pyenv를 깔자

anyenv install pyenv

근데 알아보니까 pyenv 는 pyenv-virtualenv plugin이 있으면 virtualenv 를 쉽게 할 수 있다고 한다.

git clone git/git://github.com/yyuu/pyenv-virtualenv ~/.anyenv/envs/pyenv/plugins/pyenv-virtualenv

echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.zshrc

금방 다깔았다.

이제 pyenv 설정이 끝났다. workspace 폴더나 만들어주자

나는 ~/workspace/songpyeon 에 구축했다.

이제 사용할 파이썬 버전을 깔아보자

pyenv install 3.7.4 를 해줘서 깔았다.

1. Keras Test

케라스로 한번 테스트 해보자. 흔하디 흔한 예제인 MNIST를 돌렸다.

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/e7ab56a0-fbdb-4608-ba3c-585cac01f4de/MNIST_test.pdf

잘 돌아간다. 코드는 다른 곳에서 적당히 찾아 붙였는데 그 과정에서 에러를 너무 많이 맞아서 수정하다보니 원본 블로그를 닫아버려서 링크를 못걸었다.

MNIST test.ipynb

2. 송편 이미지 크롤링하기

[https://s3-us-west-2.amazonaws.com/secure.notion-static.com/bc0b880d-2057-4dbb-8581-0fb2f661ad25/scrapping_songpyeon_-Jupyter_Notebook.pdf](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/bc0b880d-2057-4dbb-8581-0fb2f661ad25/scrapping_songpyeon-_Jupyter_Notebook.pdf)

scrapping_songpyeon.ipynb


여기까지가 추석연휴 1일차(약 1시간 30분)간 진행됬다. 추석연휴에는 놀아야 하므로 여기까지

3. 송편 이미지 학습시키기

간단하게 잘 돌아가는지 체크하기 위해섯 128x128 이미지로 해봤다.

songpyeon_generator.ipynb

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/b78ab051-45cc-42fc-ac4b-513a4ee04a16/songpyeon_generator.pdf

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/33cb72fc-5114-4d96-b7e5-d5d20dcec50a/generated_0.png

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/47123adc-f356-4c58-b7f5-0ae10ecb17fd/generated_100.png

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/1c98bea0-842b-4d38-ac9d-55bcdffde65c/generated_200.png

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/c9f353a8-0988-4ec8-93cc-2ae4599c04a4/generated_300.png

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/6ed3228f-d347-401e-ac45-0650cba85dfc/generated_400.png

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/711ae415-3200-48c2-bc86-5e3195b80f3c/generated_500.png

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/c4f72336-1edc-4b63-a307-e982c88f852f/generated_600.png

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/fd4f4128-3aa8-4a36-9e3f-ad8b22a3f2fc/generated_700.png

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/a8054991-fb03-4486-86c3-357e72302b21/generated_800.png

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/c6623009-289e-4e4c-a450-f0f23b1310ea/generated_900.png

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/e15aa2bf-490e-4759-88e5-404d1c719cc3/generated_1000.png

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/544abf88-212c-4d64-8d22-d90d8d04e629/generated_1100.png

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/4251fac9-a4fe-4320-8732-f18f91f441a7/generated_1100.png

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/8304c2d6-3bb0-4e22-8f24-b9e7f6a57e50/generated_1200.png

흐음? 나도 못알아보는 이미지를 계속 뱉는다. ㅠ 300까지는 괜찮았던거 같은데

이미지 해상도를 높여보자

4. 해상도 높여서 다시 학습??

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/aa43d695-7520-4dda-8364-37246954f4f0/2019-09-13-101204_921x1006_scrot.png

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/3043c4ea-8d60-4d7c-8b5b-4f952cb41a82/2019-09-13-100946_921x1006_scrot.png

8GB 짜리 장비에선 안돌아간다 ㅠ

AWS에서 돌릴까 싶었으나… 돈들이긴 아쉬워 여기까지 진행했다.

5. Summary