Face Faster RCNN安装步骤和遇到的问题

本文介绍如何安装并使用Faster R-CNN进行人脸检测模型的部署及训练过程,包括环境搭建、数据准备、模型训练与测试等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.安装

  1. Clone the face Faster R-CNN repository 
    Git clone –recursive https://github.com/playerkk/face-py-faster-rcnn.git

  2. Build the Cython modules 
    cd $FRCN_ROOT/lib 
    make

  3. Build Caffe and pycaffe 
    cd $FRCN_ROOT/caffe-fast-rcnn 
    make -j8 && make pycaffe

  4. 下载预先训练好的VGG模型 
    A pre-trained face detection model trained on the WIDER training set is available here. 
    http://supermoe.cs.umass.edu/%7Ehzjiang/data/vgg16_faster_rcnn_iter_80000.caffemodel 
    放置目录: 
    $FRCN_ROOT/output/faster_rcnn_end2end/train/vgg16_faster_rcnn_iter_80000.caffemodel

  5. 下载测试数据 
    下载FDDB数据库放入$FRCN_ROOT/data目录: 
    包括: 
    FDDB 
    FDDB/FDDB-folds 
    FDDB/originalPics

2.测试模型在FDDB上

python ./tools/run_face_detection_on_fddb.py --gpu=0 

遇到的问题:

1:安装 Cython,python-opencv,easydict;不然会提示安装出错的;

可以直接下载easydict,然后tar -zxvf easydict.1.7.0.tar.gz; cd easydict.1.7.0; python setup.py  install

解决即可正常的运行:

2:caffe设置的问题

1配置python layers
#In your Makefile.config, make sure to have this line uncommented
WITH_PYTHON_LAYER := 1
# Unrelatedly, it's also recommended that you use CUDNN
USE_CUDNN := 1 #可以注释掉的

3:训练模型VGG和ZF模型

  1. Download pre-computed Faster R-CNN detectors 
    cd $FRCN_ROOT 
    ./data/scripts/fetch_faster_rcnn_models.sh  //也可官网上下载相应的faster_rcnn_models.tgz;然后自己解压;

  2. Download the WIDER face dataset. Extract all files into one directory named WIDER 
    http://mmlab.ie.cuhk.edu.hk/projects/WIDERFace/ 
    WIDER/ 
    WIDER/WIDER_train/ 
    WIDER/WIDER_val/

  3. Download the (http://jianghz.me/files/wider_face_train_annot.txt) and put it under the WIDER directory.

  4. Create symlinks for the WIDER dataset 
    cd $FRCN_ROOT   ln -s $WIDER ~/WIDER                          //WIDER在home目录下

  5. Follow the next sections to download pre-trained ImageNet models 
    cd $FRCN_ROOT 
    ./data/scripts/fetch_imagenet_models.sh //也可官网上下载相应的imagenet_models.tgz;然后自己解压;

  6. To train a Faster R-CNN face detector using the approximate joint training method, use experiments/scripts/faster_rcnn_end2end.sh. Output is written underneath $FRCN_ROOT/output.

    cd FRCN_ROOT 
    ./experiments/scripts/faster_rcnn_end2end.sh [GPU_ID] [NET] wider [–set …]

    eg: 
    ./experiments/scripts/faster_rcnn_end2end.sh 0 VGG16 wider

遇到的问题:

第一个问题:TypeError: slice indices must be integers or None or have an index method

这是由于numpy的版本太高,numpy 1.12.0对这个做了些调整,把numpy降级到1.11.0就行了。

sudo pip install -U numpy==1.11.0

同时也可以下载numpy.1.11.0,自己安装一下;就可以跟新到1.11.0版本;

但是我的服务器中有两个python,2.7和3.4,而系统默认pip是装在python3.4上的,这样可以看见:

输入:pip --version

显示:pip 9.0.1 from /usr/local/lib/python3.4/dist-packages (python 3.4)

所以执行以下代码,装到强制装到python2.7中:

sudo python2.7 /usr/local/bin/pip install -U numpy==1.11.0

至此py-faster-rcnn在我这儿可以顺利训练了:

第二个问题:提示找不到图片的问题

主要是数据集的图片路径最后会多一个\r,这都是英文下载的图片标签windows下和Linux下多一个换行符的问题;

提取钱len-1个字符就可以了,可以在face.py中修改image_name这个字符串;

参考博客:http://blog.youkuaiyun.com/zengdong_1991/article/details/66475821

### Faster R-CNN Model Implementation for WIDER FACE Dataset WIDER FACE 是一个广泛用于人脸检测的数据集,包含了复杂的场景多样化的人脸姿态、遮挡以及光照条件。为了在该数据集上应用 Faster R-CNN 模型并取得良好的效果,可以参考以下内容。 #### 1. 改进策略 一种有效的方法是对 Faster R-CNN 进行扩展优化。例如,在物体检测领域中,R-CNN 取得了显著的成功[^1]。在此基础上,可以通过引入多种技术手段进一步提升性能,比如特征连接(feature concatenation)、强负样本挖掘(hard negative mining)以及多尺度训练等策略。这些改进能够帮助模型更好地适应复杂背景下的目标检测需求。 #### 2. 训练细节 对于具体的训练过程而言,RetinaFace 提供了一个可供借鉴的例子。它采用随机梯度下降法(SGD Optimizer),设置动量参数为0.9,权重衰减系数设为0.0005,并利用四个NVIDIA Tesla P40 GPU完成计算任务;每批次处理大小设定为32(即8×4)[^2]。初始学习率定为\(10^{-3}\),经过前五个epoch之后调整至\(10^{-2}\),随后分别于第55轮次与第68轮次处将当前值除以十直至最终停止训练为止——总计经历八十轮迭代周期结束整个流程。 尽管上述描述针对的是 RetinaFace 而非直接提及到更快区域卷积神经网络(Faster R-CNN),但两者同属视觉对象识别范畴内的解决方案之一,因此其部分配置思路或许同样适用于后者。 #### 3. 实现方式 要实现基于更快速地区域建议生成器版本的深度学习框架程序包通常会依赖开源工具库如 PyTorch 或 TensorFlow 来构建相应架构。下面给出一段简单的 Python 示例代码展示如何加载预定义好的基础骨干网结构(resnet50作为例子): ```python import torch from torchvision.models.detection import faster_rcnn def create_model(num_classes=2): # 加载预训练模型 model = faster_rcnn.fasterrcnn_resnet50_fpn(pretrained=True) # 替换分类头适配新的类别数 in_features = model.roi_heads.box_predictor.cls_score.in_features model.roi_heads.box_predictor = faster_rcnn.FastRCNNPredictor(in_features, num_classes) return model if __name__ == "__main__": device = 'cuda' if torch.cuda.is_available() else 'cpu' model = create_model().to(device) ``` 此段脚本展示了创建自定义类别的 Faster R-CNN 检测器的过程。其中 `num_classes` 参数应根据实际应用场景中的标签数量加以修改,默认情况下包括背景在内的两类被考虑进去。 另外值得注意的一点在于,虽然本文提到的内容主要围绕着人脸识别展开讨论,但是 Transformer 架构作为一种新兴的技术路线也逐渐应用于序列转换建模当中[^3]。然而这并不直接影响到传统 CNN 基础之上建立起来的目标探测体系的设计理念。 最后附带说明一下有关评估标准方面的事情。如果打算参与像FDDB这样的公开竞赛项目的话,则需要特别关注官方文档里所规定的具体评测指标及其对应算法实现细节等内容[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值