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训练自己数据的整个过程,也没有去追求准确率,也没有考虑去跟踪训练过程去调参等等。这些经验方面的知识,接下来慢慢继续积累吧。经过这次学习,起码能把整个过程跑下来了,收获很多。
caffe调用的一个例子相关推荐
- python中self_一个例子带你入门Python装饰器
============ 欢迎关注我的公众号:早起python ============ 前言 在还未正式发布的python3.9中,有一个新功能值得关注,那就是任意表达式可以作为装饰器,如果你还不知 ...
- shell实例第19讲:一个脚本中调用另一个脚本的3种方法
在Shell脚本中调用另一个脚本(3种方法) 准备:主脚本是second.sh,主脚本中调用first.sh 方法1:exec(1)执行方式:exec /home/weibo/shell_test/s ...
- C++中const——由一个例子想到的
前天同学实现了<C++ Primer>中关于虚函数的一个例子,拿过来问我,代码如下: #include<iostream> #include<string> usi ...
- 安卓一个方法多处调用_一个隐藏在方法集和方法调用中且易被忽略的小细节
来自公众号:新世界杂货铺 作为一个长期从事Go语言开发的程序猿,笔者不敢说自己是老油条但也勉强算一个小油条.然而就在今天,笔者研究TLS/SSL握手源码的时候,突然灵光一闪,想到了一个和自己认知不符的 ...
- 将一个简单远程调用的方式例子改为异步调用 -- 2
将一个简单远程调用的方式例子改为异步调用 第一版:https://www.cnblogs.com/nxzblogs/p/12766025.html 第二版:使用RxJava :(RxJava:http ...
- 将一个简单远程调用的方式例子改为异步调用
将一个简单远程调用的方式例子改为异步调用 package com.xsxy.asynctest.test03;import java.util.ArrayList; import java.util. ...
- js 调用另一个类的方法_一个隐藏在方法集和方法调用中且易被忽略的小细节
来自公众号:新世界杂货铺 作为一个长期从事Go语言开发的程序猿,笔者不敢说自己是老油条但也勉强算一个小油条.然而就在今天,笔者研究TLS/SSL握手源码的时候,突然灵光一闪,想到了一个和自己认知不符的 ...
- oracle创建包 和调用,oracle创建函数和调用存储过程和调用函数的例子(区别)...
创建函数: 格式:create or replace function func(参数 参数类型) Return number Is Begin --------业务逻辑--------- End; ...
- 基于 abapGit 和 abaplint 的 ABAP 持续集成的一个例子
这是 Jerry 2021 年的第 61 篇文章,也是汪子熙公众号总共第 338 篇原创文章. 短歌行 曹操 对酒当歌,人生几何! 譬如朝露,去日苦多. 慨当以慷,忧思难忘. 何以解忧?唯有杜康. 青 ...
最新文章
- python openpyxl读取excel_Python使用openpyxl读写excel文件
- mongodb 对内存的占用监控 ——mongostat,linux系统可用的内存是free + buffers + cached...
- 无边框对话框改变大小
- H2O —— 宣称性能是 Nginx 2 倍的 HTTP 服务器
- 摩斯密码(加密/解密)脚本
- Pandas 处理 dummy variable
- selenium使用浏览器隐私模式加载网站
- 三维里面点击播放视频
- LeetCode--057--插入区间(java)
- 手机编程环境初尝试-用AIDE开发Android应用
- 环绕声混响效果器-Acon Digital Verberate Immersive 2.2.1 WiN-MAC
- idea git push 码云: Remote: [31mYou do not have permission to push to the repository via HTTPS
- NB IoT技术简介
- 电子计算机审计,计算机审计存在的风险
- MapReduce实现kmeans算法
- 一个简单的form表单登录界面
- apk部分手机安装失败_安装APK文件时提示“解析包出现错误”,看完就知道怎么做了!...
- 这样的生产计划与排产,我看行
- Java java.sql.SQLSyntaxErrorException:Duplicate column name ‘xxx‘问题解决
- 图像处理--医疗图片的处理