caffe调用的一个例子

本文是学习Caffe官方文档"ImageNet Tutorial"时做的,同样由于是Windows版本的原因,很多shell脚本不能直接使用,走了不少弯路,但是收获也不少。比如:如何让shell脚本在Windows系统上直接运行、如何去用Caffe给图像resize来统一大小,如何去构建train.txt和val.txt等等。具体流程均记录如下。


正文:

1.准备数据

我从网上下载了两类图片,一类为猫,一类为鸟,分别存在名为bird和cat的文件夹里,每类60张(50张做为训练集,10张做为测试集)。【分开存放,在做train.txt时,方便打标签。等做完标签再将100张训练图片一起放在新建的train文件下里,下面会详述。】

猫:(已经过批量重命名。ps:我选图还是比较讲究的,不好看的、不清楚的、不奇怪的我不选,哈哈)


鸟:(已经过批量重命名)



2.构建train.txt和val.txt


首先是重命名图片,从搜索引擎下载下来的图片的名称都是则乱无章,我们需要用批量重命名的方法去先给它们命名。

批量重命名可以通过一个bat文件实现,代码如下:



修改其中的“bird”位置,运行。比如,我将“bird”改为“Cat”,运行bat文件,效果如下:




可以看到图片名字被统一的修改了,并且生成了一个list文件夹,通过txt文件的查找-替换,给每个文件打上标签(比如Cat为0,Bird为1),截图如下:


下面的工作自己做就行了,将cat和bird的txt文档,合在一起,组成train.txt。同理,完成val.txt。我的train.txt和val.txt的截图如下(我标签用了1和2):




3.数据处理


数据处理要进行三项:1.将图片统一转化成256X256大小。2.将数据转化为LEVELDB格式。3.求数据均值。

看了一些博客,在将图片统一转化成256大小这儿曲线救国,想了很多方法。其实第1步和第2步可以一起完成,只要调用examples\imagenet\create_imagenet.sh就可以一起完成。但是shell脚本在Windows下如何运行呢?是可以的,只需要安装Git即可在Windows环境下运行shell脚本!Git下载链接:https://git-scm.com/downloads/

根据具体情况,对create_imagenet.sh,做一些修改(需要修改处均用红色方框标出,五角星处即是caffe自带的resize图片的地方,一定要设为true):




打开git,运行create_imagenet.sh即可,查看文件夹,出现imagenet_train_leveldb和imagene_val_leveldb:



接下来是进行第三步,求图像均值了。在进行这一步时,我使用\examples\imagenet\make_imagenet_mean.sh时,是成功求得了均值文件imagenet_mean.binaryproto,但在之后训练时,一直报错,提示均值文件无法读取。故还是换用了compute_image_mean.exe,来求得均值文件,具体步骤,之前的文章已经记录了,不再赘述。

再从\models\bvlc_reference_caffenet中,将train_val.prototxt和solver.prototxt复制过来,这样所有文件都准备齐全了:



4.配置训练所需文件


首先,根据具体情况修改,train_val.prototxt:





修改solver.prototxt:




关于solver里面的参数,我认为应该根据具体情况就修改就好了,这一部分我还不是很熟悉,慢慢积累吧。


5.进行训练


写一个bat文件,进行训练即可!bat文件代码如下:



6.训练结果


因为我的电脑配置很低很低。。所以训练起来很慢,我调小了很多参数,训练了两天还是没训完。。。贴一张训练中的截图吧:


 

7.总结


这次主要是为了自己感受一下用Windows Caffe训练自己数据的整个过程,也没有去追求准确率,也没有考虑去跟踪训练过程去调参等等。这些经验方面的知识,接下来慢慢继续积累吧。经过这次学习,起码能把整个过程跑下来了,收获很多。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/387319.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

孔铜的铜厚

---恢复内容开始--- 表面处理方式注释&#xff1a; 喷锡 喷锡铅合金是一种最低成本PCB表面有铅工艺&#xff0c;它能保持良好的可焊接性。但对于精细引脚间距(<0.64mm)的情况&#xff0c;可能导致焊料的桥接和厚度问题。 无铅喷锡 一种无铅表面处理工艺&#xff0c;符合“环…

各种机器学习的优缺点及应用场景

目录 正则化算法&#xff08;Regularization Algorithms&#xff09; 集成算法&#xff08;Ensemble Algorithms&#xff09; 决策树算法&#xff08;Decision Tree Algorithm&#xff09; 回归&#xff08;Regression&#xff09; 人工神经网络&#xff08;Artificial…

TensorFlow自带例子

TensorFlow自带例子已经包含了android和ios下的摄像头图像分类示例Inception&#xff0c;这里补充一个Windows下的&#xff0c;使用AForge库(www.aforgenet.com)操作摄像头。 代码在这里下载&#xff0c;使用Visual Studio 2017编译。 http://files.cnblogs.com/files/autosoft…

java01基础简介

1 java概述 开发服务器端应用程序最流行语言&#xff0c;产生网页、运行后端逻辑。 当对java了解到一定程度&#xff0c;阅读源码才能解决问题。 Applet&#xff1a;在网页中运行的java程序&#xff0c; Java的应用领域&#xff1a; 桌面应用系统开发 企业级应用开发 多媒…

TensorFlow自带例子已经包含了android和ios下的摄像头图像分类示例Inception v1,这里补充一个Windows下的,使用AForge库(www.aforgenet.com)操作

TensorFlow自带例子已经包含了android和ios下的摄像头图像分类示例Inception v1&#xff0c;这里补充一个Windows下的&#xff0c;使用AForge库(www.aforgenet.com)操作摄像头。 代码在这里下载&#xff0c;使用Visual Studio 2017编译。 http://files.cnblogs.com/files/autos…

BP神经网络与Python实现

人工神经网络是一种经典的机器学习模型&#xff0c;随着深度学习的发展神经网络模型日益完善.联想大家熟悉的回归问题&#xff0c; 神经网络模型实际上是根据训练样本创造出一个多维输入多维输出的函数&#xff0c; 并使用该函数进行预测&#xff0c; 网络的训练过程即为调节该…

《关于长沙.NET技术社区未来发展规划》问卷调查结果公布

那些开发者们对于社区的美好期待 2月&#xff0c;长沙.net 技术社区自从把群拉起来开始&#xff0c;做了一次比较正式、题目为《关于长沙.NET技术社区未来发展规划》的问卷调查&#xff0c;在问卷调查中&#xff0c;溪源写道&#xff1a; 随着互联网时代的到来&#xff0c;互联…

第一节:ASP.NET开发环境配置

第一节&#xff1a;ASP.NET开发环境配置 什么是ASP.NET&#xff0c;学这个可以做什么&#xff0c;学习这些有什么内容&#xff1f; ASP.NET是微软公司推出的WEB开发技术。 2002年&#xff0c;推出第一个版本&#xff0c;先后推出ASP.NET2.0&#xff0c;和ASP.NET3.5&#xff0c…

深度学习笔记之win7下TensorFlow的安装

最近要学习神经网络相关的内容&#xff0c;所以需要安装TensorFlow。不得不说&#xff0c;安装TensorFlow的感受就像是大一刚入学学习C语言时&#xff0c;安装vs时一样&#xff0c;问题一大堆&#xff0c;工具都装不好&#xff0c;还学啥呀。好在&#xff0c;就在昨晚&#xff…

人脸识别经典算法一:特征脸方法(Eigenface)

这篇文章是撸主要介绍人脸识别经典方法的第一篇&#xff0c;后续会有其他方法更新。特征脸方法基本是将人脸识别推向真正可用的第一种方法&#xff0c;了解一下还是很有必要的。特征脸用到的理论基础PCA在另一篇博客里&#xff1a;特征脸(Eigenface)理论基础-PCA(主成分分析法)…

Xception

The First ColumnThe Second Columnpadding 方式&#xff1a;same and valid The First ColumnThe Second ColumnSame 就是 增加一列相同的数 &#xff08;一般是0&#xff09;valid只保留有效的转载于:https://www.cnblogs.com/hugeng007/p/10477430.html

1.苍穹外卖-day01

苍穹外卖-day01 课程内容 软件开发整体介绍 苍穹外卖项目介绍 开发环境搭建 导入接口文档 Swagger 项目整体效果展示&#xff1a; 管理端-外卖商家使用 用户端-点餐用户使用 当我们完成该项目的学习&#xff0c;可以培养以下能力&#xff1a; 1. 软件开发整体介绍 作为一名…

C#调用Python模块

编程&#xff1a;C#调用Python模块 当下&#xff0c;C#与Python都是比较热门的计算机编程语言&#xff0c;他们各有优缺点&#xff0c;如果能让他们互相配合工作&#xff0c;那是多么美好的事情&#xff0c;今天我来讲解一下如何利用C#来调用Python。 如果让C#支持调用Python模…

面试简单整理之克隆

61.为什么要使用克隆&#xff1f; 克隆获取对象的副本&#xff0c;直接用复制还是一个引用。 62.如何实现对象克隆&#xff1f; 1.被clone的类实现cloneable接口&#xff0c;重写object类的clone&#xff08;&#xff09;方法 2.如果深克隆则克隆对象的引用对象也要实现接口、重…

PyCharm调试错误

JetBrains PyCharm 2017.3.2 这就说明python.exe的环境没有配&#xff0c;点击蓝色的configure Python Interpreter&#xff0c;然后选择对应的路径就可以了

Java06集合

13 集合 实现方法时&#xff0c;不同的数据结构会导致性能有很大差异。 13.1 集合接口 Java集合类库将接口&#xff08;interface&#xff09;与实现&#xff08;implementation&#xff09;分离。 可以使用接口类型存放集合的应用&#xff0c;一旦改变了想法&#xff0c;可…

Tensorflow验证码识别应用

简单的Tensorflow验证码识别应用&#xff0c;供大家参考&#xff0c;具体内容如下 1.Tensorflow的安装方式简单,在此就不赘述了. 2.训练集训练集以及测试及如下(纯手工打造,所以数量不多): 3.实现代码部分(参考了网上的一些实现来完成的) main.py(主要的神经网络代码) ?123456…

Linux 桌面玩家指南:09. X Window 的奥秘

Linux 桌面玩家指南&#xff1a;09. X Window 的奥秘 原文:Linux 桌面玩家指南&#xff1a;09. X Window 的奥秘特别说明&#xff1a;要在我的随笔后写评论的小伙伴们请注意了&#xff0c;我的博客开启了 MathJax 数学公式支持&#xff0c;MathJax 使用$标记数学公式的开始和结…

Storm教程1理论介绍

流式计算的历史: 早在7、8年前诸如UC伯克利、斯坦福等大学就开始了对流式数据处理的研究&#xff0c;但是由于更多的关注于金融行业的业务场景或者互联网流量监控的业务场景&#xff0c;以及当时互联网数据场景的限制&#xff0c;造成了研究多是基于对传统数据库处理的流式化&…

梯度下降原理及Python实现

梯度下降算法是一个很基本的算法&#xff0c;在机器学习和优化中有着非常重要的作用&#xff0c;本文首先介绍了梯度下降的基本概念&#xff0c;然后使用python实现了一个基本的梯度下降算法。梯度下降有很多的变种&#xff0c;本文只介绍最基础的梯度下降&#xff0c;也就是批…