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 事件中心】 Event Grid(事件网格)+Azure Functions处理IOT Hub中的消息

    问题描述 使用IOT Hub的Events功能,使用Event Grid(事件网格)订阅IOTHub状态消息,发送到Azure Functions.那如何来创建Event Grid触发的Functio ...

  2. 【Azure 事件中心】EventHub 中同一条消息不停的推送给消费端问题记录

    问题描述 EventHub 中同一条消息,不停的推送给消费端,查看日志发现错误: Caused by: com.azure.messaging.eventhubs.implementation.Par ...

  3. 百亿节点、毫秒级延迟,携程金融基于 NebulaGraph 的大规模图应用实践

    作者:霖雾,携程数据开发工程师,关注图数据库等领域. 0. 背景 2017 年 9 月携程金融成立,在金融和风控业务中,有多种场景需要对图关系网络进行分析和实时查询,传统关系型数据库难以保证此类场景下 ...

  4. 隐私计算在释放万亿美元 SaaS 市场的重要作用

    PrimiHub一款由密码学专家团队打造的开源隐私计算平台,专注于分享数据安全.密码学.联邦学习.同态加密等隐私计算领域的技术和内容. 过去十年间数字领域经历了一场颠覆性的转变.这一演变的前沿是软件即 ...

  5. Java 多线程---线程优先级

    Java 实例 - 线程优先级设置 以下实例演示了如何通过setPriority() 方法来设置线程的优先级: 1 SimplePriorities.java 文件 2 public class Si ...

  6. 19 SWERC 2022-2023 - Online Mirror (Unrated, ICPC Rules, Teams Preferred)L. Controllers(数学公式+瞎搞)

    L. Controllers 思路: #include <bits/stdc++.h> #define int long long #define rep(i, a, b) for(int ...

  7. viewui tree 自定义化(源码copy出来改动)#添加 获取selected 解决方案

    需求: 对树有title的点击效果,右侧有说明文字 和 按钮能点击,不能右键,系统用的壳已经有右键了. 出现的问题: viewui的tree有两年没更新了,对ui这块,是采取的render自定义,但是 ...

  8. My97DatePicker设置默认时间

    <%@ page language="java"  pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC ...

  9. GdbServer和libuuid移植到HISI3520d

    PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明   本文作为本人csdn blog的主站的备份.(Bl ...

  10. [TM4] TM4C123G Keil5 新建工程指南

    [TM4] TM4C123G Keil5 新建工程指南 keil新建工程,选择TM4C123GH6PM芯片,然后在CMSIS勾选CORE,DEVICE勾选Startup(如图),来到新工程界面 在So ...