人头识别-人群中准确快速的检测头部算法

参考链接:https://blog.csdn.net/hahabeibei123456789/article/details/94720745

来自霍尼韦尔的资深数据科学家Aditya Vora分享了一种快速精准的人头检测(head detector)算法并开源了代码。

先来看下检测视频截图:

人头检测在安防监控中是比较常用的功能,而公交车、商场或者大型场馆的拥挤人群计数的精准性也非常重要。

https://www.52cv.net/wp-content/uploads/2018/09/%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20180926013125-1024x569.png

传统的算法原理
作者称拥挤人群计数目前主要有两种实现路径:
1.运用回归的算法思绪,直接依据图像回归出拥堵人群密度热图,它的缺陷是只能得到场景整体的一个拥堵指数,不能获知人群个体的详细位置,而且这种办法对图像分辨率很敏感。
2.运用目的检测的办法,比方直接运用Faster RCNN检测人,检测后数目的为“人”的个数。这种办法的缺陷是在人物互相遮挡的状况下常常性能较差,而人群越拥堵互相遮挡的可能性越大,招致算法运用受限。

https://www.52cv.net/wp-content/uploads/2018/09/%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20180926013125-1024x569.png

该文作者希望设计更有针对性的精准的人头检测,完成愈加精准的人群计数。
作者创新的两点,轻量级人头检测网络和anchors尺度的选择。
算法的网络架构:

从上图可知,网络的前半局部是VGG16特征提取网络,经过一次卷积,然后分开分别运用1*1卷积进入Regression head(用于回归人头的位置信息)和Classification head(用于分类能否为人头)。

在检测网络中,anchors是很重要的概念,是一组预定义的包围框,在对象检测系统中预测尺度和位移。作者以为普通目的辨认中anchors的尺度定义过大,应该依据“有效感受野”(effective receptive field)的思想,减小尺度(直观上“人头”目的比“人体”目的也要小)。

实验结果
作者在BRAINWASH数据库上做了实验,打败了三个基线算法,并取得了与最好结果算法“可比较“的性能。

https://www.52cv.net/wp-content/uploads/2018/09/%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_201809260131261.png


提出的算法比较快,使用Quadro M1000M显卡(仅有512 CUDA核心)速度达到5fps,使用Jetson TX2(仅有256 CUDA核心)速度1.6fps。相比以往算法更加适合于嵌入式边缘计算平台。

https://www.52cv.net/wp-content/uploads/2018/09/%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_201809260131262.png

以上内容都来自参考链接。

先去GitHub上找到FCHD:

第一个是原版,第二个是翻译版,本人擅长中文。。。

下载源码(文末有分享)。

本工程是官方工程的python3版本,重构了部分代码,并训练得到了一个效果不错的模型。

论文地址:https://arxiv.org/abs/1809.08766
官方工程地址:https://github.com/aditya-vora/FCHD-Fully-Convolutional-Head-Detector

安装

  1. Clone
    git clone https://github.com/embracesource-cv-com/FCHD.git
    
  2. 安装依赖
    cd FCHD
    pip install -r requirements.txt

安装可能会遇到问题,一般解决方案有:

1)去掉版本号

2)换源

3)建议使用python3   64位版本,不要使用32位!

4)哪个依赖有问题 就通过命令安装

作者成功较多的命令:

python -m pip install -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com XXX

XXX为所需依赖。

数据配置

(文末有分享所需文件)。

  1. 此处下载Brainwash数据集,caffe预训练模型,以及人头检测模型
  2. 将预训练模型vgg16_caffe.pth放到./checkpoints/pre_trained目录下
  3. 将检测模型checkpoint_best.pth放到./checkpoints目录下
  4. 将brainwash数据集放到/home/dataset/fchd_datas目录下

当然你可以自定义各个路径,然后在config.py中修改相应的配置

class Config(object):
    DATASET_DIR = r'X:\workspace\python\FCHD-master\home\dataset\fchd_datas\brainwash'
    TRAIN_ANNOTS_FILE = r'X:\workspace\python\FCHD-master\home\dataset\fchd_datas\brainwash\brainwash_train.idl'
    VAL_ANNOTS_FILE = r'X:\workspace\python\FCHD-master\home\dataset\fchd_datas\brainwash\brainwash_val.idl'

    CAFFE_PRETRAIN = True
    CAFFE_PRETRAIN_PATH = './checkpoints/pre_trained/vgg16_caffe.pth'

    RPN_NMS_THRESH = 0.7
    RPN_TRAIN_PRE_NMS_TOP_N = 12000
    RPN_TRAIN_POST_NMS_TOP_N = 300
    RPN_TEST_PRE_NMS_TOP_N = 6000
    RPN_TEST_POST_NMS_TOP_N = 300
    RPN_MIN_SIZE = 16

    ANCHOR_BASE_SIZE = 16
    ANCHOR_RATIOS = [1]
    ANCHOR_SCALES = [2, 4]

    EPOCHS = 15
    PRINT_LOG = True
    PLOT_INTERVAL = 2
    VISDOM_ENV = 'fchd'

    MODEL_DIR = './checkpoints'
    BEST_MODEL_PATH = './checkpoints/checkpoint_best.pth'


cfg = Config()

代码还是简单的。

先训练:

  1. 打开可视化工具visdom:
    python -m visdom.server
    
  2. 开始训练:
    python train.py 

train.py的时候会报错:

AssertionError: Torch not compiled with CUDA enabled
 

这是torch依赖安装版本错误。

CPU直接安装CPU版本即可,CDUA需要安装CUXXX版本。

下载地址:https://download.pytorch.org/whl/torch_stable.html

也可以通过官网:https://pytorch.org/get-started/locally/

正确的控制台输出:

(venv) X:\workspace\python\FCHD-master>python train.py
[INFO] Load datasets.
 Training set size:10461, Verification set size:493
Setting up a new session...
[INFO] Start training...
X:\workspace\python\FCHD-master\networks\detector.py:30: UserWarning: Implicit dimension cho
ice for softmax has been deprecated. Change the call to include dim=X as an argument.
  probs = F.softmax(torch.from_numpy(rois_scores))
[INFO] Epoch 1 of 15.
        Validate average accuracy: 0.865
[INFO] Epoch 2 of 15.
        Validate average accuracy: 0.803
[INFO] Epoch 3 of 15.
        Validate average accuracy: 0.771
[INFO] Epoch 4 of 15.
        Validate average accuracy: 0.842
[INFO] Epoch 5 of 15.
        Validate average accuracy: 0.796
[INFO] Epoch 6 of 15.

可视化:

预测

在工程root目录下执行:

python predict.py -p [path of image]

检测效果

百度云:

链接:https://pan.baidu.com/s/1xZJ6wvQyo9WLgWErlmhhaA 
提取码:3bw9 
复制这段内容后打开百度网盘手机App,操作更方便哦

猜你喜欢

转载自blog.csdn.net/qq_21454973/article/details/115325625