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

你这个视频背景太假了?

最近相信大家都被一个二创梗刷爆短视频:“你这背景太假了!”。视频中是一位主播“疆域阿力木”在直播时,被网友质疑背景太假,因此他发布了自证清白的视频。

真的不是假背景

但这个视频发布后,再次被网友“二次创作”。由于其搞笑的体质被网友抠出来做到各种视频中,从此引发相关话题也冲上热搜。网友把他P到上天入地,无所不能。

比如:上月球
在这里插入图片描述

P到《猫和老鼠》里:
在这里插入图片描述

因此,网友一直以为该小伙是在一块绿幕背景中进行直播。说到视频背景太假,让我想到了之前看到过的一个替换背景的AI算法。它能够在原始视频上生成**“高清绿幕背景”,**最高分辨率达4K。
在这里插入图片描述

这里我尝试了一下,把原版的“你的背景太假”的视频进行输入,得到了比较好的绿幕结果:

你的背景太假了

当然,该项目也集成了换背景功能,并且目前已经开源。

《Real-Time High-Resolution Background Matting》

先来说说什么是背景替换?

背景替换在电影上是一种用得比较多的技术,而现在Zoom、Google Meet和微软视频会议工具中也开始广泛应用。除了增加娱乐价值外,背景替换还可以增强隐私。想象一下,当你在厕所与别人视频的时候,也不希望对面的人能够看到你在干嘛。因此实时背景替换是一种比较有前景的技术。

在以前的研究中,背景替换技术只能做到512*512的8fps视频。而这篇文章能够做到4K的30fps视频背景替换。这主要的挑战在于:需要计算高质量的蒙版的同时,在实时处理高分辨率图像中保留头发等更为精确的细节。因此这篇文章主要使用了两个网络来实现这个目标。

在这里插入图片描述

  • 基础base网络主要对低分辨率图像进行处理。
  • refinement网络则在第一个网络的基础上,基于低分辨率预测结果,从原始图像分辨率选择特定图像块进行处理,重构高分辨率抠图细节。

具体来说,Base网络输入的是原始图像和背景图,并预测输出粗略的 alpha蒙版、foreground residual背景残差、error prediction map以及 hidden feature。而Refinemen网络,则主要是用来降低冗余计算量,它只需要针对error prediction map所选择的图像块进行处理。

我们再来看看这篇文章抠出来的几个效果。

在抠图细节上,对比了其他的模型,可以发现在毛发等细节上会更加清晰明了:
在这里插入图片描述

把原始图片进行高像素4K输出:
在这里插入图片描述

在实时视频图片上,输出了高精度的抠图视频
在这里插入图片描述

同时在视频上,实现实时替换虚拟背景,可以看到,连头发的一些细节都比较还原出来:
在这里插入图片描述

最后再说下这个项目地址:
https://github.com/PeterL1n/BackgroundMattingV2

大家可以下载进行试玩,环境搭建可以用到pytorch和tensroflow等。具体可以看它视频的介绍~
https://www.youtube.com/watch?v=oMfPTeYDF9g

这期就到这里了,我是leo,欢迎关注我的公众号/知乎“算法一只狗”,我们下期再见~

相关文章:

  • 一文搞懂cookie、session、token、jwt、OAuth
  • 《Go Web 编程》之第4章 处理请求
  • ZYNQ之中断机制
  • Java JDK path环境变量配置
  • linux编译安装 php-nginx-mysql
  • 个人收入理财App的设计与实现
  • 【OpenStack云平台】网络控制节点 HA 集群配置
  • ​【原创】基于SSM的酒店预约管理系统(酒店管理系统毕业设计)
  • 基于node.js+Vue在线电子商务购物商城系统 Element
  • CVPR 2022:Generalized Few-shot Semantic Segmentation 解读
  • d二进制字面
  • 使用docker安装mysql
  • Vue.js入门教程(四)
  • SPA项目实现首页导航以及左侧菜单
  • 【java核心技术】Java知识总结 -- 对象和类
  • Apache的80端口被占用以及访问时报错403
  • Hexo+码云+git快速搭建免费的静态Blog
  • JDK 6和JDK 7中的substring()方法
  • JS笔记四:作用域、变量(函数)提升
  • JS题目及答案整理
  • Nginx 通过 Lua + Redis 实现动态封禁 IP
  • SpiderData 2019年2月13日 DApp数据排行榜
  • Spring Cloud Alibaba迁移指南(一):一行代码从 Hystrix 迁移到 Sentinel
  • Vue2.x学习三:事件处理生命周期钩子
  • Webpack入门之遇到的那些坑,系列示例Demo
  • 大整数乘法-表格法
  • 给github项目添加CI badge
  • 回流、重绘及其优化
  • 基于webpack 的 vue 多页架构
  • 面试题:给你个id,去拿到name,多叉树遍历
  • 前端面试题总结
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 实现菜单下拉伸展折叠效果demo
  • 手写一个CommonJS打包工具(一)
  • 微服务入门【系列视频课程】
  • 在 Chrome DevTools 中调试 JavaScript 入门
  • 回归生活:清理微信公众号
  • ​io --- 处理流的核心工具​
  • ​渐进式Web应用PWA的未来
  • #鸿蒙生态创新中心#揭幕仪式在深圳湾科技生态园举行
  • $ is not function   和JQUERY 命名 冲突的解说 Jquer问题 (
  • (1) caustics\
  • (转)eclipse内存溢出设置 -Xms212m -Xmx804m -XX:PermSize=250M -XX:MaxPermSize=356m
  • .[hudsonL@cock.li].mkp勒索病毒数据怎么处理|数据解密恢复
  • .Net Core缓存组件(MemoryCache)源码解析
  • .NET 中小心嵌套等待的 Task,它可能会耗尽你线程池的现有资源,出现类似死锁的情况
  • .NetCore项目nginx发布
  • .NET简谈设计模式之(单件模式)
  • .NET开发不可不知、不可不用的辅助类(一)
  • .NET开源项目介绍及资源推荐:数据持久层
  • @requestBody写与不写的情况
  • [BZOJ4554][TJOI2016HEOI2016]游戏(匈牙利)
  • [CareerCup] 14.5 Object Reflection 对象反射
  • [CSS]CSS 字体属性