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. Nebula 在 Akulaku 智能风控的实践:图模型的训练与部署

    本文整理自 Akulaku 反欺诈团队在 nMeetup·深圳场的演讲,B站视频见:https://www.bilibili.com/video/BV1nQ4y1B7Qd 这次主要来介绍下 Nebul ...

  2. 50条MAUI踩坑记

    1. 目录结构: (1)_imports.razor是一个全局using namespace的地方 (2)Platforms下的代码,虽然都放在同一个项目下,但是Platforms\Android下的 ...

  3. 【学习笔记】 - 基础数据结构 :Link-Cut Tree(进阶篇)

    前言 LCT没题写可以去写树剖和一些线段树合并的题练手 LCT 的概念 原本的树剖是对树进行剖分,剖分为重边和轻边 LCT则是对于树分为虚边和实边,特殊的,LCT可以没有虚边(例:银河英雄传说v2) ...

  4. 单词本z launch = to throw 相关词根 lanc ject jac jet bol bl bal mit miss cast

    launch = to throw 词根 launc = lanc = to throw 表示 to throw 的词根有三组 拉丁语的lanc/launc,sip 拉丁语的ject, jac(jet ...

  5. WPF之模板

    目录 模板的内涵 数据的外衣DataTemplate UserControl例子 DataTemplate例子 控件的外衣 ControlTemplate 解剖控件 ItemsControl的Pane ...

  6. Android自定义View学习(1)——基础知识介绍

    原文:Android自定义View学习(1)--基础知识介绍 - Stars-One的杂货小窝 准备学习自定义View,介绍一下先了解了下相关的前置基础知识,特此总结 本系列集合文章链接可访问Andr ...

  7. epoll反应堆理解

    https://www.aliyundrive.com/s/oBvP7BcjsCS https://blog.csdn.net/weixin_36750623/article/details/8354 ...

  8. HDU 2045:不容易系列之(3)—— LELE的RPG难题(动态规划)

    一.原题链接 Problem - 2045 (hdu.edu.cn) 二.题面 人称"AC女之杀手"的超级偶像LELE最近忽然玩起了深沉,这可急坏了众多"Cole&quo ...

  9. 记录--vue3的宏到底是什么东西?

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 前言 从vue3开始vue引入了宏,比如defineProps.defineEmits等.我们每天写vue代码时都会使用到这些宏,但是你有 ...

  10. 如何用Flask中的Blueprints构建大型Web应用

    本文分享自华为云社区<构建大型Web应用Flask中的Blueprints指南>,作者: 柠檬味拥抱. 什么是Blueprints? Blueprints是Flask中的一种模式,用于将应 ...