はじめに
タイトルだけだと何言ってるのかわからないと思うので補足していきます。今回、僕が作成したのは楽譜です。lightweigth-gan という手法を用いてモーツァルトの楽譜の画像データを生成させました。
lightweight-gan とは
- めっちゃ軽いGAN
- 画像100枚程度でok
- GPU一枚だけでもうごく
- コマンド1行だけで実行
- codeは書かなくていい
という比較的簡単に始められる手法?でここから始めることができます。
実行環境
使ったマシンのスペック
- OS windows10pro
- CPU i7 9700k
- GPU RTX2060
- RAM DDR4 16GB
の自作pc
下準備
今回、実行したパソコンにpythonが入っていなかったのでほんとに最初からやることになりました。
step 1 pythonをインストール
僕の場合はanacondaからインストールしました
step 2 CUDAをインストール
nvidiaのページからダウンロードできます。僕の場合はGPUがCUDAに対応しているの知っていましたが、お使いのGPUがCUDAに対応しているかはここで確認できます。
step 3 lightweight-gan のインストール
pip install lightweight-gan
これだけでokです。
step X pytorch のCUDAのバージョンを変える
最近anacondaでpythonをインストールした場合githubのREADME通りに実行しようとするとエラーメッセージでCUDAが使えないよ、インストールされてるかチェックしてといわれました(英語だったので意訳。すいません、このエラー時の画像がありません。)
解決方法ですが、pytorchのCUDAのバージョンを(おそらく)10.2にし、pipを使いインストールしなおしました。
後は画像を集めるだけです。
今回僕はモーツァルトの楽譜ということで
IMSLP
というところからpdfをダウンロード、その後jpgに変換し約100枚の画像を集めました。
IMSLPにはもっと多くの楽曲がありましたがダウンロードするのがあまりにもめんどくさかったので大体100枚集めたらやめました。
画像が集め終わったらあとは実行するだけです。
実行
$ lightweight_gan --data ./path/to/images --image-size 512
これだけで実行できます。
ここで問題になってくるのが軽量といってもものすごく時間がかかることです。コマンドを走らせると最初は何も進んでいないように見えますが、12時間で10%くらいは進みました。
そこで推奨されているかわかりませんが(途中でやめる場合は自己責任でお願いします。僕が大丈夫だったからと言ってみんな大丈夫とは限りません)途中でやめることもできます。僕は30%行ったときにctrl + CとEnterでコマンドを停止させました。
画像の生成
$ lightweight_gan \ --name {name of run} \ --load-from {checkpoint num} \ --generate \ --generate-types {types of result, default: [default,ema]} \ --num-image-tiles {count of image result}
これで生成できますが、何を入力すればいいかわかりづらいので、実行時に何も設定せず実行した僕の場合は
{name of run} : default
{checkpoint} : /result/default に数字の名前の画像がたくさんあると追うので一番よさそうなもの(数字が大きければ大きいほど僕の場合よかった)の数字
{types of result, default: [default,ema]} : この行は[default,ema]でいいと思う この場合はdefault とemaが生成される。
{count of image result} : 何枚作るのか お好みでお願いします。
にしました。
参考にさせていただいたページ
lightweight-gan
これはpytorch版を作成した人のgithubへ飛ばされます。
ligthweigth-ganとのであい
去年のカレンダーでたまたま目にしたページ。
CUDA のインストール方法
このページにリンクのあるページ
CUDAのダウンロードページ
CUDA対応か確認できるページ
IMSLP
最後に
最後までお付き合いいただきありがとうございました。