《Caffe下跑AlxNet之数据处理过程》
环境:Windows
最近用Caffe跑了一下AlxNet网络,现在总结一下数据处理部分:(处理过的数据打包链接:http://pan.baidu.com/s/1sl8M5ad 密码:ph1y)
(1)获得数据集,途径有:
1.Benchmark(数据库) AFLW FDDB
2.最新论文(2016)
3.Thinkface论坛
数据量:庞大的数据量支撑,最少1w张(正,负样本各一万张),格式如下:
xxxx.jpg x1,y1,x2,y2(标注label),即人脸所在矩形框的坐标
xxxx.jpg x1,y1,w,h
我是从Thinkface论坛上直接下载的经过裁剪的人脸数据;
(2)利用下载下来的数据集制作正负样本以及.txt文件:
以下是我的方法,可能有点笨拙:
1.先建立imageset_2文件夹作为总的工程文件夹,然后在其中新建两个文件夹,一个命名为0,一个命名为1,分别放入裁剪好的人脸数据和非人脸数据,再对图片进行重命名(人脸图片命名为face_xxxx,非人脸图片命名为non_face_xxxx);
2.再新建mix、val、train文件夹(train文件夹中再新建两个文件夹,一个命名为0,一个命名为1),编写一个python小程序,将0和1中的图片经过混合后放入mix文件夹,在mix文件中取10%放入val文件夹作为测试数据,再取剩下的90%将其中的人脸图片放入train文件夹中的0文件夹,非人脸图片放入1文件夹(正样本5800张,负样本20000张左右);
3.先制作train.txt,在train中的0文件夹中写一个.bat文件,内容如下:
dir /b/s/p/w *.jpg > train_0.txt
上述命令在新建的train_0.txt文件写入0中的每张图片的绝对路径,然后再使用txt的替换功能去掉绝对路径,再在后面加上Label值,形式如下:

对于1也如上进行操作,得到的train_1.txt中的内容如下:

然后再将两个文件中的内容整合到train.txt文件中,就得到了我们需要的train.txt文件;
对于val.txt文件我们也进行类似操作,不过我们也要先将val文件夹中的图片分到0和1两个文件夹(因为val里既有人脸图片也有非人脸图片,无法使用替换功能),然后制作val.txt文件;
(3)将正负样本转换为lmdb格式:
在Windows下调用caffe安装根目录下BUild->x64->Debug中有一个convert_imageset.exe文件来制作lmdb文件(有的人有可能只有.cpp,那么就还需要经过VS的编译生成.exe)
在Linux下则调用examples->imagenet中的create_imagenet.sh文件,并进行改写(参见网上相关博客)
这里我介绍的是如何在windows下转换lmdb格式(要自己写.bat文件,满满的泪。。。。)
首先在Imageset_2文件夹中写一个create_imageset_2.bat文件,内容如下:

然后执行就会在后面相应的路径中创建lmdb文件;
(4)图像预处理
使用Build中的compute_image_mean.exe将图像减去均值,.bat文件内容如下:

得到对应的.binaryproto文件
(5)修改solver.prototxt和train.prototxt文件

简单一点,我们只需要修改其中的路径即可(注意,路径用\\或者/,千万不要用\!!!!!!!!)
用CPU的话,solver:CPU,GPU的话相应修改即可。
(6)训练网络:
编写train.bat文件开始训练,内容如下:

双击就开始训练了:

配置:i7,8G,CPU训练,已经一天了还没好,强烈建议GPU!!!!
《Caffe下跑AlxNet之数据处理过程》的更多相关文章
- 简单物联网:外网访问内网路由器下树莓派Flask服务器
最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器,在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花 ...
- 利用ssh反向代理以及autossh实现从外网连接内网服务器
前言 最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习Linux用,然后平时在实验室这边直接连接是没有问题的,都是内网嘛.但是回到宿舍问题出来了,使用校园网的童鞋还是能连接上,使 ...
- 外网访问内网Docker容器
外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 ...
- 外网访问内网SpringBoot
外网访问内网SpringBoot 本地安装了SpringBoot,只能在局域网内访问,怎样从外网也能访问本地SpringBoot? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装Java 1 ...
- 外网访问内网Elasticsearch WEB
外网访问内网Elasticsearch WEB 本地安装了Elasticsearch,只能在局域网内访问其WEB,怎样从外网也能访问本地Elasticsearch? 本文将介绍具体的实现步骤. 1. ...
- 怎样从外网访问内网Rails
外网访问内网Rails 本地安装了Rails,只能在局域网内访问,怎样从外网也能访问本地Rails? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Rails 默认安装的Rails端口 ...
- 怎样从外网访问内网Memcached数据库
外网访问内网Memcached数据库 本地安装了Memcached数据库,只能在局域网内访问,怎样从外网也能访问本地Memcached数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装 ...
- 怎样从外网访问内网CouchDB数据库
外网访问内网CouchDB数据库 本地安装了CouchDB数据库,只能在局域网内访问,怎样从外网也能访问本地CouchDB数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Cou ...
- 怎样从外网访问内网DB2数据库
外网访问内网DB2数据库 本地安装了DB2数据库,只能在局域网内访问,怎样从外网也能访问本地DB2数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动DB2数据库 默认安装的DB2 ...
- 怎样从外网访问内网OpenLDAP数据库
外网访问内网OpenLDAP数据库 本地安装了OpenLDAP数据库,只能在局域网内访问,怎样从外网也能访问本地OpenLDAP数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动 ...
随机推荐
- python 小功能
目录 1.上传文件 2.验证码 一.上传文件 首先了解一下 request.FILES : 字典 request.FILES 中的每一个条目都是一个UploadFile对象.UploadFile对象有 ...
- weui dialog
切记:weui dialog 的样式是在weui.css,而不是在weui.min.css HTML: <!DOCTYPE html> <html> <head> ...
- 个人理解c#对称加密 非对称加密 散列算法的应用场景
c#类库默认实现了一系列加密算法在System.Security.Cryptography; 命名空间下 对称加密 通过同一密匙进行加密和解密.往往应用在内部数据传输情况下.比如公司a程序 和B程序 ...
- bzoj 1711 [Usaco2007 Open]Dining吃饭&&poj 3281 Dining
最大流. 这东西好像叫三分图匹配. 源点向每个食物点连一条容量为1的边. 每个饮料点向汇点连一条容量为1的边. 将每个牛点拆点,食物点向喜欢它的牛的入点连一条容量为1的边,牛的出点向它喜欢的饮料点连一 ...
- bootstrap 日期控件 bootstrap-datepicker
http://www.bootcss.com/p/bootstrap-datetimepicker/
- Unity Animator动画状态机 深入理解(三)二维混合树
介绍二维之前,先说说一维吧~ 这个是通过旋转角度速度快慢来表现身体的大转和中转~ 通过一个-133~133的数值来进行控制. 注:后面的那个对钩是镜像的意思. 其实二维混合树并没有想象中的那么难.先来 ...
- centos tar压缩与解压缩命令大全
tar命令详解 -c: 建立压缩档案 -x:解压 -t:查看内容 -r:向压缩归档文件末尾追加文件 -u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用 ...
- git rebase
git rebase -i HEAD~[number_of_commits] git rebase -i HEAD~2
- Input输入框输入银行卡号自动空格
input输入框是表格中用都最多的,像输入手机,密码,银行卡号的,很多对于输入银行卡号是没有处理的,比如这样~~ 看起来是不是一团乱麻,, 眼睛瞬间一片漆黑~ 如果是这样,会不会好很多呢~~ 其实逻 ...
- 字符串 HDU 1039
规则: 1.必须至少包含一个元音字母.a e i o u 2.不能包含三个连续元音或者连续辅音字母. 3.不能包含两个连续字母,除了'ee'和'oo'. PS:字母个数(1<= N <=2 ...