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

做肮脏交义的网站wordpress add action

做肮脏交义的网站,wordpress add action,网站搭建平台源码,深圳福田香格里拉酒店引言#xff1a;2021年用Transformer实现视频超分VSR的文章#xff0c;改进了SA并在FFN中加入了光流引导 论文#xff1a;【here】 代码#xff1a;【here】 Video Super-Resolution Transformer 引言 视频超分中有一组待超分的图片#xff0c;因此视频超分也经常被看做…引言2021年用Transformer实现视频超分VSR的文章改进了SA并在FFN中加入了光流引导 论文【here】 代码【here】 Video Super-Resolution Transformer 引言 视频超分中有一组待超分的图片因此视频超分也经常被看做是一个序列问题。这种序列问题的解决方法通常有RNNSLTM和transformer。由于transformer并不需要递归也更适合并备受关注 注意力机制 目前用transformer处理图片的思路是全连接注意力机制the fully connected self-attention(FCSA) 这里的这个FCSA的概念是作者提出来的作者举例VIT和PIT都是FCSA因此我把它当做对整个图像的分成的块做自注意力 然而作者认为这样的FCSA的机制并不能很好的提取空间局部信息但是局部信息对于VSR来说又是很关键的。 此外除了空间局部信息时域信息也是很重要的视频中的图片中的信息可以通过相邻的图片进行补充。现在该如何用transformer来处理时域信息也是没有被探索过的这个领域还没有人做 前馈网络 现有的前馈网络token-wise feed-forward layer不能实现图像之间的对齐这里强调token即是指全连接都是在每一个token中实现的token和token之间没有关联。token 之间的特征关联在FCSA模块中实现的但是在FFN中没有特征传播。因此在这个模块中作者实现了以像元为单位而不是token实现了特征传播和特征对齐 问题定义 第一个定义是映射函数的loss 第二个定义是神经元组成/参数传播的定义,同时这个连接了不同神经元的映射与真实映射之间的loss应该小于一个epsilon 第三个定义为视频超分的定义和目标 第四个定义为transformer的架构 这一块有点枯燥主要是作者的第二个定义神经元的参数传播为后面的公式推导奠定基础 视频超分 Transformer 作者介绍了这样一个公式来证明FCSA不太适合视频超分tranformer公式没有看懂我这里就跳过了 总之作者通过这个公式论证了全连接注意力机制FCSA会导致梯度消失的问题 When q is not sufficiently large, the fully connected attention layer may result in the gradient vanishing issue. It implies that the gradient descent will be “stuck” upon the initialization, and thus will fail to learn the k-pattern function. Therefore, the fully connected self-attention layer cannot use the spatial information of each frame since the local information is not encoded in the embeddings of all tokens. Moreover, this issue may become more serious when directly using such layers in video super-resolution. 而如果用作者提出的则时空卷积自注意力机制STCSA很好的解决了这个问题 STCSA的实现 即将图片划成8 * 8 * 5的小块(这里的5是指连续的图片数)在8 * 8 * 5的3D块中实现块中的像元单位的特征自注意力 同时作者还加入了一个3D位置编码信息编码规则如下 代码作者非常贴心的加上了尺寸的注释 class globalAttention(nn.Module):def __init__(self, num_feat64, patch_size8, heads1):super(globalAttention, self).__init__()self.heads headsself.dim patch_size ** 2 * num_featself.hidden_dim self.dim // headsself.num_patch (64 // patch_size) ** 2self.to_q nn.Conv2d(in_channelsnum_feat, out_channelsnum_feat, kernel_size3, padding1, groupsnum_feat) self.to_k nn.Conv2d(in_channelsnum_feat, out_channelsnum_feat, kernel_size3, padding1, groupsnum_feat)self.to_v nn.Conv2d(in_channelsnum_feat, out_channelsnum_feat, kernel_size3, padding1)self.conv nn.Conv2d(in_channelsnum_feat, out_channelsnum_feat, kernel_size3, padding1)self.feat2patch torch.nn.Unfold(kernel_sizepatch_size, padding0, stridepatch_size)self.patch2feat torch.nn.Fold(output_size(64, 64), kernel_sizepatch_size, padding0, stridepatch_size)def forward(self, x):b, t, c, h, w x.shape # B, 5, 64, 64, 64H, D self.heads, self.dimn, d self.num_patch, self.hidden_dimq self.to_q(x.view(-1, c, h, w)) # [B*5, 64, 64, 64] k self.to_k(x.view(-1, c, h, w)) # [B*5, 64, 64, 64] v self.to_v(x.view(-1, c, h, w)) # [B*5, 64, 64, 64]unfold_q self.feat2patch(q) # [B*5, 8*8*64, 8*8]unfold_k self.feat2patch(k) # [B*5, 8*8*64, 8*8] unfold_v self.feat2patch(v) # [B*5, 8*8*64, 8*8] unfold_q unfold_q.view(b, t, H, d, n) # [B, 5, H, 8*8*64/H, 8*8]unfold_k unfold_k.view(b, t, H, d, n) # [B, 5, H, 8*8*64/H, 8*8]unfold_v unfold_v.view(b, t, H, d, n) # [B, 5, H, 8*8*64/H, 8*8]unfold_q unfold_q.permute(0,2,3,1,4).contiguous() # [B, H, 8*8*64/H, 5, 8*8]unfold_k unfold_k.permute(0,2,3,1,4).contiguous() # [B, H, 8*8*64/H, 5, 8*8]unfold_v unfold_v.permute(0,2,3,1,4).contiguous() # [B, H, 8*8*64/H, 5, 8*8]unfold_q unfold_q.view(b, H, d, t*n) # [B, H, 8*8*64/H, 5*8*8]unfold_k unfold_k.view(b, H, d, t*n) # [B, H, 8*8*64/H, 5*8*8]unfold_v unfold_v.view(b, H, d, t*n) # [B, H, 8*8*64/H, 5*8*8]attn torch.matmul(unfold_q.transpose(2,3), unfold_k) # [B, H, 5*8*8, 5*8*8]attn attn * (d ** (-0.5)) # [B, H, 5*8*8, 5*8*8]attn F.softmax(attn, dim-1) # [B, H, 5*8*8, 5*8*8]attn_x torch.matmul(attn, unfold_v.transpose(2,3)) # [B, H, 5*8*8, 8*8*64/H]attn_x attn_x.view(b, H, t, n, d) # [B, H, 5, 8*8, 8*8*64/H]attn_x attn_x.permute(0, 2, 1, 4, 3).contiguous() # [B, 5, H, 8*8*64/H, 8*8]attn_x attn_x.view(b*t, D, n) # [B*5, 8*8*64, 8*8]feat self.patch2feat(attn_x) # [B*5, 64, 64, 64]out self.conv(feat).view(x.shape) # [B, 5, 64, 64, 64]out x # [B, 5, 64, 64, 64]return out这样就完全考虑8 * 8感受野内的局部特征了但是块与块之间的边缘只能朝一个方向进行特征传播 于是作者提出了一种新型的FFN feed-forward Network实现 作者首先将5张图片中的相邻光流求出来如果边缘图像的另一边没有图了则跟自己作光流 这样可以得到5 * 2张光流图这里的5指视频图片数每张图片都有它的前向流图和后向流图然后前向warp和后向warp后原有的每张图的时间位置上都可以多加两张图分别来自前一时刻图片前向warp得到和后一时刻的图片后向warp得到 然后通过两组图片的融合即生成了最终结果 值得一提的是这里的FFN和传统FFN不同由于前面的SA部分保留的图片的原有尺寸这里的FFN直接用3*3卷积实现 class FeedForward(nn.Module):def __init__(self, num_feat):super().__init__()self.backward_resblocks ResidualBlocksWithInputConv(num_feat3, num_feat, num_blocks30)self.forward_resblocks ResidualBlocksWithInputConv(num_feat3, num_feat, num_blocks30)self.fusion nn.Conv2d(num_feat*2, num_feat, 1, 1, 0, biasTrue)self.lrelu nn.LeakyReLU(negative_slope0.1, inplaceTrue)def forward(self, x, lrsNone, flowsNone):b, t, c, h, w x.shapex1 torch.cat([x[:, 1:, :, :, :], x[:, -1, :, :, :].unsqueeze(1)], dim1) # [B, 5, 64, 64, 64]flow1 flows[1].contiguous().view(-1, 2, h, w).permute(0, 2, 3, 1) # [B*5, 64, 64, 2]x1 flow_warp(x1.view(-1, c, h, w), flow1) # [B*5, 64, 64, 64]x1 torch.cat([lrs.view(b*t, -1, h, w), x1], dim1) # [B*5, 67, 64, 64]x1 self.backward_resblocks(x1) # [B*5, 64, 64, 64]x2 torch.cat([x[:, 0, :, :, :].unsqueeze(1), x[:, :-1, :, :, :]], dim1) # [B, 5, 64, 64, 64]flow2 flows[0].contiguous().view(-1, 2, h, w).permute(0, 2, 3, 1) # [B*5, 64, 64, 2]x2 flow_warp(x2.view(-1, c, h, w), flow2) # [B*5, 64, 64, 64]x2 torch.cat([lrs.view(b*t, -1, h, w), x2], dim1) # [B*5, 67, 64, 64]x2 self.forward_resblocks(x2) # [B*5, 64, 64, 64]# fusion the backward and forward featuresout torch.cat([x1, x2], dim1) # [B*5, 128, 64, 64]out self.lrelu(self.fusion(out)) # [B*5, 64, 64, 64]out out.view(x.shape) # [B, 5, 64, 64, 64] return out实验 在别的文章里有看到块与块之间会出现伪影然而文章的结果挺完美的 总结 用transformer解决VSR的问题虽然在空间小范围内进行attention是可行的也不会造成太大的计算量但是总觉得对于transformer的优势没有发挥出来大的感受野和全局信息的利用才是transformer的优势所在
http://www.w-s-a.com/news/306943/

相关文章:

  • 济南seo网站推广搜索广告推广
  • 有关于网站建设的参考文献宁波seo网络推广公司
  • 网站设配色个人主页介绍文案
  • 网站seo相关设置优化网站建设的好处
  • 上海市建设工程安全生产协会网站郴州网站设计公司
  • 网站大型网页游戏自己搭建服务器做视频网站
  • 建立网站企业wordpress用户名密码破解
  • 网站管理助手建站教程国外网站做acm题目比较好
  • 网站开发框架排行专业网页制作服务商
  • 企业网站建设入账政务网站建设信息
  • 网络平台建设是什么江门排名优化怎么做
  • 响应式旅游网站模板下载网址做
  • 个人做网站名称可以随意更改吗惠州网站推广排名
  • 自己建设一个网站步骤网站认证怎么认证
  • 深圳建站公司开发费用沧州手机建站哪家好
  • 兰州网站设计公司排名百度怎么发布短视频
  • 大连模板开发建站泰州网站建设策划方案
  • 厦门好的网站设计局域网内建网站
  • 关键词那种网站正版网页游戏平台排行榜
  • 网站自助建设平台创建网址快捷方式
  • 坑梓网站建设包括哪些成都网站建设优创
  • 重庆网站seo公司哪家好超级优化大师
  • 成都网站建设推广详情邵阳市住房和城乡建设局网站
  • 淄博网站推广猎头公司有哪些
  • 局域网内建立网站90设计网怎么样
  • 域名备案和网站备案有什么不同工程项目建设网站
  • 做网站难吗?wordpress评论qq
  • 权威网站优化价格电子商务静态网站建设实验报告
  • 公司如何办网站北京网站建设公司内江
  • 六安建设网站企业营业执照查询系统入口