使用flownet2进行flow warping error的计算
最近在做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的计算相关推荐
- R语言计算平均值的标准误差(standard error of the mean):自定义函数计算平均值的标准误差、使用plotrix包的std.error函数计算平均值的标准误差
R语言计算平均值的标准误差(standard error of the mean):自定义函数计算平均值的标准误差.使用plotrix包的std.error函数计算平均值的标准误差 目录
- R语言std.error函数计算平均值的标准误差实战
R语言std.error函数计算平均值的标准误差实战 目录 R语言std.error函数计算平均值的标准误差实战 #手动编码标准误差计算
- R 计算均方差MSE(mean squared error)
本文介绍MSE(均方差),并使用两种R方法实现. MSE(均方差) 判定预测模型的准确度的常用方法是均方差MSE( mean squared error).计算公示为: MSE = (1/n) * Σ ...
- 如何在多台计算机上的鼠标和键盘上使用Logitech Flow
Logitech's newest mice and keyboards have an interesting additional feature called Flow. Flow lets y ...
- Forward-Backward error
文章目录 Forward-Backward Error:Automatic Detection of Tracking Failures Forward-Backward Error:Automati ...
- Representation Flow for Action Recognition —— 翻译
Representation Flow for Action Recognition -- 翻译 Abstract 摘要 1 Introduction 简介 2 Related Works 相关工作 ...
- vue-router路由、mixin混入、vue-resource、axios、计算属性watch、moment.js、vuex、vue-cli、数据双向绑定、搭建vue环境、vue实例、配置启动项
路由vue-router介绍: // 1.前端路由核心:锚点值的改变,根据不同的锚点值,渲染指定dom位置的不同数据.// 2.vue中,模板数据不是通过ajax请求的,而是调用函数获取到模板内容// ...
- 控制测量步骤及其内业计算
一.控制测量 (control survey) 1.目的与作用 (1)为测图或工程建设的测区建立统一的平面控制网 (horizontal control network) 和高程控制网 (vertic ...
- 计算流体力学(CFD)学习小记1 ANSYS Icepak入门
前言 最近需要解决一个比较麻烦的问题:车载充电机(OBC)散热器的设计.散热器太小,MOSFET估计会炸:散热器太大,则无法满足功率密度指标的要求.与很多电力电子的工程师交流过,散热器设计估计仅次于E ...
最新文章
- 今日 Paper | 虚拟试穿网络;人群计数基准;联邦元学习;目标检测等
- Oracle Study之--PL/SQL Developer软件错误
- Android 观察系统中短信内容的变化(内容观察者)
- PendingIntent与Intent区别
- CA证书和TLS介绍
- ros机器人导航设置原点,目标点
- 太原科技大学计算机宿舍,太原科技大学宿舍怎么样
- 电源管理芯片之 Regulator 用法 与具体使用实例
- 新建word文档没保存能恢复吗(已有579人收藏)
- 【java集合】ConcurrentHashMap源码分析
- Thinkcmf QQ邮箱配置
- 加密解密-对称加密与非对称加密
- Educational Codeforces Round 118 (Rated for Div. 2)/C. Poisoned Dagger
- 计算机操作系统英文论文,计算机操作系统英文论文
- 工业相机CCD与CMOS
- 计算机证据和网络证据的关系,计算机犯罪证据有哪些特点
- 六大理由告诉你,为什么要用猪齿鱼工作日历
- Spring Boot保姆级入门,还不会过来胖我
- Python实现超简单【抖音】无水印视频批量下载
- 星起航:你抖音小店的产品入池了吗
热门文章
- CAP原理与传统的ACID
- c语言谢旻吕俊张军强答案,吕俊|
- Refactor this method to reduce its Cognitive Complexity from 65 to the 15 allowed. [+22 locations]
- 微信小程序 报错errcode: 40029, errmsg: “invalid code
- MS08-067远程代码执行漏洞(CVE-2008-4250) | Windows Server服务RPC请求缓冲区溢出漏洞复现
- IBM PC机是一台什么计算机,PC机是什么类型的计算机
- zookeeper集群伪分布式安装测试-windows
- 特征提取 - 海森矩阵(Hessian Matrix)及一个用例(图像增强)
- oracle索引查询
- 天翼云linux版本,天翼云Linux主机操作