使用caffe训练自己的图像数据(未完)
参考博客:blog.csdn.net/drrlalala/article/details/47274549
1,首先在网上下载图片,猫和狗。
直接保存下载该网页,会生成一个有图片的文件夹。
caffe-master/data 新建 myself
myself/ 新建 train dog
cat
test dog
cat
之后将图片分别复制到文件夹中
2,生成train.txt和test.txt
在train文件夹下运行 find -name *.jpg |cut -d '/' -f2-3 >train.txt
手动加标签 sed -i 's/$/ 0/g' train.txt 在末位加0
val.txt同理可得,也要加标签。
3,图片转化为lmdb格式
caffe-master/examples/ 新建 myself
复制examples/imagenet/create_imagenet.sh到 examples/myself
修改参照下面,主要是针对路径的修改
#!/usr/bin/env sh
# Create the imagenet lmdb inputs
# N.B. set the path to the imagenet train + val data dirs
set -e EXAMPLE=examples/myself ##路径需要自己修改,默认的相对路径是在caffe-master下 DATA=data/myself ##是指生成的train.txt和val.txt的路径
TOOLS=build/tools TRAIN_DATA_ROOT=data/myself/train/ ##注生成的数据最前面就不需要加/了
VAL_DATA_ROOT=data/myself/test/ # Set RESIZE=true to resize the images to 256x256. Leave as false if images have
# already been resized using another tool.
RESIZE=true ##如果填true说明事先没有将其转为256*256格式
if $RESIZE; then
RESIZE_HEIGHT=
RESIZE_WIDTH=
else
RESIZE_HEIGHT=
RESIZE_WIDTH=
fi if [ ! -d "$TRAIN_DATA_ROOT" ]; then
echo "Error: TRAIN_DATA_ROOT is not a path to a directory: $TRAIN_DATA_ROOT"
echo "Set the TRAIN_DATA_ROOT variable in create_imagenet.sh to the path" \
"where the ImageNet training data is stored."
exit
fi if [ ! -d "$VAL_DATA_ROOT" ]; then
echo "Error: VAL_DATA_ROOT is not a path to a directory: $VAL_DATA_ROOT"
echo "Set the VAL_DATA_ROOT variable in create_imagenet.sh to the path" \
"where the ImageNet validation data is stored."
exit
fi echo "Creating train lmdb..." GLOG_logtostderr= $TOOLS/convert_imageset \
--resize_height=$RESIZE_HEIGHT \
--resize_width=$RESIZE_WIDTH \
--shuffle \
$TRAIN_DATA_ROOT \
$DATA/train.txt \ ##之前生成的list
$EXAMPLE/myself_train_lmdb ##修改名字 echo "Creating val lmdb..." GLOG_logtostderr= $TOOLS/convert_imageset \
--resize_height=$RESIZE_HEIGHT \
--resize_width=$RESIZE_WIDTH \
--shuffle \
$VAL_DATA_ROOT \
$DATA/val.txt \
$EXAMPLE/myself_test_lmdb echo "Done."
之后 cd caffe-master
运行 sudo ./examples/myself/create_imagenet.sh
在examples/myself/ 下生成两个lmdb文件夹
4,计算图像均值
复制examples/imagenet/make_imagenet_mean.sh到 examples/myself
使用make_imagenet_mean.sh计算图像均值,在data/myself 下产生imagenet_mean.binaryproto文件
相对路径仍为 caffe-master下,按照自己的文件修改路径。
之后 sudo ./examples/myself/make_imagenet_mean.sh
#!/usr/bin/env sh
# Compute the mean image from the imagenet training lmdb
# N.B. this is available in data/ilsvrc12 EXAMPLE=examples/myself
DATA=data/myself
TOOLS=build/tools $TOOLS/compute_image_mean $EXAMPLE/myself_train_lmdb
$DATA/imagenet_mean.binaryproto echo "Done."
5,定义网络
主要是修改下面三个文件:
my_train.prototxt
my_test.prototxt
solver.prototxt
这三个文件可以从caffe的已有例子中复制过来。接下来需要自己修改,修改的地方主要是,一些文件的路径和输出层的个数(即类别数目)。
6,写训练脚本my_train_lenet.sh 如下:(我这个是根据mnist中的文件改过来的)
#!/usr/bin/env sh
set -e ./build/tools/caffe train --solver=examples/myself/solver.prototxt $@
未完待续。
使用caffe训练自己的图像数据(未完)的更多相关文章
- 实践详细篇-Windows下使用Caffe训练自己的Caffemodel数据集并进行图像分类
三:使用Caffe训练Caffemodel并进行图像分类 上一篇记录的是如何使用别人训练好的MNIST数据做训练测试.上手操作一边后大致了解了配置文件属性.这一篇记录如何使用自己准备的图片素材做图像分 ...
- python+caffe训练自己的图片数据流程
1. 准备自己的图片数据 选用部分的Caltech数据库作为训练和测试样本.Caltech是加州理工学院的图像数据库,包含Caltech101和Caltech256两个数据集.该数据集是由Fei-Fe ...
- 从JSON数据源导入数据(未完)
- 使用caffe训练mnist数据集 - caffe教程实战(一)
个人认为学习一个陌生的框架,最好从例子开始,所以我们也从一个例子开始. 学习本教程之前,你需要首先对卷积神经网络算法原理有些了解,而且安装好了caffe 卷积神经网络原理参考:http://cs231 ...
- CocoStuff—基于Deeplab训练数据的标定工具【一、翻译】(未完)
一.CocoStuff简介 CocoStuff是一款为deeplab设计的,运行在Matlab中的语义标定工具,其标定结果和结合Deeplab训练出的结果均为mat文件格式,该项目源码已在github ...
- caffe简易上手指南(二)—— 训练我们自己的数据
训练我们自己的数据 本篇继续之前的教程,下面我们尝试使用别人定义好的网络,来训练我们自己的网络. 1.准备数据 首先很重要的一点,我们需要准备若干种不同类型的图片进行分类.这里我选择从ImageNet ...
- scipy笔记—scipy.misc.imresize用法(方便训练图像数据)
scipy.misc.imresize 不同于普通的reshape, imresize不是单纯的改变图像矩阵的维度,而是能将图片重采样为指定像素,这样给深度学习中训练图像数据带来方便. import ...
- Caffe Blob针对图像数据在内存中的组织方式
Caffe使用Blob结构在CNN网络中存储.传递数据.对于批量2D图像数据,Blob的维度为 图像数量N × 通道数C × 图像高度H × 图像宽度W 显然,在此种场景下,Blob使用4维坐标定位数 ...
- caffe训练数据流程
cifar10训练实例 1. 下载数据 # sudo sh data/cifar10/get_cifar10.sh 2. 转换数据格式为lmdb # sudo sh examples/cifar10/ ...
随机推荐
- sql批量修改wordpress文章发布时间
有时为了体现wordpress文章的更新程度,会在后台那边重新设置发布时间,有没更简单的方法呢?用sql批量修改wordpress文章发布时间怎么操作呢? UPDATE `wp_posts` SET ...
- 10 jmeter之动态关联
jmeter中关联是通过之前请求的后置处理器实现的,具体有两种方式:XPath Extractor(一般xml的时候用的多)和正则表达式提取器. 以webtours登录为例进行演示login.jmx ...
- [vue]组件的创建(componet)和销毁(keep-alive缓存)和父子dom同步nextTick
思路: 1. 组件的好处,重用性 2. 组件对的slot用法 3. 子如何调用父的数据 4. 子如何触发父的方法执行 5. 父如何触发子的方法执行 6. 如何创建组件和销毁自建--如何缓存避免每次切换 ...
- (转)spring boot整合redis
一篇写的更清晰的文章,包括redis序列化:http://makaidong.com/ncjava/330749_5285125.html 1.项目目录结构 2.引入所需jar包 <!-- Sp ...
- Centos安装ELK5.3.2
一.注意情况 1.elk的版本要一致. 2.ElasticSearch是基于lucence开发的,也就是运行需要java支持.所以要先安装JAVA环境.由于es5.x依赖于JDK1.8,所以需要安装J ...
- yum && 编译 安装mysql 5.7 多实例
yum安装 [root@localhost ~]# wget http://repo.mysql.com/mysql57-community-release-el7.rpm [root@localho ...
- jmeter 读取excel数据
jmeter 读取excel数据使用的方法是使用Jmeter CSV Data Set Config参数化 但是将excel文件保存成csv格式后,jmeter读取后返回的数据总是出现乱码问题, 以下 ...
- BCB TLable控件透明背景属性
当我们希望一个Label适应它父窗口的背景时,设置Tranparent属性值就OK Transparent:true 透明 false 不透明
- liferay笑傲江湖-API之参数的工具类(ParamUtil)
public class ParamUtil { 036 037 public static boolean get( 038 HttpServletRequest request, String p ...
- CAScrollLayer
CAScrollLayer 对于一个未转换的图层,它的bounds和它的frame是一样的,frame属性是由bounds属性自动计算而出的,所以更改任意一个值都会更新其他值. 但是如果你只想显示一个 ...