笔记:Object-Level Motion Detection from Moving Cameras

2023-10-31 13:30

本文主要是介绍笔记:Object-Level Motion Detection from Moving Cameras,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

笔记:移动摄像运动检测

第一章 介绍

  • 固定机位的运动检测有一下常用方法:
    • frame difference
    • background subtraction
    • optical flow
  • 而移动相机的检测的复杂性主要来自于:背景的多样性、背景的运动
  • 今年来的移动相机运动检测论文:
    • [1], [2], [8], [9], [10], [11], [12],[13], [14]
    • 第一类方法:使用目标物体和背景的径向光流差异。
      • 问题:什么是 radial optical flow?
      • 主要是对比目标物体和背景的径向模式,差异大说明在运动
      • 优点:计算简单
      • 缺点:对噪音和色彩比较敏感,无法表达运动的差异
    • 第二类方法:使用自适应背景模型
      • 问题:什么是 adaptive background modelling?
      • 首先计算背景的移动方向,然后使用 background subtraction or image difference between consecutive video frames 计算前景的运动
      • 缺点:当背景剧烈变化时,效果不好。并且计算量大。
  • 目前的难点:
    • 针对移动的相机,提供对象级别的位置、语义分类、运动信息。

1.2 前人工作的数据

  • State-of-the-art object detection techniques such as deformable part based model (DPM)
    • 只检测出那块区域在运动
    • 主要的缺点是:没有提供运动信息、没有检查静止目标、没有目标的分类、目标物的数量

1.3 本文所提出的方法

  • 缩写:
    • CMD:context-aware motion descriptor(感知上下文的运动描述)
    • HOOF:histograms of oriented optical flow(光流直方图)
  • 使用context-aware motion descriptor (CMD) 来描述物体的运动。
  • CMD 对比目标和周围区域的有向光流直方图(histograms of oriented optical flow (HOOF)),以区分目标和背景的运动差异。

1.4 本文的贡献

  • 一种对比目标和背景的 HOOF 的方法
    • An orientation-wise soft margin operator is designed to compare the HOOF of the object and its background
    • 理论上背景的 flow vector 是一致的,我们可以通过对比flow vector 的不同来区分背景和前景。但是实际中背景的 flow vector 是有细微差别的,导致背景的不同区域被分到直方图的不同 bin 中,导致算法失效。
    • 为了解决这个问题,我们为目标周围的直方图增加了 soft margin ,并且使用背景 HOOF 中较大的 bin 和目标的HOOF对比
  • 一种生成 CMD 的方法
    • A histogram of binary vector generation technique is developed to generate the CMD
    • 生成二位直方图:因为光流包含两个方向,所以需要二位直方图
    • 这个方法考虑了光流的分布,对目标移动方向的光流进行增强,较少了噪音
    • 我们通过连接二维直方图(生成自pyramid HOOF)来构造CMD

第二章 CMD

  • 主要包含一下几个技术
    • 抽取 extraction HOOF
    • HOOF 比较:针对方向增加了 soft margin operator
    • CMD的构造方法

2.1 Context-Aware HOOF

fig 2
如上图所以,移动物体的光流在方向和强度上和周围背景的光流不同。context-aware HOOF 可以描述这种不一致,它获取了目标周围的光流信息(也就是上下文contextual flow field information)。

  • 首先计算整张图片的光流:使用的方法 D. Q. Sun, S. Roth, and M.J. Black. Secrets of optical flow estimation and their principles. In IEEE Conference on Computer Vision and Pattern Recognition (CVPR), pages 2432–2439, June 2010.
  • 如图三所以建立8个区域
    在这里插入图片描述
  • 分别计算每个区域的直方图
    • 直方图的横坐标是光流的角度,纵坐标是这个 bin 的光流的幅度(magnitude)的加总。

    • 角度和幅度的计算公式如下。

    • 在这里插入图片描述

    • 在这里插入图片描述

    • 这些直方图需要做标准化,也就是横坐标加总需要等于一。这样方便在不同大小区块之间做对比。

    • 直方图的横坐标有 B 个格子,B的大小是一个超参,我们将只用不同的 B 来生成pyramid HOOF,将在 Section 2.3 中讨论。

2.2 Orientation-Wise Soft Margin Operator

为了表达目标物体和周围背景的不同,我们对比它们的 orientation-wise HOOF ,并产生一组二进制向量(binary vector)。

我们用 ub (i) 来描述两个直方图在某个方向上的差异。b 表示选定的方向,i 表示第 i 个邻居,一个有 8 个邻居。
在这里插入图片描述
上图表示目标在 b 方向的速度比周围8个区域在 b 方向上速度大。

例如我们对比 b=1 这个方向,那么可以得到一个 binary vector,例如[1,1,1,1,1,1,1,1],这表示目标在朝这个方向移动。相反如果静止的物体带到的 binary vector 可是能[0,0,0,0,0,0,0,]。

如果相机有运动,那么角落上的 flow 会比较大,所以静止物体得到的 binary vector 可能是[00001111] 或者 [11110000]。

但是这种简单的对比方法可能会出问题。图片左上角和右下角也可能产生[1,1,1,1,1,1,1,1],所以我们需要改进对比方法。

2.2.1 优化生成binary vector的方法

在这里插入图片描述
这里表示目标物体在角度 b 上的值(直方图上的纵坐标,体现了速度)不仅比周围8个区域在这个方向的速度大,同时也大于相似角度内所有的fi(b)。
在这里插入图片描述
个人的理解:相机在移动的过程中,背景区域的光流的主方向是不一致的,但是角度不会差很多。所以中间区域的主方向和周围会有差异。在这种情况下传统方法会把静止的物体误认为是运动的。所以要增加对比的角度范围。问题:是否是相机的形变导致的。

2.3 CMD

在这里插入图片描述

这个部分主要讨论如何使用 binary vector 生成物体相对于背景的运动状态的具体表述(CMD)

  • 首先我们已经得到了在角度 b 上运动信息(例如[1,1,1,1,1,1,1,1])
  • 将每个角度的 binary vector 转化为 [0-255]
  • 然后进一步转化为256维的直方图
  • 直方图数据累加的时候使用fo(b):也就是中间目标在改方向上的光流幅度
    • 这样的好处是可以加强主方向上的数据,较少噪音
  • 我们使用不同大小的B(直方图分桶的数量)来生成上面这个直方图,分桶数量越多分辨力越高,但是会降低通用型
  • 最后需要把这些直方图全部链接起来,由于高分辨率的直方图保留了更多信息,所以连接的时候分别乘以不同的权重,分辨力越低权重越小

附录

1. 先记录一些基础知识

1.1 光流(optical flow field)

资料:https://zhuanlan.zhihu.com/p/74460341

传统算法 Lucas-Kanade
深度学习光流估计算法将以FlowNet/FlowNet2.0

1.2 Lucas-Kanade

  • 角点检测方法(还没有来得及看):https://en.wikipedia.org/wiki/Harris_corner_detector
  • 用计算机求矩阵的逆(伪逆),还没有看
  • 也需要看一下:HornSchunck 方法

1.3 FlowNet/FlowNet2.0

单独介绍这个内容

  • 训练数据:人工生成,图片和背景同时移动,模拟了相机的移动

这篇关于笔记:Object-Level Motion Detection from Moving Cameras的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

深入探讨Java 中的 Object 类详解(一切类的根基)

《深入探讨Java中的Object类详解(一切类的根基)》本文详细介绍了Java中的Object类,作为所有类的根类,其重要性不言而喻,文章涵盖了Object类的主要方法,如toString()... 目录1. Object 类的基本概念1.1 Object 类的定义2. Object 类的主要方法3. O

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

论文阅读笔记: Segment Anything

文章目录 Segment Anything摘要引言任务模型数据引擎数据集负责任的人工智能 Segment Anything Model图像编码器提示编码器mask解码器解决歧义损失和训练 Segment Anything 论文地址: https://arxiv.org/abs/2304.02643 代码地址:https://github.com/facebookresear

数学建模笔记—— 非线性规划

数学建模笔记—— 非线性规划 非线性规划1. 模型原理1.1 非线性规划的标准型1.2 非线性规划求解的Matlab函数 2. 典型例题3. matlab代码求解3.1 例1 一个简单示例3.2 例2 选址问题1. 第一问 线性规划2. 第二问 非线性规划 非线性规划 非线性规划是一种求解目标函数或约束条件中有一个或几个非线性函数的最优化问题的方法。运筹学的一个重要分支。2

【C++学习笔记 20】C++中的智能指针

智能指针的功能 在上一篇笔记提到了在栈和堆上创建变量的区别,使用new关键字创建变量时,需要搭配delete关键字销毁变量。而智能指针的作用就是调用new分配内存时,不必自己去调用delete,甚至不用调用new。 智能指针实际上就是对原始指针的包装。 unique_ptr 最简单的智能指针,是一种作用域指针,意思是当指针超出该作用域时,会自动调用delete。它名为unique的原因是这个

查看提交历史 —— Git 学习笔记 11

查看提交历史 查看提交历史 不带任何选项的git log-p选项--stat 选项--pretty=oneline选项--pretty=format选项git log常用选项列表参考资料 在提交了若干更新,又或者克隆了某个项目之后,你也许想回顾下提交历史。 完成这个任务最简单而又有效的 工具是 git log 命令。 接下来的例子会用一个用于演示的 simplegit

记录每次更新到仓库 —— Git 学习笔记 10

记录每次更新到仓库 文章目录 文件的状态三个区域检查当前文件状态跟踪新文件取消跟踪(un-tracking)文件重新跟踪(re-tracking)文件暂存已修改文件忽略某些文件查看已暂存和未暂存的修改提交更新跳过暂存区删除文件移动文件参考资料 咱们接着很多天以前的 取得Git仓库 这篇文章继续说。 文件的状态 不管是通过哪种方法,现在我们已经有了一个仓库,并从这个仓

忽略某些文件 —— Git 学习笔记 05

忽略某些文件 忽略某些文件 通过.gitignore文件其他规则源如何选择规则源参考资料 对于某些文件,我们不希望把它们纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。通常它们都是些自动生成的文件,比如日志文件、编译过程中创建的临时文件等。 通过.gitignore文件 假设我们要忽略 lib.a 文件,那我们可以在 lib.a 所在目录下创建一个名为 .gi

取得 Git 仓库 —— Git 学习笔记 04

取得 Git 仓库 —— Git 学习笔记 04 我认为, Git 的学习分为两大块:一是工作区、索引、本地版本库之间的交互;二是本地版本库和远程版本库之间的交互。第一块是基础,第二块是难点。 下面,我们就围绕着第一部分内容来学习,先不考虑远程仓库,只考虑本地仓库。 怎样取得项目的 Git 仓库? 有两种取得 Git 项目仓库的方法。第一种是在本地创建一个新的仓库,第二种是把其他地方的某个