SSD人脸检测安装:SSD训练自己的数据集







第一部分 SSD安装

系统:ubuntu 14.04 
语言:python 
ssd项目主页:https://github.com/weiliu89/caffe/tree/ssd 
首先,我们把项目代码clone下来, 然后编译:


    
    
  1. git clone https: //github.com/weiliu89/caffe.git
  2. cd caffe
  3. git checkout ssd

接下来,我们开始编译caffe,编译caffe非常容易,此篇讲的是caffe + cpu + ubuntu14.04的安装, GPU版安装需修改Makefile.config文件, 修改完成后:


    
    
  1. make
  2. make py

到这里我们就完成了SSD的安装,接下来我们讲一下如何训练自己的数据集。

第二部分 训练自己的数据集

首先我们不妨先跑一下项目的demo, 需要下载数据集,提前训练好的数据集等。 
下载预训练的模型,链接:https://gist.github.com/weiliu89/2ed6e13bfd5b57cf81d6,下载完成后保存在:

caffe/models/VGGNet/
    
    

下载VOC2007和VOC2012数据集, 放在/data目录下:


    
    
  1. cd data
  2. wget http:/ /host .robots .ox .ac .uk /pascal /VOC/voc2012/VOCtrainval_11-May- 2012.tar
  3. wget http:/ /host .robots .ox .ac .uk /pascal /VOC/voc2007/VOCtrainval_06-Nov- 2007.tar
  4. wget http:/ /host .robots .ox .ac .uk /pascal /VOC/voc2007/VOCtest_06-Nov- 2007.tar
  5. tar -xvf VOCtrainval_11-May- 2012.tar
  6. tar -xvf VOCtrainval_06-Nov- 2007.tar
  7. tar -xvf VOCtest_06-Nov- 2007.tar

创建lmdb格式的数据:


    
    
  1. cd caffe
  2. ./ data/VOC0712/create_list.sh
  3. # It will create lmdb files for trainval and test with encoded original image:
  4. # - $HOME/data/VOCdevkit/VOC0712/lmdb/VOC0712_trainval_lmdb</span></span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="5"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-preprocessor" style="color:rgb(68,68,68);"><span class="hljs-comment"># - $HOME/data/VOCdevkit/VOC0712/lmdb/VOC0712_test_lmdb
  5. ./ data/VOC0712/create_data.sh

训练和测试:

python examples/ssd/ssd_pascal.py
    
    

论文中,作者已经预训练好模型,下载链接:http://www.cs.unc.edu/%7Ewliu/projects/SSD/models_VGGNet_VOC0712_SSD_300x300.tar.gz,我们不必自己再去训练, 下载完成后放入指定的文件夹下。 
测试时,我们使用/example/ssd/目录里的ssd_detect.ipynb,运行这个文件,需要安装ipython及ipython-notebook, 或者直接把里面的代码拷贝出来,写到一个新的python文件里,比如命名ssd_detector.py.

OK, 下面修改一系列文件来训练自己的数据集 
两种方案, 第一:保持原来的文件目录结构及文件名不变, 只替换里面的数据。第二:重新新建一个与之前类似的目录结构,改成自己命名的文件夹,第二种方法,有一定的风险性,需要修改程序里涉及数据路径的代码。在之前讲解的faster-rcnnan那篇博客中, 我们采用第一种方案。本次我们采用第二种方案。 
在/data目录下创建一个自己的文件夹:


    
    
  1. cd / data
  2. mkdir mydataset

把/data/VOC0712目录下的create_list.sh 、create_data.sh、labelmap_voc.prototxt 这三个文件拷贝到/mydataset下:


    
    
  1. cp data/create* ./mydataset
  2. cp data/label* ./mydataset

labelmap_voc.prototxt, 此文件定义label。

在/data/VOCdevkit目录下创建mydataset, 并放入自己的数据集:


    
    
  1. cd data/VOCdevkit
  2. mkdir mydataset
  3. cd mydataset
  4. mkdir Annotations
  5. mkdir ImageSets
  6. mkdir JPEGImages
  7. cd ImageSets
  8. mkdir Layout
  9. mkdir Main
  10. mkdir Segmentation

其中Annotations中存放一些列XML文件,包含object的bbox,name等; 
ImageSets中三个子目录下均存放train.txt, val.txt, trainval.txt, test.txt这几个文件,文件内容为图片的文件名(不带后缀); 
JPEGImages存放所有的图片;

在/examples下创建mydataset文件夹:

mkdir mydataset
    
    

文件夹内存放生成的lmdb文件。

第一步: 首先把widerface的数据集转化为VOC的格式;

第二步:然后把widerface生成了train.txt和test.txt,之后把相应的文件夹copy到VOC2007,修改相应的Python文件

第三步:开始生成LMDB数据集,调节SSD的学习率,就可以正常的训练检测器。

上述文件夹创建好后, 开始生成lmdb文件, 在创建之前需要修改相关路径:


    
    
  1. ./ data/mydataset/create_list.sh
  2. ./ data/mydataset/create_data.sh

此时,在examples/mydataset/文件夹下可以看到两个子文件夹, mydataset_trainval_lmdb, mydataset_test_lmdb;里面均包含data.dmb和lock.dmb;

到此为止,我们的数据集就做好了。接下来就开始训练了。训练程序为/examples/ssd/ssd_pascal.py,运行之前,我们需要修改相关路径代码:


    
    
  1. cd /examples/ssd
  2. vim sd_pascal.py, 修改如下:
  3. 57行: train_data路径;
  4. 59行:test_data路径;
  5. 197- 203行:save_dir、snapshot_dir、job_dir、output_result_dir路径;
  6. 216- 220行: name_size_file、label_map_file路径;
  7. 223行:num_classes 修改为 1 + 类别数
  8. 315行:num_test_image:测试集图片数目

修改测试图片的个数,和真实的测试图片的个数一样,修改了学习率

另外, 如果你只有一个GPU, 需要修改285行: 
gpus=”0,1,2,3” ===> 改为”0” 
否则,训练的时候会出错。 
修改完后运行

python ./examples/ssd/ssd_pascal.py 
    
    

训练完, 修改ssd_detector.py中模型路径, 任意找一张图片识别,看看效果怎么样



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值