embeddedなブログ

組み込みシステムに関することや趣味に関することをダラダラと書いていきます(^^)

KerasでFCNをWindows環境にて試す

2018-04-28 16:31:19 | Windows Embedded Standard
画像のセグメンテーション手法のひとつであるFCN(Fully Convolutional Networks)をKerasで試してみます。今回はあえてWindows 10 64bit+GPUの環境で試してみました。FCNをCaffeで実現した論文がここにありますので参考にしてみてください。
 
CUDA Toolkit Archive からCUDA Toolkit 9.0をダウンロードしてインストールします。9.1だとうまく動かず、9.0で試している方が多いようなのでとりあえず9.0で試しました。
cuDNN ArchiveからcuDNN v7.1.2 (Mar 21, 2018), for CUDA 9.0 をダウンロードしてインストールします。
AnacondaからAnaconda 5.1 For Windows Installer(64-Bit Graphical Installer)をダウンロードしてインストールします。
スタートメニューから「Anaconda Prompt」を起動します。以下を実行しTensorFlowをインストールします。CPU版の場合は下記の「tensorflow-gpu」の部分を「tensorflow」としてください。
pip install tensorflow-gpu

以下を実行してKerasをインストールします。
pip install keras 
 
以上でKerasの実行環境構築は完了です。
次に下記にて画像表示用に使うOpenCVをインストールします。
conda install -c menpo opencv
 
ここから実際のFCNの環境作成です。FCN_via_Kerasからクローンします。

cd C:\src
git clone https://github.com/k3nt0w/FCN_via_keras.git
cd FCN_via_keras
 
model.pyの下記1文をコメントアウトします。使用しておらず、またKeras2ではサポートされていないためです。
#from keras.utils.layer_utils import layer_from_config
 
また、バックエンドにTensorFlowを使うのでtrain.pyの下記1文をコメントアウトします。
#os.environ['KERAS_BACKEND'] = 'theano'
 
以下URLからVOC2012データセットをダウンロードして解凍します。ここではFCN_via_kerasフォルダの下に展開しました。
http://host.robots.ox.ac.uk/pascal/VOC/voc2012/VOCtrainval_11-May-2012.tar
 
下記で学習を実行します。
 
python train.py -tr .\VOCdevkit\VOC2012\JPEGImages\ -ta .\VOCdevkit\VOC2012\SegmentationClass\ -t train.txt
 
エラーが出るときは、C:\Users\ユーザー名\.keras\keras.jsonの下記2点を確認して、以下と違っていたら同じに変更してみてください。

    "backend": "tensorflow",
    "image_data_format": "channels_first"
 
モデルが出来たら次は予測を実行します。その前にpredict.pyを少し修正が必要です。以下をコメントアウトします。
#from chainer import serializers
 
以下の赤文字部分を修正します。
img_name = args.image_path.split("\\")[-1].split(".")[0]
 
それでは以下コマンドで予測を実行します。
python predict.py -i .\VOCdevkit\VOC2012\JPEGImages\2011_003255.jpg
 
outフォルダにpred_2011_003255.pngというファイルが生成されてれば成功です。ただ、以下のようにうまく予測が出来ていないようです...
 

最新の画像もっと見る