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;符合“环…

1 kafka简介

Publish-subscribe distributed messaging system. A distributed commit log. kafka集群中的服务器都叫broker。 客户端有两类&#xff1a;producer、consumer。 客户端和broker之间使用TCP协议。 不同业务系统的消息通过topic进行区分。 消息的topic会分区&#xff0c;以…

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

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

微信公众号接入开发者模式,服务器配置Token验证

概述 接入微信公众平台开发&#xff0c;开发者需要按照如下步骤完成&#xff1a; 填写服务器配置验证服务器地址的有效性依据接口文档实现业务逻辑官方指南文档服务器配置 服务器地址(URL)&#xff1a;填写完URL后&#xff0c;微信服务器会发送GET请求&#xff0c;并携带以下参…

2 kafka安装

单节点&#xff1a; 1、解压kafka压缩包到安装目录&#xff08;自己指定&#xff09;&#xff1b; 2、进入kafka目录并执行命令 > bin/zookeeper-server-start.sh config/zookeeper.properties #如果报错&#xff0c;修改kafka-run-class.sh&#xff0c;将 -XX:UseComp…

TensorFlow自带例子

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

遇到Visual Studio 当前不会命中断点.还没有为该文档加载任何符号的情况

一.问题及原因 有这样一种调用逻辑:A.exe调用B.dll.现在想要在B的源代码中打断点,从A发起进行调试,却给出了"当前不会命中断点.还没有为该文档加载任何符号"的提示.感觉十分奇怪,各种重新生成,重启VS都没啥用,最后不得以网上搜了一番,找到了问题的根源. 原来我把旧的…

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…

Docker+Mongodb

DockerMongodb 原文:DockerMongodbdocker search mongodb docker run -d -p 2701:27017 -v /usr/mongodb/data:/data/db -v /usr/mongodb/databack:/data/backup --name mongo-v1.0.0 mongo --auth docker exec -it mongo-v1.0.0 mongo admin docker exec -it mongo-v1.0.…

Java02继承

5继承 5.1 类、超类和子类 关键字extends表示继承。 Java中的继承都是公用继承&#xff0c;没有C中的私有继承和保护继承。 Super class Subclass 来自于集合的术语 Base class Derived class Parent class Child class 将通用的功能放在超类中&#xff0c;将具有特…

BP神经网络与Python实现

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

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

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

Java03接口与内部类

6 接口与内部类 接口 interface 对象克隆 内部类 inner class 代理 proxy 6.1 接口 public interface Comparable<T> {int compareTo(T other); }Arrays.sort(Object[] a) 利用的是mergesort 接口也可以被扩展 public interface Moveable {void move(double x, doub…

第一节: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…

Java04异常、断言、日志和调试

11 异常、断言、日志和调试 异常处理&#xff08;exception handing&#xff09; 使用断言来启动检测 Java日志框架 调试技巧 11.1 处理错误 如果一个方法不能够采用正常的途径完成任务&#xff0c;就通过另外一个路径退出方法。 在这种情况下&#xff0c;方法不返回任何…

全双工与半双工的区别

1、全双工传输 (英文Full&#xff0d;Duplex &#xff09; 是指交换机在发送数据的同时也能够接收数据&#xff0c;两者同步进行&#xff0c;这好像我们平时打电话一样&#xff0c;说话的同时也能够听到对方的声音。目前的交换机都支持全双工。全双工的好处在于迟延小&#xff…

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

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

Java05泛型

12 泛型 12.1 为什么使用泛型 泛型程序设计&#xff08;Generic programming&#xff09;&#xff1a;意味着编写的代码可以被很多不同类型的对象所重用。 类型参数&#xff08;type parameters&#xff09; 通配符类型&#xff08;wildcard type&#xff09; 可以将Manage…