한 때, 게임을 개발하고 싶어서 여러 리소스를 찾은 적이 있었다. 라이센스 적으로 문제 없는 이미지, 사운드, 음악 이런 것들을 찾아 보았다. 이미지는 정말 안돼면 Gimp 나 inkspace 를 통해 어떻게든 시간을 들여서 만들고 사운드는 정 안돼면 여러 사운드를 직접 녹음하는 방법도 생각할 수 있을 것 같은데, 음악은 정말 어떻게든 만들 수 있는 방법이 없었다. 생각할 수 있는 방법은 고전 클래식 음악을 이용하는 정도 였다. (그래도 요즘은 뒤져보면 라이센스 적으로 문제 없는 음악들이 늘어 난 것 같다. )
이런 고민을 한 때 하다가 자동 작곡에 대한 글을 보았다.( https://github.com/jamong/music-rnn ). Deep 러닝에 관심이 생기다 보니 한 번시도해 보았다.
아래 세팅은 Windows 10을 기준이다.
▣ Theano설치
◎ TDM-GCC 설치
◎Ⅰ. http://www.lfd.uci.edu/~gohlke/pythonlibs/ 를 통한 설치
◎Ⅱ. 직접 컴파일
○ 우선 TDM-GCC 설치
○ https://github.com/Theano/Theano 에서 zip 파일 다운로드
( 바로 install 은 pip install git+git://github.com/Theano/Theano.git --upgrade 이지만 실제 동작시 에러발생)
(참고 http://skyer9.tistory.com/7 , 원 출처 : http://funmv2013.blogspot.kr/2016/03/windows-keras.html )◎ 설치 후 THEANO_FLAGS 환경 변수 설정
○ 탐색기에서 주소창에 %USERPROFILE% 로 이동하면 자동으로 해당 유저의 프로필 설정 디렉토리로
이동함
.theanorc 파일을 생성 후
[global] floatX = float32 device = gpu [nvcc] compiler_bindir=C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin |
처럼 생성한다. (nvcc 는 CUDA Toolkit 이다. )
http://ankivil.com/installing-keras-theano-and-dependencies-on-windows-10/
▣ numpy
◎ http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy에서 다운 받아 설치한다.
( 그냥 pip install 로 하면 ImportError: cannot import name NUMPY_MKL 에러 발생함)
▣ Keras
◎ pip install git+git://github.com/fchollet/keras.git
◎ 파이썬 실행시 import keras 시 No module named tensorflow 에러 발생시
keras 의 backend로 theano 설정이 안된 것이므로 설정이 필요함
○ 탐색기에서 주소창에 %USERPROFILE% 로 이동하면 자동으로 해당 유저의 프로필 설정 디렉토리로
이동함
○ 해당 폴더에서 .keras 폴더 생성(콘솔 창에 해당 디렉토리 이동후 md .keras 라고 한다.) 후
keras.json 파일 생성( 경우에 따라서는 이미 생성되어 있을 수도 있다. )
{ "floatx": "float32", "epsilon": 1e-07, "image_dim_ordering": "th", "backend": "theano" } == 원본은 아래와 같이 생겼다. tensorflow 로 돌아갈 때는 아래 것을 복원한다. == { "image_dim_ordering": "tf", "epsilon": 1e-07, "floatx": "float32", "backend": "tensorflow" } |
http://ankivil.com/installing-keras-theano-and-dependencies-on-windows-10/
▣ UnRoll
◎ pip install ez_setup (설치시 ez_setup 필요)
◎ pip install UnRoll
◎ 자동으로 music21 설치됨
실제 소스를 돌리는 경우 train_piano.py 파일을 좀 수정해야 한다. 코드에 .strftime("%Y.%m.%d.%H:%M:%S")) 이런 표현이 있는데, 이게 윈도우즈에서
파일생성시 : 가 드라이브 구분자로 사용되므로 : (콜론)을 제거해야 한다.
== 결론 ==
이것으로 실제 작곡이 가능한지는 잘모르겠다. 아래 결과 파일이다.
rnn_lstm_pred_midi_20170226T232412.zip
GPU 이용 안하면 엄청 느리다. 아직 내부 모델 분석은 못했다. 이제 막 공부를 시작해서..