opencv行人检测python_19年赚钱新思路

opencv行人检测python_19年赚钱新思路CVPR2019行人检测新思路:高级语义特征检测取得精度新突破原创: CV君 我爱计算机视觉 今天点击我爱计算机视觉置顶或标星,更快获取CVML新技术今天跟大家

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

CVPR 2019 行人检测新思路:高级语义特征检测取得精度新突破

点击我爱计算机视觉置顶或标星,更快获取CVML新技术


 

今天跟大家分享一篇昨天新出的CVPR 2019论文《High-level Semantic Feature Detection:A New Perspective for Pedestrian Detection》,作者将行人检测问题转化为高级语义特征检测的问题,刷新了行人检测精度的新高度!而且作者称代码将开源。

 

论文作者信息:

 

opencv行人检测python_19年赚钱新思路

 

作者分别来自国防科技大学、中科院自动化所、阿联酋起源人工智能研究院和地平线机器人公司。

 

算法思想

 

特征检测是计算机视觉中常用算法,比如我们所熟知的边缘检测、Blob检测,简单点说就是检测图像中的感兴趣部分。在传统的计算机视觉视觉中,这往往被认为是low-level的操作。

 

随着深度学习技术的发展,一般认为深度学习提取的特征具有高级语义特性。

 

作者认为行人检测中行人的中心点(x,y坐标)和尺度(宽高)是一种高级语义特征,行人检测完全可以转化为这些语义特征的检测。

 

如下图所示:

 

opencv行人检测python_19年赚钱新思路

 

输入图像经过卷积网络,然后分成Center Heatmap计算和Scale Map 计算,得到的中心点坐标和宽高大小,即检测出了行人。

 

看起来很简单,但却是很有效!

 

下图是更详细的网络架构图:

 

opencv行人检测python_19年赚钱新思路

 

该算法最主要的两部分为特征提取模块和Detection Head模块。

特征提取模块对4个Stage的特征图进行了串联,以增强特征的多尺度表达能力。

Detection Head模块,由256个3*3卷积和分支开来的两个1*1卷积组成,然后分别成为最终的Center heatmap 和Scale Map。

 

将现有标注好的行人检测数据集转化为中心点和尺度标注的方法是显而易见的,如下图(图中作者使用log(高度)作为行人尺度):

 

opencv行人检测python_19年赚钱新思路

 

在Point Prediction 这一端,作者实际上尝试了中心点、顶部顶点、底部顶点等三种方式,实验结果如下图上半部分,发现使用中心点效果最好,而且是远好于另外两者。

 

opencv行人检测python_19年赚钱新思路

 

同样在Scale Prediction这一端,作者尝试了预测高度、宽度和二者都预测。发现只预测高度的效果最好(此时设置固定宽高比0.41)。

 

实验结果

 

下面三张图是在Caltech数据集上的实验结果,该文提出的算法CSP均取得了最高的精度。

 

opencv行人检测python_19年赚钱新思路

opencv行人检测python_19年赚钱新思路

opencv行人检测python_19年赚钱新思路

 

下图为在CityPersons数据集上的实验结果,CSP同样取得了最好的结果。

 

opencv行人检测python_19年赚钱新思路

 

另外,值得一提的是,该算法不仅仅适用于行人检测!在作者的Github工程主页上放出了使用该文算法在人脸检测数据集WiderFace上的实验结果,在验证集和测试集上均取得了最高精度或者媲美最高精度的结果。

 

如下图所示:(请点击大图查看)

 

opencv行人检测python_19年赚钱新思路

 

读完此文,CV君在想,人脸和行人的宽高比相对变化较小,该文提出的算法取得了很不错的结果。那么对于通用目标检测,宽高比变化比较大,该算法结果会如何呢?希望有进一步实验结果出来。

 

希望该文对你有帮助!

 

论文地址:

https://arxiv.org/abs/1904.02948v1

代码地址:

https://github.com/liuwei16/CSP

 

 


opencv行人检测python_19年赚钱新思路

长按关注我爱计算机视觉

麻烦给我一个“在看”

阅读
 2622

 
精选留言

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/167121.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ManualResetEvent类的用法

    ManualResetEvent类的用法ManualResetEvent类作用1.事件初始状态设为false,task线程在第一个WaitOne()处阻塞。2.manualResetEvent.Set()事件状态设为true,task线程在每一个WaitOne()处都不阻塞。3.manualResetEvent调用Set()再调用Reset(),task线程在第一个WaitOne()处阻塞。4.manualResetEvent.Set()事件状态设为true,task线程在第一个WaitOne()处阻塞然后被释放。5.三个线程异步执行,set()

    2022年7月18日
    17
  • JMH入门

    JMH入门1JMH介绍JMH是JavaMicroBenchmarkHarness的简写,是专门用于代码微基准测试的工具集(toolkit)。JMH是由实现Java虚拟机的团队开发的,因此他们非常清楚开发者所编写的代码在虚拟机中将会如何执行。由于现代JVM已经变得越来越智能,在Java文件的编译阶段、类的加载阶段,以及运行阶段都可能进行了不同程度的优化,因此开发者编写的代码在运行中未必会像自己所预期的那样具有相同的性能体现,JVM的开发者为了让普通开发者能够了解自己所编写的代码运行的情况,JMH便因此而生。

    2022年7月27日
    3
  • ArrayList扩容原理

    ArrayList扩容原理ArrayList扩容原理今天带来的下饭菜是ArrayList的扩容源码解读。相信大家对这盘菜都不陌生,我们经常使用它来定义一个集合,无论日常开发还是自己学习使用的频率是相当的高。而且大家也都一定知道ArrayList集合是通过数组实现的,但是在声明一组数据的时候都会选择ArrayList而不是数组,原因就是由于这组数据的元素的数量不确定,如果使用数组的话,我们还得亲自维护数组的长度,这时你一定会说TMD烦死了;但如果使用了ArrayList,维护数组长度的事情就不用我们操心了,我们只需要对这组数据进

    2022年6月3日
    31
  • 将JSON数组转化为List集合[通俗易懂]

    将JSON数组转化为List集合[通俗易懂]假如我们向redis中存放了一个JSON数组,从中获取的时候需要将JSON数组转化为List集合,然后将List对象返回给前端。1.引入hutool和fastjson依赖<!–hutool–><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId&gt

    2022年6月29日
    129
  • ringbuffer 无锁队列_javabytebuffer使用

    ringbuffer 无锁队列_javabytebuffer使用一、简介1、循环缓冲区的实现原理环形缓冲区通常有一个读指针和一个写指针。读指针指向环形缓冲区中可读的数据,写指针指向环形缓冲区中可写的缓冲区。通过移动读指针和写指针就可以实现缓冲区的数据读取和写入。在通常情况下,环形缓冲区的读用户仅仅会影响读指针,而写用户仅仅会影响写指针。如果仅仅有一个读用户和一个写用户,那么不需要添加互斥保护机制就可以保证数据的正确性。如果有多个读写用户访问环形缓冲区,那么必须…

    2022年9月4日
    1
  • css画三角形

    css画三角形实现原理将div的高和宽设置为0,然后设置四个border不同的颜色。效果如下:div#triangle{width:0;height:0;border-top:50pxsolidblue;border-right:50pxsolidred;border-bottom:50pxsolidgreen;bord…

    2022年6月30日
    25

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号