当前位置: 首页 > news >正文

北京的建设网站公司如何去除wordpress首页功能

北京的建设网站公司,如何去除wordpress首页功能,亚马逊品牌网站要怎么做,网站域名更改点目标跟踪论文—RAFT: Recurrent All-Pairs Field Transforms for Optical Flow-递归的全对场光流变换 读论文RAFT密集光流跟踪的笔记 RAFT是一种新的光流深度网络结构#xff0c;由于需要基于点去做目标的跟踪#xff0c;因此也是阅读了像素级别跟踪的一篇ECCV 2020的经典…点目标跟踪论文—RAFT: Recurrent All-Pairs Field Transforms for Optical Flow-递归的全对场光流变换 读论文RAFT密集光流跟踪的笔记 RAFT是一种新的光流深度网络结构由于需要基于点去做目标的跟踪因此也是阅读了像素级别跟踪的一篇ECCV 2020的经典论文 ——RAFT,递归的全对场光流变换,使用密集的光流来对小而快速的物体进行跟踪。 作者Zachary Teed and Jia Deng发表ECCV 2020 best paper 论文的难点与核心点 不像之前的coarse-to-fine类的方法RAFT在计算时始终保持同一分辨率而coarse-to-fine则是对多尺度预测逐步细化的方式update operator是轻量的和循环的而其他的算法则只能是循环几次无法长时间循环。一个新的update operator由卷积GRU组成可look up 生成的4D相关信息。 是论文的难点也是自己理解不太好的地方。 背景信息 密集光流估计为每个像素分配一个二维光流向量描述其在时间间隔内的水平和垂直位移。在稀疏光流中该向量只分配给与边角等强特征相对应的像素。 水平梯度 Iₓ 和垂直梯度 Iᵧ 可用索贝尔算子近似时间梯度 Iₜ 已知因为我们有 t 和 t1 时间的图像。方程有两个未知数 u 和 v分别是时间 dt 上的水平位移和垂直位移。单个方程中的两个未知数使其成为一个未决问题人们曾多次尝试求解 u 和 v。RAFT 是一种估算 u 和 v 的深度学习方法但它实际上比根据两个框架预测流量更复杂。它是为精确估计光流场而精心设计的。 取得的成果 在KITTI上RAFT取得了5.10%的F1-all误差比已公布的最佳结果 (6.10%)降低了16%。在Sintelfinal pass上RAFT获得了2.855 EPE误差比已发布的最佳结果4.098像素减少了30%的误差。此外RAFT具有很强的跨数据集泛化能力以及在推理时间、训练速度和参数量方面具有很高效率。 a new end-to-end trainable model for optical flow 摘要与整体概括 摘要 摘要的核心总结 RAFT 逐像素提取特征为所有像素对构建多尺度4D相关体并通过循环单元在相关体上进行查找以迭代更新光流场。 是一种新的光流深度网络架构。 在学习完成论文之后总结来说其中的两个关键的词包含了光流跟踪最重要的两个过程信息。 correlation: 是我们计算像素之间的全相关性和进行保持高分辨率不变的基础上进行多尺度金字塔构建的一个核心。 lookup是作者们为了简化一定的计算和损失所提出的一种在coor上寻找特征点的一种方法。难理解要结合看代码。 整体概括 给定一对连续的RGB图像作为输入估计稠密位移场dense displacement field位移场将中的每个像素映射到中的对应坐标。算法框架如下图所示 我们讲述这篇论文从整体到细节首先要明确的是学习的重点是整篇论文实现的一个思想。我们给出总结的整体的步骤和框架结合整体的结构不断的细化。论文中给出了我们一定的总结。 REFT主要包括以下的三个部分组成。 特征提取编码器与内容提取编码器。一个相关层得出4d的一个相关体。一个用来更新的操作符从相关体中更新光流的信息。 我们对这个过程进行总结在详细的进行描述。 先是一个网络 Net1特征提取编码器提取两张输入 I1,I2的特征还有另一个网络 Net2(内容提取编码器) 再提取一次 I1 的特征然后通过一个correlation layer接收 Net1的输出并建立两张图片的相似度向量矩阵。最后作者使用了自然语言处理中GRU的思想把相似度向量每一次迭代预测出的光流以及 Net2的输出三者作为输入去迭代着更新光流。 RAFT由三部分组成 (1)一个feature encoder提取两张输入图片 I1,I2在每个像素点上的特征。这里我们假设 I1,I2的尺寸是 H×W 那么经过feature encoder之后得到的特征维度就是 H×W×D 此外还有一个 context encoder提取 I1的特征也就是图片的左下角。 (2)一个 correlation layer负责把 I1,I2 的特征向量通过点乘的方式连接起来那么最终输出的是一个 H×W×H×W的4d向量此向量表示 I1每一个像素点与所有 I2像素点的相关度。然后作者也考虑到这样的表示可能比较稀疏因此在这个输出之后做了四层的池化并将每一层池化的输出连接起来做成了一个具有多尺度特征的相似性变量。 (3)一个update operator通过使用一个look up方法查看 4D Correlation Voulumes的值迭代着去更新光流。当然第三点需要下面的详细介绍。 The feature encoder extracts per-pixel features. The correlation layer computes visual similarity between pixels. The update operator mimics the steps of an iterative optimization algorithm. 因为我们已经进行了整体的概括了有了一定的印象我们按照论文的结构展开 Approach 方法部分是官方的一个整体的介绍。 给一组连续的RGB图像 I1 I2 we estimate a dense displacement field (f1, f2)去估计一个密集的位移场 f1,f2.每一个光流u,v要map I2.同时总结了三个核心的部分 特征提取相似度计算迭代更新 ( u ′ , v ′ ) ( u f 1 ( u ) , v f 2 ( v ) ) \left(u^{\prime}, v^{\prime}\right)\left(uf^{1}(u), vf^{2}(v)\right) (u′,v′)(uf1(u),vf2(v)) 分辨率描述 在建立完成相关量之后也就是完成8倍的下采样操作通过backebone网络提取出来特征图之后。作者给出了一副描述图 对于I1中的特征向量我们取其与I2中所有对的内积生成一个4D W×H×W×H体 (I2中的每个像素生成一个2D 响应图)。使用卷积核大小为1、2、4、8的平均池化对相关体池化。 这组相关性张量同时包含了大位移和小位移的信息但是也保持前两个维度(维度)因此保存了高分辨率的信息从而可以恢复小的快速移动物体的运动。 这里自己直观的解读一下的话其实就是每一个点我们代表的是一个像素的分辨率我们只对最后的两个维度进行下采样的操作。导致每幅图的最后的两个维度发生变换内部的每一组包含的像素点发生变换但我们外部的尺寸保持不变使得内部像素点的分辨率其实也是保持不变的会一直维持在8倍的分辨率上。 保持高分辨率从而就克服了coarse-to-fine类的方法—有粗到细使用不同的分辨率进行采样。 Feature Extraction 核心总结 使用卷积网络进行特征的提取最终通过2倍4倍完成8倍的下采样操作 D256由6个残差块组成。整个特征提取只进行一次。唯一的区别是特征编码器使用实例标准化而上下文编码器使用批量标准化。 backbone主干网络细节 相比于其他的复杂的神经网络来说这里的backbone部分相对比较简单很大的程度上参考了RestNet50这种结构。 layer层使用的和YOLO中常用的botteneck模块类似这里我们称为残差块在代码中每两个残差块为一组。1不进行下采样 2 3在第一个卷积的部分进行下采样的操作。下采样连接 对于两幅图 I1和 I2都需要提取特征该网络称之为 Feature Encoder Computing Visual Similarity Computing Visual Similarity计算视觉相似度 通过在所有输入图像对之间构造一个correlation volume(下称为相关性张量)来计算视觉相似性 -印象中代码里面最终对应的是coor 给定抽取得到图像特征 通过对所有的特征向量对进行点积得到 相关性张量。记相关性张量为 C g θ ( I 1 ) ∈ R H × W × D and  g θ ( I 2 ) ∈ R H × W × D g_{\theta}\left(I_{1}\right) \in \mathbb{R}^{H \times W \times D} \text { and } g_{\theta}\left(I_{2}\right) \in \mathbb{R}^{H \times W \times D} gθ​(I1​)∈RH×W×D and gθ​(I2​)∈RH×W×D C ( g θ ( I 1 ) , g θ ( I 2 ) ) ∈ R H × W × H × W , C i j k l ∑ h g θ ( I 1 ) i j h ⋅ g θ ( I 2 ) k l h \mathbf{C}\left(g_{\theta}\left(I_{1}\right), g_{\theta}\left(I_{2}\right)\right) \in \mathbb{R}^{H \times W \times H \times W}, \quad C_{i j k l}\sum_{h} g_{\theta}\left(I_{1}\right)_{i j h} \cdot g_{\theta}\left(I_{2}\right)_{k l h} C(gθ​(I1​),gθ​(I2​))∈RH×W×H×W,Cijkl​h∑​gθ​(I1​)ijh​⋅gθ​(I2​)klh​ Correlation Layer模块 这里我们得到了 I1对 I2上的多尺度4D Correlation Voulumes. 我们这个模块单独的分离出来方便进行简单的说明。 我们从最终的一个公式中其实也是可以看出来的4d向量空间最终融合的是通道数h嘛。 如果我们不看下面的代码来看这一个过程信息。 staticmethoddef corr(fmap1, fmap2):batch, dim, ht, wd fmap1.shapefmap1 fmap1.view(batch, dim, ht*wd) # 展平一个维度fmap2 fmap2.view(batch, dim, ht*wd) corr torch.matmul(fmap1.transpose(1,2), fmap2) #转置相乘corr corr.view(batch, ht, wd, 1, ht, wd)return corr / torch.sqrt(torch.tensor(dim).float()) # coor 互相关运算得到的矩阵代码是将h和w展平之后来进行操作的。—转置相乘。最后在进行展开合并维度相关的信息。 我们如果按照3通道图片自己来想这一个过程的话其实就是三个通道的图像相同位置的像素同时做一个点积的操作。在依次的相加得到一个值 我们每一个像素值要做i2的大小 H x W然后i1中有 H x W个像素需要做相关性运算从而就是这个结果了。 从这两个图也可以看出下面会有一个保持分辨率的情况下进行构建金字塔的过程。 Correlation pyramid模块 我们得到 H×W 的向量之后作者觉得这样比较稀疏因为 I1不可能与 I2所有的像素点相关所以作者又将这个向量进行了四层池化。 这样一个相关信息张量C​是非常大的, 因此在C的最后两个维度上进行汇合来降低维度大小每个​的维度为保持前两个维度不变, 这种相关信息张量可以保证同时捕捉到较大和较小的像素位移。 这组相关性张量同时包含了大位移和小位移的信息但是也保持前两个维度(维度)因此保存了高分辨率的信息从而可以恢复小的快速移动物体的运动。 这个叠加在代码中是放在一个out_pyramid []变量中来进行返回实现的。 self.corr_pyramid.append(corr) # 后两个维度下采样构建金字塔self.corr_pyramid.append(corr) # 后两个维度下采样构建金字塔for i in range(self.num_levels-1):corr F.avg_pool2d(corr, 2, stride2) # 2倍平均池化self.corr_pyramid.append(corr)Look up模块 Look up的部分个人感觉是最难理解的一个部分原因在于它描述的过程比较抽象。具体的更多细节的实现还是参考代码中的具体过程。 We define a lookup operator LC which generates a feature map by indexing from the correlation pyramid.—我们定义了一个查找算子 LC它通过从相关金字塔进行索引来生成特征图。 上一步构建了四层的Correlation Pyramid这里要根据像素去查找这个Correlation Pyramid中的对应特征。如果对I1中的每个点的向量都要去I2中所有向量找对应点的话需要的cost太大了所以论文中设置了一个lookup的参数即只对该位置附近位置的点做判断 N ( x ′ ) r { x ′ d x ∣ d x ∈ Z 2 , ∥ d x ∥ 1 ≤ r } \mathcal{N}\left(\mathbf{x}^{\prime}\right)_{r}\left\{\mathbf{x}^{\prime}\mathbf{d x} \mid \mathbf{d x} \in \mathbb{Z}^{2},\|\mathbf{d x}\|_{1} \leq r\right\} N(x′)r​{x′dx∣dx∈Z2,∥dx∥1​≤r} r超参数是超参数有点类似于圆的半径dx是整数通过这个公式把x’附近的值拿到同时这个操作会在每一层的金字塔上取值最后将这些得到的值串联成一个向量。这个向量也就是Lookup的输出。总结一下就是光流建立了I的像素点到I2像素点的映射然后使用对应的I2点的坐标在对应的相似性向量的金字塔上采样得到一个输出向量。那么大胆猜测一下对于快速移动的物体r设置的偏大一些效果应该更好对于移动较慢的无题r设置的应该偏小一些。 我自己在粗略的看代码的时候也是感觉这个Look up模型更像是一个采样的模块。是在相似性向量的金字塔通过这种邻近范围的方式查找符合计算条件的点输入后面GRU模块进行计算应该也是因为维度过高导致计算量过大的原因吧。 代码中是通过grid_sample函数之间完成这一个过程的。这个r类似半径但实际上是一个线性的间隔值 bilinear_sampler F.grid_samplefor i in range(self.num_levels):corr self.corr_pyramid[i]dx torch.linspace(-r, r, 2*r1, devicecoords.device) # (2r1) x方向的相对位置查找范围 -r,-r1,...,r 从-r到r的线性间隔的值并且包括端点。2*r1是生成这些值的数量dy torch.linspace(-r, r, 2*r1, devicecoords.device) # # (2r1) y方向的相对位置查找范围delta torch.stack(torch.meshgrid(dy, dx), axis-1) # 查找窗 (2r1,2r1,2) 一维张量dy和dx的笛卡尔积torch.meshgrid返回的两个二维张量堆叠起来形成一个三维张量。axis-1参数指定了堆叠的轴这里是最后一个轴(dy_i, dx_i)对表示二维空间中的一个位移向量centroid_lvl coords.reshape(batch*h1*w1, 1, 1, 2) / 2**i # 某尺度下的坐标delta_lvl delta.view(1, 2*r1, 2*r1, 2)coords_lvl centroid_lvl delta_lvl # 可以形象理解为对于 bhw 这么多待查找的点每一个点需要搜索 (2r1)*(2r1) 邻域范围内的其他点每个点包含 x 和 y 两个坐标值corr bilinear_sampler(corr, coords_lvl) # 在查找表上搜索每个点的邻域特征获得相关性图corr corr.view(batch, h1, w1, -1)out_pyramid.append(corr)out torch.cat(out_pyramid, dim-1)return out.permute(0, 3, 1, 2).contiguous().float()这里我们返回的corr变量其实也就是经过采样之后的一个变量值。作为下一部分的一个输出。 corr corr_fn(coords1) # 核心index correlation volume 从相关性查找表中获取当前坐标的对应特征Efficient Computation for High Resolution Images可选 具体的公式含义细节我自己也不太明白不做过多的解读了。 原因在于这一个部分对应代码中的CUDA变成部分对应C模块是以是一个在训练中可以选择的计算方式自己不太会CUDA的这一个部分 我自己读论文的话其实他的思想就是将下采样的操作融合进相关性的计算里面以减少参数量来实现简化计算。从O(n2)到Omn C i j k l m 1 2 2 m ∑ p 2 m ∑ q 2 m ⟨ g i , j ( 1 ) , g 2 m k p , 2 m l q ( 2 ) ⟩ ⟨ g i , j ( 1 ) , 1 2 2 m ( ∑ p 2 m ∑ q 2 m g 2 m k p , 2 m l q ( 2 ) ) ⟩ \mathbf{C}_{i j k l}^{m}\frac{1}{2^{2 m}} \sum_{p}^{2^{m}} \sum_{q}^{2^{m}}\left\langle g_{i, j}^{(1)}, g_{2^{m} kp, 2^{m} lq}^{(2)}\right\rangle\left\langle g_{i, j}^{(1)}, \frac{1}{2^{2 m}}\left(\sum_{p}^{2^{m}} \sum_{q}^{2^{m}} g_{2^{m} kp, 2^{m} lq}^{(2)}\right)\right\rangle Cijklm​22m1​p∑2m​q∑2m​⟨gi,j(1)​,g2mkp,2mlq(2)​⟩⟨gi,j(1)​,22m1​(p∑2m​q∑2m​g2mkp,2mlq(2)​)⟩ Iterative Updates Our update operator estimates a sequence of flow estimates {f1, …, fN} from an initial starting point f0 0 看出初始化的光流为0 # 初始化光流的坐标信息coords0 为初始时刻的坐标coords1 为当前迭代的坐标此处两坐标数值相等coords0, coords1 self.initialize_flow(image1)flow coords1 - coords0 # 初始值为0输入当前光流以及从金字塔中提取的对应的相关特征context。所以输入是相关特征光流以及上下文特征。 with autocast(enabledself.args.mixed_precision):net, up_mask, delta_flow self.update_block(net, inp, corr, flow)# F(t1) F(t) \Delta(t)coords1 coords1 delta_flow带有卷积的GRU模块update block模块 更新算子的核心组件是一个基于GRU的gated activation unit其中的全连接层使用卷积替换 其中 x t 是前面定义的光流、相关特征、context特征的拼接。论文还实验了一个可分离的ConvGRU单元其中用两个GRU替换3×3卷积: 一个用1×5卷积一个用5×1卷积以便在不显著增加模型大小的情况下增加感受野。 整体结果的一个定义。 self.args argsself.encoder BasicMotionEncoder(args)self.gru SepConvGRU(hidden_dimhidden_dim, input_dim128hidden_dim)self.flow_head FlowHead(hidden_dim, hidden_dim256)对应更为细节的具体描述需要断点调试前向传播的部分在文章中就不过多的进行展开说明了。 def __init__(self, hidden_dim128, input_dim192128):super(SepConvGRU, self).__init__()self.convz1 nn.Conv2d(hidden_diminput_dim, hidden_dim, (1,5), padding(0,2))self.convr1 nn.Conv2d(hidden_diminput_dim, hidden_dim, (1,5), padding(0,2))self.convq1 nn.Conv2d(hidden_diminput_dim, hidden_dim, (1,5), padding(0,2))self.convz2 nn.Conv2d(hidden_diminput_dim, hidden_dim, (5,1), padding(2,0))self.convr2 nn.Conv2d(hidden_diminput_dim, hidden_dim, (5,1), padding(2,0))self.convq2 nn.Conv2d(hidden_diminput_dim, hidden_dim, (5,1), padding(2,0))def forward(self, h, x):# horizontalhx torch.cat([h, x], dim1)z torch.sigmoid(self.convz1(hx))r torch.sigmoid(self.convr1(hx))q torch.tanh(self.convq1(torch.cat([r*h, x], dim1))) h (1-z) * h z * q其中的全连接层使用卷积替换 光流预测 self.flow_head FlowHead(hidden_dim, hidden_dim256) 光流头通过两个全连接层进行输出。 将GRU输出的隐藏状态经过两个卷积层来预测光流的更新 Δf 。输出的光流的分辨率是输入图像的1/8。 ​ 在训练和评估过程中对预测的光流场进行上采样以匹配ground-truth的分辨率。 class FlowHead(nn.Module):def __init__(self, input_dim128, hidden_dim256):super(FlowHead, self).__init__()self.conv1 nn.Conv2d(input_dim, hidden_dim, 3, padding1)self.conv2 nn.Conv2d(hidden_dim, 2, 3, padding1)self.relu nn.ReLU(inplaceTrue)def forward(self, x):return self.conv2(self.relu(self.conv1(x)))上采样 RAFT 的作者对双线性和凸上采样进行了实验发现凸上采样可以显着提高性能。 凸上采样将每个精细像素估计为其相邻 3x3 粗像素网格的凸组合 L ∑ i 1 N γ N − i ∥ f g t − f i ∥ 1 \mathcal{L}\sum_{i1}^{N} \gamma^{N-i}\left\|\mathbf{f}_{g t}-\mathbf{f}_{i}\right\|_{1} Li1∑N​γN−i∥fgt​−fi​∥1​
http://www.hkea.cn/news/14291228/

相关文章:

  • 简单网站模板下载长葛哪里有做网站的
  • 西安企业网站建设代理机构肇庆制作网络公司
  • 郑州旅游网站制作wordpress404页面更爱
  • 关于网站建设的电话销售话术公司邮箱名称
  • 响应式网站内容布局装修包工头接活网站
  • 帮客户做网站平台犯法吗网站关键词提高
  • seo站点新型建站技术
  • 搜讯网站开发网站开发费是无形资产吗
  • 培训机构网站本地环境如何安装wordpress
  • 动漫网站开发研究内容seo需要掌握哪些技术
  • 长春有微信网站一起整的吗阿里云网站核验单
  • 云南省住房和城乡建设局网站做衬衫的作业网站
  • 律师事务所手机网站做公司网站服务器
  • access做调查表网站泰安百度推广代理商
  • 医院网站运营方案欧美网站建设教程
  • 先做网站 先备案公司的网络拓扑图
  • 西维科技做网站怎么样网站域名解析设置
  • 中国空间站简介100字汕头网站快速排名
  • 计算机系部网站开发背景电商网站建设用php
  • 做电商在什么网站seo技术论坛
  • 国外炫酷网站欣赏网站加强队伍建设
  • python+网站开发实例教程外贸公司取什么名字好
  • 网站开发需求目标椒江住房和城乡建设规划局网站
  • 公司网站策划书佛山网站建设公司-印象互动
  • 网站内容建设总结网站建设分析报告
  • 手机怎样做网站图解网上商城建设公司
  • 通过域名打开网站是做映射么海外网站推广
  • 中天建设中瑞物资网站wordpress 极简 h5
  • 有网站吗免费的安全的集团网站建设
  • 怎么用iapp做网站软件镇江网站建站