用GPU加速FFmpeg中的超分辨率功能

1. 简要回顾首先简单复述一下FFmpeg中对深度学习的支持情况,如上图所示,FFmpeg在libavfilter中支持基于深度学习的filter,目前已经支持sr, derain和dnn_processing等filter,其中,dnn_processing是一个通用的filter,涵盖了sr和derain的功能,本文将要介绍的超分辨率(Super Resolution)功能也将使用dnn_processing来完成。为了实现模型推理功能,FFmpeg提供了三种不同的方式(被称为后端backend).
摘要由CSDN通过智能技术生成

file

1. 简要回顾

首先简单复述一下FFmpeg中对深度学习的支持情况,如上图所示,FFmpeg在libavfilter中支持基于深度学习的filter,目前已经支持sr, derain和dnn_processing等filter,其中,dnn_processing是一个通用的filter,涵盖了sr和derain的功能,本文将要介绍的超分辨率(Super Resolution)功能也将使用dnn_processing来完成。

为了实现模型推理功能,FFmpeg提供了三种不同的方式(被称为后端backend),分别是native 后端、tensorflow后端和openvino后端。native后端的所有代码实现都在FFmpeg代码树中,目前以C语言的形式存在,可以跑在各种host端CPU上。tensorflow后端是指FFmpeg调用动态库libtensorflow.so进行模型加载和推理,可以跑在x86 cpu、NV GPU等各类计算设备上。openvino后端是指FFmpeg调用动态库libinference_engine_c_api.so进行模型加载和推理,可以跑在x86 cpu、Intel GPU等各类计算设备上。顺便提一下,由于FFmpeg的要求,不能调用C++接口,所以这些动态库都是提供C语言接口的库文件。

另外,在filter和后端之间,设计了一个用来解耦的接口层DNN interface,这样,filter可以很方便的从这个后端切换到另外一个后端,方便FFmpeg的开发者和用户无需修改代码,只需简单修改参数即可无缝切换到不同的计算设备上。

接下来将介绍如何使用tensorflow后端在NV GPU上加速Super Resolution,以及如何使用OpenVINO后端在Intel GPU上加速Super Resolution。

2. 资料准备

Super Resolution最本质上就是对视频图片的放大,在深度学习技术的加持下效果更好。我们采用ESPCN模型(Efficient Sub-Pixel Convolutional Neural Network model),这是论文地址https://arxiv.org/abs/1609.05158。 这个模型的实现非常简洁,用了4层,依次是64个5x5的卷积层,32个3x3的卷积层,4个3x3的卷积层,卷积层的参数都是same,维持feature map尺寸不变;最后一层是depth2space层,将最后的4个feature map转换为长宽都乘以2的一张图片。

所有的模型文件和测试码流都已经放在了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值