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. 【JavaSE】day03_Date、SimpleDateFormat、Calendar、Collection
  2. GitHub上7000+ Star的Python常用代码合集
  3. Ubuntu安装webmin
  4. window环境apache服务器在本地添加域名
  5. QML 性能优化建议(一)
  6. 天津财经计算机专业研究生分数线,天津财经大学各专业2015—2020年硕士研究生复试分数线汇总...
  7. 类装载器ClassLoader
  8. 12009.IMU惯导传感器
  9. android 崩溃原因,Android SurfaceView常见崩溃的原因以及解决办法
  10. 大道至简-第一张 伪代码
  11. 电脑表格制作教程入门_微信销售小程序入门教程:制作+营销
  12. word中 插入公式及交叉引用
  13. 众包专访:开源众包让我安心——开源中国众包使用记录
  14. 【安装配置】DirectAdmin安装Nginx方法
  15. c语言中puts的作用是,C语言的字符串输出puts()函数
  16. 打开任务管理器的多种方法
  17. DHCP的工作原理及过程
  18. bert系列模型继续预训练(Pytorch)
  19. 利用计算机证明猜想,计算机科学家利用量子纠缠系统,证实44年前的一个猜想是错误的...
  20. CVE-2017-8464(震网三代)漏洞分析与复现

热门文章

  1. android编码:国标色彩标准名称和色值
  2. Android-开发者的下半场该如何打下去,kotlin数组
  3. Android的手机ip代码设置------有图有真相
  4. Lightbox相册,图片滚动和点击放大
  5. 转自美团技术博客的jvm内存泄露分析
  6. 2020年B证(安全员)考试题及B证(安全员)考试题库
  7. 2、AUTOSAR-EB tresos Studio使用说明--“工欲善其事,必先利其器“
  8. uniapp 页面跳转链接
  9. 汉诺塔算法 蒙特卡诺算法
  10. 科视Christie 连续第13年为第 24 届上海国际电影节提供放映支持