实时 3D 深度多摄像头跟踪 Real-time 3D Deep Multi-Camera Tracking

论文url https://arxiv.org/abs/2003.11753

论文简述:

提出了一个名为Deep Multi-Camera Tracking (DMCT)的实时3D多摄像机跟踪系统。该系统旨在解决使用多个RGB摄像机进行3D人群跟踪的挑战性任务。

总体框架图:

输入:

  • 多个RGB摄像机的实时视频帧,每个视频帧是一个彩色图像,具有高度和宽度的像素矩阵。

DGPN(Deep GroundPoint Network):

  • 基础卷积层(Base CNN Layers)

    • 从输入图像中提取基本的视觉特征,如边缘、角点和纹理等,经过卷积和激活函数(如ReLU)处理后,输出的是一组特征图(feature maps),这些特征图捕捉了输入图像的重要视觉信息。
  • 深度特征提取层
    • 使用预训练的深度网络(如ResNet或DLA)作为骨干网络,进一步提取更深层次的特征。这些特征包括对象的部分、姿态和形状等,输出的是更丰富、更抽象的特征图,这些特征图为后续的地面点预测提供了必要的信息。
  • 透视校正层
    • 原理:透视校正层的目的是解决由于摄像机视角和距离不同导致的透视变形问题。在多摄像机系统中,同一个物体在不同摄像机视图中的大小和形状可能会有所不同,该层通过学习摄像机的内参和外参(即相机矩阵),来消除透视变形的影响(ps:相机矩阵由摄像头校准过程获取,可能是相机图像标定操作)
    • 校正过程:具体来说,对于每个摄像机视图,网络会计算一个从图像平面到虚拟地面平面的映射。这个映射可以通过相机的内参矩阵和外参矩阵来实现,其中内参矩阵描述了相机镜头的畸变,外参矩阵描述了摄像机在世界坐标系中的位置和朝向。(ps:作者提出了一种改进的方法来映射人物位置热图到虚拟地面平面。这种方法通过预畸变处理,校正了由于透视变换引起的图像拉伸变形,从而提高了人物检测的准确性。具体来说,通过将地面平面划分为等半径的单元格并创建相应的掩码,这些掩码被用于损失函数,以优化网络生成的地面点预测。这种方法有效地提高了多视角下人物跟踪的性能。)

    • 输出:经过透视校正后的特征图能够更准确地反映物体在地面平面上的真实位置和形状。
  • 地面点预测层:
    • 原理:地面点预测层的目标是为每个人生成一个地面点概率图,这个概率图表示每个人在地面平面上的投影位置的概率分布。
    • 生成heatmap:这一层首先使用一系列卷积层来处理经过透视校正的特征图,然后通过一个特定的输出层(通常是一个卷积层,其卷积核的尺寸与地面点的预期大小相匹配)来生成热图。这个输出层的每个卷积核负责预测一个特定区域的地面点概率。
    • 概率转换:输出层的每个卷积核会为每个像素点分配一个概率值,这个值表示该像素点是某个人体地面点的可能性。这通常是通过一个激活函数(如softmax)来实现的,确保每个像素点的概率值在0到1之间,并且整个热图中所有像素点的概率值之和为1。

投影与聚合(Projection & Aggregation):

  • 利用相机矩阵将每个视角的概率图投影到共享的地面平面上。这样,来自多个相机的投影概率图就可以融合在一起,形成一个统一的地面平面占用图(occupancy map)。这个过程涉及到3D几何计算,将不同视角的信息整合到一个共享的二维平面上。

占用图融合(Occupancy Map Fusion):

  • 融合过程可以通过两种方式进行。第一种方法是通过对投影的概率图进行平均,生成最终的占用图。第二种方法则是将所有概率图堆叠起来,作为人员检测器的输入。在实际应用中,实验表明使用视角感知的融合方法能够更好地处理遮挡和噪声,提高跟踪的准确性。



a图为实际人的分布位置,b图为上述操作后生成的候选的人的位置,上述操作后还需要进行下述操作来捕捉目标在时间序列上的动态信息,进行更精准的人员目标识别

DGN(Deep Glimpse Network):

  • 基础卷积层(Base CNN Layers):

    • 提取特征信息(作用和输出同上)
  • 时间感知层(Temporal Glimpse Layer):
    • 作用:时间感知层的目的是捕捉人员在时间序列上的动态信息。这一层使用了的“时间瞥见”(glimpse)机制,通过在时间维度上对特征图进行采样和聚合,来模拟人类视觉系统在观察运动时的聚焦效应。
    • 操作:时间感知层通过在特征图序列上应用一组特定的卷积核(temporal convolutional layers),将连续帧的信息融合在一起,生成新的特征表示。这个过程类似于在时间序列上对特征图进行“缩放”,以便更好地捕捉运动模式。
    • 输出:经过时间感知层处理后,得到一组包含时间信息的特征图。这些特征图不仅包含了空间信息,还融入了目标随时间变化的动态特征。
  • 时间卷积层(Temporal CNN Layer):
    • 作用:时间卷积层的作用是进一步处理时间感知层的输出,通过在时间维度上进行更复杂的特征融合和抽象,以提取更高层次的时间特征。
    • 操作:时间卷积层使用一系列卷积操作来处理时间感知层的特征图,这些操作可以捕捉更长期的时序依赖关系和复杂的动态模式。
    • 输出:时间卷积层输出一组综合了空间和时间信息的高级特征图,这些特征图用于后续的人员分类和跟踪。

Tracker

  • 输入:跟踪器接收来自Deep Glimpse Network的人候选检测结果,这些结果是在融合的占用图上通过人检测模块得到的。
  • Tracking Graph构建:用于表示轨迹和检测候选之间的关系。在这个图中,矩形节点代表已经形成轨迹的节点,椭圆形节点代表当前帧中检测到的候选节点,五边形节点代表预测节点。
  • 轨迹的延伸:对于每个已有的轨迹,跟踪器尝试在当前帧中找到它的延伸。这意味着跟踪器会寻找一个路径,这个路径不仅通过当前轨迹的最后一个节点,而且还要通过所有其他节点,并且保证路径之间不会相交(即节点不共享)。
  • 节点间的匹配:跟踪器通过计算节点间的相似度来确定它们是否匹配。这里的相似度通常是通过计算检测候选和轨迹节点之间的欧几里得距离来衡量的。跟踪器会为每个轨迹节点找到最可能的匹配候选节点。
  • 轨迹的更新:一旦找到匹配,跟踪器会更新轨迹,将旧的轨迹节点扩展到新的匹配节点。如果在一定数量的帧中(例如100帧),一个轨迹没有找到匹配的候选节点,那么这个轨迹会被移除。
  • 新轨迹创建:对于当前帧中没有匹配到任何轨迹的检测候选节点,跟踪器会创建新的轨迹。这些新的轨迹会被加入到跟踪图中,并在下一时刻用于进一步的跟踪
  • 输出:跟踪器输出的是每个人在多个摄像头视角下的三维轨迹。这些轨迹以时间为序列,展示了每个人在空间中的移动路径。

效果图片展示:

实时 3D 深度多摄像头跟踪 Real-time 3D Deep Multi-Camera Tracking的更多相关文章

  1. 教你如何认识人脸识别开发套件中的双目摄像、3D结构光摄像头、单目摄像头的区别及详细讲解

    深圳市宁远电子提供的人脸识别模组可支持双目摄像头和3D结构光摄像头,在客户咨询中经常有被问到双目的为什么会比单目的成本高,区别在哪里,他们的适用于哪些场景呢?在此,深圳市宁远电子技术工程师就为大家详细 ...

  2. 3D深度估计

    3D深度估计 Consistent Video Depth Estimation 论文地址:https://arxiv.org/pdf/2004.15021.pdf 项目网站:https://roxa ...

  3. 前端的3D(css3版本)--淘宝造物节3D创景的制作

    其实是依托Css3的功劳,先上一个例子 链接: https://pan.baidu.com/s/1cZ-mMI01FHO3u793ZhvF2w 提取码: d3s7代码地址:链接: https://pa ...

  4. 深度自适应增量学习(Incremental Learning Through Deep Adaptation)

    深度自适应增量学习(Incremental Learning Through Deep Adaptation) 2018-05-25 18:56:00 木呆呆瓶子 阅读数 10564  收藏 更多 分 ...

  5. 从零3D基础入门XNA 4.0(1)——3D开发基础

    [题外话] 最近要做一个3D动画演示的程序,由于比较熟悉C#语言,再加上XNA对模型的支持比较好,故选择了XNA平台.不过从网上找到很多XNA的入门文章,发现大都需要一些3D基础,而我之前并没有接触过 ...

  6. 深度学习与计算机视觉(11)_基于deep learning的快速图像检索系统

    深度学习与计算机视觉(11)_基于deep learning的快速图像检索系统 作者:寒小阳 时间:2016年3月. 出处:http://blog.csdn.net/han_xiaoyang/arti ...

  7. Android+OpenCV 摄像头实时识别模板图像并跟踪

    通过电脑摄像头识别事先指定的模板图像,实时跟踪模板图像的移动[用灰色矩形框标识] ps:一开始以为必须使用OpenCV Manager,可是这样会导致还需要用户去额外安装一个apk,造成用户体验很差, ...

  8. 【深度学习】:一门入门3D计算机视觉

    一.导论 目前深度学习已经在2D计算机视觉领域取得了非凡的成果,比如使用一张图像进行目标检测,语义分割,对视频当中的物体进行目标跟踪等任务都有非常不错的效果.传统的3D计算机视觉则是基于纯立体几何来实 ...

  9. TensorFlow和深度学习入门教程(TensorFlow and deep learning without a PhD)【转】

    本文转载自:https://blog.csdn.net/xummgg/article/details/69214366 前言 上月导师在组会上交我们用tensorflow写深度学习和卷积神经网络,并把 ...

  10. TensorFlow和深度学习新手教程(TensorFlow and deep learning without a PhD)

    前言 上月导师在组会上交我们用tensorflow写深度学习和卷积神经网络.并把其PPT的參考学习资料给了我们, 这是codelabs上的教程:<TensorFlow and deep lear ...

随机推荐

  1. 【Azure 服务总线】查看Service Bus中消息多次发送的日志信息,消息是否被重复消费

    问题描述 使用Service Bus,发现消息被重复消费.如果要查看某一条消息的具体消费情况,需要那些消息的属性呢? 问题解答 使用Azure Service Bus,当消费发送到服务端后,就会生产相 ...

  2. Python 潮流周刊第 40 期(摘要)

    本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...

  3. isNumber 数字正则校验 表达式

    isNumber 数字正则校验 表达式 isNumber(value) { return (/(^-?[0-9]+\.{1}\d+$)|(^-?[1-9][0-9]*$)|(^-?0{1}$)/).t ...

  4. 使用ScottPlot库在.NET WinForms中快速实现大型数据集的交互式显示

    前言 在.NET应用开发中数据集的交互式显示是一个非常常见的功能,如需要创建折线图.柱状图.饼图.散点图等不同类型的图表将数据呈现出来,帮助人们更好地理解数据.发现规律,并支持决策和沟通.本文我们将一 ...

  5. 安装完exe版本jdk之后未配置java_home和path环境变量仍然可以在cmd中使用java命令原因解释

    如题: 为何可以 打出Java -version的版本 ,因为jdk安装过程,拷贝了java\javac等几个命令到C:\windows\system32目录了. 如果使用javac -version ...

  6. 10.Java异常问题

    目录介绍 10.0.0.1 见过哪些运行时异常?异常处理机制知道哪些?从异常是否必须需要被处理的角度来看怎么分类? 10.0.0.2 运用Java异常处理机制?异常处理的原理?Java中检查异常和非检 ...

  7. .NET开源免费的Windows快速文件搜索和应用程序启动器

    前言 今天大姚给大家分享一款.NET开源(MIT License).免费.功能强大的Windows快速文件搜索和应用程序启动器:Flow Launcher. 工具介绍 Flow Launcher 是一 ...

  8. ps去除图片中间部分并拼合

    今天分享一个用ps去除图片中间部分后,把剩下的部分拼合的技术. 需求 下面这张图,需要去掉第三列(顺丰包邮价) ps处理过程 1.导入图片到ps软件 快捷键方式:Ctrl + O: 手动打开方式:点击 ...

  9. vue中类tabs左右滑动

    效果图 思路 给定一个变量用来记录滚动了几列,每滚动一次加1滚动一列,监听页面滚动父级元素宽度改变,重新设置滚动的距离(放在计算属性中让其自动计算) <template> <div ...

  10. 京东二面:Redis为什么快?我说Redis是纯内存访问的,然后他对我笑了笑。。。。。。

    引言 Redis是一个高性能的开源内存数据库,以其快速的读写速度和丰富的数据结构支持而闻名.作为一个轻量级.灵活的键值存储系统,Redis在各种应用场景下都展现出了惊人的性能优势.无论是作为缓存工具. ...