caffe学习

caffe整体架构说明

纯粹的C++/CUDA架构,支持命令行,Python和MATLAB接口,可在CPU和GPU间无缝切换;模型的定义与最优化设置以及预训练的权重等都是以文本形式给出,
Caffe层定义由层属性和层参数组成
Blob 是用以存储数据的4维数组
对于数据:Number*Channel*height*width
对于卷积权重:Output*Input*Height*width
对于卷积偏置:Output*1*1*1

Caffe生成的数据分为2种格式:Lmdb和Leveldb都是键值对,lmdb的速度比leveldb快10%-15%,lmdb允许多种训练模型同时读取同一组数据集,lmdb是Caffe默认的数据集生成格式。

  1. 预处理图像的leveldb构建
    输入一批图像和label 输出leveldb
    指定包含:
    convert_imageset(构建leveldb的可运行程序)
    train/ 图像
    label.txt
    输出的leveldb文件夹的名字
    CPU/GPU

  2. CNN网络配置文件
    Imagenet_solver.prototxt 包含全局参数的配置文件
    Imagenet.prototxt 包含训练网络的配置文件
    Imagenet_val.prototxt 包含测试网络的配置文件

.prototxt 配置文件
.caffemodel

架构:
tools各种工具 用户不用直接使用主要有caffe、compute_image_mean、convert_imageset、extract_features、finetune_net、net_speed_benchmark、test_net、train_net、upgrade_net_proto_binary、upgrade_net_proto_text、upgrade_solver_proto_text

caffe实验步骤

solver.prototxt
各种设置,设置网络结构,迭代次数,学习率,最大迭代次数,动量因子,快照次数
train_val.prototxt
主要结构:数据层,对数据设定预处理,设定数据的来源

caffe实践

1.根据训练集和测试集生成lmdb

/data1/caffe/build/tools/convert_imageset \
/data1/image_abc/ /data1/deepImage/ft_TRAIN.txt \
/data1/deepImage/ft_train_lmdb \
--shuffle=true
/data1/caffe/build/tools/convert_imageset \
/data1/image_abc/ /data1/deepImage/ft_TEST.txt \
/data1/deepImage/ft_test_lmdb \
--shuffle=true

2.生成mean文件
`
/data1/caffe/build/tools/compute_image_mean \
/data1/deepImage/img_train_lmdb \
mean_ft.binaryproto
compute_image_mean.cpp:79] Check failed: size_in_datum == data_size (3812940 vs. 858240) Incorrect data field size 3812940
解决方案 图片需要resize到同样大小
重新生成lmdb数据集和mean文件

/data1/caffe/build/tools/convert_imageset \
/data1/image_abc/ /data1/deepImage/ft_TRAIN.txt \
/data1/deepImage/ft_train_lmdb \
–resize_height=256 \
–resize_width=256 \
–shuffle=true
/data1/caffe/build/tools/convert_imageset \
/data1/image_abc/ /data1/deepImage/ft_TEST.txt \
/data1/deepImage/ft_test_lmdb \
–resize_height=256 \
–resize_width=256 \
–shuffle=true
/data1/caffe/build/tools/compute_image_mean \
/data1/deepImage/img_train_lmdb \
mean_ft.binaryproto


3.训练
介绍两个常见的数据类型,1.lmdb 2.image
lmdb类型,直接使用上面生成的lmdb文件,粗体部分为需要注意的地方

layer {
name: “data”
type: “Data”
top: “data”
top: “label”
include {
phase: TRAIN
}
transform_param {
mirror: true
crop_size: 227
mean_file: “/data1/deepImage/mean_finetune.binaryproto”
}
data_param {
source: “/data1/deepImage/TRAIN.db”
batch_size: 500
backend: LMDB
}
}

image类型,不需要生成lmdb,根据train.txt直接读取文件,设置高宽

layer {
name: “data”
type: “ImageData”
top: “data”
top: “label”
include {
phase: TRAIN
}
transform_param {
mirror: true
crop_size: 227
mean_file: “/data1/deepImage/mean_finetune.binaryproto”
}
image_data_param {
source: “/data1/deepImage/train.txt”
batch_size: 500
new_height:256
new_width:256
}
}


/data1/caffe/build/tools/caffe train -solver=solver_finetune.prototxt -weights=initModel.caffemodel

测试

/data1/caffe/build/tools/caffe test -model=train_val.prototxt -weights=models/disc/caffe_alexnet_train_iter_370000.caffemodel -gpu=1
`

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值