1. 准备自己的图片数据

选用部分的Caltech数据库作为训练和测试样本。Caltech是加州理工学院的图像数据库,包含Caltech101和Caltech256两个数据集。该数据集是由Fei-FeiLi, Marco Andreetto, Marc 'Aurelio Ranzato在2003年9月收集而成的。Caltech101包含101种类别的物体,每种类别大约40到800个图像,大部分的类别有大约50个图像。Caltech256包含256种类别的物体,大约30607张图像。图像如下图所示,下载链接为:http://www.vision.caltech.edu/Image_Datasets/Caltech101/

Caltech其中的airplanes、Faces、Motorbikes、watch 4个类别分别包含800、435、798、239张图片,选用这4种图片训练和测试数据。

airplanes:

Faces:

Motorbikes:

watch:

2. 图片重命名

为了清楚的分类,收集的图片按照各自的分类重命名一下(该过程也可以省略),airplanes、Faces、Motorbikes和watch类别中的图片分别以0、1、2、和3作为名称的第一个字母(如上图所示,已经做好了重命名),代表自己的分类。python实现的文件批量重命名:

import osdef renameImage(pathFile,label):startNum=0for files in os.listdir(pathFile):oldDir=os.path.join(pathFile,files)if os.path.isdir(oldDir):continuefilename=os.path.splitext(files)[0]filetype=os.path.splitext(files)[1]newDir=os.path.join(pathFile,str(label)+'_'+str(startNum)+filetype)os.rename(oldDir,newDir)startNum+=1print(oldDir+' 重命名为: '+newDir)
renameImage('D:\\0704\\Motorbikes',2)

renameImage函数第一个参数是需要重命名的文件所在文件夹路径,第二个参数是图片分类。

3. 灰度图转换&&图片大小统一

Caltech中的图片是三通道彩色图片,大小不统一,需要修改成单通道灰度图片,统一修改成64*64大小:

import cv2
import os
import numpydef Resize(pathFile,reSizeFile):for files in os.listdir(pathFile):imagePathFile=os.path.join(pathFile,files)img=cv2.imread(imagePathFile,0)imgResize=cv2.resize(img,(64,64),interpolation=cv2.INTER_CUBIC)reSizeDir=os.path.join(reSizeFile,files)cv2.imwrite(reSizeDir,imgResize)print(imagePathFile+' 调整大小成功,存放路径在: '+reSizeFile)
Resize('D:\\0704\\Motorbikes','D:\\0704\\RMotorbikes')

第一个参数是的图片文件 所在路径,第二个参数是保存路径。

4. 生成Label文件

图片准备好之后开始制作label标签文件,格式是 “xx.jpg 0”,python实现:

import os
def maketxtList(imageFile,pathFile,label):fobj=open(pathFile,'a')for files in os.listdir(imageFile):fobj.write('\n'+files+' '+str(label))print(files+' '+str(label)+' 写入成功!')fobj.close()
maketxtList('D:\\0704\\Testwatch','D:\\0704\\testLabel.txt',3)

第一个参数是在第3步处理好的图片路径,第二个参数是生成的标签文件,第三个参数是标签,生成的标签如下:

测试数据集分别取airplanes、Faces、Motorbikes、watch各200、200、200、100张图片共700张,按同样的方法生成测试标签。

5. 转化成lmdb数据库文件

新建一个MakeLmdb.bat的脚本文件,使用caffe中的convert_imageset.exe工具转化图片数据为lmdb数据文件:

D:\Software\Caffe\caffe-master\Build\x64\Release\convert_imageset.exe
D:\0704\testImage\ D:\0704\testLabel.txt D:\0704\test_lmdb
pause

执行结果:

分别生成train_lmdb和 test_lmdb文件:

6. 计算均值文件mean.binaryproto

计算均值文件备用:

D:\Software\Caffe\caffe-master\Build\x64\Release\compute_image_mean.exe
D:\0704\test_lmdb D:\0704\mean_test.binaryproto
pause

7. 建立CNN网络和训练参数

CNN网络和训练参数文件使用caffe中mnist例子中的 “lenet_train_test.prototxt” 和 “lenet_solver.prototxt”两个文件,做一些参数修改:

lenet_solve.prototxt文件参数修改:

测试数据量比较少,这里的test_iter参数修改为20,另一个就是基础学习率设置为0.0001,这个参数比较重要,需要根据实际情况调整,如果按照之前学习率设置为0.01的话,会出现训练过程中loss一直保持87.3365(其实已经溢出了)这个值不变的情况。

lenet_train_test.prototxt文件参数修改:

1. 修改训练和测试lmdb数据路径和训练数据每组包含数据(batch_size),这里的batch_size不宜设置过小,建议最少为20:

2.  修改输出层 ip2中的输出由10改为4,这里的4代表训练分为4种分类:

8. 执行训练

D:\Software\Caffe\caffe-master\Build\x64\Release\caffe.exe
train --solver=D:\0704\lenet_solver.prototxt
pause  

训练结果,accuracy为0.9928:

python+caffe训练自己的图片数据流程相关推荐

  1. Windows caffe(四) 训练自己的图片数据

    前一次实验将原始的图片数据转化为caffe可以运行的lmdb格式. 本次实验完整分析,如何训练自己的图片数据. 毕竟我们学习caffe要应用到实际的科研/工作中,而不仅仅停留在实验上. 一.实验准备 ...

  2. caffe windows 训练自己的图片数据

    caffe训练自己的数据分为四步: 1.图片数据集准备 2.网络训练所需数据格式 lmdb / leveldb 转换 3.图像均值文件计算 4.网络训练 具体过程如下: 一.图片数据集准备 图片数据收 ...

  3. python caffe 训练自己的模型_python接口调用已训练好的caffe模型测试分类方法

    训练好了model后,可以通过python调用caffe的模型,然后进行模型测试的输出. 本次测试主要依靠的模型是在caffe模型里面自带训练好的结构参数:~/caffe/models/bvlc_re ...

  4. python爬虫,g-mark网站图片数据爬取及补坑

    应用python对g-mark网站图片数据爬取,同时但对于数据抓取失败的图片进行补坑(重新爬取操作),由于是日本网站,没有梯子访问的话,特别容易访问超时,比较合适的补坑操作是直接将数据采集到数据库,而 ...

  5. python阿里巴巴_阿里图片采集,python selenium 采集阿里巴巴商品图片数据

    [Python] 纯文本查看 复制代码#采集阿里巴巴商品图片数据 from selenium import webdriver import time import requests import o ...

  6. 利用tensorflow训练自己的图片数据(1)——预处理

    一. 准备原始数据 首先,我们需要准备训练的原始数据,本次训练为图像分类识别,因而一开始,笔者从网上随机的下载了Dog的四种类别:husky,jiwawa,poodle,qiutian.每种类别30种 ...

  7. python实现RGB888格式的图片数据保存到bmp文件

    参考文章:http://exasic.com/article/index.php?md=py-bmp 功能描述:获取图片像素值,格式是rgb888,取出rgb565的有效数据,再将像素值BGR888保 ...

  8. caffe 训练自己的数据

    转自:http://www.jianshu.com/p/9644f7ec0a03 和 http://www.cnblogs.com/denny402/p/5083300.html Caffe训练自己的 ...

  9. caffe学习笔记(一): caffe训练流程(超详细)

    一.准备数据 1.得到文件列表清单                2.转换成Lmdb格式 在caffe中经常使用的数据类型是lmdb或leveldb,因此需要将原始图片文件转化为能够运行的db文件.在 ...

最新文章

  1. java 数据库 流式查询_关于mybatis:强大MyBatis-三种流式查询方法
  2. 判断滚动条是否到某个位置,还有滑动的方向,以此来判断什么时候阻止滚动条滚动...
  3. spring cloud 2.3.x 注册中心eureka 配置
  4. SpringMVC+Spring+mybatis项目搭建详细过程
  5. flash和linux文件系统,面向大容量Flash的高效Linux文件系统改进和实现
  6. Spring4:没有默认构造函数的基于CGLIB的代理类
  7. 重磅盘点!2018年更受欢迎的技术干货,来来回回也就看了几十遍吧
  8. 【踩坑记录】mybatis-plus的insert方法,默认会生成一个uuid作为主键,导致类型不一致,存入数据库报错
  9. C#.NET 大型企业信息化系统集成快速开发平台 4.2 版本 - 服务器之间的接口通讯功、信息交换...
  10. ubuntu 12.04 ubuntu System program problem detected 解决方法
  11. oracle awr报告生成_[ORACLE],SQL性能报告(AWR)导出,扶你走上调优大神之路
  12. html——js简单计时器实现
  13. matlab理论力学项目研究,基于MATLAB的机械力学问题的研究
  14. spark 部署安装
  15. 计算机系统常见故障及处理,电脑常见故障以及解决方案都在这里
  16. PageOffice——动态填充Word模板并在线编辑
  17. Python_高级特性
  18. 乘幂法计算矩阵主特征值和特征向量-Matlab实现
  19. 牛客数据库SQL实战 51-60(substr切割字符串、group_concat组拼接、limit_offset分页、exists条件成立判断、case分支、表的复用)
  20. 解决Tuxera试用过期重装问题

热门文章

  1. vue之校验身份证号码
  2. nginx静态资源访问配置
  3. 经纬度5位数和6位数差多少_请问经纬度 经度一秒大概相差多少,纬度一秒相差多少?...
  4. 现货黄金怎么做比较实在
  5. Flink Checkpoint机制分析
  6. iOS里很简单的推送,移动端。
  7. 论文写作--学习心得
  8. 黑马程序员2018软件测试培训班完整视频
  9. 如何查看BWP相关log
  10. 逻辑编排在优酷可视化搭建中的实践(二) - 编排器与业务