环境: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之数据处理过程》的更多相关文章

  1. 简单物联网:外网访问内网路由器下树莓派Flask服务器

    最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器,在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花 ...

  2. 利用ssh反向代理以及autossh实现从外网连接内网服务器

    前言 最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习Linux用,然后平时在实验室这边直接连接是没有问题的,都是内网嘛.但是回到宿舍问题出来了,使用校园网的童鞋还是能连接上,使 ...

  3. 外网访问内网Docker容器

    外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 ...

  4. 外网访问内网SpringBoot

    外网访问内网SpringBoot 本地安装了SpringBoot,只能在局域网内访问,怎样从外网也能访问本地SpringBoot? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装Java 1 ...

  5. 外网访问内网Elasticsearch WEB

    外网访问内网Elasticsearch WEB 本地安装了Elasticsearch,只能在局域网内访问其WEB,怎样从外网也能访问本地Elasticsearch? 本文将介绍具体的实现步骤. 1. ...

  6. 怎样从外网访问内网Rails

    外网访问内网Rails 本地安装了Rails,只能在局域网内访问,怎样从外网也能访问本地Rails? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Rails 默认安装的Rails端口 ...

  7. 怎样从外网访问内网Memcached数据库

    外网访问内网Memcached数据库 本地安装了Memcached数据库,只能在局域网内访问,怎样从外网也能访问本地Memcached数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装 ...

  8. 怎样从外网访问内网CouchDB数据库

    外网访问内网CouchDB数据库 本地安装了CouchDB数据库,只能在局域网内访问,怎样从外网也能访问本地CouchDB数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Cou ...

  9. 怎样从外网访问内网DB2数据库

    外网访问内网DB2数据库 本地安装了DB2数据库,只能在局域网内访问,怎样从外网也能访问本地DB2数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动DB2数据库 默认安装的DB2 ...

  10. 怎样从外网访问内网OpenLDAP数据库

    外网访问内网OpenLDAP数据库 本地安装了OpenLDAP数据库,只能在局域网内访问,怎样从外网也能访问本地OpenLDAP数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动 ...

随机推荐

  1. mongodb安装启动遇到的问题

    好不容易下载到了mongodb,配置的时候遇到了不少问题. 下载的是解压包,不是官网的,有一个bin目录,解压到一个自己想要的目录,如d:\mongo,首先把bin复制进来,然后创建data目录,da ...

  2. 【挖坑】thusc前一周计划2016.5.30-2016.6.3

    首先开了徐姥爷blog&&AC记录里的几题,然后还有几个算法&&模板题要搞掉. 今天&&明天: bzoj3571/3083/2752/2727/2728 ...

  3. 分享一种容易理解的js去重排序方法

    <script> var arr=[1,8,6,4,88,22,99,4,6,86,5,58,89,5]; //先使用sort()函数去重 var a=arr.sort(function ...

  4. POJ 1815 Friendship

    Friendship Time Limit: 2000MS   Memory Limit: 20000K Total Submissions: 10626   Accepted: 2949 Descr ...

  5. Linux之:Ubuntu速学笔记(1)

    撰写日期:2016-7-2 17:11:28 Saturday 课程资源:  web程序员角度ubuntu自修速学课程 链接来源:程序员在囧途, VMware: VMware Workstation1 ...

  6. Thinkphp文件上传

    1.在IndexController.class.php里面写2个方法,shangchuan用来显示页面,upload是上传文件的方法. <?php namespace Home\Control ...

  7. 在Main方法中设置异常的最后一次捕捉

    在做Winfrom程序时,有时会遇到一个异常,可是这个异常不知道在什么地方发生的,程序会自动关闭,然后什么也没有了,在网上找到了一种方法,用来捕捉这种异常. 出现这种情况的原因是在程序中某些地方考虑不 ...

  8. HBase+Phoenix整合入门--集群搭建

    环境:CentOS 6.6 64位    hbase 1.1.15  phoenix-4.7.0-HBase-1.1 一.前置环境: 已经安装配置好Hadoop 2.6和jdk 1.7 二.安装hba ...

  9. 初识cache

    1.cache是什么 cache这个名字用来称呼两种物理世界中存在的概念,硬体cache和cache机制.下面来分别介绍. 硬体cache:硬体cache是一种用肉眼可以看得见用皮肤可以摸得着的物品, ...

  10. leetcode--Different Ways to Add Parentheses

    题目链接:https://leetcode.com/submissions/detail/86532557/ 算法类型:分治法 题目分析:计算表达式的所有结果可能性 代码实现: class Solut ...