最近在做video inpainting相关的工作,其中的测试指标需要利用FlowNet2进行计算。为此我花费了很长时间进行环境配置和代码调试,最后发现走了很多弯路,所以记录一下~

首先follow一些最近的video inpainting的开源代码(包括flow-based warping error的计算,下面有不清楚的地方,在这两个代码里面都能找到答案):

Free-Form-Video-Inpainting

fast_blind_video_consistency

还有flownet2的开源代码:

flownet2-pytorch

环境配置

首先明确flownet2的使用目的——仅仅只是计算流,那么只需要满足这个目的即可。

将上述计算的开源代码中的存放flownet2的文件替换成flownet2的开源代码中master分支下的内容。然后进行小小的改动,也可以直接下载修改好的代码,来自这个博客:

flownet2-cuda11


我们仅需要模型部分,也就是以下两部分:

然后简单修改相互之间的导入路径即可。


接着直接安装环境:

准备工作就结束了!


下面列出相关的一些版本号:

(不建议使用其他分支的代码,需要与之匹配的pytorch,torchvision,cuda,cudnn版本。。哪怕所有的环境都匹配上,也可能跟其他部分的代码不兼容)

损失计算

首先导入预训练好的模型:

from networks.models import FlowNet2 as FlowNetWrapper
self.flownet = FlowNetWrapper(self.args).to(device)
checkpoint = torch.load(self.flownet_checkpoint_path)
self.flownet.load_state_dict(checkpoint['state_dict'])

计算视频前后帧之间的流信息:

flows = self.flownet(input).to(device)
warped_targets = warp_optical_flow(targets[:, :-1], -flows).detach()
warped_outputs = warp_optical_flow(outputs[:, :-1], -flows).detach()
non_occlusion_masks = self._get_non_occlusion_mask(targets, warped_targets)

最后通过L2-loss计算损失:

class L2LossMaskedMean(nn.Module):def __init__(self, reduction='sum'):super().__init__()self.l2 = nn.MSELoss(reduction=reduction)def forward(self, x, y, mask):masked = 1 - maskl2_sum = self.l2(x * masked, y * masked)return l2_sum / torch.sum(masked)

使用flownet2进行flow warping error的计算相关推荐

  1. R语言计算平均值的标准误差(standard error of the mean):自定义函数计算平均值的标准误差、使用plotrix包的std.error函数计算平均值的标准误差

    R语言计算平均值的标准误差(standard error of the mean):自定义函数计算平均值的标准误差.使用plotrix包的std.error函数计算平均值的标准误差 目录

  2. R语言std.error函数计算平均值的标准误差实战

    R语言std.error函数计算平均值的标准误差实战 目录 R语言std.error函数计算平均值的标准误差实战 #手动编码标准误差计算

  3. R 计算均方差MSE(mean squared error)

    本文介绍MSE(均方差),并使用两种R方法实现. MSE(均方差) 判定预测模型的准确度的常用方法是均方差MSE( mean squared error).计算公示为: MSE = (1/n) * Σ ...

  4. 如何在多台计算机上的鼠标和键盘上使用Logitech Flow

    Logitech's newest mice and keyboards have an interesting additional feature called Flow. Flow lets y ...

  5. Forward-Backward error

    文章目录 Forward-Backward Error:Automatic Detection of Tracking Failures Forward-Backward Error:Automati ...

  6. Representation Flow for Action Recognition —— 翻译

    Representation Flow for Action Recognition -- 翻译 Abstract 摘要 1 Introduction 简介 2 Related Works 相关工作 ...

  7. vue-router路由、mixin混入、vue-resource、axios、计算属性watch、moment.js、vuex、vue-cli、数据双向绑定、搭建vue环境、vue实例、配置启动项

    路由vue-router介绍: // 1.前端路由核心:锚点值的改变,根据不同的锚点值,渲染指定dom位置的不同数据.// 2.vue中,模板数据不是通过ajax请求的,而是调用函数获取到模板内容// ...

  8. 控制测量步骤及其内业计算

    一.控制测量 (control survey) 1.目的与作用 (1)为测图或工程建设的测区建立统一的平面控制网 (horizontal control network) 和高程控制网 (vertic ...

  9. 计算流体力学(CFD)学习小记1 ANSYS Icepak入门

    前言 最近需要解决一个比较麻烦的问题:车载充电机(OBC)散热器的设计.散热器太小,MOSFET估计会炸:散热器太大,则无法满足功率密度指标的要求.与很多电力电子的工程师交流过,散热器设计估计仅次于E ...

最新文章

  1. 今日 Paper | 虚拟试穿网络;人群计数基准;联邦元学习;目标检测等
  2. Oracle Study之--PL/SQL Developer软件错误
  3. Android 观察系统中短信内容的变化(内容观察者)
  4. PendingIntent与Intent区别
  5. CA证书和TLS介绍
  6. ros机器人导航设置原点,目标点
  7. 太原科技大学计算机宿舍,太原科技大学宿舍怎么样
  8. 电源管理芯片之 Regulator 用法 与具体使用实例
  9. 新建word文档没保存能恢复吗(已有579人收藏)
  10. 【java集合】ConcurrentHashMap源码分析
  11. Thinkcmf QQ邮箱配置
  12. 加密解密-对称加密与非对称加密
  13. Educational Codeforces Round 118 (Rated for Div. 2)/C. Poisoned Dagger
  14. 计算机操作系统英文论文,计算机操作系统英文论文
  15. 工业相机CCD与CMOS
  16. 计算机证据和网络证据的关系,计算机犯罪证据有哪些特点
  17. 六大理由告诉你,为什么要用猪齿鱼工作日历
  18. Spring Boot保姆级入门,还不会过来胖我
  19. Python实现超简单【抖音】无水印视频批量下载
  20. 星起航:你抖音小店的产品入池了吗

热门文章

  1. CAP原理与传统的ACID
  2. c语言谢旻吕俊张军强答案,吕俊|
  3. Refactor this method to reduce its Cognitive Complexity from 65 to the 15 allowed. [+22 locations]
  4. 微信小程序 报错errcode: 40029, errmsg: “invalid code
  5. MS08-067远程代码执行漏洞(CVE-2008-4250) | Windows Server服务RPC请求缓冲区溢出漏洞复现
  6. IBM PC机是一台什么计算机,PC机是什么类型的计算机
  7. zookeeper集群伪分布式安装测试-windows
  8. 特征提取 - 海森矩阵(Hessian Matrix)及一个用例(图像增强)
  9. oracle索引查询
  10. 天翼云linux版本,天翼云Linux主机操作