初心者がTensorFlowの画像スタイル変換を使ってお手軽に遊んでみた

#TensorFlowでスタイル変換を使って遊んで見る
TensorFlowのスタイル変換で遊んでみました。今回は、GIthubの[Fast Style Transfer](https://github.com/lengstrom/fast-style-transfer)に従ったお遊びです。機械学習やコード解説はありません。同じお遊びとしては、記事[「初心者がTensorFlowの画像認識を使ってお手軽に遊んでみた」](http://qiita.com/FukuharaYohei/items/3bc6d83f0e24110534b2)もあります。
実行環境は下表のとおりです。
![00.Architecture.JPG](https://qiita-image-store.s3.amazonaws.com/0/134273/85b76059-5525-61a2-9bec-c4fa34c6389e.jpeg)

#手順
##1. 仮想環境作成
Anacondaのインストールまでは終わっている状態です。Anacondaのインストールは記事[「TensorFlowをWindowsにインストール Python初心者でも簡単だった件」の該当箇所](http://qiita.com/FukuharaYohei/items/d8f82c827e0bae70096a#1-anaconda%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB)を参照ください。そこでは、TensorFlowのインストールをしていますが、今回はTensorFlowのバージョン0.121を使うので、仮想環境を新たに作ります。

##1.1. 仮想環境"styletrans"作成
Anaconda Navigatorから仮想環境"styletrans"を作成します。
![10.CreateEnvironment01.JPG](https://qiita-image-store.s3.amazonaws.com/0/134273/2eedc408-fde1-9e88-4ea3-fe70d7580c4b.jpeg)

[GithubのReadme](https://github.com/lengstrom/fast-style-transfer)ではPython 2.7.9と書いていますが、Python3.5でも動きます。
![10.CreateEnvironment02.JPG](https://qiita-image-store.s3.amazonaws.com/0/134273/ccac41bf-9037-bdc3-a244-609bb31f5dc4.jpeg)

##1.2. ターミナル起動
Anaconda Navigatorからターミナルを起動します。
![10.CreateEnvironment03.JPG](https://qiita-image-store.s3.amazonaws.com/0/134273/0f332f6e-5cd2-1bc4-9bc4-60024c775510.jpeg)

##1.3. pillow, scipy, numpy インストール
Condaコマンドでpillow, scipy, numpyをインストールします。

```none
conda install pillow scipy numpy
```

実行するかを聞かれるので"y"(yes)でEnterです。
![20.Terminal01.png](https://qiita-image-store.s3.amazonaws.com/0/134273/66f1325a-2366-9714-065f-601f5ba1451e.png)

##1.4. TensorFlow インストール
TensorFlow 0.12.1はpipコマンドでインストールします。

```none
pip install tensorflow==0.12.1
```

![20.Terminal02.png](https://qiita-image-store.s3.amazonaws.com/0/134273/fb73b232-07d0-b09e-d5ad-382307ba11bc.png)


##2. Githubからfast-style-transferダウンロード
Githubから[fast-style-transfer](https://github.com/lengstrom/fast-style-transfer)をまとめてダウンロードします。筆者はGithub慣れていないから、ダウンロードしてzip解凍しています。
![30.DownloadFromGithub.JPG](https://qiita-image-store.s3.amazonaws.com/0/134273/2aa4c60a-da07-8de1-1dd8-23d414c5a567.jpeg)

##3. Google Driveからモデルダウンロード
Google Driveから[学習済モデル](https://drive.google.com/drive/folders/0B9jhaT37ydSyRk9UX0wwX3BpMzQ)をまとめてダウンロードします。ファイルを置くディレクトリは手順2でダウンロードしたフォルダfast-style-transferの下に"models"フォルダを作り、置きました。

##4. Anaconda Navigatorからターミナル起動
Anaconda Navigatorで手順1で作成した仮想環境"styletrans"からターミナルを開きます。
![40.OpenTerminaviaAnaconda.JPG](https://qiita-image-store.s3.amazonaws.com/0/134273/e72d76ac-445a-434a-19fd-6f109b29c3b4.jpeg)

##5. スタイル変換実行
###5.1. 仮想環境有効化
まずは、ターミナルで"styletrans"の仮想環境を有効化します。

```none
activate styletrans
```

###5.2. パス変更
fast-style-transferのディレクトリにパスを変更します。

```none
cd C:\Users\yohei.fukuhara\Python\fast-style-transfer-master
```

###5.3. 画像スタイル変換実行
では、実行してみます。適当にネットから有名な絵を拾ってきました。
![スプー](https://rr.img.naver.jp/mig?src=http%3A%2F%2Fimgcc.naver.jp%2Fkaze%2Fmission%2FUSER%2F20150310%2F76%2F7125786%2F9%2F500x400x408c4f2c92474c8558da61ac.jpg%2F300%2F600&twidth=300&theight=0&qlt=80&res_format=jpg&op=r)

ちなみにフォルダ構成は↓で、"input"フォルダに変換元画像を、"models"フォルダに学習済モデルを置いていて、"output"フォルダに変換後の画像を入れます。
![50.Folders.JPG](https://qiita-image-store.s3.amazonaws.com/0/134273/0a6eb8f8-926f-e16e-ce1e-1835bec8e657.jpeg)

```none
python evaluate.py --checkpoint ./models/rain_princess.ckpt --in-path ./input/spu.jpg --out-path ./output/spu_rain_princess.jpg
```

特に何のメッセージも出ずに3秒ほどで画像が生成されます。ちょっと芸術的ですね。
![spu_rain_princess.jpg](https://qiita-image-store.s3.amazonaws.com/0/134273/151aa6f3-d8db-d763-8717-8310e122a7e5.jpeg)

ちなみに全モデルでのスタイル変換後画像を並べるとこんな感じです。
![60.spus.jpg](https://qiita-image-store.s3.amazonaws.com/0/134273/7f4c743d-4775-7113-eacd-a2f7fbb66bff.jpeg)