专栏首页汇智网教程行人检测系统原理与实现(一)【计算机视觉】

行人检测系统原理与实现(一)【计算机视觉】

过去的一年我都在忙着实现我的本科毕业设计课题项目:行人检测系统。我们团队的目标是实时检测现场CCTV摄像机视频流中出现的行人。本文是对此项目的简要总结,同时对我们在开发这个行人检测系统中用到的一些开源项目和库进行简单的评价。

行人检测是目标检测的一个分支。目标检测的任务是从图像中识别出预定义类型目标的存在。目标检测任务包括识别目标并给出每个目标的矩形包围框。一个用来检测行人的目标检测系统,就称为行人检测系统。

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

我将从行人检测的早期实现方法开始介绍。这些方法源于21世纪早期,虽然称为早期,但实际上这些方法还在行业内使用。在下一篇文章中,我将介绍基于深度学习的技术。

1、测试基准

本文中提到的结果都是由附带的代码在笔记本上运行获得的,笔记本的规格如下:

  • CPU:Intel Core i7 7700 HQ (up-to 3.8 GHz)
  • 内存:16 GB
  • GPU:nVidia Geforce GTX 1060 6GB VGA
  • 软件栈:Ubuntu 16.04 and Open CV 3.4.

虽然有GPU,但是测试中没有记录其使用情况,因为整个算法基本都是靠CPU在跑。

所有的测试都是基于牛津大学提供的TownCenter视频,该视频取自项目:Coarse Gaze Estimation in Visual Surveillance Project

2、行人检测的早期实现思路

2.1 基于Haar特征的级联分类器

基于Haar特征的目标检测算法是Paul Viola 和Michael Jones在2001年发表的论文 “Rapid Object Detection using a Boosted Cascade of Simple Features” 中提出的。这个方法在人脸检测中得到了广泛的应用。

OpenCV包含了内置的Haar级联检测器实现,同时也提供了用于全人体检测、上半身检测和下半身检测的预训练模型,可以在这里下载。这个Python代码使用Open CV 3.4的Haar级联检测器进行行人检测。在我的测试中处理一帧的用时大约是90~100毫秒。

2.2 基于方向梯度直方图特征(HOG)的检测

HOG行人检测算法是N. Dalal和B. Triggs在2005年的论文“Histograms of oriented gradients for human detection”中提出的。

OpenCv也包含了的基于HOG特征的检测功能,以及一个用于人体检测的预训练模型。这个Python代码使用OpenCV 3.4的HOG行人检测器处理视频,在我的测试中处理一帧大约需要150~170ms。

3、早期行人检测实现思路的缺点

下面列出的都是我在使用harr级联检测器和HOG检测器时发现的一些常见问题。这些 现象都是基于Open CV提供的预训练模型。

3.1 漏检

这两种方法都不是很擅长检测多姿态的行人,除非同时使用处理不同姿态的多个模型。 Open CV可用的预训练模型用来识别行人的站立姿态,因此当从正面和背面检测时效果 很好,但是从侧面检测的效果就比较差了。

3.2 误报与重复检测

这些早期的方法还存在将非人体目标识别为人的问题。可以通过调节阈值参数来 折中处理漏检和误报的情况。

有些误报可以通过定义最小检测盒尺寸来避免:

也可能会发生下图右方的重复检测。非极大值抑制算法(Non Max Suppression)可以用来 处理这种情况。

3.3 包围框定位不准

Haar级联检测器和HOG检测器得到的检测边界框都不能紧密地贴合被检测到的人体,事实上 包围框的边界在不同的检测中并不是固定的。这就给提取人体的位置(例如脚的位置)造成了困难。

3.4 检测闪烁

常常会观察到的一个现象是,在前一帧里检测到的行人,在下一帧里又没了,或者反之。这就造成了检测结果闪烁的问题:

4、早期检测方法的优势

虽然存在上面提到的这些问题,早期的检测方法依然还在业界使用。因为这些算法 需要的算力要少于现代的深度学习方法,不需要GPU就可以实时处理视频。在OpenCV之类 的计算机视觉开发库中也包含了这些算法的实现,因此成为实现行人检测的有吸引力 的首选。

早期行人检测算法碰到的大部分问题,在新的基于深度学习的方法中都被解决掉了。我 将在下一篇文章中分析现代的方法是如何解决这些问题的。


原文链接:行人检测原理及代码之一 —— 汇智网

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Fabric-sdk-java最新教程 原

    Fabric Java SDK是Fabric区块链官方提供的用于Java应用开发的SDK,全称为Fabric-sdk-java,网上可用资料不多,本文列出了精心...

    用户1408045
  • fabric-sdk-java 1.4安装说明

    Hyperledger Fabric Java SDK是开发基于Hyperledger Fabric区块链的Java应用之必备开发包。本文将介绍如何在Maven...

    用户1408045
  • 以太坊助记词PHP开发包简介

    以太坊助记词PHP开发包用来为PHP以太坊应用增加助记词和层级确定密钥支持能力。下载地址:以太坊助记词php开发包 。

    用户1408045
  • 护网Linux应急处置操作手册-Tools篇

    HVV行动已经进行到了11天,处置的工作明显增多,随着各种情况发生,所以这两天分别整理一些关于Linux和Windows的排查手册。

    Aran
  • Object Detection in 20 Years: A Survey

    目标检测作为计算机视觉中最基本、最具挑战性的问题之一,近年来受到了广泛的关注。它在过去二十年的发展可以说是计算机视觉历史的缩影。如果我们把今天的物体检测看作是深...

    狼啸风云
  • 20年的目标检测大综述(章节2)

    今天我们接着上次综述章节1继续来大家来说说,本次主要说说20年内的目标检测,感谢大家的关注与支持。

    计算机视觉研究院
  • 汇总|3D点云目标检测算法

    前面总结了几种基于激光雷达点云数据的3D目标检测算法,还有一些算法不再单独列出,这里做个简单总结来分享下!

    计算机视觉
  • 【开源资源】GitHub上深度学习模型压缩资源汇总

    本文为大家推荐一份深度学习模型压缩的资源列表,涵盖了主要论文成果、研究人员、会议、新闻等内容。

    小草AI
  • AI检测与外星智能有关的快速无线电爆炸,精度为98%

    快速无线电爆炸是整个宇宙中最神秘的高能量天体物理现象。它们是无线电辐射的强烈爆炸,其持续时间仅为几毫秒,并且被认为源自遥远的星系。物体的确切性质是不确定的,但它...

    AiTechYun
  • 目标检测101:一文带你读懂深度学习框架下的目标检测

    大数据文摘

扫码关注云+社区

领取腾讯云代金券