首页 > 其他分享 >SEA-RAFT: Simple, Efficient, Accurate RAFT for Optical Flow

SEA-RAFT: Simple, Efficient, Accurate RAFT for Optical Flow

时间:2024-09-26 20:50:26浏览次数:9  
标签:loss Simple Accurate flow 像素 SEA 光流 RAFT

SEA-RAFT: Simple, Efficient, Accurate RAFT for Optical Flow
Yihan Wang, Lahav Lipson, and Jia Deng   一种比RAFT更简单、有效、准确率高的光流算法,比起来RAFT, sea-raft训练时用了一种新的loss,拉普拉斯混合。SEA-RAFT 是现有方法的2.3倍快,同时保持精确具有可比性。在3090卡上,1080P大小的图,能达到21fps,比RAFT快3倍。  

 相比较原始的RAFT主要改进有三点:

  1. laplace 混合loss, 在RAFT中使用的是L1 loss。
  2. 直接回归初始化光流,在初始状态,不是从0开始,而是重复使用现有上下文解码器来直接预测初始光流,然后供应给输入的frame。
  3. 能够提升泛化性。

这些改进和现有的RAFT相关工作是垂直的,也就是说可以方便地迁移到别的方法上使用。首先是基于数据集TartanAir进行rigid flow预训练,而后再进行optical flow训练。

和光流相关的任务比如点匹配,在存在大位移、外观变化或均匀区域的情况下,密集流估计容易出错。 在遮挡的情况下或例如 天空,那里的预测必然是不准确的。PDCNet不仅估计了准确的对应关系,而且还估计了何时信任它们。它预测了一个稳健的不确定性地图,识别准确的匹配,并排除不正确和不匹配的像素。本文引进的MOL需要一个混合的,有一个常量方差,这样和L1 loss等价,更适合光流的评估标准。这样在光流中,每一个像素需要一个准确的反馈,不像点匹配中那样,是一个匹配的点集合。

 

 

备注,此处增加一些额外知识:

又是一堆新领域知识,来自GeoNet: Unsupervised Learning of Dense Depth, Optical Flow and Camera Pose. Zhichao Yin and Jianping S. 中文参考:https://zhuanlan.zhihu.com/p/37671541

与完整的场景理解相比,理解相机的齐次运动相对容易得多,因为大部分区域都受到相机的约束。为了从本质上分解三维场景的理解问题,将由相机运动控制的场景级一致性运动称为rigid flow,区别于物体运动(object motion)。所以计算rigid flow需要把相机运动算出来,通过把target像素pt映射到source 像素ps上,然后两个像素做差值计算pt-ps,这样得到rigid flow.

 

方法

3.1 迭代优化

 

 先进行rigid flow预训练,而后进行optical flow训练。

两个解码器,特征解码器F(图中蓝色部分),I1,I2作为输入,输出F(I1), F(I2),上下文解码器C(图中橙色部分),输入I1,输出C(I1)。 然后生成多尺度的4D 关联Vk,此处详细的框架可以参考RAFT原文中的图,如下图,这个图中,画的比较清楚,SEA-RAFT用convnet替换掉了GRU部分。

 

,RAFT循环优化光流预测u。每一步都得到一个运动特征M

 

 返回I1上每个像素点和I2上临近像素之间在半径r内的相似性。运动特征向量然后通过一个运动编码器转换。RNN但愿输入有一个隐藏状态h,运动特征,以及上下文特征。而后通过flow head得到delta u。

 

 

 

相比较来说,SEA-RAFT需要更少的迭代次数,RAFT相关的算法一般需要在训练过程中每一次需要12次迭代,推理时需要32次迭代,而sea-raft训练过程中只需要4次迭代,推理时需要12次迭代,同时结果已经相当优秀了。

 

3.2 Mixture-of-Laplace Loss

先前的工作大多是用EPE(endpoint-error loss on all pixels,光流估计中标准的误差度量,是预测光流向量与真实光流向量的欧式距离在所有像素上的均值。)进行监督学习,但是光流训练数据通常包含大量模棱两可、不可预测的样本,这样的数据充满这个loss数据。作者分析数据发现,这种模棱两可的情况主导了误差。

Review of Probabilistic Regression

PS: 概率回归问题,目的是点匹配过程中只找到最佳的匹配给预测概率值,而不是一个子集。
给定两张图I1,I2,光流真值ugt,训练误差损失

 

 

在对数空间进行优化,就是直接优化的值是取对数之后的值。

概率回归probablistic regression无法收敛的原因有两个:1. 回归范围太大,很小值到很大值之间。2. 损失函数来自标准的EPE,这种损失函数只关心L1误差,不关心不确定性估计。提出了两个Laplace distributions,一个是针对正常情况,一个是针对模棱两可的情况,混合稀疏是\alpha=[0,1]

 

 

 

 最后loss是这样的,其中r<1, n表示迭代的次数。

 

最后根据不同的配置,实验如下表所示。在实验中,使用imagenet做预训练效果会更好,同时loss的使用确实是MOL是更好的,同时把GRU换成了conv,但是可以看到计算量稍微减少了。从实验结果可以看到,替代掉GRU后,增加block数并不能提升。

 

 整体来看,这篇文章工作没有RAFT惊艳是肯定的,但是实现了加速这算是解决了痛点。尤其是工程上用的时候,速度很关键,可以跑一下试试。作者网站上也公开了很多基于RAFT进行SLAM和3d重建的工作,可以参考。作者之一Jia Deng是L. FeiFei的学生,可能和他们创业成立AI 3d重建公司也有关。

 

SEA-RAFT: Simple, Efficient, Accurate RAFT for Optical Flow Yihan Wang, Lahav Lipson, and Jia Deng 一种比RAFT更简单、有效、准确率高的光流算法,比起来RAFT, sea-raft训练时用了一种新的loss,拉普拉斯混合。SEA-RAFT 是现有方法的2.3倍快,同时保持精确具有可比性。在3090卡上,1080P大小的图,能达到21fps,比RAFT快3倍。
NFERENCELATENCY(MS 工 MACS(G   GMAOFLOWFORMER+ A-...MATCHFLOWOO SEA-RAFT(S) EA-RAFT(M S-RAFT OMATCHFLOY SEA-RAFT SEA-RAFTM FLOWFORMER+十 RPKNE GMFLOV 10000 MS-RAFT 11XSMALLER RAFTO RPKNET GMFLOW 24XFAST   CRAFT 0.45 4500 0.46 6000 0.39 3000 100 CRAF   SKFLOW 1000 1500 DIP O   RAFT .47 O0 6 SKFLOW 0 2 10 img_v3_02f3_c8ae80e1-7ec4-473d-b3fb-2dc8a64979ag.jpg
相比较原始的RAFT主要改进有三点:
1laplace 混合loss, 在RAFT中使用的是L1 loss。
2直接回归初始化光流,在初始状态,不是从0开始,而是重复使用现有上下文解码器来直接预测初始光流,然后供应给输入的frame。
3能够提升泛化性。
这些改进和现有的RAFT相关工作是垂直的,也就是说可以方便地迁移到别的方法上使用。首先是基于数据集TartanAir进行rigid flow预训练,而后再进行optical flow训练。
和光流相关的任务比如点匹配,在存在大位移、外观变化或均匀区域的情况下,密集流估计容易出错。 在遮挡的情况下或例如 天空,那里的预测必然是不准确的。PDCNet不仅估计了准确的对应关系,而且还估计了何时信任它们。它预测了一个稳健的不确定性地图,识别准确的匹配,并排除不正确和不匹配的像素。本文引进的MOL需要一个混合的,有一个常量方差,这样和L1 loss等价,更适合光流的评估标准。这样在光流中,每一个像素需要一个准确的反馈,不像点匹配中那样,是一个匹配的点集合。

备注,此处增加一些额外知识:
又是一堆新领域知识,来自GeoNet: Unsupervised Learning of Dense Depth, Optical Flow and Camera Pose. Zhichao Yin and Jianping S. 中文参考:https://zhuanlan.zhihu.com/p/37671541
与完整的场景理解相比,理解相机的齐次运动相对容易得多,因为大部分区域都受到相机的约束。为了从本质上分解三维场景的理解问题,将由相机运动控制的场景级一致性运动称为rigid flow,区别于物体运动(object motion)。所以计算rigid flow需要把相机运动算出来,通过把target像素pt映射到source 像素ps上,然后两个像素做差值计算pt-ps,这样得到rigid flow.
  方法
  3.1 迭代优化
2)MIXTUREOFLAPLACELOSS,AND(3)DIRECTREGRESSIONOFINITIALFOW. FIG2:COMPAREDWITHRAFT50,SEA-RAFTINTRODUCES(L)RIGID LNITIALPREDICTIONMIXTUREOFLAPLACELOSS )RIGID-FOWPRE-TRAINING ELARCHITECTUREANDSUPERVI TRAININGPIPELINE REFINEDPREDICTIONS 4DCOSTVOLUME RNN一 OPTICALFLOV PRE-TRAINING 工 天 RIGID-FLOW TRAINING 22222222222222222222 面和面   OFINITIALFOW. 京世 分 image.png SEA-RAFT Framework
先进行rigid flow预训练,而后进行optical flow训练。
两个解码器,特征解码器F(图中蓝色部分),I1,I2作为输入,输出F(I1), F(I2),上下文解码器C(图中橙色部分),输入I1,输出C(I1)。 然后生成多尺度的4D 关联Vk,此处详细的框架可以参考RAFT原文中的图,如下图,这个图中,画的比较清楚,SEA-RAFT用convnet替换掉了GRU部分。

  XHXIXHCORELATIONVOLUMEBYTAKINGTHEINNERPRODUCTOFALLDAIRSOF         L:RAFTCONSISTSOF3MAINCOMPOENTS:(1)AFEATUREENCODERTHATEXTRACTS ROMTHESETOFCORRELATIONVOLULMES. 4DCORELATIONVOLUMES CONTEXTENCOD FEATUREENCODER OPTICALFLOWW 000 10ITE FRAME2 image.png RAFT framework

GPOO1(F(I2),2R) V-F(L)OAV 乐X乐 DHXUX OAVGPOO1(F12),2*) R V image.png ,RAFT循环优化光流预测u。每一步都得到一个运动特征M
image.png
返回I1上每个像素点和I2上临近像素之间在半径r内的相似性。运动特征向量然后通过一个运动编码器转换。RNN但愿输入有一个隐藏状态h,运动特征,以及上下文特征。而后通过flow head得到delta u。
H-RNN(H,M,CI)) A一FLOWHEAD(H' 一 image.png
相比较来说,SEA-RAFT需要更少的迭代次数,RAFT相关的算法一般需要在训练过程中每一次需要12次迭代,推理时需要32次迭代,而sea-raft训练过程中只需要4次迭代,推理时需要12次迭代,同时结果已经相当优秀了。
  3.2 Mixture-of-Laplace Loss
先前的工作大多是用EPE(endpoint-error loss on all pixels,光流估计中标准的误差度量,是预测光流向量与真实光流向量的欧式距离在所有像素上的均值。)进行监督学习,但是光流训练数据通常包含大量模棱两可、不可预测的样本,这样的数据充满这个loss数据。作者分析数据发现,这种模棱两可的情况主导了误差。
Review of Probabilistic Regression
PS: 概率回归问题,目的是点匹配过程中只找到最佳的匹配给预测概率值,而不是一个子集。 给定两张图I1,I2,光流真值ugt,训练误差损失
一-LOGPE(U一UATL1L2) PROB image.png 无法收敛 LGT(,0)一(U,W)1 (LOG2B(U,U十 22 2B(U,0) LLAP一 HW 9 21 image.png 在对数空间进行优化,就是直接优化的值是取对数之后的值。
概率回归probablistic regression无法收敛的原因有两个:1. 回归范围太大,很小值到很大值之间。2. 损失函数来自标准的EPE,这种损失函数只关心L1误差,不关心不确定性估计。提出了两个Laplace distributions,一个是针对正常情况,一个是针对模棱两可的情况,混合稀疏是\alpha=[0,1]
MIRLAP(X;A,BI,B2,)-A 十(1一A. 2EB2 2E81 一 一队 image.png
IOG[MLIRIAP(GT(N,E)D;A(N,E),0,B2(UN,V),(,E)D) 222 UUDEFRY LMOL三 2H image.png
NCOI L   1]二 Y image.png 最后loss是这样的,其中r<1, n表示迭代的次数。

最后根据不同的配置,实验如下表所示。在实验中,使用imagenet做预训练效果会更好,同时loss的使用确实是MOL是更好的,同时把GRU换成了conv,但是可以看到计算量稍微减少了。从实验结果可以看到,替代掉GRU后,增加block数并不能提升。

SPRING|35LSUBVAL.THEEFFECTOFCHANGESCANBEIDENTIHEDTHROUGHCOMPARISONSWTH THEFRSTROW.SEESEC.4.3FORDETAILS. ABLE4:WEABLATEPRETRAININGDIRECTREGTESSION,RNNDESIGM.ANDLOSSDE IMG7TAR52]GRU#BLOCKS NAIVESINGLELAPLACE SSIONRNNDESIGN.ANDLOSSDESIGMSON MLORECONVNEXTBLOCKS SEA-RAFT(W/OTAR.) NAIVEMLIXTURE-OF-LAPLACE SEA-RAFTWTAR.) 8E-10,10 81=0,B260,10 MLIXTURE-OF-LAPLACE MIXTURE-OF-GAUSSIANO=L, MIXTUREOF-LAPLACE MLIXTURE-OF-LAPLACE MLIXTURE-OF-LAPLACE =0.B2E0.10 MIXTURE-OF-LAPLACE MIXTURE-OF-LAPLACE 8-0,62E0,10 =0.BE0.1 81,2E-10, 284.7G0.179 NAIVELAPLACE WODIRECTREG 284.7G0.194 A1=1,02=E9,B26[0.10] #MACSEPE 0.82E0.10 14.7G L284.7G0.210 RAFTGRU PRE-IRAINING 1=0,2E0,1 LOSSDESIGM EXPERIMENT 284.7G0.187 77.3G0 4.7G0. 97.9G PARAMS TABLE4:WEABLA 84.7G GAUSSIAN ROIIEHCONMPARISONSWITH 0.217 /OLMG. TYPE RNN 0.248 0.18G 0.18G 工1 NIT. 0.10 image.png


整体来看,这篇文章工作没有RAFT惊艳是肯定的,但是实现了加速这算是解决了痛点。尤其是工程上用的时候,速度很关键,可以跑一下试试。作者网站上也公开了很多基于RAFT进行SLAM和3d重建的工作,可以参考。作者之一Jia Deng是L. FeiFei的学生,可能和他们创业成立AI 3d重建公司也有关。








             

标签:loss,Simple,Accurate,flow,像素,SEA,光流,RAFT
From: https://www.cnblogs.com/jianyingzhou/p/18434319

相关文章

  • SimpleRAG-v1.0.3:增加文件对话功能
    Kimi上有一个功能,就是增加文件之后对话,比如我有如下一个私有文档:会议主题:《如何使用C#提升工作效率》参会人员:张三、李四、王五时间:2024.9.2614:00-16:00会议内容:1.自动化日常任务许多日常任务可以自动化,从而节省时间和精力。例如,如果你需要定期处理大量数据,可以使用C#编......
  • SimpleAIAgent:使用免费的glm-4-flash即可开始构建简单的AI Agent应用FI
    合集-C#(80)1.使用C#将几个Excel文件合并去重分类2023-11-152.C#使用SqlSugar操作MySQL数据库实现简单的增删改查2023-11-163.C#中的类和继承2023-11-174.C#中的virtual和override关键字2023-11-175.C#中的属性2023-11-206.C#winform中使用SQLite数据库2023-11-237.C#简化工作之......
  • SimpleAISearch:C# + DuckDuckGo 实现简单的AI搜索
    SimpleAISearch:C#+DuckDuckGo实现简单的AI搜索 合集-C#(79)  最近AI搜索很火爆,有Perplexity、秘塔AI、MindSearch、Perplexica、memfree、khoj等等。在使用大语言模型的过程中,或许你也遇到了这种局限,就是无法获取网上最新的信息,导致回答的内容不是基于最新的信......
  • 【论文阅读】RISE: 3D Perception Makes Real-World Robot Imitation Simple and Effe
    Abstract在模仿学习中,精确的机器人操作需要丰富的空间信息。基于图像的policies模型对象位置来自固定摄像头,对摄像头视图变化很敏感。利用3d点云的策略通常预测关键帧而不是连续动作,这在动态和联系人丰富的场景中造成了困难。为了有效地利用3d感知,我们提出了rise,这是一个用于......
  • SimpleAIAgent:使用免费的glm-4-flash即可开始构建简单的AI Agent应用
    SimpleAIAgent是基于C#SemanticKernel与WPF构建的一款AIAgent探索应用。主要用于使用国产大语言模型或开源大语言模型构建AIAgent应用的探索学习,希望能够帮助到感兴趣的朋友。接下来我想分享一下我的AIAgent应用实践。翻译文本并将文本存入文件第一个例子是翻译文本,并将......
  • 在WordPress中使用Simple Custom CSS and JS插件美化页面
    目录一、插件安装二、添加代码三、使用案例1、图片居中2、段落前空两格3、添加版权声明四、代码编写简述WordPress是目前使用最广泛的开源建站框架,其主要功能就是“主题”(Theme)系统,该功能可以让用户自定义主题,也可以直接选择第三方个人或公司开发的主题。不过自定......
  • Raft总结
    Raft算法State所有server都有的持久化状态先存储,然后响应RPCcurrentTerm当前任期,初始为0,单调递增votedFor当前任期投票给谁了,没有就是nulllog[]日志条目,每个条目都包含命令、Leader收到条目时的任期,第一个条目的index为1所有server都有的Volatilestate......
  • Lab3 Raft
    Lab3Raft1.GettingStarted代码位置:基础框架代码位置:src/raft/raft.go测试代码:src/raft/test_test.go建议测试时使用-race2.Thecode向raft/raft.go添加代码来实现Raft。实现必须支持以下接口//创建一个RaftServerrf:=Make(peers,me,persister,applyC......
  • [Linux]从零开始的Minecraft服务器搭建教程
    一、前言    学习Linux有一段时间了,当然,我们要把学习的知识运用到实际生活中去。最近朋友们都在玩我的世界,网易版的我的世界联机非常不稳定,用起来也算是非常难受了。所以还是准备转战JAVA版。为了联机,可以考虑一个人开一个房间,对外开放端口,不过这样太麻烦了。而且如果......
  • SimpleAISearch:C# + DuckDuckGo 实现简单的AI搜索
    最近AI搜索很火爆,有Perplexity、秘塔AI、MindSearch、Perplexica、memfree、khoj等等。在使用大语言模型的过程中,或许你也遇到了这种局限,就是无法获取网上最新的信息,导致回答的内容不是基于最新的信息,为了解决这个问题,可以通过LLM+搜索引擎的方式实现。以我之前开源的一个简单项......