BSVD论文理解:Real-time Streaming Video Denoising with Bidirectional Buffers
BSVD是来自香港科技大学的一篇比较新的视频去噪论文,经实践,去噪效果不错,在这里分享一下对这篇论文的理解。
论文地址:https://arxiv.org/abs/2207.06937
代码地址:GitHub - ChenyangQiQi/BSVD: [ACM MM 2022] Real-time Streaming Video Denoising with Bidirectional Buffers
我们都知道,在超低照度拍摄的图像中,由于单帧数据信噪比过低,难以恢复出高质量的图像,因此,在给定camera sensor的前提下,想要在超低照度成像,主要有两个思路,一是延长曝光时间,二是应用多帧信息。对于视频拍摄来说,延长曝光时间有两个弊端:(1) 难以满足要求的较高帧率;(2) 存在运动物体或者镜头移动的情况下,容易造成帧内模糊。因此,利用多帧信息来达到视频去噪和增强就成为一个重要的研究方向。
1. 算法简介
这篇论文提出了一种双向缓冲块(Bidirectional Buffer Block)作为BSVD的核心模块,可以利用过去帧和未来帧来预测当前帧,使得流程能够以pipe-line的形式达到实时推理。论文中给出了BSVD的推理时间以及图像恢复质量与其他SOTA算法的对比,如下面图示和表格:
2. 网络结构
BSVD的网络结构相对简单,就是两个UNet的级联,称为W-Net,如下图所示:
其中,每个UNet的结构如下:
其中,64是指输入层的输出channels数量,网络根据应用场景的不同,可以有不同的复杂度配置,如BSVD-32、BSVD-24和BSVD-16。
在上面架构表格中,每个Downsample Block和Upsample Block都有2个TSM或者BBB模块,一个UNet一共是8个,整个W-Net一共是16个TSM/BBB模块。TSM全称是Temporal Shift Module,是在训练阶段使用的。BBB就是我们前面提到的Bidirectional Buffer Block,是整个论文的核心,该模块在推理阶段会替换掉TSM模块,进行视频的pipeline推理。由于BBB模块的存在,视频推理过程中会消耗一定的缓存,并且有N帧的延迟(这里,N=16,是BBB模块的数量)。
3. Bidirectional Buffer Block的实现
下面示意图给出了BBB和TSM的实现差异。由于篇幅限制,这里先不对TSM进行过多介绍,想要深入了解TSM的同学可以参考论文《TSM: Temporal Shift Module for Efficient Video Understanding》。
这里,我们重点介绍BBB模块的结构和实现。每个BBB模块的实现如下图所示:
在每一层带BBB的卷积层中,当前输入首先和两个buffer中的数据进行级联,级联后进行卷积操作,卷积的输出作为下一层网络的输入。卷积之后,更新两个buffer的数据,简单来说,就是将当前输入缓存到B0,而原来B0中的数据缓存到B1。上面步骤可以提炼为三步:
(1) 将新输入feature与缓存features进行融合:
(2) 对融合后的数据做卷积,进行特征提取:
(3) 更新缓存数据:
以上过程实现的伪代码如下:
前面我们也提到,由于BBB的存在,整个pipeline的推理是有延迟的,具体会有N帧的延迟。
4. 推理时间和运行资源分析
(1)关于网络推理时间
FastDVDnet是基于滑窗的实现框架,也是两个UNet的级联,每个UNet输入层对3个带噪视频帧进行融合,因此,整体推理一帧的时间成本是单个UNet的3+1=4倍。与FastDVDnet每次送入网络多帧数据不同,BSVD每次只将一帧数据送入网络,因此计算成本是单UNet网络的1+1=2倍。从下表可以看到,BSVD-32相对于FastDVDnet,节省了50%以上的耗时。
(2) 关于缓存资源
在多帧框架如bidirectional-RNN和MIMO框架中,需要的缓存空间与输入的视频片段长度相关,在资源受限的计算平台进行推理时,需要将完整视频切分成多个短的视频序列,但这样的切分容易造成序列边界帧的推理质量下降。BSVD由于每次只输入一帧数据,且网络结构一旦固定,所需缓存的大小只与BBB模块的数量相关。
(3)时域感受野(Temporal receptive field)
经过前面的分析,我们知道单个BBB模块的时域感受野为2+1=3。论文中,将BBB模块的数量设置为16,因此,整个网络的感受野为16*2+1=33,这样的感受野大小明显大于滑窗方式的框架,也能更好地保证输出视频帧的图像质量。
5. 实践事项
具体在实践过程中,个人认为有几个地方需要特别关注。
(1)对于边界帧的处理
论文中对于边界帧的处理在A.2 Edges of the Stream段落已经提到。所谓边界帧,就是对一段视频序列的最前N-1帧和最后N-1帧的处理。前面的N-1帧(1≤i<N)没有足够的过去帧来做参考,因此past buffer是没有数据的,论文中对这个阶段的B-1 buffer进行零填充。对最后N-1帧(T≤i≤T+N-1),由于缺少未来帧,则通过输入伪零张量(dummy zero tensor)来确保最后N-1帧的输出。具体可见下图图示:
(2)RGB域去噪与Raw域去噪
BSVD网络支持RGB域的视频去噪和Raw域视频去噪。
对于RGB域去噪,输入channels数为3或4,分别实现盲去噪和非盲去噪。我们实际应用中,大部分会用盲去噪,因此在自己的实践中,基本上只会将R、G、B三个通道的数据输入到网络中。非盲去噪的情况下,除了输入RGB三通道,还需要输入noise map作为第四通道,来作为对去噪程度的控制参数。
如果是在camera前端的应用,那么大多会使用直接从sensor获取的Raw域数据进行去噪。Raw域去噪一般输入网络的channels数量为4或5,4为盲去噪,输入bayer域的RGGB四个通道数据,5为非盲去噪,除了RGGB四通道,也要输入一个通道的noise map。
下面是RGB非盲去噪的一个推理效果视频(取自测试集set8):
original
denoised
相关文章:
BSVD论文理解:Real-time Streaming Video Denoising with Bidirectional Buffers
BSVD是来自香港科技大学的一篇比较新的视频去噪论文,经实践,去噪效果不错,在这里分享一下对这篇论文的理解。 论文地址:https://arxiv.org/abs/2207.06937 代码地址:GitHub - ChenyangQiQi/BSVD: [ACM MM 2022] Real…...
共同见证丨酷雷曼武汉运营中心成立2周年
酷雷曼武汉运营中心2周年 全国合作商齐贺武汉公司2周年庆 2021年 作为酷雷曼辐射全国版图的又一重要据点 酷雷曼武汉运营中心 在“中国光谷”正式成立 沉浸式参观酷雷曼武汉公司 2年时间 尽管历经诸多客观因素的挑战 但后浪扬帆,依然交出了不斐的成绩 解决…...
一种单键开关机电路图
我们设计产品时,通常需要设计单键开关机功能。 单键开关机,通常需要单片机的两个IO完成,一个IO用于保持开机状态。另外,一个IO用于判定关机状态。 下面就是一种单键开关机电路原理图: 此单键开关电路已经在S2W-M02、S2…...
设计模式2、抽象工厂模式 Abstract Factory
解释说明:提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类。 简言之,一个工厂可以提供创建多种相关产品的接口,而无需像工厂方法一样,为每一个产品都提供一个具体工厂 抽象工厂(Abstra…...
C++ 32盏灯,利用进制和 与 或 进行设计
一共32盏灯,设计一个灯光控制系统,其中 台球部8盏灯 桌游区8盏灯 酒吧区8盏灯 休息区8盏灯 满足以下功能 1、能够独立控制每一盏灯 2、能够一次性打开或关闭一个区域的全部灯光 3、能够获取各个区域的灯光打开关闭情况 4、能够一次性关闭打开的灯&#x…...
Ffmpeg-(1)-安装:ubuntu系统安装Ffmpeg应用
1、下载源码压缩包 https://ffmpeg.org/download.html 点击Download Source Code下载即可 解压: tar -xvjf ffmpeg-snapshot.tar.bz2 得到:ffmpeg目录 cd ffmpeg 或者:直接下 wget http://www.ffmpeg.org/releases/ffmpeg-5.1.tar.gztar -zx…...
系统集成|第十一章(笔记)
目录 第十一章 项目人力资源管理11.1 项目人力资源管理的定义及有关概念11.2 主要过程11.2.1 编制项目人力资源管理计划11.2.2 组建项目团队11.2.3 建设项目团队11.2.4 管理项目团队 11.3 现代激励理论11.4 项目经理所需具备的影响力11.5 常见问题 上篇:第十章、质量…...
二叉树题目:二叉树剪枝
文章目录 题目标题和出处难度题目描述要求示例数据范围 解法思路和算法代码复杂度分析 题目 标题和出处 标题:二叉树剪枝 出处:814. 二叉树剪枝 难度 4 级 题目描述 要求 给定二叉树的根结点 root \texttt{root} root,返回移除了所有…...
JAVA中使用CompletableFuture进行异步编程
JAVA中使用CompletableFuture进行异步编程 1、什么是CompletableFuture CompletableFuture 是 JDK8 提供的 Future 增强类,CompletableFuture 异步任务执行线程池,默认是把异步任 务都放在 ForkJoinPool 中执行。 在这种方式中,主线程不会…...
uniapp:配置动态接口域名,根据图片访问速度,选择最快的接口
common.js // 动态测速选择的域名 // h5直接返回默认第一个域名 // vue文件用到域名的话用this.$baseURL let domains [{uri:192.168.31.215:9523, speed:0},{uri:api.ceshi.org, speed:0}, ]export const protocol {api: http://,//本地// api: https://api.,//正式h5Url: h…...
Lambda表达式常见用法(提高效率神器)
Java8中一个非常重要的特性就是Lambda表达式,我们可以把它看成是一种闭包,它允许把函数当做参数来使用,是面向函数式编程的思想,一定程度上可以使代码看起来更加简洁。 其实以上都不重要,重要的是能够提高我的开发效率…...
2023旷视自驾感知算法暑期实习一面
来源:投稿 作者:LSC 编辑:学姐 1. 问下项目,问下我的情况 2. 是否了解最新的BEV算法,讲一下 3. 是否了解三维重建 4. 考察相机坐标系的转换 5. 手撕代码,翻车了,不考leetcode,考…...
Python3 如何实现 websocket 服务?
Python 实现 websocket 服务很简单,有很多的三方包可以用,我从网上大概找到三种常用的包:websocket、websockets、Flask-Sockets。 但这些包很多都“年久失修”, 比如 websocket 在 2010 年就不维护了。 而 Flask-Sockets 也在 2…...
SQLAlchemy常用数据类型
目录 SQLAlchemy常用数据类型 代码演示 代码分析 SQLAlchemy常用数据类型 SQLAlchemy 是一个Python的SQL工具库和对象关系映射(ORM)工具,它提供了一种在Python中操作数据库的高效方式。下面是SQLAlchemy中常用的一些数据类型: Integer:整形&…...
Vue路由与nodejs下载安装及环境变量的配置
目录 前言 一、Vue路由 1.路由简介 是什么 作用 应用场景 2.SPA简介 SPA是什么 SPA的优点 注意事项 3.路由实现思路 1.引入路由的js依赖 2.定义组件 3.定义组件与路径的对应关系 4.通过路由关系获取路由对象router 5.将路由对象挂载到实例中 6.触发路由事…...
HarmonyOS之 应用程序页面UIAbility
一 UIAbility介绍: 1.1 UIAbility是一种包含用户界面的应用组件,主要用于和用户进行交互 1.2 UIAbility也是系统调度的单元,为应用提供窗口在其中绘制界面 二 UIAbility跳转和传参 2.1 页面间的导航可以通过页面路由router模块来实现。页…...
数据集笔记: Porto
数据来源:Taxi Trajectory Data_数据集-阿里云天池 (aliyun.com) 1 数据介绍 葡萄牙波尔图市运行的所有442辆出租车的全年轨迹(从2013年7月1日至2014年6月30日) 2 读取数据 import pandas as pdtrapd.read_csv(C:/Users/16000/Download…...
修改vscode底部栏背景和字体颜色
修改vscode底部栏背景和字体颜色 如图: 首先打开齿轮,打开设置搜索workbench.colorCustomizations,然后点击编辑setting.json修改setting.json内内容 "workbench.colorCustomizations": {"statusBar.foreground": "#FFFFFF…...
加速企业AI实施:成功策略和效率方法
文章目录 写在前面面临的挑战MlOps简介好书推荐 写作末尾 写在前面 作为计算机科学领域的一个关键分支,机器学习在当今人工智能领域中占据着至关重要的地位,广受瞩目。机器学习通过深入分析大规模数据并总结其中的规律,为我们提供了解决许多…...
【图论C++】树的重心——教父POJ 3107(链式前向星的使用)
》》》算法竞赛 /*** file * author jUicE_g2R(qq:3406291309)————彬(bin-必应)* 一个某双流一大学通信与信息专业大二在读 * * brief 一直在竞赛算法学习的路上* * copyright 2023.9* COPYRIGHT 原创技术笔记:转载…...
hhh百度地铁广告太搞笑了;24家国内大模型公司面经;LLM法律应用实践;AI+教育产品图谱与工作流 | ShowMeAI日报
👀日报&周刊合集 | 🎡生产力工具与行业应用大全 | 🧡 点赞关注评论拜托啦! 🔥 会玩儿!承包地铁专列,真人移动广告 | 百度世界大会预热 百度也是会玩儿!承包了北京地铁一号线的「…...
项目管理:项目经理一定要避开这四大误区
项目经理要保质保量按时达成项目目标,需要关注项目的方方面面,要具有很强的沟通协调能力和目标意识。但是项目经理也不免不了失误,管理中的这四大误区,你经历过几个? 误区一:做不该做的事 你是否遇到这种…...
爬虫为什么需要 HTTP 代理 IP?
前言 爬虫在互联网数据采集、分析和挖掘中扮演着至关重要的角色,但是对于目标网站而言,频繁的爬虫请求可能会对其服务器产生不小的负担,严重的情况甚至会导致网站崩溃或者访问受限。为了避免这种情况的发生,同时也为了保护客户端…...
leetcode刷题笔记/代码随想录笔记——移除字符串中多余空格
1. 使用erase()函数 void removeExtraSpaces(string& s) {for (int i s.size() - 1; i > 0; i--) {if (s[i] s[i - 1] && s[i] ) {s.erase(s.begin() i);}}// 删除字符串最后面的空格if (s.size() > 0 && s[s.size() - 1] ) {s.erase(s.begi…...
dataGrip导出导入的方式
导出:选中需要导出的表 导入:选中导出的sql文件...
LeetCode279. 完全平方数
279. 完全平方数 文章目录 [279. 完全平方数](https://leetcode.cn/problems/perfect-squares/)一、题目二、题解方法一:完全背包二维数组方法二:一维数组(空间复杂度更小的改进版本,最下面的两个版本不需要存储完全平方数) 一、题…...
【CMake】add_dependencies 命令
【CMake】add_dependencies 原文链接:https://blog.csdn.net/new9232/article/details/125831009 参考链接:https://blog.csdn.net/new9232/article/details/121374943 简介 add_dependencies(<target> [<target-dependency>]...)官方文档…...
go语言unsafe.Pointer与uintptr
以下内容来源go语言圣经 1、unsafe.Pointer,相当于c语言中的void *类型的指针,如果需要运算需要转成uintptr类型的指针 2. uintptr uintptr是一个无符号的整型,它可以保存一个指针地址。 它可以进行指针运算。 uintptr无法持有对象, GC不把…...
ddos打到高防cdn上会发生什么
ddos打到cdn上会发生什么?当DDoS攻击打到CDN上时,肯定会影响网站的可用性和用户体验。具体DDoS攻击打到CDN上时,会发生以下情况: CDN节点负载增加:DDoS攻击会导致大量的无效流量涌入CDN节点,从而使得节点负载增加。这…...
【单调栈】503. 下一个更大元素 II
503. 下一个更大元素 II 解题思路 参考496. 下一个更大元素 I 首先计算nums2的每一个元素的下一个比他大的元素,使用单调栈 将上面的结果和nums2中的每一个元素组成映射map 针对每一个Nums1的元素 查询map 记录map 的value 但是这个是循环的数组元素 class So…...
英语网站大全免费/市场调研报告怎么写的
使用JavaScript开发IE浏览器本地插件实例 投稿:junjie 字体:[增加 减小] 类型:转载 时间:2015-02-18 我要评论 这篇文章主要介绍了使用JavaScript开发IE浏览器本地插件实例,本文讲解使用JS注册表的方式开发一个IE浏览器本地插件,需…...
做网站怎么赚钱 111/小说网站排名免费
各位同学、老师们:今天对于热爱计算机技术,热爱编程的同学们来说是个特殊的日子,烟台大学首次迎来了ACM程序设计大赛。ACM是计算机界历史最久的全球性组织,ACM大赛是全球大学生的最高水平的计算机程序设计竞赛,烟台大学…...
win wordpress 静态/中国网站排名
正 文: 1、启用Ad Hoc Distributed Queries 在使用openrowset/opendatasource前搜先要启用Ad Hoc Distributed Queries服务,因为这个服务不安全所以SqlServer默认是关闭的 启用Ad Hoc Distributed Queries的方法 SQL Server 阻止了对组件 Ad Hoc Distributed Queri…...
代码网站怎么做的/百度指数怎么看地域数据
五、 部署Exchange 2013 CAS负载均衡高可用 现在的Exchange 2013中客户端的指向的是用户邮箱唯一的GUID。CAS服务器基于Active Directory站点查找这个GUID,然后找到正确的邮箱服务器目标。因此不再需要使用CAS Array对象。这里只需部署NLB高可用。 5.1. 创建NLB群集…...
php网站开发做什么/杭州网站排名seo
网站被黑原因:没有做好安全处理,使其所有的数据都可以插入数据库,给黑人们很大空间 网站被黑内容:所有的数据都是加了一个莫名其妙的</title><div styleposition:absolute;top:-9999px;><a hrefhttp://kickass-boo…...
网站建设公司的名字/自己怎么建网站
Fastjson RCE续(自动化) 一、漏洞介绍 参阅Fastjson≤1.2.47 RCE。 二、漏洞危害 参阅Fastjson≤1.2.47 RCE。 三、漏洞验证 环境搭建: 实验环境系统IP地址攻击机win10199.200.234.44靶机Centos7192.168.134.133 docker pull vulhub/f…...