行人检测器原理与实现【深度学习】

简介: 在前一篇文章中,我们讨论了用于人体检测的早期方法,例如Vila Jones的目标检测框架(Haar级联)和方向梯度直方图(HOG)检测器。我们也看到了这些早期方法存在的问题,例如漏检、误检等。在本文中,我们将了解最新的深度学习技术是如何解决上述这些问题的,并使用代码来实现它。

在前一篇文章中,我们讨论了用于人体检测的早期方法,例如Vila Jones的目标检测框架(Haar级联)和方向梯度直方图(HOG)检测器。我们也看到了这些早期方法存在的问题,例如漏检、误检等。在本文中,我们将了解最新的深度学习技术是如何解决上述这些问题的,并使用代码来实现它。

要快速掌握机器学习应用的开发,推荐汇智网的机器学习系列教程

1、现代行人检测技术概述

在这里插入图片描述

用于人体检测的现代方法,我们认为具有如下特征:

  • 深度卷积神经网络

用于行人检测的现代方法大量使用深度神经网络。这一趋势起源于AlexNet在2012年ILSVRC
(Imagenet大规模视觉识别竞赛)中的获胜。AlexNet是一个用于图像分类的深度卷积神经网络(CNN)。从那以后,CNN就被广泛地应用于各种各样的计算机视觉问题,例如图像分类、目标检测和目标定位。正如我们之前所提到的,人体识别是目标检测和目标定位的一种特定应用。

  • 多类别目标检测器

现代的基于CNN的目标检测系统的另一个特征就是,它们可以识别多类目标。因此,现代的最先进的人体检测器不仅仅是行人检测器,而是可以检测包含行人在内的多种类型目标的检测器。基于此认识,让我介绍Tensowflow目标检测API和Tensorflow检测模型ZOO。

2、使用tensorflow目标检测API进行人体检测

Tensorflow是来自google的开源API,被广泛地用于使用深度神经网络的机器学习任务。tensorflow
的目标检测API是基于Tensorflow的一个开源库,用来支持目标检测模型的训练和评估。今天我们将了解以下Tensorflow检测模型ZOO,其中包含了一组与tensorflow目标检测API兼容的预训练模型。

在本文创作的时候,Tensorflow检测模型ZOO包含了16个在COCO数据集上预训练的目标检测模型。其中前12个模型提供盒子输出,因此与本文代码兼容。这些模型可以检测包括人体在内的80类目标。现在让我们看看这些模型是如何用于人体检测的。

2.1 搭建一个基本的人体检测器

1、首先并且最重要的,确保Open CV 3.0+ 和Tensorflow 1.5+已经安装。如果你有nVidia的GPU,那么建议使用Tensorflow的GPU版本。

2、为本项目创建一个文件夹

3、从Tensorflow检测模型ZOO下载faster_rcnn_inception_v2_coco.tar.gz 然后解压到项目文件夹。

4、下载tensorflow-human-detection.py 到项目文件夹。然后打开下载的文件,将 /path/to/faster_rcnn_inception_v2_coco修改为模型的实际路径,然后修改‘/path/to/input/video’指向要处理的视频。我是用的视频是从这里下载的。

5、运行python文件,观察屏幕的输出,按Q即可退出。你可以调节阈值参数来改进检测效果。希望你可以达到如下的效果:

你可以尝试其他11种兼容的模型。当然,这些预训练模型可以识别COCO数据集中的80类目标,只需要简单修改上面的代码就可以检测其他类型的目标。

2.2 测试基准

本文中的结论由运行在笔记本上的上述代码得出,笔记本参数如下:

  • Intel Core i7 7700 HQ (up-to 3.8 GHz)
  • 16 GB Memory
  • nVidia Geforce GTX 1060 6GB VGA
  • Ubuntu 16.04, Open CV 3.4 and Tensorflow 1.5.

全部测试都是在TownCenter视频上完成。

3、Tensorflow检测模型ZOO中的不同模型的对比

上面我们演示的是Tensorflow检测模型ZOO中的faster_rcnn_inception_v2_coco模型。当然还有11个兼容的模型可用于行人检测。Google为这些模型提供了量化的分析。

COCO mAP 指的是“mean average precision”。mAP的值越高,就表示检测结果越准确。

我对Tensorflow检测模型Zoo中的下面3个模型更感兴趣:

  • ssd_mobilenet_v1_coco,可运行在android手机上
  • faster_rcnn_inception_v2_coco ,速度和准确率的平衡较好
  • faster_rcnn_nas,准确率最高的模型

下面的内容包含了这3个模型的量化分析。

3.1 SSD Mobilenet V1 COCO Model

这是准确率最低但是检测速度最快的模型。它可以在如今的安卓手机上实时
检测行人。

在这里插入图片描述
这个模型在检测近景目标时的效果不错,但是在我们的测试视频上的检测效果比较差,因为其中的行人占画面整体的比例很小。我不得不剧烈地降低检测阈值才能在测试视频上获得合理的检测结果。

在启用GPU的测试当中,帧时长在30~50ms之间变化,大概25FPS。当禁用GPU加速时,每帧处理
时长为60~80ms,大约15FPS。

3.2 Faster RCN Inception V2 COCO Model

我们也尝试了这个模型。就我的经验而言,如果GPU加速可用的话,这是最好的模型,兼顾
处理速度和检测准确率。

在启用GPU的测试中,每帧处理时长大约是200~300ms,大约4FPS。禁用GPU加速后,每帧
处理时长大约1.5~1.6s。

3.3 Faster RCN NAS COCO Model

[外链图片转存失败(img-C4THd7Ir-1565355249310)(human-detection-2/rnc-nas.gif)]

这个模型的准确率最高,也有人会说这个模型有点过于灵敏,因为它甚至检测出测试视频
中左下角的塑料人体模型了。基本没有出现误报、重报、漏报等问题。但是这个模型也是
最慢的,在启用GPU加速的情况下,也需要2.6秒才能处理一帧。

4、与早期方法相比的改进之处

就我的观察而言,所有这些模型都比早期的模型准确。Faster RCN Inception V2 COCO Model
币HOG和HAAR检测器要好的多。这些模型可以提供一个紧贴人体边界的包围框。另外,这些模型
也极少产生误报。重报的情况在有些模型中也有发生,例如当多个人挨的太近的时候。漏检和闪烁在一些模型中偶有发生,但是在更准确的模型中都解决了(通过牺牲计算时间)。

ssd_mobilenet_v1_coco和sd_inception_v2_coco与早期方法相比有小幅改进,但是依然有漏报、误报、包围框不一致等问题存在。

5、与早期方法相比的不足之处

总的来说,基于深度神经网络的方法可以达到更高的检测精度,但需要更多的计算消耗。如果
没有GPU的话,最轻量的模型(ssd_mobilenet_v1_coco)可以比早期方法跑的更快些,但是
准确率的提高非常有限。

要获得准确率方面的明显提升,就需要考虑Faster RCN Inception V2 COCO或更好的模型。这些
模型需要GPU加速才能获得相对合理的处理帧速。

6、结论

在早期人体检测方法中的大多数问题,在新的基于深度学习的方法中都解决掉了。这些
问题的解决需要消耗更多的计算力。但是,有GPU加速的话,现代的机器学习开发库可以提供
合理的帧速率。


原文链接:深度学习行人检测原理及实现 - 汇智网

相关实践学习
部署Stable Diffusion玩转AI绘画(GPU云服务器)
本实验通过在ECS上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。
目录
相关文章
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习的奥秘:探索神经网络的核心原理
本文将深入浅出地介绍深度学习的基本概念,包括神经网络的结构、工作原理以及训练过程。我们将从最初的感知机模型出发,逐步深入到现代复杂的深度网络架构,并探讨如何通过反向传播算法优化网络权重。文章旨在为初学者提供一个清晰的深度学习入门指南,同时为有经验的研究者回顾和巩固基础知识。
73 11
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习中的自适应神经网络:原理与应用
【8月更文挑战第14天】在深度学习领域,自适应神经网络作为一种新兴技术,正逐渐改变我们处理数据和解决问题的方式。这种网络通过动态调整其结构和参数来适应输入数据的分布和特征,从而在无需人工干预的情况下实现最优性能。本文将深入探讨自适应神经网络的工作原理、关键技术及其在多个领域的实际应用,旨在为读者提供一个全面的视角,理解这一技术如何推动深度学习向更高效、更智能的方向发展。
|
30天前
|
机器学习/深度学习 人工智能 监控
深入理解深度学习中的卷积神经网络(CNN):从原理到实践
【10月更文挑战第14天】深入理解深度学习中的卷积神经网络(CNN):从原理到实践
84 1
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习的奥秘:探索神经网络背后的原理与实践
【9月更文挑战第29天】本文将带你深入理解深度学习的核心概念,从基础理论到实际应用,逐步揭示其神秘面纱。我们将探讨神经网络的工作原理,并通过实际代码示例,展示如何构建和训练一个简单的深度学习模型。无论你是初学者还是有一定经验的开发者,这篇文章都将为你提供宝贵的知识和技能。
39 2
|
2月前
|
机器学习/深度学习 人工智能 监控
深度学习中的图像识别:原理与实践
【9月更文挑战第21天】本文将深入浅出地探讨深度学习在图像识别领域的应用。我们将从基础的神经网络概念出发,逐步深入到卷积神经网络(CNN)的工作机制,最后通过一个实际的代码示例来展示如何利用深度学习进行图像识别。无论你是初学者还是有一定基础的开发者,这篇文章都将为你提供宝贵的知识和技能。
74 1
|
2月前
|
机器学习/深度学习 自然语言处理 自动驾驶
深度学习的奥秘:从基本原理到实际应用
在这篇文章中,我们将探索深度学习的神秘世界。首先,我们将介绍深度学习的基本概念和原理,然后深入探讨其在不同领域的应用。无论你是初学者还是有经验的开发者,这篇文章都将为你提供新的视角和思考方式。让我们一起揭开深度学习的面纱,探索其无限可能!
|
3月前
|
机器学习/深度学习 人工智能 TensorFlow
利用深度学习进行图像识别的基本原理与实践
【8月更文挑战第27天】在这篇文章中,我们将探索图像识别技术的核心原理,并借助深度学习框架实现一个基本的图像识别模型。通过简洁的代码示例和直观的解释,我们旨在向读者展示如何从零开始构建自己的图像识别系统,以及这一过程中可能遇到的挑战和解决方案。无论你是AI领域的初学者还是有一定基础的开发者,这篇文章都将为你提供有价值的见解和指导。
|
3月前
|
机器学习/深度学习 算法 PyTorch
【深度学习】深度学习基本概念、工作原理及实际应用案例
深度学习是一种机器学习方法,它试图模拟人脑中的神经网络结构,以解决复杂的问题。深度学习的核心在于构建多层非线性处理单元(即神经元)的网络结构,这些网络可以从原始数据中自动提取特征并进行学习。
552 1
|
3月前
|
机器学习/深度学习 人工智能 算法
深度学习的奥秘:探索神经网络的核心原理
深度学习,一个听起来既神秘又充满魔力的词汇,它如同一扇通往未知世界的大门,背后隐藏着无尽的智慧与可能。本文将以一种通俗易懂的方式,带领读者走进深度学习的世界,探索那些构成神经网络核心的基本原理。我们将从最初的感知机模型出发,逐步深入到复杂的多层网络结构,揭示数据如何在这些网络中流动、变化,最终实现智能决策的过程。通过这篇文章,你将了解到深度学习不仅仅是技术的堆砌,更是对自然界智慧的一种模仿与致敬。
60 1
|
3月前
|
机器学习/深度学习 人工智能 TensorFlow
深度学习中的卷积神经网络(CNN)原理与实践
【8月更文挑战第31天】在人工智能的浪潮中,深度学习技术以其强大的数据处理能力脱颖而出。本文将深入浅出地探讨卷积神经网络(CNN)这一核心组件,解析其在图像识别等领域的应用原理,并通过Python代码示例带领读者步入实践。我们将从CNN的基本概念出发,逐步深入到架构设计,最后通过一个简易项目展示如何将理论应用于实际问题解决。无论你是深度学习的初学者还是希望深化理解的实践者,这篇文章都将为你提供有价值的洞见和指导。