FCHD 安装实现人头检测

最近在研究人群聚集检测,顾名思义是指当一定范围里的人数大于某个值时,提示出现人群聚集的情况。因此怎么快速精确的实现对一定范围里的人员计数,是进行人群聚集检测的重点。
Aditya Vora分享了一种可以快速准确检测人头的算法并开源了代码,关于此算法的介绍可以参考Aditya Vora的论文《FCHD: A fast and accurate head detector 》。
论文地址
代码地址

因此先尝试将FCHD运行起来,检测人头吧!

1 人头检测算法部署

1.1 下载项目代码

下载项目代码至本机上。

1.2 安装依赖包

1)安装pytorch,这里可以根据自己的cuda版本选择pytorch版本,我用的是cuda10.1

pip install torch==1.6.0+cu101 torchvision==0.7.0+cu101 -f https://download.pytorch.org/whl/torch_stable.html

2)安装visdom

pip install visdom

3)安装cupy
这里值得注意的是, CuPy(A NumPy-compatible array library accelerated by CUDA)是NumPy兼容多维数组在CUDA上的实现,因此安装时需要根据cuda版本安装

# For CUDA 10.1
pip install cupy-cuda101

运行之后,如果有报错“ImportError: CuPy is not correctly installed.”,可以参考下面这个方法进行调试
ImportError: CuPy is not correctly installed解决方法

4)安装其他需要的依赖包,如matplotlib、scikit-image、opencv-python等,这里是我目前用到的依赖包,供参考:

certifi == 2020.12.5
chardet == 4.0.0
cupy-cuda100 == 8.5.0
cycler == 0.10.0
decorator == 4.4.2
fastrlock == 0.5
future == 0.18.2
idna == 2.8
imageio == 2.9.0
jsonpatch == 1.32
jsonpointer == 2.1
kiwisolver == 1.3.1
matplotlib == 3.3.4
networkx == 2.5
numpy == 1.20.1
opencv-python == 4.5.1.48
Pillow == 8.1.2
pyparsing == 2.4.7
python-dateutil == 2.8.1
PyWavelets == 1.1.1
pyzmq == 22.0.3
requests == 2.25.1
scikit-image == 0.18.1
scipy == 1.6.1
six == 1.15.0
tifffile == 2021.3.17
torch == 1.6.0+cu101
torchfile == 0.1.0
torchnet == 0.0.5.1
torchvision == 0.7.0+cu101
tornado == 6.1
urllib3 == 1.26.4
visdom == 0.1.8.9
websocket-client == 0.58.0

1.3 下载训练模型

我这里直接用的作者训练好的模型,下载训练模型放到checkpoints文件夹中。

2 算法运行

前序工作准备好了,那么事不宜迟,看下FCHD算法运行效果吧(p≧w≦q)~
不出意外果然出现了各种报错…
1、ModuleNotFoundError: No module named 'torchnet’
解决方法如下:

pip install git+https://github.com/pytorch/tnt.git@master

2、FileNotFoundError: [Errno 2] No such file or directory: '/home/aditya-tyco/Desktop/aditya_personal_projects/head_detection_v5/data/pretrained_model/vgg16_caffe.pth’

解决方法如下:
下载vgg_16_caffe.pth,保存在data/pretrained_model 文件夹中。同时在config.py文件中,将预训练模型的路径修改为我们自己的路径。

caffe_pretrain_path = './data/pretrained_model/vgg16_caffe.pth'

3、检查结果边界框位置不准确
在这里插入图片描述
注:图片为网上下载,侵删~
解决方法如下:
参考了这位博主的方法FCHD: A fast and accurate head detector快速准确的人头检测代码预测出来的边界框位置不准确的解决方法
我也在这里记录一下,对head_detection_demo.py文件中代码进行修改,一共修改两处:
1)第28行

f.convert('RGB')
img_raw = f.copy()
# img_raw = np.asarray(f, dtype=np.uint8)
img = np.asarray(f, dtype=np.float32)
_, H, W = img.shape
img = img.transpose((2,0,1))
img = preprocess(img)
_, o_H, o_W = img.shape
scale = o_H / H
img_raw = img_raw.resize((o_W, o_H), Image.ANTIALIAS)
return img, img_raw, scale

2)第54行

for i in range(pred_bboxes_.shape[0]):
ymin, xmin, ymax, xmax = pred_bboxes_[i,:]
# utils.draw_bounding_box_on_image_array(img_raw, ymin, xmin, ymax, xmax)
utils.draw_bounding_box_on_image(img_raw, ymin, xmin, ymax, xmax)

再次运行
在这里插入图片描述

运行成功!不过可以看出识别结果并不是那么好,具体还要再调一下参数或者自己训练数据看下了~

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Rena要努力

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值