一.配置环境及数据准备
我们要在ubuntu16.04系统上先搭建好caffe的环境,确保能正常使用。然后准备好数据集,接下来准备制作我们自己的数据集。如果只是拿来练手,那caffe/examples/images/下的图片就可以先用来练手。
先把最后的成果放上来,有个感性认识

二.目的简介
我们在学习深度(caffe框架)的时候,多数用的都是别人处理好的图片数据集,我们自己手里的图片的文件的格式为jpg,png,jpeg等而且可能图片的大小还不一致,但是caffe中使用的数据类型为lmdb或leveldb,所以我们需要将原始的图片文件转换成caffe中使用的数据类型。
在caffe/build/tools/文件夹下,有一个convert_imageset.cpp文件,这个文件的作用就是用于将图片文件转换成caffe框架中能直接使用的db文件。

使用格式为:

 convert_imageset [FLAGS] ROOTFOLDER/ LISTFILE DB_NAME

参数解读:
FLAGS:图片参数组
ROOTFOLDER:原始数据集的绝对路径
LISTFILE:图片的文件名列表,一般为txt文件,一行一张图片的信息,下面会给出如何生成filelist的方法。
DB_NAME:生成的db文件的存放目录

三.生成图片集的列表清单
我先在根目录下创建一个名为mydatabase的文件夹,并在mydatabse下创建cat_dog_train和cat_dog_val文件夹。然后将用来训练的图片放入cat_dog_train文件夹下,将用来验证的图片放入cat_dog_val文件夹下。


接下来我们要创建一个sh脚本文件,手动创建并命名为create_trainfilelist.sh

# /usr/bin/env sh
DATA=/home/hca/mydatabase/cat_dog_train  #DATA为训练集的路径
echo "Create train.txt..."
rm -rf $DATA/train.txt
find $DATA -name ca*.jpg | cut -d '/' -f6 | sed "s/$/ 1/">>$DATA/train.txt
find $DATA -name do*.jpg | cut -d '/' -f6 | sed "s/$/ 2/">>$DATA/tmp.txt
cat $DATA/tmp.txt>>$DATA/train.txt
rm -rf $DATA/tmp.txt
echo "Done.."

这个脚本文件中,用到了rm,find, cut, sed,cat等linux命令。
rm: 删除文件

find: 寻找文件

cut: 截取路径

sed: 在每行的最后面加上标注。本例中将找到的*cat.jpg文件加入标注为1,找到的*dog.jpg文件加入标注为2

cat: 将两个类别合并在一个文件里。

然后执行该sh文件

cd caffe
sh /home/hca/mydatabase/create_trainfilelist.sh

执行完之后,会在训练集的文件夹下生成train.txt文件,train.txt文件里存放的是训练集中图片的文件名及标签。效果如下:

验证列表的清单跟训练列表的几乎一模一样,类比着操作即可。

四.格式转化
在mydatabse文件夹下创建sh脚本文件,我将该文件命名为create_resnet.sh。输入内容为:

#!/usr/bin/en sh
DATA=/home/hca/mydatabase
EXAMPLE=/home/hca/mydatabase
DBTYPE=lmdb
echo "create train lmdb..."
rm -rf $DATA/cat_dog_train_lmdb
build/tools/convert_imageset --shuffle \
--resize_height=224 --resize_width=224 \
/home/hca/mydatabase/cat_dog_train/ $EXAMPLE/cat_dog_train/train.txt  $DATA/cat_dog_train_lmdbecho "Done."echo "create val lmdb..."
rm -rf $DATA/cat_dog_val_lmdb
build/tools/convert_imageset --shuffle \
--resize_height=224 --resize_width=224 \
/home/hca/mydatabase/cat_dog_val/ $EXAMPLE/cat_dog_val/val.txt  $DATA/cat_dog_val_lmdbecho "Done."echo "Computing image mean..."./build/tools/compute_image_mean -backend=$DBTYPE \$DATA/cat_dog_train_$DBTYPE $DATA/mean.binaryprotoecho "Done."

接下来保存并执行该文件

cd caffe
sh /home/hca/mydatabase/cat_dog_train/create_resnet.sh

执行完之后,会在mydatabase文件夹下生成cat_dog_train_lmdb、cat_dog_val_lmdb文件夹,和mean.binaryproto文件

五.运行solver.prototxt
在运行solver.prototxt文件之前,我们需要对它做一定的修改

snapshot_prefix:用于存放生成的model的路径(最好写绝对路径)
net:是我们要调用的网络,所以我们需要修改成我们要调用的网络的路径
接下来就要打开我们调用的网络trainval.prototxt文件,修改source路径,并根据需要修改全连接层的num_output参数等。
下面开始运行solver.prototxt

cd caffe
./build/tools/caffe train -solver=/XXX/XXX/…/sovler.prototxt

运行结束以后会在snapshot文件夹下生成caffemodel和solverstate文件,一个是模型文件,一个是中间状态文件。当训练过程中断,想要继续训练数据,此时只需要调用solverstate文件即可。命令如下:

cd  caffe
./build/tools/caffe train -solver=/XXX/XXX/…/sovler.prototxt -snapshot=/XXX/XXX/…/XX.solverstate

当需要用已经训练好的model对某次训练做finetune,可以使用caffemodel,命令如下:

cd caffe
./build/tools/caffe train -solver=/XXX/XXX/…/sovler.prototxt -weights=/XXX/XXX/…/XX.caffemodel

caffe 制作数据集相关推荐

  1. caffe lmdb数据集的制作

    我也参考了别人的文章,其实也算不上原创,只是自我感觉能从头到尾的走一遍挺好的. lmdb数据集的制作 以imagenet数据集为例,我们只制作label范围为[0-10)的数据集,这个只是为了演示如何 ...

  2. 【puthon】把大量csv文件写入h5文件制作数据集

    背景 每一个样本的数据被写入了一个csv中,在制作数据集时,需要先将大量的csv文件写入到一个h5文件中 样例代码 import os import sys import h5py import nu ...

  3. TensorFlow神经网络(六)制作数据集,实现特定应用

    [致谢]内容来自mooc人工智能实践第六讲 并广泛参考文章 https://www.jianshu.com/p/766a2af5eb6a 一.数据集生成读取文件mnist_generateds.py ...

  4. 【手把手带你入门深度学习之150行代码的汉字识别系统】学习笔记 ·001 用OpenCV制作数据集

    立即学习:https://edu.csdn.net/course/play/24719/279505?utm_source=blogtoedu 目录 一.制作数据集代码 二.思路总结 1.数据集目录的 ...

  5. 目标检测--RFBNet训练自己制作数据集出现loss=nan问题的解决方法

    之前用RFBNet进行目标检测,采用的数据集是VOC2007和VOC2012.最近用在自己的数据集进行训练,由于我的数据集格式跟VOC格式不一样,根据网上的经验,我就开始将自己的数据集制作成VOC格式 ...

  6. 制作数据集(一):将视频数据剪辑为图片数据

    概要 由于我自己的项目缺少合适的数据集,所以我需要自己制作数据集,即我需要自己完成从用摄像头录制视频到制作图片数据集的整个过程.所以这篇博客旨在记录我将视频数据剪辑为图片数据的过程. 先声明我的设备配 ...

  7. 遥感影像识别-制作数据集

    1. 目的与意义 遥感己被广泛应用于地质监视,气象监测,军事情报收集,环境保护,农情普查等众多领域.遥感图像分割旨将遥感图像所描述的复杂地物信息中感兴趣的地物类别划分为具有语义的闭合区域.人工目视解译 ...

  8. 【PyTorch教程】制作数据集的标签(label)

    关于制作数据集的label: 在P7视频的最后,写了这段,用来重新命名文件的label的 img 和 label 的管理方法,有两种: 1.用img所在文件夹的名称,作为label: 2.img在一个 ...

  9. IntelRealSense d415深度相机拍照制作数据集python脚本

    IntelRealSense d415深度相机拍照制作数据集python脚本 最近想做一个阴影数据集,手上d415相机像素好一点,就用来调用拍照啦. 上源码: import pyrealsense2 ...

最新文章

  1. 过滤XML数据中的非主流特殊字符
  2. 【双100%解法】LeetCode 141 【剑指Offer 23】链表中环的入口节点
  3. 极域电子教室软件怎么脱离控制_全自动点胶机的控制系统都有哪些?
  4. Spring_02_AOP初级总结
  5. python批量生成图片_利用Python批量生成任意尺寸的图片
  6. mysql管理器源码_一个HelloWorld版的MySQL数据库管理器的设计与实现(源码)
  7. 阿里二面:RocketMQ 消息积压了,增加消费者有用吗?
  8. pb将datawindow数据导出EXCEL
  9. Linux系统简介与准备
  10. eosio.msig合约源码分析
  11. css之左边div固定宽度右边div自适应布局
  12. linux3.10高端内存,Linux内存管理之高端内存映射
  13. dynamips常用命令
  14. sql 给字段设置默认值,
  15. T3普V11.2补丁bug
  16. 2022 AI趋势8大预测
  17. 8个美白小锦囊 不知不觉中白起来
  18. 孢子社群:今日推荐人工智能微信群:TensorflowNews.com 9群
  19. 2018国赛数学建模B题一道工序代码
  20. 从键盘输入n个数 求其中的最大数

热门文章

  1. 零零信安-DD数据泄露报警日报【第43期】
  2. 医学自然语言处理相关资源整理
  3. 使用74LS245驱动8×8LED点阵屏显示数字
  4. 组合之分苹果问题(22)
  5. JXTA的安装和使用
  6. UE4制作尸潮爬墙学习笔记
  7. CTPN文本检测与tensorflow实现
  8. 2020年华为杯第十七届中国研究生数学建模竞赛---回顾记录
  9. Gradle构造Spring boot项目(使用私服地址)
  10. 论文阅读:《A Neural Conversational Model》