人工知能（機械学習）で、第６感の可視化に挑戦 その⑤

第６感をAIで可視化できないか？という試みの　第５弾になります。
全体のお話はこちら
[人工知能（機械学習）で、第６感の可視化に挑戦](https://qiita.com/nanako_ut/items/44ecdb4f76d13dc276d6)

# はじめに
今回の範囲はこちらになります。
赤枠の環境を構築することが、今回のゴールです。
![system_structure.jpg](https://qiita-image-store.s3.amazonaws.com/0/170139/ce33fc04-6e42-aa7b-1bed-ad89f9812cea.jpeg)


# アプリを公開する環境
## クラウドサービス
代表的なのが、Amazon、Microsoft、Google の3大クラウド。
以前Amazonが提供しているAWSを使っていたのですが、日中動かしているだけで（夜間は節約のため止めてた）1万/月くらいかかってしまっていました。
ちょっと高いので、今回は不採用

## レンタルサーバ
用途に応じて、共用サーバ/専用サーバ/VPS（仮想専用サーバー）があるようです。
https://www.kagoya.jp/howto/rentalserver/basic-01/

- 共用サーバ
利用料金が最も安い。今回使いたいPHP/apache/pythonが使える状態になっているものもあるようです。
ただ、今回必要なtensorflow/kerasが使えなさそうなので、不採用

- VPS
利用料金もクラウドサービスほど高くなく、環境も自由に設定できるよう。
今回はVPSを使ってみることにします。

# さくらVPS
レンタルサーバ業者は複数あるようなのですが、有名なのがさくら、ロリポップ、お名前.comらしいです。
さくらの「ネコでもわかる！さくらのVPS講座」が分かりやすかったので、今回はさくらVPSを利用してみることにします。

## 申込・基本的な設定
「ネコでもわかる！さくらのVPS講座」に従って、以下を実施

- [～第二回～VPSの申込み、サーバー起動、ログイン](https://knowledge.sakura.ad.jp/8218/?_ga=2.61312876.1302281727.1521901057-1136105245.1521033745)

- [～第三回～Apacheをインストールしてみよう](https://knowledge.sakura.ad.jp/8541/?_ga=2.27682684.1302281727.1521901057-1136105245.1521033745)

- [～第四回～phpとMariaDBをインストールしよう](https://knowledge.sakura.ad.jp/9006/?_ga=2.259836874.1302281727.1521901057-1136105245.1521033745)
※.MariaDBは今回使わないので、phpのインストールのみ

## pyenvインストール
centOS7にはデフォルトでpython2.7がインストールされているようです。
今回はpython3を使いたい。しかしデフォルトで入っているpython2.7をアンインストールするのもちょっと躊躇います。。。
ということで、複数バージョンのPythonを簡単に切り替えられるというpyenvを使ってみます。

### pyenvとは
こちらを参考にさせて頂きました。

- [pyenv と pyenv-virtualenv で環境構築](https://qiita.com/Kodaira_/items/feadfef9add468e3a85b)
- [PyenvによるPython3.x環境構築(CentOS, Ubuntu)](https://qiita.com/akito1986/items/be5dcd1a502aaf22010b)
- [はじめての人工知能。CentOS7.0 でTensorflow。virtualenvで、python3.5系とpython2.7系に分けて構築。](https://qiita.com/Leonhard/items/188690df29fd91717c92)

### pyenvのインストール・設定
こちらが大変参考になりました。

- [Pyenv-virtualenvをCentOS7で使う(すべてのユーザ)](http://isboj.wp.xdomain.jp/2017/06/05/pyenv_alluser/)

ポイントは、**Pythonの実行環境をすべてのユーザが使えるように作成する**というところ。
webアプリの実行ユーザであるapacheユーザでもpythonを実行できるようにしたいためです。

尚、仮想環境は使わないので、pyenv-virtualenv はインストールしていません。

## anacondaインストール
必要なライブラリを各々インストールしてもよいのですが、、、
ライブラリの依存関係やインストールの順番を考えるの面倒なので、anacondaを入れてしまいます。

早速pyenvを使ってインストールします。
pyenvの使い方はこちらを参考にさせてもらいました。

- [Pyenvの使い方](https://qiita.com/mogom625/items/b1b673f530a05ec6b423)


pyenvでインストール可能なライブラリ一覧を確認

```
# pyenv install --list
Available versions:
  2.1.3
  2.2.3
　・・・
  anaconda3-5.0.1
  anaconda3-5.1.0
　・・・
```

anacondaは最新版が「anaconda3-5.1.0」のようです。
最新版をインストールしてみます。

```
# pyenv install anaconda3-5.1.0
```

バージョンを切り替えます。

```
# pyenv global anaconda3-5.1.0
# pyenv versions
  anaconda3-5.1.0
```

## 各種必要なライブラリをインストール
anacondaに内包しているconda（パッケージ管理システム）を使って、必要なライブラリをインストールしていきます。
## condaのアップデート
まずは、condaそのものをアップデートしておきます。

```
# conda update -n base conda

Solving environment: done

## Package Plan ##
  added / updated specs:
    - conda

The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    conda-4.4.11               |           py36_0         930 KB

The following packages will be UPDATED:

    conda: 4.4.10-py36_0 --> 4.4.11-py36_0

Proceed ([y]/n)? y <-- yes/noを聞かれるので、y（yes）を入力


Downloading and Extracting Packages
conda 4.4.11: ####################################################################################################### | 100%
Preparing transaction: done
Verifying transaction: done
Executing transaction: done

```

## tensorflow

**conda install**でtensorflowを追加
tensorflowに付随していろいろインストールされるようです。

```
# conda install tensorflow

Solving environment: done
## Package Plan ##
  environment location: /usr/local/lib/pyenv/versions/anaconda3-5.1.0
  added / updated specs:
    - tensorflow

The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    tensorboard-1.6.0          |   py36hf484d3e_0         2.9 MB
    gast-0.2.0                 |           py36_0          15 KB
    bleach-1.5.0               |           py36_0          22 KB
    html5lib-0.9999999         |           py36_0         176 KB
    markdown-2.6.11            |           py36_0         104 KB
    astor-0.6.2                |           py36_0          42 KB
    termcolor-1.1.0            |           py36_1           7 KB
    tensorflow-base-1.6.0      |   py36hff88cb2_0        39.4 MB
    tensorflow-1.6.0           |                0           3 KB
    protobuf-3.5.1             |   py36hf484d3e_0         597 KB
    libprotobuf-3.5.1          |       h6f1eeef_0         4.2 MB
    absl-py-0.1.10             |           py36_0         129 KB
    grpcio-1.10.0              |   py36hf484d3e_0         1.6 MB
    ------------------------------------------------------------
                                           Total:        49.2 MB

The following NEW packages will be INSTALLED:
    absl-py:         0.1.10-py36_0
    astor:           0.6.2-py36_0
    gast:            0.2.0-py36_0
    grpcio:          1.10.0-py36hf484d3e_0
    libprotobuf:     3.5.1-h6f1eeef_0
    markdown:        2.6.11-py36_0
    protobuf:        3.5.1-py36hf484d3e_0
    tensorboard:     1.6.0-py36hf484d3e_0
    tensorflow:      1.6.0-0
    tensorflow-base: 1.6.0-py36hff88cb2_0
    termcolor:       1.1.0-py36_1

The following packages will be DOWNGRADED:
    bleach:          2.1.2-py36_0          --> 1.5.0-py36_0
    html5lib:        1.0.1-py36h2f9c1c0_0  --> 0.9999999-py36_0

Proceed ([y]/n)? y <-- yes/noを聞かれるので、y（yes）を入力


Downloading and Extracting Packages
tensorboard 1.6.0: ################################################################################################## | 100%
gast 0.2.0: ######################################################################################################### | 100%
bleach 1.5.0: ####################################################################################################### | 100%
html5lib 0.9999999: ################################################################################################# | 100%
markdown 2.6.11: #################################################################################################### | 100%
astor 0.6.2: ######################################################################################################## | 100%
termcolor 1.1.0: #################################################################################################### | 100%
tensorflow-base 1.6.0: ############################################################################################## | 100%
tensorflow 1.6.0: ################################################################################################### | 100%
protobuf 3.5.1: ##################################################################################################### | 100%
libprotobuf 3.5.1: ################################################################################################## | 100%
absl-py 0.1.10: ##################################################################################################### | 100%
grpcio 1.10.0: ###################################################################################################### | 100%
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
```

## keras

**conda install**でkerasを追加

```
# conda install keras

Solving environment: done
## Package Plan ##
  added / updated specs:
    - keras
The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    keras-2.1.5                |           py36_0         490 KB

The following NEW packages will be INSTALLED:
    keras: 2.1.5-py36_0

Proceed ([y]/n)? y <-- yes/noを聞かれるので、y（yes）を入力

Downloading and Extracting Packages
keras 2.1.5: ######################################################################################################## | 100%
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
```

## 動かしてみます。はい、ＯＫ！
[人工知能（機械学習）で、第６感の可視化に挑戦 その②](https://qiita.com/nanako_ut/items/d35d74b7d692659b1e03)で作成した学習モデルを動かしてみます。

```
$ python dra_vgg16_test.py.py

Using TensorFlow backend.
Downloading data from https://github.com/fchollet/deep-learning-models/releases/download/v0.1/vgg16_weights_tf_dim_ordering_tf_kernels_notop.h5
58892288/58889256 [==============================] - 16s 0us/step
2018-03-20 23:00:25.163278: I tensorflow/core/platform/cpu_feature_guard.cc:140] Your CPU supports instructions that this TensorFlow binary was not compiled to use: SSE4.1 SSE4.2 AVX
test_a.py:31: UserWarning: Update your `Model` call to the Keras 2 API: `Model(inputs=Tensor("in..., outputs=Tensor("se...)`
  model = Model(input=vgg16.input, output=top_model(vgg16.output))
[('toushu', 0.6204089), ('yashu', 0.3795911)]
```

無事動きました。

# まとめ
VPSを初めて利用しましたが、無事に環境構築ができました。

# 最後に
無事環境ができました。あとはこれだけ。

- 本番環境へソースを移送
- ドメイン取得、サーバへ設定
- [URLへアクセスして動作確認](http://www.amikano.net/index.html)