大家好,我是擅长发现黑科技的开源大叔。
昨天的决赛都看了吗?太精彩了,大叔看得太揪心了,两次以为早早阿根廷赢定了,结果法国都顽强地追平了,最终点球大战决出了胜负。感谢两队贡献了如此精彩的决赛。
恭喜阿根廷,恭喜梅西!
前几天,小妹换了个微信头像,不过吵吵着说头像有些模糊,不够高清,要我给她处理一下。这点小事难不倒大叔,图片无损放大的算法和工具肯定是有滴。于是搜罗了一番,大叔发现了一个非常好用的项目——Real-ESRGAN。大叔尝试着用它处理了头像后,效果如下:
左边是原图,右边是处理后的图像,怎么样,效果是不是非常明显。
Real-ESRGAN 是腾讯 ARC 实验室发表超分辨率算法,目的是开发出实用的图像/视频修复算法。从名字上也能看出,它是对 ESRGAN 算法的改进。使用该算法可以非常容易的将一张模糊的图片处理成高清大图。
不要一看到算法就感觉项目门槛高,不容易上手。作者提供了已经打好包的程序以及自带的模型文件,以便于让你用一行代码就可以完成图片的超分辨率处理。
首先根据你使用的操作系统下载对应版本的程序,之后在命令行模式切换到程序包的目录下,执行以下命令即可:
-- Windows环境
./realesrgan-ncnn-vulkan.exe -i 输入图像.jpg -o 输出图像.png -n 模型名字
-- Mac环境
./realesrgan-ncnn-vulkan -i 输入图像.jpg -o 输出图像.png -n 模型名字
自带的模型有以下三个:
其中,如果命令中-n
后面不指定模型名,则默认使用realesr-animevideov3
。经过大叔的测试发现,realesr-animevideov3
模型处理速度最快,画风更偏向动漫的柔和画风。realesrgan-x4plus
模型处理时间最慢,锐化效果最强。realesrgan-x4plus-anime
模型的效果和速度介于二者之间。
如果想批量处理图片,可以在命令中直接指定保存图片的文件夹即可。命令如下:
-- Windows环境
./realesrgan-ncnn-vulkan.exe -i 输入文件夹 -o 输出文件夹
-- Mac环境
./realesrgan-ncnn-vulkan -i 输入文件夹 -o 输出文件夹
既然都可以批量处理图片了,那是不是也可以将视频进行高分辨率处理呢?当然可以,只需要将原视频的每一帧都生成一张图片,然后将图片批量处理,再合成回原有视频就可以啦。这里给出一个借助 ffmpeg 解决方案,篇幅原因就需要感兴趣的朋友自行体验啦。参考命令如下:
-- 视频转图片
ffmpeg -i input.mp4 -qscale:v 1 -qmin 1 -qmax 1 -vsync 0 tmp_frames/frame%08d.jpg
-- 处理图片
./realesrgan-ncnn-vulkan -i tmp_frames -o out_frames -n realesr-animevideov3 -s 2 -f jpg
-- 生成视频
ffmpeg -i out_frames/frame%08d.jpg -i input.mp4 -map 0:v:0 -map 1:a:0 -c:a copy -c:v libx264 -r 23.98 -pix_fmt yuv420p output_w_audio.mp4
如果只使用命令行来处理,还是不太人性化。这里再给大家推荐一个 Real-ESRGAN 的图形界面程序——realesrgan-gui。它是使用 Python 和 tkinter 编写,同时支持 Windows、Ubuntu 和 macOS 平台。
Windows 环境下,需要将程序放到 Real-ESRGAN 的目录下执行。Mac 环境需要在终端执行xattr -cr "Real-ESRGAN GUI.app"
命令后直接使用,不需要依赖 Real-ESRGAN 源程序。
Real-ESRGAN 对于算法小白的上手还是比较容易的,即便不懂算法知识,也可以直接使用。再配合简单易用的 realesrgan-gui,使用起来就更方便了。项目地址放到下面了,大家快去试试吧。
项目地址:https://github.com/xinntao/Real-ESRGAN
图形界面项目地址:https://github.com/TransparentLC/realesrgan-gui
问君能有几多愁,开源项目解千愁,我们下期再见!