Anaconda 環境を利用した Windows への Keras (TensorFlow backend) 導入
以下の記事の手順でできました。
qiita.com今回は Keras を利用するので Keras も導入しました。Anaconda インストール後、コマンドプロンプトを立ち上げて以下のように「仮想環境作成 → 仮想環境立ち上げ → TensorFlow導入 → Keras導入」しました。仮想環境を作成するとき Python のバージョンを指定できますが、3.5 にしないといけないようです。
C:\work> conda create -n tensorflow python=3.5 anaconda C:\work> activate tensorflow (tensorflow) C:\work> pip install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/windows/cpu/tensorflow-1.0.1-cp35-cp35m-win_amd64.whl (tensorflow) C:\work> pip install keras
これで Keras (TensorFlow backend) がつかえるようになったことを確認するために以下のスクリプトを実行してみます。中間層が2層の全結合ニューラルネットワークで iris を分類します。
# -*- coding: utf-8 -*- import numpy import random from keras.models import Sequential from keras.layers.core import Dense, Activation from keras.utils import np_utils from sklearn import datasets if __name__ == '__main__': # irisデータのロード iris = datasets.load_iris() x = iris.data y = np_utils.to_categorical(iris.target, num_classes=3) # シャッフルして訓練データとテストデータに分割 n = iris.target.shape[0] indices = random.sample(range(n), n) x = x[indices] y = y[indices] n_train = int(n / 2) x_train = x[range(n_train)] y_train = y[range(n_train)] x_test = x[range(n_train, n)] y_test = y[range(n_train, n)] # モデルの構築と学習 model = Sequential() model.add(Dense(10, input_shape=(x.shape[1],), activation='relu')) model.add(Dense(10, activation='relu')) model.add(Dense(3, activation='softmax')) model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy']) model.fit(x_train, y_train, epochs=100, batch_size=10, shuffle=True) # テスト結果表示 scores = model.evaluate(x_train, y_train, verbose=0) print('Accuracy (train): %.2f%%' % (scores[1]*100)) scores = model.evaluate(x_test, y_test, verbose=0) print('Accuracy (test) : %.2f%%' % (scores[1]*100))
以下のように学習できました。
(tensorflow) C:\work> python test.py ... Epoch 99/100 75/75 [==============================] - 0s - loss: 0.3137 - acc: 0.9733 Epoch 100/100 75/75 [==============================] - 0s - loss: 0.3072 - acc: 0.9733 Accuracy (train): 97.33% Accuracy (test) : 96.00%
さらに Anaconda 環境への OpenCV の導入
さらに画像処理ライブラリ OpenCV も導入します。
Anaconda で対象の仮想環境を立ち上げた状態で、以下のコマンドで導入できます。
(tensorflow) C:\work> conda install -c menpo opencv3
導入が上手くいったかどうか、以下のスクリプトで確認します。
# -*- coding: utf-8 -*- import cv2 import numpy if __name__ == '__main__': image = numpy.zeros((256, 256, 3), numpy.uint8) for i in range(256): for j in range(256): image[i, j, 0] = i image[i, j, 1] = j cv2.imwrite('hoge.png', image)
以下のような画像ファイル hoge.png が生成されます。

OpenCV で動画作成
OpenCV で動画を作成することができます。以下のスクリプトで movie.avi が生成されます。以下では各フレームを画素の行列から生成していますが、画像ファイルを読み込んでつなげて動画にすることもできます。
# -*- coding: utf-8 -*- import cv2 import numpy if __name__ == '__main__': vvw = cv2.VideoWriter('movie.avi', cv2.VideoWriter_fourcc('X','V','I','D'), 10, (200, 200)) for i in range(10): for j in range(10): j_ = (9 - j) if (i % 2 == 1) else j image = numpy.zeros((10, 10, 3), numpy.uint8) image[i, j_, 0] = i * 25 image[i, j_, 1] = j_ * 25 image = cv2.resize(image, (200, 200), interpolation=cv2.INTER_AREA) vvw.write(image)
以下のような動画ができます。.avi ははてなブログに貼り付けられないようなので、以下のページで .gif に変換しました。
AVI GIF 変換。オンライン フリー — Convertio

なお、cv2.VideoWriter の第2引数の4文字はコーデック指定です( Video Codecs by FOURCC - fourcc.org )。最適かどうかはわかりませんがとりあえず ('X','V','I','D') で生成できました。第3引数は1秒あたりのフレーム数、第4引数は画像サイズです。