Multi-View People Detection in Large Scenes via Supervised View-Wise Contribution Weighting 大型场景中通过监督视图贡献加权进行多视图人物检测

论文url https://ojs.aaai.org/index.php/AAAI/article/view/28553

论文简述:

这篇论文提出了一个用于大型场景中多视角人体检测的网络框架结构,该框架通过监督视角贡献加权方法来更好地融合多摄像头信息。

总体框架图:

输入:

  • 不同视角下多个摄像头的同步图像数据

特征提取(Feature Extraction):

  • 使用CNN网络提取不同视角下图像的特征(论文中未提及具体是什么网络可以采用ResNet或VGG)
  • 将提取的特征送入投影层,这个层使用空间变换网络(Spatial Transformer Network, STN)来调整特征图,使其与场景的地面平面坐标系对齐。STN可以看作是一个可学习的变换模块,它能够动态地调整输入特征图的空间位置。
    • STN涉及以下操作

      仿射变换:使用仿射变换(如旋转、缩放和平移)来调整特征图的角度和位置,使其与地面平面的坐标系对齐。

      透视变换:应用透视变换将二维图像特征转换为三维空间中的点,这些点随后被投影到地面平面上。
  • 输出:
    • 投影到地面平面上的每个视角的特征。

投影单视角解码(Projected Single-View Decoding)

  • 参数介绍:

    • Ground-Truth $ V_{s}^{gt} $ 是实际的人体位置图,这个图表示了场景中所有人体的位置,而不考虑它们能被哪些视角观察到。它是评估整个场景人体检测模型性能的标准。
    • $ V_{i} $ 是prediction中第 $ {i} $ 个视角的预测图,是指从特定视角观察时,场景地面平面上人体的占据图。这是一个二维图,其中的每个网格单元表示场景地面上的一个区域,如果该区域内有人,则标记为1,否则标记为0。这个占据图是从特定视角的"ground-truth"数据中得到的,它只包含了该视角能够观察到的人体信息。
    • $ V_{i}^{gt} $ 是第 $ {i} $ 个视角的实际人体位置图。
    • 单视角损失 $ {l}{v} $ 用于衡量每个视角的预测人体位置图 $ V $ 与该视角的真实人体位置图 $ V_{i}^{gt} $ 之间的差异。这个损失通常采用均方误差(Mean Squared Error, MSE)损失函数,它可以计算预测位置图和真实位置图之间的像素级差异。
  • 输入:
    • 第一阶段输出的投影到地面平面上的每个视角的特征。
  • 操作:
    • 将上述输入喂入投影单视角解码器(论文中未具体给出是什么解码器,应该包括一系列卷积层、上采样层(如转置卷积)和非线性激活函数),主要是在从投影到地面平面的特征图中恢复出每个视角下的人体位置信息。输出的prediction中的每个视角的预测人体位置图 $ V_{i} $ 可以与该视角的实际人体位置图 $ V_{i}^{gt} $ 做MSE_Loss : $ {l}{v} $ 计算进行优化,公式表示为 $ {l}=MSE({V}{i},V^{gt}) $ 。这个预测结果可以作为该视角对最终结果的贡献。同时,这个解码结果还为特征提取模块的训练提供了额外的约束,确保从多视角图像中提取的特征在投影后仍然有效。
  • 输出:
    • 每个视角的人体位置预测图。

监督视角贡献加权融合(Supervised View-Wise Contribution Weighted Fusion)

  • 权重预测:将上述输出的每个视角的预测人体位置图输入到一个共享子网(shared subnet) $ {C} $ (论文中未详细介绍共享子网的设计),用来预测每个摄像头视角的权重图。
  • 权重归一化:然后,所有视角的权重图被归一化,确保场景地面平面图上每个像素点的所有视角权重之和等于1。
  • 视角掩码应用:在归一化过程中,那些不被任何视角看到的区域被赋予0权重。在归一化过程中,每个视角的初始权重图会与其对应的视角掩码相乘。视角掩码是一个二值图,表示该视角能够观测到的场景区域。这样做的目的是确保只有那些在视角fov(field of view)内的区域才会被赋予权重,而fov外的区域权重为0。

  • 特征加权融合:最后,每个视角的特征图 $ {F}{i} $ 会与其对应的归一化权重图 $ {W} $ 相乘,然后将所有视角的结果求和,得到融合后的特征图 $ {F} $ 。这个过程可以表示为: $ {F}={∑}{i}{F} {⊙}{W}_{i} $ ,其中 $ {⊙} $ 表示元素级别的乘法操作。

多视角特征解码(Multi-View Feature Decoding)

  • 融合后的特征图 $ {F} $ 送入一个解码器,用于预测整个场景的人体占据图。这个解码器与单视角解码器不同,因为它们针对的功能不同:单视角解码器用于解码每个视角的特征,而多视角解码器用于整个场景的特征表示。(原文中没有详细介绍该解码器的具体设计)输出结果可以作为整个场景的预测人体位置图 $ {V}_{s} $ 。
  • 输出后的整个场景的预测人体位置图 $ {V}{s} $ 会与实际的人体位置图 $ V^{gt} $ 进行loss计算,该loss也是采用的均方误差MSE_Loss,用公式可以表示为 $ {l}{s}=MSE({V},V_{s}^{gt}) $ 。
  • 在计算出 $ {l}{s} $ 之后,会将将单视角损失 $ {l} $ 和场景级损失 $ {l}{s} $ 通过权重系数 $ {λ} $ 行组合,形成最终的损失函数 $ {l} $ , 公式表示为 $ {l}={l}+{λ}{l}_{v} $ 。

泛化到新场景(Generalization to New Scenes)

  • 输入:

    • 源域数据的特征表示:这些是从模型在训练阶段已经学习到的数据中提取的特征。
    • 目标域数据的特征表示:这些是从新场景中提取的特征,可能只有少量标注或者完全没有标注。
  • 作者通过轻微的微调模型来适应新场景。由上图可知,作者为了提高模型在新场景中的泛化能力,添加了一个判别器(discriminator)(论文没有提供该判别器具体层设计细节,可能类似于GAN的结构,来判别是源域数据还是目标域数据),用于进一步减少训练场景与测试新场景之间的大领域差异,他们使用新场景训练集的5%图像来训练模型,然后同时将训练中的合成图像和测试中的新场景图像输入到提出的模型中。最后,判别器对这两种特征进行分类。微调中的损失包括新场景多视角检测损失、合成多视角检测损失和判别器分类损失。

效果图

后记:

  • 公式的格式会有一些问题,可能是博客园的markdown编码有问题,我在本地VScode看是没有问题的。

大型场景中通过监督视图贡献加权进行多视图人物检测 Multi-View People Detection in Large Scenes via Supervised View-Wise Contribution Weighting的更多相关文章

  1. 三维重建5:场景中语义分析/语义SLAM/DCNN-大尺度SLAM

    前言: 在实时/非实时大规模三维场景重建中,引入了语义SLAM这个概念,参考三维重建:SLAM的尺度和方法论问题和三维重建:SLAM的粒度和工程化问题 .大规模三维场景重建的尺度增大,因此相对于整个重 ...

  2. 【分布式】Zookeeper在大型分布式系统中的应用

    一.前言 上一篇博文讲解了Zookeeper的典型应用场景,在大数据时代,各种分布式系统层出不穷,其中,有很多系统都直接或间接使用了Zookeeper,用来解决诸如配置管理.分布式通知/协调.集群管理 ...

  3. 游戏开发之UE4添加角色到场景中

    接着上次继续学习,现在我们已经有了一个场景并且运行了,我们需要添加一个角色到场景中.要这样做,我们必须从UE4的GameFramework类继承它. 一. 创建一个从Character类继承的类 从基 ...

  4. 在WebGL场景中使用2DA*寻路

      这篇文章将讨论如何在一个自定义的地面网格上进行简单的2D寻路,以及确定路径后如何使用基于物理引擎的运动方式使物体沿路径到达目标地点.读者需要预先对WebGL和Babylonjs知识有一些了解,可以 ...

  5. [Unity工具]查找GameObject在场景中所有被引用的地方

    参考链接: https://blog.csdn.net/hjzyzr/article/details/53316919?utm_source=blogxgwz4 https://blog.csdn.n ...

  6. 3D UI场景中,把XY平面的尺寸映射为屏幕像素的数学模型推导

    概述及目录(版权所有,请勿转载,欢迎读者提出错误) 之前用kanzi的3D UI引擎和cocos-2d的时候都有遇到过这个问题,就如何把3D场景中的XY平面的尺寸映射为与屏幕像素一一对应的,即XY平面 ...

  7. 在WebGL场景中进行棋盘操作的实验

    这篇文章讨论如何在基于Babylon.js的WebGL场景中,建立棋盘状的地块和多个可选择的棋子对象,在点选棋子时显示棋子的移动范围,并且在点击移动范围内的空白地块时向目标地块移动棋子.在这一过程中要 ...

  8. 在WebGL场景中管理多个卡牌对象的实验

    这篇文章讨论如何在基于Babylon.js的WebGL场景中,实现多个简单卡牌类对象的显示.选择.分组.排序,同时建立一套实用的3D场景代码框架.由于作者美工能力有限,所以示例场景视觉效果可能欠佳,本 ...

  9. 原生WebGL场景中绘制多个圆锥圆柱

    前几天解决了原生WebGL开发中的一个问题,就是在一个场景中绘制多个几何网格特征不同的模型,比如本文所做的绘制多个圆锥和圆柱在同一个场景中,今天抽空把解决的办法记录下来,同时也附上代码.首先声明,圆柱 ...

  10. Egret的第三方库制作,以及在大型项目中的应用

    目录: 一 创建第三方库 二 TypeScript库 三 JavaScript库 四 第三方库制作在大型RPG中的实际应用 参考: 第三方库的使用方法 目标: 本文目的是将现有游戏的框架制作成第三方库 ...

随机推荐

  1. 【Azure 应用服务】在Azure上部署一套VUE框架的单页面应用,有什么可以参考的文档呢?

    问题描述 在Azure上部署一套VUE框架的单页面应用,有什么可以参考的文档呢? 问题回答 Azure官方上并没有VUE框架的实例代码,但是可以参考Node JS项目,来进行设置. 在 Azure 中 ...

  2. spark conf、config配置项总结

    1.structured-streaming的state 配置项总结 Config Name Description Default Value spark.sql.streaming.stateSt ...

  3. 千卡利用率超98%,详解JuiceFS在权威AI测试中的实现策略

    2023 年 9 月,AI 领域的权威基准评测 MLPerf 推出了 Storage Benchmark.该基准测试通过模拟机器学习 I/O 负载的方法,在不需要 GPU 的情况下就能进行大规模的性能 ...

  4. stm32f103ve+光电传感器使用教程+oled(HAL库)

    最近想做一个物联网农业监控系统,第一步就是能够学会使用相关的外设,比如温湿度检测,光照强度检测,还有CO2检测等. 这次讲一下光电传感器的使用和代码实现. 1.知识储备:串口使用,ADC采集(此处用的 ...

  5. 面试准备不充分,被Java守护线程干懵了,面试官主打一个东西没用但你得会

    写在开头 面试官:小伙子请聊一聊Java中的精灵线程? 我:什么?精灵线程?啥时候精灵线程? 面试官:精灵线程没听过?那守护线程呢? 我:守护线程知道,就是为普通线程服务的线程嘛. 面试官:没了?守护 ...

  6. (一)Git 学习之为什么要学习 Git

    一.版本控制 1.1 何为版本控制 版本控制(Revision control)是一种在开发的过程中用于管理我们对文件.目录或工程等内容的修改历史,方便查看更改历史记录.备份,以便恢复以前的版本的软件 ...

  7. 基于python的定时PC定时录音机实现

    一 概念基础 这次用python实现一个定时录音机的功能,可以让你的i电脑秒变定时录音机. 这里用到了wave库,time库等.熟悉该源码,即可了解这些库的用法.   二 源码解析 1.录音函数,该函 ...

  8. 基于bes2300 的六轴传感器mpu6050调试总结

    需求  在医疗健康领域,有很多场景需要分析佩戴者的姿势和动作.mpu6050多轴传感器是一个不二的选择.假如想把功耗做的低一些,放在耳机里,bes2300芯片配合mpu6050是一个不错的选择.遗憾的 ...

  9. MySQL 如何以当前日期时间作为字段初始默认值?

    1.以当前时间作为默认值 使用 DEFAULT CURRENT_TIMESTAMP 声明字段,插入记录时不用指定 dt,自动置入当前时间 CREATE TABLE t1 ( dt DATETIME D ...

  10. 网络流媒体协议的联系与区别 (RTP RTCP RTSP RTMP HLS)(转)

    网络流媒体协议的联系与区别(RTP RTCP RTSP RTMP HLS) RTP RTCP RTSP RTMP HLS 区别与联系 RTP传输流媒体数据.RTCP对RTP进行控制,同步.RTSP发起 ...