Caffe深度学习操作流程

Caffe图片模型训练流程

Step1:训练、测试图片与列表清单准备;

    准备图片训练集与测试集,把相应的图片放在对应的目录下。如:训练图片目录:E:/data/train/ ,测试图片目录: E:/data/test/。同时编写相应的脚本文件存放所对应图片的列表清单,即train.txt和test.txt(列表清单中与对应的图片进行一一对应);

Step2:转换为对应的lmdb数据格式;

深度学习(Caffe)原始数据图片格式为(jpg,jpeg,png,tif),同时图片大小格式不统一。而在(Caffe)深度学习中经常使用的数据类型是lmdb或leveldb,因此需要把图片转换为相对应的数据库格式(lmdb为常用格式,效率较高)。

Caffe工具自带的有convert_imageset.exe可执行工具,需要输入相对应的参数格式即可生成。

编辑以下文件,保存为.sh(需要下载Git工具)或者.bat均可!(以下路径均为绝对路径)

#!/usr/bin/en sh

DATA=E:/testdata/second-train-model   

rm -rf $DATA/img_train_lmdb

E:/caffe-gpu-matlab/caffe-master/Build/x64/Release/convert_imageset.exe --shuffle \

--resize_height=256 --resize_width=256 \

E:/testdata/second-train-model/train/  \

$DATA/train.txt  \

$DATA/img_train_lmdb

以上是训练图片数据格式的转换,同理把测试图片转换为相应的lmdb数据格式。

Step3:计算均值文件并保存

图片减去均值再训练,会提高训练速度和精度,因此,一般都会有这个操作。caffe程序提供了一个计算均值的文件compute_image_mean.exe,直接调用。

编辑以下文件并保存;

DATA=E:/testdata/second-train-model

TOOLS=E:/caffe-gpu-matlab/caffe-master/Build/x64/Release

$TOOLS/compute_image_mean.exe $DATA/img_train_lmdb \

$DATA/imagenet_mean.binaryproto

echo "Done."

Step4:创建模型并编写配置文件

Caffe自带四个模型文件位于...\caffe-master\models文件夹下面,在这我们使用caffenet模型。复制其中的solver.prototxt train_val.prototxt,修改其中的配置文件符合自己的程序需要!

solver.prototxt配置文件如下:

net:"E:/testdata/second-train-model/train_val.prototxt"   #训练文件路径

test_iter: 10                 #test_iter* batchsize(测试集的)=测试集的大小                     

test_interval: 2              #表示训练的时候,每迭代500次就进行一次测试

base_lr: 0.001                #学习率

lr_policy: "step"             #学习率变化规律                            

gamma: 0.1                    #学习率变化指数

stepsize: 100000              #学习率变化频率

display: 20                   #屏幕显示间隔

max_iter: 1000                #总迭代次数1000

momentum: 0.9                 #动量

weight_decay: 0.0005          #权重衰减

snapshot: 500                 #500次保存一次快照              

snapshot_prefix:"E:/testdata/second-train-model/caffenet_train"   #模型保存路径

solver_mode: GPU                 #CPU或GPU  

注:配置文件默认采用SGD(梯度下除法模式);                                

train_val.prototxt配置文件如下:

name: "CaffeNet"

layer {

  name: "data"

  type: "Data"

  top: "data"

  top: "label"

  include {

    phase: TRAIN

  }

  transform_param {

    mirror: true

    crop_size: 227                   #切隔图片大小

mean_file: "E:/testdata/second-train-model/imagenet_mean.binaryproto"

#均值文件保存路径

  }

  data_param {

source: "E:/testdata/second-train-model/img_train_lmdb"   

#lmdb数据保存路径

batch_size: 256

#一次送入多少训练图片

    backend: LMDB       

  }

}

layer {

  name: "data"

  type: "Data"

  top: "data"

  top: "label"

  include {

    phase: TEST

  }

  transform_param {

    mirror: false

    crop_size: 227

    mean_file: "E:/testdata/second-train-model/imagenet_mean.binaryproto"

  }

  data_param {

source: "E:/testdata/second-train-model/img_test_lmdb"

#测试图片lmdb数据保存路径

batch_size: 10

#一次送入多少测试图片

    backend: LMDB

  }

}

.

.

.

Step5:训练和测试

编辑以下文件并保存为.sh或.bat格式的文件:

E:/caffe-gpu-matlab/caffe-master/Build/x64/Release/caffe.exe train \

--solver=E:/testdata/second-train-model/solver.prototxt $@

利用Git工具运行或者双击进行运行,开始训练!

Step6:利用模型文件进行分类

复制caffenet模型中的deploy.prototxt配置文件;

deploy.prototxt配置文件

name: "CaffeNet"

layer {

  name: "data"

  type: "Input"

  top: "data"

  input_param { shape: { dim: 10 dim: 3 dim: 227 dim: 227 } }

}

dim:10表示对待识别样本进行数据增广的数量,该值的大小可自行定义。但一般会进行5次crop,将整幅图像分为多个flip。该值为10则表示会将待识别的样本分为10部分输入到网络进行识别。如果相对整幅图像进行识别而不进行图像数据增广,可将该值设置为1

dim:3代表通道数,dim:227代表图片切割后的大小;

.

.

.

layer {

  name: "fc8"

  type: "InnerProduct"

  bottom: "fc7"

  top: "fc8"

  inner_product_param {

    num_output: 5     #设置成自己的样本种类个数

  }

}

layer {

  name: "prob"

  type: "Softmax"

  bottom: "fc8"

  top: "prob"

}

编写脚本文件并保存为.sh或.bat运行

SET GLOG_logtostderr=1

cd /d E:\caffe-class

set a=E:\caffe-class\second-train-model\deploy.prototxt

set b=E:\caffe-class\second-train-model\caffenet_train_iter_1000.caffemodel

set c=E:\caffe-class\second-train-model\imagenet_mean.binaryproto

set d=E:\caffe-class\second-train-model\lable.txt

set e=E:\caffe-class\second-train-model\jp\11.jpg

E:\caffe-class\classification.exe %a% %b% %c% %d% %e%

pause

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值