使用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/ ...
随机推荐
- filter push down
filter push down filter push down :先filter再做join 如果SQL里有where条件,那么数据库引擎会先filter再做join 但是MySQL5.6之前还不 ...
- A solution for MySQL Assertion failure FIL_NULL
A solution for MySQL Assertion failure FIL_NULL http://michaelfranzl.com/2014/01/25/solution-mysql-a ...
- SDUT1157:小鼠迷宫问题(bfs+dfs)
http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=1157 题目描述 小鼠a与小鼠b身处一个m×n的 ...
- SDUT2826:名字的价值
http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2806 名字的价值 Time Limit: 10 ...
- C# 定时器 一个简单 并且可以直接运行的Demo
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- html03
快速开发指南:1.新建页面之后,编写外部样式表文件,引入到HTML页面中2.用浏览器打开页面->F12->sources->打开css文件 右边编写样式,左边查看效果3.样式编写完成 ...
- 为什么size_t重要?
参见 http://en.cppreference.com/w/cpp/types/size_t size_t其实与uintptr_t一个道理.就是一个东西.指针其实就是寻址,与地址总线位数一致,编译 ...
- CRM项目总结-封装PortletURLUtil
package com.ebizwindow.crm.utils; import java.security.Key; import java.util.List; import javax.port ...
- 2:1 Strus2架构
一: 二: 表示:当以/login或者login.do表示的请求过来,就使用class指定的LoginAction类来处理,处理完了返回一个结果字符串,若果结果字符串是"fail" ...
- Python: str.split()和re.split()的区别
str.split() 单一分隔符,使用str.split()即可 str.split不支持正则及多个切割符号,不感知空格的数量 re.split() 多个分隔符,复杂的分隔情况,使用re.split ...