人群计数 MCNN 解析 PGCNet

2024-04-29 20:38
文章标签 计数 解析 人群 mcnn pgcnet

本文主要是介绍人群计数 MCNN 解析 PGCNet,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

人群计数研究的发展

传统的:直接回归计数法--- input(图片)——>outout(人数)  参考

目前深度学习主流的: input(图片)——>output(密度图)——>估计人数

为什么不基于深度学习的目标检测、原因是目标检测对于密集对象与超小目标对象很难正确识别与准确计数。无法正确给出密集人群的模型与聚集程度。进展 | 密集人群分布检测与计数_Dataset

首先对于这个新的细分领域的深度学习可以从这篇文章入门开始:

人群计数:从MCNN开始谈起~ - 知乎

人群计数--MCNN的另外一种解读

1. 标签是怎样的?人群计数里面的标签就是密度图 参考

2. 数据集标注的一个过程?

两部分,1.人群图像标注表示;2.人群图像标注转换为人群密度图。

制作标签密度图的过程,参考一,参考二, 参考三,参考四

3. 模型应该学习什么东西。输入图片,和输出密度图之间的映射关系。

4 Q:语义分割和人群计数非常类似,能不能直接用一些分割网络呢?参考
A:二者同属于逐像素任务,前者为逐像素分类(交叉熵),后者为逐像素回归(均方误差MSE)。

输出是一张密度图,那如何得到我区域里的人头数量呢?

人群计数就是对输出的密度图进行积分计算,也就是。

对密度图逐像素求和。代码参考

人群密度估计之MCNN_年轻即出发,-CSDN博客_mcnn代码实现

  • qiu_112018.08.20

    你好,我想问一下,如何从density map得到the number of persons ??

    • sqiu_11回复watersink2018.08.20

      多谢,其实zhangyingying的这篇文章里面提到了,刚看到

    • watersink作者回复sqiu_112018.08.20

      根据密度图算出来的,但是前提是需要训练数据充足,得到的结果也可以,或者可以从网络层面,专门接入一个全连接进行回归,得到人数,王小刚老师有这样的论文,可以学习

PGCNet 核心思想:

        以前的人群密度估计对近大远小的人头泛化性不是很好,因为是固定的卷积核大小,但是实现卷积核大小尺寸的改变是比较困难的,PGCNet的作者通过一种变通的方法,即先用PENet得到一张透视图,根据透视图来改变不同区域高斯核大小来达到卷积核对人头感受野可变的问题,从而提高人群密度估计的准确率,事实上作者团队经过和以前的人群估计算法的比对,准确率比2016年经典的MCNN算法高达三倍,

我们在实际测试的时候,

通过设置高斯核大小等的初始化超参数,采用通过论文作者提供的预训练模型,采用warmup + ReduceLROnPlateau的策略,然后一开始用较大的学习率+ Adam优化器训练 50 多个epoch,后用SGD优化器 + 小的学习率 调整了15个epoch,最终达到比原论文高0.1个百分点的模型,

之所以能比原作者效果更好,通过对人群估计这一任务的理解,我认为是我们的实际场景透视场景固定, 而原论文数据集里的透视场景复杂,而透视场景是影响这一任务效果的关键,后来通过和原作者之一沟通,我的猜想得到了他的肯定,透视场景基本上是现在影响人群密度估计最大影响因数之一。

  • 优化器(SGD,带动量的优化器,或者Adam等)

  • 学习率优化:ReduceLROnPlateau(监控某一个参数,当该参数不再上升或下降就进行学习率调整。)

  • 学习率优化:ReduceLROnPlateau

  • 学习率优化:ReduceLROnPlateau

  • 学习率优化:ReduceLROnPlateau

  • 学习率优化:ReduceLROnPlateau

PENet 是一个类似于UNET的encoder—decoder的算法模块,输入图片,输出是一张带有透视信息的密度图。

【学习笔记】Pytorch深度学习—学习率调整策略 - Selena白桃 - 博客园

这篇关于人群计数 MCNN 解析 PGCNet的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/947103

相关文章

Python使用getopt处理命令行参数示例解析(最佳实践)

《Python使用getopt处理命令行参数示例解析(最佳实践)》getopt模块是Python标准库中一个简单但强大的命令行参数处理工具,它特别适合那些需要快速实现基本命令行参数解析的场景,或者需要... 目录为什么需要处理命令行参数?getopt模块基础实际应用示例与其他参数处理方式的比较常见问http

Python利用ElementTree实现快速解析XML文件

《Python利用ElementTree实现快速解析XML文件》ElementTree是Python标准库的一部分,而且是Python标准库中用于解析和操作XML数据的模块,下面小编就来和大家详细讲讲... 目录一、XML文件解析到底有多重要二、ElementTree快速入门1. 加载XML的两种方式2.

Java的栈与队列实现代码解析

《Java的栈与队列实现代码解析》栈是常见的线性数据结构,栈的特点是以先进后出的形式,后进先出,先进后出,分为栈底和栈顶,栈应用于内存的分配,表达式求值,存储临时的数据和方法的调用等,本文给大家介绍J... 目录栈的概念(Stack)栈的实现代码队列(Queue)模拟实现队列(双链表实现)循环队列(循环数组

java解析jwt中的payload的用法

《java解析jwt中的payload的用法》:本文主要介绍java解析jwt中的payload的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java解析jwt中的payload1. 使用 jjwt 库步骤 1:添加依赖步骤 2:解析 JWT2. 使用 N

Python中__init__方法使用的深度解析

《Python中__init__方法使用的深度解析》在Python的面向对象编程(OOP)体系中,__init__方法如同建造房屋时的奠基仪式——它定义了对象诞生时的初始状态,下面我们就来深入了解下_... 目录一、__init__的基因图谱二、初始化过程的魔法时刻继承链中的初始化顺序self参数的奥秘默认

Java 正则表达式URL 匹配与源码全解析

《Java正则表达式URL匹配与源码全解析》在Web应用开发中,我们经常需要对URL进行格式验证,今天我们结合Java的Pattern和Matcher类,深入理解正则表达式在实际应用中... 目录1.正则表达式分解:2. 添加域名匹配 (2)3. 添加路径和查询参数匹配 (3) 4. 最终优化版本5.设计思

使用Java将DOCX文档解析为Markdown文档的代码实现

《使用Java将DOCX文档解析为Markdown文档的代码实现》在现代文档处理中,Markdown(MD)因其简洁的语法和良好的可读性,逐渐成为开发者、技术写作者和内容创作者的首选格式,然而,许多文... 目录引言1. 工具和库介绍2. 安装依赖库3. 使用Apache POI解析DOCX文档4. 将解析

Java字符串处理全解析(String、StringBuilder与StringBuffer)

《Java字符串处理全解析(String、StringBuilder与StringBuffer)》:本文主要介绍Java字符串处理全解析(String、StringBuilder与StringBu... 目录Java字符串处理全解析:String、StringBuilder与StringBuffer一、St

Spring Boot循环依赖原理、解决方案与最佳实践(全解析)

《SpringBoot循环依赖原理、解决方案与最佳实践(全解析)》循环依赖指两个或多个Bean相互直接或间接引用,形成闭环依赖关系,:本文主要介绍SpringBoot循环依赖原理、解决方案与最... 目录一、循环依赖的本质与危害1.1 什么是循环依赖?1.2 核心危害二、Spring的三级缓存机制2.1 三

C#中async await异步关键字用法和异步的底层原理全解析

《C#中asyncawait异步关键字用法和异步的底层原理全解析》:本文主要介绍C#中asyncawait异步关键字用法和异步的底层原理全解析,本文给大家介绍的非常详细,对大家的学习或工作具有一... 目录C#异步编程一、异步编程基础二、异步方法的工作原理三、代码示例四、编译后的底层实现五、总结C#异步编程