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

01 资料

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

目录文件类型文件作用
examples\cifar10*.prototxt网络定义文件
examples\cifar10create_cifar10.sh生成lmdb的linxu shell脚本
examples\cifar10readme.md等同于官网cifar10测试详细介绍
examples\cifar10train_*.shlinxu下运行cifar测试的各种命令行脚本
data\cifar10get_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.gz

echo "Unzipping..."

tar -xf cifar-10-binary.tar.gz && rm -f cifar-10-binary.tar.gz
mv 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页面可以找到三种测试数据压缩包。

版本大小下载地址
binary162 MBCIFAR-10 binary version (suitable for C programs)
python163 MBCIFAR-10 python version
matlab175 MBCIFAR-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 -e

EXAMPLE=examples/cifar10
DATA=data/cifar10
DBTYPE=lmdb

echo "Creating $DBTYPE..."

rm -rf $EXAMPLE/cifar10_train_$DBTYPE $EXAMPLE/cifar10_test_$DBTYPE

./build/examples/cifar10/convert_cifar_data.bin $DATA $EXAMPLE $DBTYPE

echo "Computing image mean..."

./build/tools/compute_image_mean -backend=$DBTYPE \
  $EXAMPLE/cifar10_train_$DBTYPE $EXAMPLE/mean.binaryproto

echo "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.exe
set compute_image_mean=build\x64\install\bin\compute_image_mean.exe
:: 生成数据类型
set DBTYPE=lmdb

echo.
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.binaryproto
echo "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 lmdbexamples\cifar10\cifar10_train_lmdb

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

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

02.03 运行测试数据

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

#!/usr/bin/env sh
set -e

TOOLS=./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\bin
set caffe_path=build\x64\tools\release
echo.
echo %caffe_path%\caffe train ^
  --solver=examples\cifar10\cifar10_quick_solver.prototxt
%caffe_path%\caffe train ^
  --solver=examples\cifar10\cifar10_quick_solver.prototxt
echo.
:: reduce learning rate by factor of 10 after 8 epochs
echo %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.h5
echo.
::mkdir build\x64\log
::examples\cifar10\train_quick.bat > build\x64\log\cifar10_train_quick.log 2>&1
endlocal&goto :EOF
:EOF

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

examples\cifar10\train_quick.bat

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

02.04 保存运行日志

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

mkdir build\x64\log
examples\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 sh
set -e

TOOLS=./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.prototxt

build\x64\tools\Release\caffe train --solver=examples\cifar10\cifar10_full_solver_lr1.prototxt --snapshot=examples\cifar10\cifar10_full_iter_60000.solverstate.h5

build\x64\tools\Release\caffe train --solver=examples\cifar10\cifar10_full_solver_lr2.prototxt --snapshot=examples\cifar10\cifar10_full_iter_65000.solverstate.h5
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值