前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >行人检测系统原理与实现(一)【计算机视觉】

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

作者头像
用户1408045
发布2019-08-08 10:26:32
1.9K0
发布2019-08-08 10:26:32
举报
文章被收录于专栏:汇智网教程

过去的一年我都在忙着实现我的本科毕业设计课题项目:行人检测系统。我们团队的目标是实时检测现场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之类 的计算机视觉开发库中也包含了这些算法的实现,因此成为实现行人检测的有吸引力 的首选。

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


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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、测试基准
  • 2、行人检测的早期实现思路
    • 2.1 基于Haar特征的级联分类器
      • 2.2 基于方向梯度直方图特征(HOG)的检测
      • 3、早期行人检测实现思路的缺点
        • 3.1 漏检
          • 3.2 误报与重复检测
            • 3.3 包围框定位不准
              • 3.4 检测闪烁
              • 4、早期检测方法的优势
              相关产品与服务
              图像识别
              腾讯云图像识别基于深度学习等人工智能技术,提供车辆,物体及场景等检测和识别服务, 已上线产品子功能包含车辆识别,商品识别,宠物识别,文件封识别等,更多功能接口敬请期待。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档