AI 复原 100 年前的京城老视频,靠这三个开源工具
近日,一段拍摄于 100 年前的老北京城影像被央视转发,在微博上火了。据了解,该视频出自一位 B 站的 UP 主大谷的游戏创作小屋。作者大谷利用 AI 技术,把一段拍摄于 1920 年的北京城黑白视频,渲染成了高清流畅的彩色视频,配以颇具地方特色的 BGM,还原了百年前老北京城的民风民俗,颇有内味。
据大谷介绍,这部拍摄于百年前的黑白视频由于年代久远,视频画质有很多噪点,帧数、分辨率都很低。于是他使用了三款开源的 AI 工具来对视频进行处理,分别是:
下面就让我们来了解一下这三款视频修复常用的 AI 工具,感兴趣的朋友也可以学着用起来,自己处理老旧视频哦。
视频补帧工具 DAIN
帧数 (FPS)对于一部视频的流畅度来说影响很大,在正常播放速度下,低于 30 FPS 的视频会让人觉得卡顿,高于 60 FPS 的话肉眼则分辨不出区别。帧数越高的视频带来的流畅度一定是更高的,尤其是在慢镜头下,差别尤为明显:
上图来自另一 AI 补帧工具 SUPER SLOMO 的示例,将原片 30 FPS 的汽车甩尾镜头放慢 8 倍后,实际 FPS 不足 4 FPS,肉眼可见的卡顿。而通过 AI 补帧技术,能够将慢放后的视频维持在 240 FPS,流畅程度可见一斑。
通常来说,补帧的核心述求是在两个连续帧之间插入中间帧,从而提高视频的 FPS,而补帧工具需要解决的问题就是如何通过 AI 算法自动生成中间帧。DAIN 全称 Depth-Aware Video Frame Interpolation,即基于深度感知的视频帧插值工具。DAIN 团队提出了深度感知帧内插模型,开发了一个深度感知流投影层来生成中间帧。
- Ubuntu(Ubuntu =16.04.5 LTS )
- Python:Anaconda3 = 4.1.1 & Python= 3.6.8
- Cuda 和 Cudnn:Cuda = 9.0 & Cudnn = 7.0
- Pythorch:定制的深度感知流投影和其他层需要 Pythorch 中的 ATen API =1.0.0
- GCC:编译 PyTorch 1.0.0 扩展文件(.c/.cu)需要 GCC=4.9.1 和 nvcc=9.0 编译器
- GPU:NVIDIA GPU(作者使用的是 Titan X(Pascal)计算=6.1,支持 compute_50/52/60/61 设备)
下载资料库:
$ git clone https://github.com/baowenbo/DAIN.git
在构建Pytorch扩展之前,请确保您具有pytorch >= 1.0.0
:
$ python -c "import torch; print(torch.__version__)"
生成 PyTorch 扩展:
$ cd DAIN $ cd my_package $ ./build.sh
生成 PWCNet 所需的 Correlation 包:
$ cd ../PWCNet/correlation_package_pytorch1_0 $ ./build.sh
制作模型权重目录和 Middlebury 数据集目录:
$ cd DAIN $ mkdir model_weights $ mkdir MiddleBurySet
下载预训练的模型,
$ cd model_weights $ wget http://vllab1.ucmerced.edu/~wenbobao/DAIN/best.pth
和 Middlebury 数据集:
$ cd ../MiddleBurySet $ wget http://vision.middlebury.edu/flow/data/comp/zip/other-color-allframes.zip $ unzip other-color-allframes.zip $ wget http://vision.middlebury.edu/flow/data/comp/zip/other-gt-interp.zip $ unzip other-gt-interp.zip $ cd ..
预安装:
$ cd PWCNet/correlation_package_pytorch1_0 $ sh build.sh $ cd ../my_package $ sh build.sh $ cd ..
下载结果
用以下方法下载插值结果:
$ wget http://vllab1.ucmerced.edu/~wenbobao/DAIN/UCF101_DAIN.zip $ wget http://vllab1.ucmerced.edu/~wenbobao/DAIN/Vimeo90K_interp_DAIN.zip $ wget http://vllab1.ucmerced.edu/~wenbobao/DAIN/Middlebury_eval_DAIN.zip $ wget http://vllab1.ucmerced.edu/~wenbobao/DAIN/Middlebury_other_DAIN.zip
此模型完全有能力在对网络体系结构进行少量修改的情况下产生慢动作效果。通过指定time_step = 0.25
以生成 x4 慢动作效果来运行以下代码:
$ CUDA_VISIBLE_DEVICES=0 python demo_MiddleBury_slowmotion.py --netName DAIN_slowmotion --time_step 0.25
或设置time_step
为0.125
或0.1
如下
$ CUDA_VISIBLE_DEVICES=0 python demo_MiddleBury_slowmotion.py --netName DAIN_slowmotion --time_step 0.125 $ CUDA_VISIBLE_DEVICES=0 python demo_MiddleBury_slowmotion.py --netName DAIN_slowmotion --time_step 0.1
分别生成 x8 和 x10 慢动作。或者你想用 x100 慢动作拍些好玩的东西也没问题。
$ CUDA_VISIBLE_DEVICES=0 python demo_MiddleBury_slowmotion.py --netName DAIN_slowmotion --time_step 0.01
可通过以下方法创建gif动画:
$ cd MiddleBurySet/other-result-author/[random number]/Beanbags $ convert -delay 1 *.png -loop 0 Beanbags.gif //1*10ms delay
祝玩得开心!
DAIN 的详细介绍:点击查看
DAIN 的下载地址:点击下载
分辨率提升工具 ESRGAN
我们知道,分辨率对于图像的清晰度将产生直接的影响。一张低分辨率的小图片,如果我们直接放大的话很多细节将变成“马赛克”,这点相信大家都很有经验。因此,直接采用普通的插值算法进行图片放大的话,图中物体的边缘就会变得模糊,而超分辨率算法就是为了解决这种问题。
ESRGAN 是一种增强型超分辨率生成对抗网络,能通过 AI 在图像超分辨率期间生成真实纹理,实现图像分辨率的提升,效果如下图所示:
- Python 3
- PyTorch> = 1.0(如果与 CUDA 一起安装,CUDA 版本> = 7.5。更多详细信息)
- Python套件:
pip install numpy opencv-python
1.克隆此 github 存储库。
git clone https://github.com/xinntao/ESRGAN cd ESRGAN
2.将低分辨率图像放置在./LR
文件夹中。(有两个示例图像-狒狒和漫画)。
3.从 Google 云端硬盘或百度云端硬盘下载经过预训练的模型。将模型放在./models
。
4.作者提供了两种具有高感知质量和高 PSNR 性能的模型。运行测试:提供 ESRGAN模型和 RRDB_PSNR 模型,可以配置test.py
。
python test.py
5.结果在./results
文件夹中。
ESRGAN 的详细介绍:点击查看
ESRGAN 的下载地址:点击下载
黑白图像着色工具 DeOldify
DeOldify 是用于着色和恢复旧图像及视频的深度学习项目。它采用了 NoGAN 这样一种新型的、高效的图像到图像的 GAN 训练方法,细节处理效果更好,渲染也更逼真:
NoGAN 是作者开发的一种新型 GAN 训练模型,用于解决之前 DeOldify 模型中的一些关键问题。NoGAN 训练结合了 GAN 训练的优点(好看的色彩),同时消除了令人讨厌的副作用(如视频中的闪烁物体)。视频由孤立的图像生成,而不添加任何时间建模。该过程执行 30-60 分钟 “NoGAN” 训练的 GAN 部分,每次使用 1% 至 3% 的图像网络(imagenet)数据。然后,与静止图像着色一样,在重建视频之前对各个帧进行“去旧化”(DeOldify),即使在移动场景中的渲染也非常一致:
目前,DeOldify 有三种型号可供选择,每一种都有关键优势和劣势,因此具有不同的用例。三种型号分别为:Artistic(艺术型)、Stable(稳定型)、Video(视频专用)。
- Linux
- Fast.AI = 1.0.51(及其依赖项)。如果使用任何更高版本,你会在渲染中看到网格工件,而tensorboard 会出现故障。
- Pythorch = 1.0.1
- Jupyter Lab conda 安装
-c conda forge jupyterlab
- Tensorboard(即安装 Tensorflow)和 TensorboardX。非必要,但 FastAI 现在提供了对 TF的原生支持,很好用。
prereqs:conda install-c anaconda tensorflow gpu pip install tensorboardX
- ImageNet,是一个很好的数据集,用于训练。
- GPU:要求不高。(单独着色用普通集显都行,大规模训练的话还是建议上好一点的显卡)
安装使用
打开命令行并导航到要安装的根文件夹,输入以下命令:
git clone https://github.com/jantic/DeOldify.git DeOldify cd DeOldify conda env create -f environment.yml
然后开始使用这些命令运行:
source activate deoldify jupyter lab
通过控制台中提供的 URL 开始在 Jupyter Lab 中运行。
DeOldify 详细介绍:点击了解
DeOldify 下载地址:点击下载
想要自己动手把黑白老视频变成彩色高清视频的朋友,现在就可以行动起来啦。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
阿里云服务器能干什么用?有啥用途?
云服务器可以用来做什么? 1、建网站。 利用著名的WordPress可以让小白和新手搭建一个网站。让小白拥有自己的网站。 2、技术编程。 现在互联网行业大爆发,衍生出来的技术岗位多不胜数,为了就业,为了拿好的待遇,你没有理由不借助云服务器来学习技术编程。优先学习Web应用开发编程,然后在云服务器上部署你的Web应用,让你所学的东西在线上环境下得到检验。爱好学习者,必须上云。 3、软件应用开发与部署。 可以把个人业余开发的开源Web应用部署到云服务器上,然后写技术教程建立个人技术品牌,未来的时代,是个人品牌的时代,有了个人品牌,你不必依靠平台吃饭。你的个人IP就能让你自食其力,持续打造自身专业的影响力。借助云技术,行动起来把。 4、运维测试。 企业应用和个人应用测试用。性能压力测试,线上环境模拟测试等测试技能 5、微服务开发。 大型互联网微服务应用已经不可能把各个服务都放在一台云服务器上,而是分散在数量庞大的云服务器上,分散访问压力。如果你要深入学习微服务,你有必要弄几台云服务器来部署你的应用,然后让别人看到你的成果。 阿里云优惠上云+ 阿里云个人上云+阿里云企业上云+阿里云学生上云 总...
- 下一篇
Milvus 新版本 v0.9.0 重磅推出!
发布时间:2020-5-15 |版本兼容 |新增功能 支持在 Milvus 启动时检查 CPU 指令集、GPU 驱动版本 和 CUDA 版本。#2054#2111 避免多个 Milvus 实例同时操作同一 Milvus 数据。#2059 支持日志文件轮转。#2206 处理搜索请求时暂停创建索引。#2283 | 主要改进 重构了日志输出。#221 升级了 OpenBLAS 版本以提高 Milvus 性能。#1796 统一了 FAISS、NSG、HNSW 和 ANNOY 的向量距离计算方法。#1965 支持 SSE4.2 指令集。#2039 重构了配置文件。#2149#2167 采用了 Elkan K-means 算法提高 IVF 索引性能。#2178 | 问题修复 详见CHANGELOG了解更多已修复问题。 | API 变更 新增方法 变更方法 对新版本有任何的问题吗 ?欢迎交流。 如果你有兴趣要为 Milvus 贡献代码, 你也可以加入我们的 Slack, 我们另开设了 dev 频道让开发者能更好的互相交流。 |欢迎加入 Milvus 社区 github.com/milvus-io/m...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Hadoop3单机部署,实现最简伪集群
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果