python+caffe训练自己的图片数据流程
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训练自己的图片数据流程相关推荐
- Windows caffe(四) 训练自己的图片数据
前一次实验将原始的图片数据转化为caffe可以运行的lmdb格式. 本次实验完整分析,如何训练自己的图片数据. 毕竟我们学习caffe要应用到实际的科研/工作中,而不仅仅停留在实验上. 一.实验准备 ...
- caffe windows 训练自己的图片数据
caffe训练自己的数据分为四步: 1.图片数据集准备 2.网络训练所需数据格式 lmdb / leveldb 转换 3.图像均值文件计算 4.网络训练 具体过程如下: 一.图片数据集准备 图片数据收 ...
- python caffe 训练自己的模型_python接口调用已训练好的caffe模型测试分类方法
训练好了model后,可以通过python调用caffe的模型,然后进行模型测试的输出. 本次测试主要依靠的模型是在caffe模型里面自带训练好的结构参数:~/caffe/models/bvlc_re ...
- python爬虫,g-mark网站图片数据爬取及补坑
应用python对g-mark网站图片数据爬取,同时但对于数据抓取失败的图片进行补坑(重新爬取操作),由于是日本网站,没有梯子访问的话,特别容易访问超时,比较合适的补坑操作是直接将数据采集到数据库,而 ...
- python阿里巴巴_阿里图片采集,python selenium 采集阿里巴巴商品图片数据
[Python] 纯文本查看 复制代码#采集阿里巴巴商品图片数据 from selenium import webdriver import time import requests import o ...
- 利用tensorflow训练自己的图片数据(1)——预处理
一. 准备原始数据 首先,我们需要准备训练的原始数据,本次训练为图像分类识别,因而一开始,笔者从网上随机的下载了Dog的四种类别:husky,jiwawa,poodle,qiutian.每种类别30种 ...
- python实现RGB888格式的图片数据保存到bmp文件
参考文章:http://exasic.com/article/index.php?md=py-bmp 功能描述:获取图片像素值,格式是rgb888,取出rgb565的有效数据,再将像素值BGR888保 ...
- caffe 训练自己的数据
转自:http://www.jianshu.com/p/9644f7ec0a03 和 http://www.cnblogs.com/denny402/p/5083300.html Caffe训练自己的 ...
- caffe学习笔记(一): caffe训练流程(超详细)
一.准备数据 1.得到文件列表清单 2.转换成Lmdb格式 在caffe中经常使用的数据类型是lmdb或leveldb,因此需要将原始图片文件转化为能够运行的db文件.在 ...
最新文章
- java 数据库 流式查询_关于mybatis:强大MyBatis-三种流式查询方法
- 判断滚动条是否到某个位置,还有滑动的方向,以此来判断什么时候阻止滚动条滚动...
- spring cloud 2.3.x 注册中心eureka 配置
- SpringMVC+Spring+mybatis项目搭建详细过程
- flash和linux文件系统,面向大容量Flash的高效Linux文件系统改进和实现
- Spring4:没有默认构造函数的基于CGLIB的代理类
- 重磅盘点!2018年更受欢迎的技术干货,来来回回也就看了几十遍吧
- 【踩坑记录】mybatis-plus的insert方法,默认会生成一个uuid作为主键,导致类型不一致,存入数据库报错
- C#.NET 大型企业信息化系统集成快速开发平台 4.2 版本 - 服务器之间的接口通讯功、信息交换...
- ubuntu 12.04 ubuntu System program problem detected 解决方法
- oracle awr报告生成_[ORACLE],SQL性能报告(AWR)导出,扶你走上调优大神之路
- html——js简单计时器实现
- matlab理论力学项目研究,基于MATLAB的机械力学问题的研究
- spark 部署安装
- 计算机系统常见故障及处理,电脑常见故障以及解决方案都在这里
- PageOffice——动态填充Word模板并在线编辑
- Python_高级特性
- 乘幂法计算矩阵主特征值和特征向量-Matlab实现
- 牛客数据库SQL实战 51-60(substr切割字符串、group_concat组拼接、limit_offset分页、exists条件成立判断、case分支、表的复用)
- 解决Tuxera试用过期重装问题