FFmpeg深度学习模块的历史、现状和计划

本文由英特尔资深工程师郭叶军分享,介绍了FFmpeg中深度学习模块的历史、现状和未来计划。FFmpeg通过深度学习模块支持多种计算机视觉算法,包括超分辨率和目标识别等。该模块允许开发者更便捷地在FFmpeg中应用深度学习,减少对OpenCV的依赖。文章还探讨了FFmpeg与OpenCV的关系,并讨论了FFmpeg深度学习模块的架构、开发历史和未来发展方向。
摘要由CSDN通过智能技术生成

本文来自英特尔资深图形图像软件工程师 郭叶军在LiveVideoStack线上分享的内容,详细介绍了FFmpeg中深度学习模块的历史、现状及未来计划,并针对深度学习模块总体架构与代码实践做详细解析。

文 / 郭叶军

整理 / LiveVideoStack

回放链接:https://www.livevideostack.cn/video/online-gyj/

很高兴能有机会在LiveVideoStack做有关于FFmpeg深度学习模块相关内容的技术分享。

1

为什么需要在FFmpeg中实现深度学习模块

首先,为什么需要FFmpeg深度学习模块,FFmpeg对输入的码流,首先进行解码,解码后得到一个个的视频帧,以及相应的音频数据等。经过一系列的Filter之后,最后可以进行重新编码或者直接播放出来。这些filter的功能包括传统的图像处理,也包括一些统计功能,比如直方图等。在深度学习的算法出来之后,由于它太有效了,包括很多的算法功能,例如超分辨率、目标识别、人脸检测、目标检测、人脸识别等等,都需要深度学习的算法来实现。所以,我们需要拓展filter的功能,使它可以支持深度学习算法。  

当我们将深度学习的算法加入到FFmpeg的Filter之后,Filter就拥有了很多计算机视觉相关的算法。那么它与比如说OpenCV的计算机视觉软件包有什么关系?这个问题我们可以从两个角度来看:在支持深度学习算法之前,FFmpeg与OpenCV是相互配合、相互支持的一种关系。例如在OpenCV中,可能需要先调用FFmpeg进行视频解码,解码完成后回到OpenCV中进行相应的计算机视觉算法应用。此外,在FFmpeg中有一些Filter,这些Filter背后调用的就是OpenCV,通过这种方式来使用OpenCV中的一些算法功能。但是在比较新版本的OpenCV中,接口语言切换成了C++,而在FFmpeg中要求的是C代码和并且调用的是C库的接口, 因此FFmpeg基于OpenCV的Filter就很难用上OpenCV的最新算法功能,所以在这种情况下就很有必要在FFmpeg增加深度学习模块来支持多个Filter应用深度学习算法。

从另外一个角度来看,在之前,对于计算机视觉的算法开发者来说,会在OpenCV中进行算法实现,代码完成后基本不太可能再次在其它应用中重新实现一次,那么这也就造成了很多的计算机视觉算法都只在类似于OpenCV的软件包中完成。而在深度学习模块,算法实现的载体已经从以前的代码变成了模型文件,模型文件可以很容易的分发出去,被各个软件包通过恰当的方式进行加载、执行,从而实现一些深度学习算法的功能。综上所述,无论从什么角度来看,我们都有必要在FFmpeg中增加深度学习相应的模块。在增加深度学习模块之后,对于FFmpeg的开发者来说开发工作会更灵活,速度更快。想象一下,在这之前对于FFmpeg的开发者来说,需要首先调用FFmpeg的API进行解码,解码完成后,再编写代码或者调用第三方库等实现深度学习算法的应用,最后再回到FFmpeg中进行编码。而深度学习模块就相当于将之前用户需要自行开发的深度学习实现相关的部分转移到FFmpeg内部,以Filter的形式对外暴露,因此对于FFmpeg的开发者来说开发变得更加便捷。

2

FFmpeg深度学习模块的发展历史

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值