Competitive Collaboration 论文阅读
论文信息
题目:Competitive Collaboration: Joint Unsupervised Learning of Depth, Camera Motion, Optical Flow and Motion Segmentation
作者:Anurag Ranjan, Varun Jampani, Lukas Balles
来源:CVPR
时间:2019
代码地址:https://github.com/anuragranj/cc
Abstract
我们解决了低级视觉中几个相互关联问题的无监督学习:单视图深度预测、相机运动估计、光流以及将视频分割为静态场景和移动区域。
我们的主要见解是这四个基本视觉问题通过几何约束耦合在一起。因此,学习一起解决它们可以简化问题,因为这些解决方案可以相互促进。我们通过更明确地利用几何形状并将场景分割为静态和移动区域,超越了之前的工作。
为此,我们引入了竞争性协作,这是一个促进多个专业神经网络协调训练以解决复杂问题的框架。竞争性协作的工作原理与期望最大化非常相似,但神经网络既充当竞争者来解释与静态或移动区域相对应的像素,又充当通过调节器将像素分配为静态或独立移动的协作者。我们的新颖方法将所有这些问题集成在一个通用框架中,并同时推理场景分割为运动物体和静态背景、相机运动、静态场景结构的深度以及运动物体的光流。我们的模型在没有任何监督的情况下进行训练,并在所有子问题上的联合无监督方法中实现了最先进的性能。
Introduction
我们在本文中考虑了四个这样的问题:单视图深度预测、相机运动估计、光流和运动分割。之前的工作已经使用真实数据[5]和合成数据[4]通过监督来解决这些问题。然而,合成数据与真实数据之间始终存在现实差距,并且真实数据有限或不准确。
Approach。为了解决联合无监督学习的问题,我们引入了竞争性协作(CC),这是一种通用框架,网络在其中学习协作和竞争,从而实现特定目标。在我们的特定场景中,竞争性协作是一个三人游戏,由两个玩家竞争由第三个玩家(主持人)监管的资源。
如图 2 所示,我们在框架中引入了两个参与者,即静态场景重建器 R = ( D , C ) R = (D, C) R=(D,C),它使用深度 D 和相机运动 C 来推理静态场景像素;以及运动区域重建器 F,其推理独立运动区域中的像素。这两个玩家通过推理图像序列中的静态场景和移动区域像素来竞争训练数据。比赛由运动分割网络 M 主持,该网络分割静态场景和运动区域,并将训练数据分发给选手。不过,主持人也需要培训,以保证公平竞争。因此,玩家 R 和 F 合作训练主持人 M,使其在训练周期的交替阶段正确分类静态和移动区域。这个通用框架在本质上与期望最大化 (EM) 类似,但专为神经网络训练而制定。
总之,我们的贡献是:
1)我们引入了竞争性协作,这是一种无监督学习框架,其中网络充当竞争对手和合作者以实现特定目标。
2)我们表明,使用该框架联合训练网络对其性能具有协同效应。
3)据我们所知,我们的方法是第一个使用深度、相机运动和光流等低级信息来解决分割任务而无需任何监督的方法。
4)我们在无监督方法中的单视图深度预测和相机运动估计方面实现了最先进的性能。我们在推理场景几何形状的无监督方法中实现了最先进的光流性能,并引入了完全无监督运动分割的第一个基线。
5)我们分析了我们方法的收敛特性,并使用 MNIST [19] 和 SVHN [25] 数字上的混合域学习给出了其泛化的直觉。
Competitive Collaboration
在我们的背景下,竞争性协作被表述为一个三人游戏,由两名玩家竞争由主持人监管的资源组成,如图 3 所示。
考虑一个未标记的训练数据集 D = D i : i ∈ N D = {D_i : i ∈ \mathbb{N}} D=Di:i∈N,其中可以分为两个不相交的集合。两个玩家{R,F}竞争获取这些数据作为资源,每个玩家都尝试对D进行分区以最小化其损失。分区由主持人的输出 m = M ( D i ) , m ∈ [ 0 , 1 ] Ω m = M(D_i),m ∈ [0, 1]^Ω m=M(Di),m∈[0,1]Ω 调节,Ω 是竞争对手的输出域。竞争玩家分别最小化他们的损失函数 L R 、 L F L_R、L_F LR、LF,这样每个玩家都会针对自己而不是群体进行优化。为了解决这个问题,我们的培训周期分为两个阶段。
在第一阶段,我们通过固定调节器网络 M 并最小化
然而,主持人M也需要接受培训。这发生在训练周期的第二阶段。
参赛者{R,F}形成共识并训练主持人M,使其在训练周期的下一阶段正确分配数据。在协作阶段,我们通过最小化
来修复竞争对手并培训主持人。
在联合学习深度、相机运动、光流和运动分割的背景下,
第一个参与者 R = (D, C) 由深度和相机运动网络组成,用于推理场景中的静态区域。
第二个参与者 F 是推理移动区域的光流网络。
为了训练参赛者,运动分割网络 M 在静态像素上选择网络 (D, C),并在属于运动区域的像素上选择 F。
竞赛确保 (D, C) 仅对静态部分进行推理,并防止移动像素破坏其训练。类似地,它可以防止任何静态像素出现在 F 的训练损失中,从而提高其在运动区域中的性能。在训练周期的第二阶段,参赛者(D、C)和 F 现在通过形成共识来合作推理静态场景和移动区域,该共识用作训练主持人 M 的损失。
我们在此框架内制定了深度、相机运动、光流和运动分割的联合无监督估计
Notation
我们使用 {Dθ, Cφ, Fψ, Mχ} 分别表示估计深度、相机运动、光流和运动分割的网络。下标{θ, φ, ψ, χ}是网络参数。为了简洁起见,我们将省略几个地方的下标。考虑具有目标帧 I 和时间相邻参考帧 I−、I+ 的图像序列 I−、I、I+。一般来说,我们可以有许多相邻帧。在我们的实现中,我们对 Cφ 和 Mχ 使用 5 帧序列,但为了简单起见,使用 3 帧来描述我们的方法。我们估计目标帧的深度为
我们估计每个参考帧 I−、I+ 的相机运动 e。目标框架 I 为
类似地,我们估计目标图像分割为静态场景和运动区域。静态场景的光流仅由相机运动和深度定义。这通常指的是场景的结构。移动区域具有独立运动场。与每对目标图像和参考图像相对应的分割掩模由下式给出
其中 m − , m + ∈ [ 0 , 1 ] Ω m_−, m_+ \in [0, 1]^Ω m−,m+∈[0,1]Ω表示空间像素域 Ω 中静态区域的概率。
最后,网络 Fψ 估计光流。 Fψ 一次处理 2 个图像,在分别估计 u−、u+、后向和前向光流时共享其权重。
Loss
我们通过联合最小化能量
来学习网络参数 {Dθ, Cφ, Fψ, Mχ}, 其中 {λR, λF , λM, λC , λS}是各个能量项的权重。
E R E_R ER 和 E F E_F EF 项是两个竞争对手分别重建静态和移动区域时最小化的目标。数据竞争是由新兴市场驱动的。
较大的权重 λ M λ_M λM 将驱动更多像素流向静态场景重建器。 E C E_C EC 一词推动了协作,而 E S E_S ES 是平滑度正则化器。
静态场景项 E R E_R ER 最小化静态场景像素的光度损失,如下所示
其中Ω是空间像素域,ρ是鲁棒误差函数, w c w_c wc根据深度d和相机运动e将参考帧向目标帧扭曲。同样, E F E_F EF 最大限度地减少了移动区域的光度损失
我们将鲁棒误差 ρ(x, y) 计算为
第二项也称为结构相似性损失(SSIM)[34],已在之前的工作[22, 37]中使用, μ x 、 σ x μ^x、σ^x μx、σx 是像素邻域的局部均值和方差,其中 c 1 = 0.0 1 2 , c 2 = 0.0 3 2 c_1 = 0.01^2, c_2 = 0.03^2 c1=0.012,c2=0.032 。
令 ν(e, d) 表示相机运动 e 和深度 d 引起的光流,如附录 A.2 中所述。共识损失 E C E_C EC 通过在 ν(e, d) 给出的静态场景流和 Fψ 给出的光流估计之间取得共识来驱动协作并约束掩模来分割移动对象。它由下式给出
第一个指标函数有利于将掩模分配给竞争对手,通过比较 ρ R = ρ ( I , w c ( I s , e s , d ) ) ρ_R = ρ(I, w_c(I_s, e_s, d)) ρR=ρ(I,wc(Is,es,d)) 和 ρ F = ρ ( I , w f ( I s , u s ) ) ρ_F = ρ(I, w_f (I_s, u_s)) ρF=ρ(I,wf(Is,us)) 来实现像素上较低的光度误差。
在第二个指标函数中,如果静态场景流ν(e,d)接近光流u,则阈值λc迫使I = 1,表明静态场景。符号∨表示指标函数之间的逻辑或。如果 R 的光度误差低于 F 或 R 的诱导流与 F 的相似,共识损失 E C E_C EC 鼓励将像素标记为静态。
最后,平滑项 E S E_S ES 充当深度、分割和flow的正则化矩阵,
Inference
深度 d 和相机运动 e 直接从网络输出推断出来。运动分割 m* 由掩模网络 Mχ 的输出以及 Fχ 的静态流和光流估计之间的一致性获得。它由下式给出
第一项采用 Mχ 使用前向和后向参考帧推断的掩模概率的交集。
第二项采用从 R = (Dθ, Cφ) 和 Fψ 估计的流量之间的共识来推理掩模。
最终的掩模是通过两项的并集获得的。最后,(I, I+) 之间的完整光流 u * 是来自静态场景和独立移动区域的光流的组合,由下式给出
方程(7)中的损失被公式化以最小化相邻帧的重建误差。两个竞争对手,静态场景重建器 R = (Dθ, Cφ) 和移动区域重建器 Fψ 最小化了这种损失。
重建器 R 使用等式(8)对静态场景进行推理,重建器 Fψ 使用等式(9)对移动区域进行推理。
调节是通过掩模网络 Mχ 使用等式(11)来实现的。
此外,使用方程(12)驱动R、F之间的协作来训练网络Mχ。
如果场景完全静态,并且只有相机移动,则掩模会强制 (Dθ, Cφ) 重建整个场景。然而,(Dθ, Cφ) 在场景的独立移动区域中是错误的,并且这些区域是使用 Fψ 重建的。调节器 Mχ 经过训练,可以通过 (Dθ, Cφ) 和 Fψ 达成共识来正确分割静态和移动区域,以推理场景中的静态和移动部分,如等式 (12) 所示。
因此,我们的培训周期分为两个阶段。
在第一阶段,调节器 Mχ 使用方程(8、9)推动两个模型(Dθ、Cφ)和 Fψ 之间的竞争。
在第二阶段,参赛者(Dθ,Cφ)和Fψ共同协作,使用方程(11,12)训练调节器Mχ。
相关文章:

Competitive Collaboration 论文阅读
论文信息 题目:Competitive Collaboration: Joint Unsupervised Learning of Depth, Camera Motion, Optical Flow and Motion Segmentation 作者:Anurag Ranjan, Varun Jampani, Lukas Balles 来源:CVPR 时间&#x…...

非科班菜鸡算法学习记录 | 代码随想录算法训练营完结!
这俩月终于结束了233333,之后就是反复复习和背八股了吧,然后整整项目春招再投投投,感觉大部分题都有思路了但是做过的题也会没思路,还是要复习 总结 数组: 双指针用的很多,一般一个指向遍历位置࿰…...

C语言实现三字棋
实现以下: 1游戏不退出,继续玩下一把(循环) 2应用多文件的形式完成 test.c. --测试游戏 game.c -游戏函数的实现 game.h -游戏函数的声明 (2)游戏再走的过程中要进行数据的存储,可以使用3*3的二维数组 char bor…...

【LeetCode】35.复杂链表的复制
题目 请实现 copyRandomList 函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null。 示例 1: 输入:head [[7,null],[13,0],[11,4]…...
代码大全阅读随笔(五)
数据初始化要点: 数据初始化过程很容易出错,所以请使用本章介绍的方法,来初始化数据,从而避免由于非预期的初始化值而造成的错误。 最小化变量作用域。 使用相同的变量的语句尽可能的集中在一起。 早期绑定会减少灵活性࿰…...

No1.详解【2023年全国大学生数学建模竞赛】C题——蔬菜类商品的自动定价与补货决策(代码 + 详细输出 + 数据集代码 下载)
时间告诉你什么叫衰老,回忆告诉你什么叫幼稚。不要总在过去的回忆里纠缠,昨天的太阳,晒不干今天的衣裳。 🎯作者主页: 追光者♂🔥 🌸个人简介: 💖[1] 计算机专业硕士研究生💖 🌿[2] 2023年城市之星领跑者TOP1(哈尔滨)🌿 🌟[3] 2022年度博客…...

有什么好用的电容笔?apple pencil替代品推荐
近年来,电容笔越来越成为人们日常生活中常见的数码产品之一。电容笔的便捷性得到了消费者的认可。它逐渐取代无纸化书写。那么到底电容笔哪个品牌好呢,电容笔哪一款最好用呢,今天小编给大家总结几款市面好用的电容笔,让我们一起来…...

什么是回调函数?写出一个示例?
聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 回调函数⭐ 示例⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅!这个专栏是为那些对Web开发感兴趣、刚刚踏入前…...

深度学习在医疗保健领域的应用:从图像识别到疾病预测
文章目录 深度学习在医学影像识别中的应用1. 癌症检测2. 病理学图像分析3. 医学图像分割 深度学习在疾病预测中的应用1. 疾病风险预测2. 疾病诊断辅助3. 药物研发 深度学习在个性化治疗中的应用1. 基因组学分析2. 临床数据集成 深度学习在医疗保健中的挑战和未来数据隐私和安全…...
SpringBoot实现自定义environment中的value加密
environment中的value为什么要加密? 未经过加密的配置文件,密码均是采用明文密码,很容易导致信息泄露。 SpringBoot environment中的value加密代码如下 package com.xxx.core.encryption;import com.google.common.collect.Maps; import lomb…...
celery的用法--任务调度
在Celery中,任务(Task)是执行特定操作的基本单元。任务可以异步执行,可以带有参数,可以返回结果,可以链式调用,还可以设置任务优先级、超时等属性。 1.定义任务: 使用app.task装饰器…...

MyBatis-Plus学习笔记总结
一、查询 构造器分为QueryWrapper和LambdaQueryWrapper 创建实体类User package com.system.mybatisplus.model;import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.…...
How Language Model Hallucinations Can Snowball
本文是LLM系列文章,针对《How Language Model Hallucinations Can Snowball》的翻译。 语言模型幻觉是如何产生雪球的 摘要1 引言2 为什么我们期待幻觉像滚雪球一样越滚越大?3 实验4 我们能防止雪球幻觉吗?5 相关工作6 结论局限性 摘要 在实…...

autojs修改顶部标题栏颜色
顶部标题栏的名字是statusBarColor 不是toolbar。难怪我搜索半天搜不到 修改之后变成这样了 代码如下: "ui"; importClass(android.view.View); importClass(android.graphics.Color); ui.statusBarColor(Color.parseColor("#ffffff")); ui.…...

arppy gis 读取text 并批量添加字段 arcpy.AddField_management
arppy gis 读取text 并批量添加字段 arcpy.AddField_management 例:给“省级行政区域”添加“A、B、C、D” 4个字段。 (1)用Excel制作出字段及其描述表,定义字段结构; (2)复制除标题行以为的内…...

Pandas中at、iat函数详解
前言 嗨喽,大家好呀~这里是爱看美女的茜茜呐 at 函数:通过行名和列名来取值(取行名为a, 列名为A的值) iat 函数:通过行号和列号来取值(取第1行,第1列的值) 本文给出at、iat常见的…...

【Spring Boot】JPA — JPA入门
JPA简介 1. JPA是什么 JPA是Sun官方提出的Java持久化规范,它为Java开发人员提供了一种对象/关联映射工具来管理Java应用中的关系数据,通过注解或者XML描述“对象-关系表”之间的映射关系,并将实体对象持久化到数据库中,极大地简…...
c#反射(Reflection)
当我们在C#中使用反射时,可以动态地获取和操作程序集、类型和成员。下面是一个简单的C#反射示例,展示了如何使用反射来调用一个类的方法: using System; using System.Reflection;public class MyClass {public void MyMethod(){Console.Wri…...

Lua 元表和元方法
一、元表 元表可以修改一个值在面对一个未知操作时的行为,Lua 中使用 table 作为元表的承载。 元表只能给出预先定义的操作集合的行为,比类会更加受限制,不支持继承。 Lua 每一个值都可以有元表 : 表和用户数据类型都具有各自…...

【Git】01-Git基础
文章目录 Git基础1. 简述1.1 版本管理演变1.2 Git的特点 2. Git安装2.1 安装文档2.1 配置user信息 3. 创建仓库3.1 场景3.2 暂存区和工作区 4. 重命名5. 常用git log版本历史5.1 查看当前分支日志5.2 简洁查看日志5.3 查看最近指定条数的日志 6. 通过图形界面工具查看版本7. 探…...
基于算法竞赛的c++编程(28)结构体的进阶应用
结构体的嵌套与复杂数据组织 在C中,结构体可以嵌套使用,形成更复杂的数据结构。例如,可以通过嵌套结构体描述多层级数据关系: struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...

docker详细操作--未完待续
docker介绍 docker官网: Docker:加速容器应用程序开发 harbor官网:Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台,用于将应用程序及其依赖项(如库、运行时环…...

3.3.1_1 检错编码(奇偶校验码)
从这节课开始,我们会探讨数据链路层的差错控制功能,差错控制功能的主要目标是要发现并且解决一个帧内部的位错误,我们需要使用特殊的编码技术去发现帧内部的位错误,当我们发现位错误之后,通常来说有两种解决方案。第一…...

CMake基础:构建流程详解
目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...
Python爬虫实战:研究feedparser库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...
1688商品列表API与其他数据源的对接思路
将1688商品列表API与其他数据源对接时,需结合业务场景设计数据流转链路,重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点: 一、核心对接场景与目标 商品数据同步 场景:将1688商品信息…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?
论文网址:pdf 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...

【2025年】解决Burpsuite抓不到https包的问题
环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...

NLP学习路线图(二十三):长短期记忆网络(LSTM)
在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...
laravel8+vue3.0+element-plus搭建方法
创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...