如何在微软Edge浏览器上一键观看高清视频?

编者按:视频是当下最流行的媒体形式之一。但由于视频压缩、网络不稳定等原因,我们常常可以看到互联网上的很多视频其画面质量并不理想,尤其是在浏览器端,这极大地影响了观看体验。不过,近期微软 Edge 浏览器推出了一项新功能,一键就可以让浏览器中的视频变为高清版。这项神奇功能背后的技术秘诀是什么?今天,让我们一起来了解一下微软 Edge 视频超分辨率功能的“秘密武器”——来自微软亚洲研究院的智能视频增强工具集 DaVinci 2.0。


近期,微软 Edge 浏览器推出了一项新功能——视频超分辨率(VSR)。用户只需在 Edge 浏览器中开启 VSR 功能,就能够在浏览器端观看高清视频。即使是几十年前的360P、480P老电影,或者在网络不稳定被迫降低视频画质的情况下,用户也可以时刻享受高清体验。

VSR 功能的背后是来自微软亚洲研究院的智能化视频增强工具集“达芬奇(DaVinci)”。该功能在不占用网络带宽的情况下即可在用户端实时消除视频压缩的伪影,提高视频分辨率,从而整体提升用户浏览视频的视觉体验。

微软 Edge 视频超分辨率示例。针对低于 720P 分辨率的视频,开启 Edge 中的视频超分辨率功能,视频质量有了明显提升。

现在,就跟着微软 Edge 的节奏,让视频高清起来吧!

第一步,打开微软 Edge 浏览器;第二步,单击 Edge 地址栏中的高清图标并选择增强视频的切换开关;第三步,播放视频,享受高清体验。(注:视频超分辨率由 Edge 自动启用,用户可自行决定启用或禁用该功能)

启用或禁用视频超分辨率功能的流程

启用或禁用视频超分辨率功能的流程

*值得注意的是,受限于模型计算代价较高的限制,该功能目前仅针对具有相对高端显卡的台式机用户开放测试(需要 Edge Stable 版本不低于117,Edge Canary 版本不低于119)。同时,微软 Edge 团队也在不断努力,希望可以将该功能逐步开放给所有具有独立显卡、集成显卡的用户。

从特定视频域到开放域的挑战

据微软 Edge 团队调查,近四成用户曾表示在 Edge 浏览器观看视频时,网页上的视频质量较低,通常为 360P 或 480P,非常影响用户体验。为此,微软 Edge 团队希望与微软亚洲研究院开展合作,借助创新技术来提升 Edge 网页端所有低清视频的质量,给用户以高清体验。2022年微软亚洲研究院推出的智能视频增强工具集“达芬奇(DaVinci)”,能够实现视频超分辨率、视频插帧、压缩视频超分辨率等功能,很好的满足了微软 Edge 团队的需求。

DaVinci项目链接:https://github.com/microsoft/DaVinci

然而,在将 DaVinci 算法模型应用到产品的过程中存在着不小的挑战。DaVinci 1.0 主要是针对特定领域进行的训练,有明确的训练目标;特定领域的数据分布一致,所以模型的优化过程更加容易,优化的上限也更高;而且,高质量的垂直领域的数据更易于收集,可以获得大量公开的训练数据。但进入到 Edge 应用场景下的开放域(open domain),技术难度呈指数级增加。在开放域中,视频类别众多,视觉差异较大,比如用户在 Edge 中打开的可能是包含动物、植物、建筑、车辆等众多元素在内的影视、动画、视频会议等各种不确定类型的视频。要让一个模型补充不同类别视频的细节,是 DaVinci 首先要面对的难题。

与此同时,模型的容量是否足够大,可以支撑真实场景下的大量数据,并捕捉到不同的数据模式?如何定义开放域?开放域需要包含哪些特定领域的数据?评估指标是什么?这些都是 DaVinci 模型需要克服的问题。

更适合开放域视频的超分辨率算法

DaVinci 1.0 视频超分辨率模型的目的是在从低质量(LQ)或低分辨率的对应帧预测的高质量(HQ)帧的过程中来学习映射函数。然而,为了从高质量的训练数据集生成对应的低质量/低分辨率的视频帧,现有方法大多是使用预定义的算子(如,双三次下采样,bicubic down-sampling)来模拟退化过程,得到 LQ 输入。这就限制了模型在真实视频场景上的通用性,特别是对于具有高压缩率的视频流数据。所以在 DaVinci 2.0 的视频超分辨率技术中,微软亚洲研究院的研究员们将视频压缩也纳入到模型中,并通过运行具有不同压缩策略的几个流行视频编解码器来合成 LQ-HQ 视频对,以训练模型。

同时,受到大语言模型的启发,研究员还利用自监督的 LQ-HQ 复原范式(restoration paradigm),使用来自不同类别的15万个视频片段对模型进行了预训练。通过进一步考虑来自不同编码器的视频压缩伪影类型,使得 DaVinci 模型可以显著恢复具有大范围低质量的不同视频内容。

为了进一步提高模型的视觉质量,研究员们采用两阶段训练策略。其中,第一阶段旨在恢复结构信息(如,对象的边缘和边界),第二阶段则针对高频纹理(如,树叶和毛发),使用视觉感知和生成对抗性目标进行优化。

由于当前该领域中的现有指标,如 LPIPS(Learned Perceptual Image Patch Similarity, 学习感知图像块相似度)和 FVD(Fréchet Video Distance,弗雷歇视频距离)不能完全反映人类的视觉偏好,因此研究员们构建了一个端到端流水线(pipeline),用于视频增强任务的主观评估,以便更好地了解改进后的 DaVinci 模型性能,评估它在开放域视频场景中所发挥的作用。

具体而言,就是让参与者在十个类别中标注出他们对真实场景视频数据不同方法的偏好。参与者不仅要考虑每个视频帧的静态质量,还要考虑动态质量,这对于改善用户体验尤为重要。该流水线评估方法表明,相比于浏览器中默认的双线性放大,超过90%的用户更喜欢使用 DaVinci 2.0 模型来提升视频质量。

在微软亚洲研究院与微软 Edge 团队的通力合作下,Edge 浏览器的 VSR 功能基于 DaVinci 2.0 超分辨率模型,可以提升所有不确定内容类型的视频质量,并且在不产生伪影的情况下,提高视频清晰度,为 Edge 用户提供丝滑、高清的视频体验。

从视频超分辨率到视频生成

尽管 DaVinci 1.0 并没有涉及到如此大规模的低质量数据预训练,但 DaVinci 2.0 在 Edge 浏览器中的成功应用,证明了模型具有从低质量预训练到大规模高清数据应用的高泛化能力。这也进一步促进了微软亚洲研究院研究员们将创新技术应用到更多开放域场景的探索。

“DaVinci 2.0 对视频增强功能的创新,实现了对开放域视频图像细节的补充。基于视频帧间具有本质关联的特性,DaVinci 最终实现了高清结果。接下来,我们希望对技术进行更深入的探索,最终达到从0到1的创造,”微软亚洲研究院高级研究员傅建龙表示。

在以视频为主流媒介的大趋势下,微软亚洲研究院希望未来还可以给用户提供自动生成视频、创建个性化视频内容的工具。在全方位为用户提供极致的视频观看体验的同时,也帮助用户从事更复杂、更具创造力的内容创作工作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/79251.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux命令查看谁在使用服务器的GPU

命令:查看GPU使用情况 nvidia-smi 可以知悉GPU占用情况和主要使用GPU的进程,如下图所示: 实时查看gpu使用: nvidia-smi -l 1 表示每隔1s刷新一下,数字可更改。 查看进程的归属者 方法一:ps -f -p pid…

发布文章到wordpress

给朋友新建的wp网站,没有内容怎么办,总不能一篇篇的挨个写入吧。用wp提供的录入模块就可以了 参考 wp说明文档 获取docx内容保存到wp 资料有个docx文件,但文件格式混乱,好在有目录,可以基于目录,对文章分割,用正则拆分存入wp 首先用pandoc把docx转为md文件,速度较慢,…

——二叉树

二叉树种类 二叉树有两种主要的形式:满二叉树和完全二叉树。 满二叉树 如果一棵二叉树只有度为0的结点和度为2的结点,并且度为0的结点在同一层上,则这棵二叉树为满二叉树。 完全二叉树 在完全二叉树中,除了最底层节点可能没…

开发者必看!NetMarvel 五大能力驱动【变现收益】增长飞轮

更多流量带来更多预算,再由更多预算驱动增长。这不仅是出海App增长变现的底层逻辑,也是程序化广告平台的运行法则。App出海之路走到今天,开发者已经意识到:应用内购是实现正向现金流的必要手段,接入广告平台获取广告收…

Spark on YARN 部署搭建详细图文教程

目录 一、引言 二、SparkOnYarn 本质 2.1 Spark On Yarn 的本质? 2.2 Spark On Yarn 需要啥? 三、配置 spark on yarn 环境 3.1 spark-env.sh 3.2 连接到 YARN 中 3.2.1 bin/pyspark 3.2.2 bin/spark-shell 3.2.3 bin/spark-submit (PI) 四、部署模式 DeployMod…

阿维塔30亿元融资背后:价格战再席卷,如何守住品牌底线?

造车新势力阿维塔近期消息不断。 8月31日,阿维塔宣布完成B轮融资,规模达到30亿元,投后估值近200亿元。随后的9月2日,阿维塔科技宣布8月共交付新车1975辆,略高于上月的1786辆,稳居30万以上纯电SUV头部阵营。…

从官方文档看Redis

一.核心能力 Redis 1.In-memory data structures 内存数据结构 Redis以"键值对" 的方式来存储数据, 是一种"非关系型数据库" ps: MySQL以"表"的方式来存储数据, 是一种"关系型数据库" 2.Programmability 可编程性 Redis可以用脚本…

遥感数据与作物模型同化应用:PROSAIL模型、DSSAT模型、参数敏感性分析、数据同化算法、模型耦合、精度验证等主要环节

查看原文>>>遥感数据与作物模型同化实践技术应用 基于过程的作物生长模拟模型DSSAT是现代农业系统研究的有力工具,可以定量描述作物生长发育和产量形成过程及其与气候因子、土壤环境、品种类型和技术措施之间的关系,为不同条件下作物生长发育及…

【UE 材质】力场护盾和冲击波效果

目录 效果 步骤 一、制作力场护盾材质 二、制作冲击波材质效果 三、制作冲击波粒子效果 四、制作震动效果 效果 步骤 一、制作力场护盾材质 1. 首先新建一个第一人称角色游戏模板 2. 新建一个材质,用于作为力场护盾的材质,这里命名为“Mat_for…

cms之wordpress主题安装

WordPress主题安装教程的方法有两种,分为在线安装和上传安装,下面是主题详细安装方法的步骤。 后台在线安装主题 从后台的主题界面在线安装主题是最方便的WordPress主题安装方式。方法如下: 1 在WordPress后台,转到外观→主题 …

本地部署CodeLlama +GTX1080显卡 对接open-interpreter对接wxbot(一)

1.效果展示 开源项目GitHub - oobabooga/text-generation-webui: A Gradio web UI for Large Language Models. Supports transformers, GPTQ, llama.cpp (GGUF), Llama models. "Code Llama" 是一个大型代码语言模型的系列,基于 "Llama 2" 构建,为编程…

进程属性/进程状态

task_struct-PCB的一种 在Linux中描述进程的结构体叫做task_struct。进程也叫任务 task_struct是Linux内核的一种数据结构,它会被装载到RAM(内存)里并且包含着进程的信息。 task_ struct内容分类 标示符: 描述本进程的唯一标示符,用来区别其他进程。 …

Mysql高级——索引创建和使用

索引的创建 1. 索引的声明与使用 1.1 索引的分类 MySQL的索引包括普通索引、唯一性索引、全文索引、单列索引、多列索引和空间索引等。 从功能逻辑上说,索引主要有 4 种,分别是普通索引、唯一索引、主键索引、全文索引。 按照物理实现方式&#xff…

一文带你走进软件测试的大门

目录 前言 需求 用户需求 软件需求 从测试人员的角度看需求 测试用例 测试环境 测试数据 预期结果 操作步骤 为什么要有测试用例 Bug的概念 世界上的第一个bug bug的定义 开发模型和测试模型 软件的生命周期 开发模型 瀑布模型 螺旋模型 增量、迭代 敏捷 …

C++--简单实现定长内存池

1.什么是定长内存池 在C/C中,动态申请内存都是通过malloc来申请的,但是实际上不是是直接从堆上直接申请的内存,而是通过malloc动态申请一大块内存,malloc就相当于一块内存池,然后分给程序使用,如果申请的内…

ResponseBodyAdvice 获取参数

废话不多说,简练,一针见血,解决问题,才是最好的。 首先肯定是重写了这个beforeBodyWrite方法 重点来了,获取请求参数: request.getBody()返回一个inputStream流,这里你可以 使用很多方法把这个…

《PostgreSQL中的JSON处理:技巧与应用》

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🐅🐾猫头虎建议程序员必备技术栈一览表📖: 🛠️ 全栈技术 Full Stack: &#x1f4da…

驱动开发--day2(内核不同模块的相互访问、字符设备驱动、led控制实验代码及现象)

实现三盏灯的控制,编写应用程序测试 head.h #ifndef __HEAD_H__ #define __HEAD_H__#define LED1_MODER 0X50006000 #define LED1_ODR 0X50006014 #define LED1_RCC 0X50000A28#define LED2_MODER 0X50007000 #define LED2_ODR 0X50007014#endif mychrdev.c #inc…

MyBatisPlus(二)基础Mapperr接口:增删改查

MyBatisPlus:基础Mapper接口:增删改查 插入一条数据 代码 Testpublic void insert() {User user new User();user.setId(6L);user.setName("张三");user.setAge(25);user.setEmail("zhangsanexample.com");userMapper.insert(use…

LeetCode(力扣)406. 根据身高重建队列Python

LeetCode406. 根据身高重建队列 题目链接代码 题目链接 https://leetcode.cn/problems/queue-reconstruction-by-height/ 代码 class Solution:def reconstructQueue(self, people: List[List[int]]) -> List[List[int]]:people.sort(key lambda x: (-x[0], x[1]))que […