caffe 05 win10 运行examples的cifar10测试用例

来源:互联网 发布:软件认证中心 编辑:程序博客网 时间:2024/04/27 13:35

01 资料

caffe官网Examples中有关于cifar10测试的详细介绍。
http://caffe.berkeleyvision.org/gathered/examples/cifar10.html
caffe github下载的代码中有关于cifar10的网络定义示例和下载数据sh文件。

目录 文件类型 文件作用 examples\cifar10 *.prototxt 网络定义文件 examples\cifar10 create_cifar10.sh 生成lmdb的linxu shell脚本 examples\cifar10 readme.md 等同于官网cifar10测试详细介绍 examples\cifar10 train_*.sh linxu下运行cifar测试的各种命令行脚本 data\cifar10 get_cifar10.sh 获取测试数据linux shell脚本

02 测试操作步骤

02.01 下载测试数据

根据examples\cifar10\readme.md文件说明。打开data\cifar10\get_cifar10.sh文件。

#!/usr/bin/env sh# This scripts downloads the CIFAR10 (binary version) data and unzips it.DIR="$( cd "$(dirname "$0")" ; pwd -P )"cd "$DIR"echo "Downloading..."wget --no-check-certificate http://www.cs.toronto.edu/~kriz/cifar-10-binary.tar.gzecho "Unzipping..."tar -xf cifar-10-binary.tar.gz && rm -f cifar-10-binary.tar.gzmv cifar-10-batches-bin/* . && rm -rf cifar-10-batches-bin# Creation is split out because leveldb sometimes causes segfault# and needs to be re-created.echo "Done."

可以看到测试数据下载地址:http://www.cs.toronto.edu/~kriz/cifar-10-binary.tar.gz。
这个是c++程序处理的数据包。
从http://www.cs.toronto.edu/~kriz/cifar.html页面可以找到三种测试数据压缩包。

版本 大小 下载地址 binary 162 MB CIFAR-10 binary version (suitable for C programs) python 163 MB CIFAR-10 python version matlab 175 MB CIFAR-10 Matlab version

把 http://www.cs.toronto.edu/~kriz/cifar-10-binary.tar.gz 保存在data\cifar10目录,并解压到data\cifar10\cifar-10-batches-bin。

data\cifar10\cifar-10-batches-bin目录内文件 batches.meta.txt data_batch_1.bin data_batch_2.bin data_batch_3.bin data_batch_4.bin data_batch_5.bin readme.html test_batch.bin

02.02 生成lmdb数据

阅读caffe\examples\cifar10\create_cifar10.sh内容。这个是Linux下面生成lmdb数据库的脚本。

#!/usr/bin/env sh# This script converts the cifar data into leveldb format.set -eEXAMPLE=examples/cifar10DATA=data/cifar10DBTYPE=lmdbecho "Creating $DBTYPE..."rm -rf $EXAMPLE/cifar10_train_$DBTYPE $EXAMPLE/cifar10_test_$DBTYPE./build/examples/cifar10/convert_cifar_data.bin $DATA $EXAMPLE $DBTYPEecho "Computing image mean..."./build/tools/compute_image_mean -backend=$DBTYPE \  $EXAMPLE/cifar10_train_$DBTYPE $EXAMPLE/mean.binaryprotoecho "Done."

其中convert_cifar_data.bin对应vs2015的工程中的exaples目录下的convert_cifar_data;compute_image_mean对应vs2015工程中的tools目录下的compute_image_mean。

生成的可执行文件是
build\x64\examples\cifar10\Debug\convert_cifar_data-d.exe
build\x64\examples\cifar10\Release\convert_cifar_data.exe
build\x64\tools\Debug\compute_image_mean-d.exe
build\x64\tools\Release\compute_image_mean.exe
如果运行了INSTALL,build\x64\install\bin下面也会有对应的文件。
为了使用方便,模拟create_cifar10.sh写一个windows版本的create_cifar10.bat。放在create_cifar10.sh相同目录下。(注意文本最好采用utf8格式保存)

@echo off & setlocal enabledelayedexpansion:: examples\cifar10\create_cifar10.bat::进入create_cifar10.bat所在磁盘%~d0::进入create_cifar10.bat所在目录cd %~dp0:: 回到caffe根目录cd ..\..\:: 网络定义文件的位置,lmdb也生成在这里set EXAMPLE=examples\cifar10:: 测试数据的位置,set DATA=data\cifar10\cifar-10-batches-bin:: 工程文件生成的位置::set cfg=Debug::set BUILD=build\x64\examples\cifar10\%cfg%::set convert_cifar_data=convert_cifar_data-d.exe::set compute_image_mean=build\x64\tools\compute_image_mean-d.exe:: 发布文件所在位置,即vs2015工程中运行INSTALL后,文件的安装位置set BUILD=build\x64\install\bin:: 可发布的release版本lmdb生成工具set convert_cifar_data=convert_cifar_data.exeset compute_image_mean=build\x64\install\bin\compute_image_mean.exe:: 生成数据类型set DBTYPE=lmdbecho.echo "Creating !DBTYPE! start"echo.:: 删除存在的数据库目录,如果目录存在,会运行失败IF EXIST %EXAMPLE%\cifar10_train_%DBTYPE%. echo rmdir /S /Q %EXAMPLE%\cifar10_train_%DBTYPE%.IF EXIST %EXAMPLE%\cifar10_train_%DBTYPE%. rmdir /S /Q %EXAMPLE%\cifar10_train_%DBTYPE%.IF EXIST %EXAMPLE%\cifar10_test_%DBTYPE%. echo rmdir /S /Q %EXAMPLE%\cifar10_test_%DBTYPE%.IF EXIST %EXAMPLE%\cifar10_test_%DBTYPE%. rmdir /S /Q %EXAMPLE%\cifar10_test_%DBTYPE%.echo %BUILD%\%convert_cifar_data% %DATA% %EXAMPLE% %DBTYPE%%BUILD%\%convert_cifar_data% %DATA% %EXAMPLE% %DBTYPE%echo.echo "Computing image mean..."echo %compute_image_mean% -backend=%DBTYPE% ^  %EXAMPLE%\cifar10_train_%DBTYPE% %EXAMPLE%\mean.binaryproto%compute_image_mean% -backend=%DBTYPE% ^  %EXAMPLE%\cifar10_train_%DBTYPE% %EXAMPLE%\mean.binaryprotoecho "Creating !DBTYPE! Done."endlocal&goto :EOF:EOF

保存examples\mnist\create_cifar10.bat文件后,在caffe根目录运行:

examples\mnist\create_cifar10.bat

或者
在caffe根目录下直接运行如下语句。(运行前确保examples\cifar10\目录下没有cifar10_train_lmdb和cifar10_test_lmdb目录)

功能 cmd命令 结果 生成train、test数据 build\x64\install\bin\convert_cifar_data.exe data\cifar10\cifar-10-batches-bin examples\cifar10 lmdb examples\cifar10\cifar10_train_lmdb

examples\cifar10\cifar10_test_lmdb 生成mean.binaryproto数据 build\x64\install\bin\compute_image_mean.exe -backend=lmdb examples\cifar10\mean.binaryproto examples\cifar10\mean.binaryproto

生成的数据库文件在examples\cifar10\目录下。

02.03 运行测试数据

打开caffe\examples\cifar10\train_quick.sh脚本。内容如下:

#!/usr/bin/env shset -eTOOLS=./build/tools$TOOLS/caffe train \  --solver=examples/cifar10/cifar10_quick_solver.prototxt $@# reduce learning rate by factor of 10 after 8 epochs$TOOLS/caffe train \  --solver=examples/cifar10/cifar10_quick_solver_lr1.prototxt \  --snapshot=examples/cifar10/cifar10_quick_iter_4000.solverstate.h5 $@

根据caffe\examples\cifar10\train_quick.sh内容,改写windows bat脚本caffe\examples\cifar10\train_quick.bat。(注意:最好采用utf8编码保存)。

@echo off & setlocal enabledelayedexpansion:: examples\cifar10\train_quick.bat::train_quick.bat所在磁盘%~d0::train_quick.bat所在目录cd %~dp0:: 回到caffe根目录cd ..\..\::caffe运行文件目录::set caffe_path=build\x64\install\binset caffe_path=build\x64\tools\releaseecho.echo %caffe_path%\caffe train ^  --solver=examples\cifar10\cifar10_quick_solver.prototxt%caffe_path%\caffe train ^  --solver=examples\cifar10\cifar10_quick_solver.prototxtecho.:: reduce learning rate by factor of 10 after 8 epochsecho %caffe_path%\caffe train ^  --solver=examples\cifar10\cifar10_quick_solver_lr1.prototxt ^  --snapshot=examples\cifar10\cifar10_quick_iter_4000.solverstate.h5%caffe_path%\caffe train ^  --solver=examples\cifar10\cifar10_quick_solver_lr1.prototxt ^  --snapshot=examples\cifar10\cifar10_quick_iter_4000.solverstate.h5echo.::mkdir build\x64\log::examples\cifar10\train_quick.bat > build\x64\log\cifar10_train_quick.log 2>&1endlocal&goto :EOF:EOF

在caffe根目录运行examples\cifar10\train_quick.bat。

examples\cifar10\train_quick.bat

运行结果:
这里写图片描述

02.04 保存运行日志

在caffe根目录下(D:\Git\DeepLearning\caffe)运行如下命令。创建一个运行日志目录,运行测试用例。把测试结果重定向到指定运行日志文件。

mkdir build\x64\logexamples\cifar10\train_quick.bat > build\x64\log\cifar10_train_quick.log 2>&1

运行后,查看日志文件build\x64\log\cifar10_train_quick.log。
这里写图片描述

02.05 运行其他cifar10测试用例

根据examples/cifar/*.sh,可以运行其他测试网络。
比如train_full.sh:

#!/usr/bin/env shset -eTOOLS=./build/tools$TOOLS/caffe train \    --solver=examples/cifar10/cifar10_full_solver.prototxt $@# reduce learning rate by factor of 10$TOOLS/caffe train \    --solver=examples/cifar10/cifar10_full_solver_lr1.prototxt \    --snapshot=examples/cifar10/cifar10_full_iter_60000.solverstate.h5 $@# reduce learning rate by factor of 10$TOOLS/caffe train \    --solver=examples/cifar10/cifar10_full_solver_lr2.prototxt \    --snapshot=examples/cifar10/cifar10_full_iter_65000.solverstate.h5 $@

根据train_full.sh脚本描述,在cmd窗口,caffe根目录一次运行如下命令,即完成train_full.sh测试用例。(train_full.sh测试用例比较耗时)

build\x64\tools\Release\caffe train --solver=examples\cifar10\cifar10_full_solver.prototxtbuild\x64\tools\Release\caffe train --solver=examples\cifar10\cifar10_full_solver_lr1.prototxt --snapshot=examples\cifar10\cifar10_full_iter_60000.solverstate.h5build\x64\tools\Release\caffe train --solver=examples\cifar10\cifar10_full_solver_lr2.prototxt --snapshot=examples\cifar10\cifar10_full_iter_65000.solverstate.h5
0 0
原创粉丝点击