Windows下Faster RCNN用于人脸检测的训练和demo

首先,这是一篇没搞懂为什么但是做出来了东西的博客。主要用于本人备忘,参考价值有限。

Faster RCNN用于人脸识别已经有一些人做过,我只是一个重现者。有篇《Face Detection with the Faster R-CNN》的paper讲述了相关内容,大致意思就是用WIDER FACE库去训练模型。因此,我尝试了此种方法。

按照惯例,感谢以下链接的作者给我的参考:

https://www.cnblogs.com/linyuanzhou/p/6043436.html

http://blog.csdn.net/zhangzm0128/article/details/72593745

http://blog.csdn.net/a8039974/article/details/77628717

一、下载WIDER FACE库

可在链接http://mmlab.ie.cuhk.edu.hk/projects/WIDERFace/中下载,建议使用Baidu Drive,同时,Face annotations和Examples and formats of the submissions最好也下载。(最后那个好像没啥用,但是Face annotations必须下载)


二、widerface数据库转voc2007数据集

为了方便faster rcnn做训练,必须先把wider face数据库转为voc2007格式。

按照链接https://www.cnblogs.com/linyuanzhou/p/6043436.html中的代码即可完成。

值得注意的是,转换出来后,和voc2007相比,\ImageSets\Main路径下只有train.txt和val.txt,并没有trainval.txt和val.txt。这是由于widerface库的wider_face_split路径下没有wider_face_trainval_bbx_gt和wider_face_test_bbx_gt(根据我的分析是这样,不知道对不对)。


三、训练Faster RCNN

首先,训练之前需要一些模型文件。根据官方给出的方法https://github.com/rbgirshick/py-faster-rcnn,需要先下载好imagenet_models和VOCdevkit2007,并放置在data路径下。


imagenet_model是预训练模型,用来初始化网络参数。VOCdevkit2007是实际用来训练的数据。这里我提供自己的网盘文件供下载。链接:https://pan.baidu.com/s/1qZHGcwO 密码:p26g。

然后根据http://blog.csdn.net/zhangzm0128/article/details/72593745的方法进行训练。

首先要把widerface得到的voc2007格式分别替换掉data\VOCdevkit2007\VOC2007\下的JPEGImages、ImageSets\Main、Annotations文件夹内容。然后再进行训练。

但是这里会有几个问题,按照该方法,会报错VOCdevkit2007\VOC2007\ImageSets\Main路径下没有trainval.txt文件(第2节提到过这个问题)。于是我把train.txt复制了一份并命名为trainval.txt。


其次,可能会出现TypeError: slice indices must be integers or None or have an __index__ method和TypeError: 'numpy.float64' object cannot be interpreted as an index等问题。这其实是由于numpy的版本问题造成的,numpy版本过高(大于1.11.0版本)。所以本来是可以把numpy将为1.11.0版本来解决的。然而,降级后,会出现新的错误,ImportError: numpy.core.multiarray failed to import。这个坑爹的错误是由于numpy版本过低,需要升级。作者在这里卡了很久很久,终于找到了一篇博客完美解决了问题。

http://blog.csdn.net/a8039974/article/details/77628717

不要用该博客中升级numpy的方法,而是安装其修改文件内容的方法去做,即可解决问题。

接着只需要继续训练网络即可。我是2GB显存的1050显卡,大概跑了3个多小时。然后报错没有test.txt文件(第二节提到过)。不过我发现其实这时模型已经训练好了存储在\output\faster_rcnn_end2end\voc_2007_trainval路径下,所以就没有再管它了。事实证明,确实不需要管它。

四、模型的demo

到这一步之后,仍然按照http://blog.csdn.net/zhangzm0128/article/details/72593745的方法去做,但是会有问题,就是什么东西都检测不出。后来我发现,还需要进行以下修改:

1、找到\models\pascal_voc\VGG_CNN_M_1024\faster_rcnn_end2end路径下的test.prototxt,将最后输出层的类别改好:


2、把tools文件夹下的demo.py进行修改:




完成以上修改以后,在cmd中运行python demo.py即可。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值