前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >高性能图像处理的新利器——FlyCV

高性能图像处理的新利器——FlyCV

作者头像
用户1386409
发布2023-03-06 14:11:41
5250
发布2023-03-06 14:11:41
举报
文章被收录于专栏:PaddlePaddlePaddlePaddle
本系列根据WAVE SUMMIT+2022深度学习开发者峰会「飞桨升级 创新引领」论坛嘉宾分享整理。本文整理自百度资深研发工程师杨尊程的主题演讲——高性能图像处理的新利器FlyCV。

大多数从事计算机视觉相关岗位的人基本上都使用过OpenCV。OpenCV于2000年发布首个开源版本,随着深度学习技术的深入,其在视觉产品工程化落地过程中产生新的问题。例如在移动端设备上,因包体积较大,占用储存空间和APP网络下载时间。在算力较低的AIoT设备上,性能表现不好。因此,百度视觉团队萌生了开发一个高性能图像处理库的想法。

FlyCV是百度视觉团队内部孵化高性能轻量化的图像处理系统。该系统基于飞桨平台开源发布,利用自身高性能、轻量化、跨平台的三大核心优势,帮助更多企业开发者提升AI视觉产品开发的综合体验。

FlyCV的应用场景及解决的问题

几乎所有计算机视觉任务都需要进行图像处理,常用操作包括缩放、旋转、抠图等。FlyCV主要专注于图像处理领域,着重解决了在算力、资源受限场景下的图像处理性能问题,并改善对国产化芯片的支持情况,提升适配效率,大幅优化产品落地时面临的库体积和兼容性等问题。

FlyCV的核心优势

当前,FlyCV的核心优势是:

高性能。FlyCV重点优化了ARM端的性能,主流算子在性能上全面领先OpenCV。

轻量化。相比OpenCV,FlyCV体积缩减90%,通过粗细双层模块化设计,能够进行算子级别的编译选项控制,实现按需编译,生成最小库文件。对于常用的图像处理操作,使用OpenCV动态库需要15.9MB,而使用FlyCV只需要1.3MB。

跨平台。目前FlyCV支持5类主流操作系统,覆盖移动端、嵌入式、PC设备。

下面展开来说说这三点核心优势的详情。

高性能

如下方动图所示,演示动图采用高通骁龙636芯片手机,分别使用FlyCV和OpenCV对14张1080P的图片进行三项图像处理操作,并计算平均耗时进行对比。执行操作分别是颜色空间转换、仿射变换和图像缩放。运行结果显示,FlyCV平均耗时29.6ms,OpenCV平均耗时64.91ms。在三项操作中,FlyCV比OpenCV性能提升1倍。

如下图所示,左侧柱状图显示的是低、中、高三类算力设备的性能测评数据,并对18类常用算子的平均性能进行统计。运行结果显示,在高算力骁龙888芯片上,FlyCV算子性能提升了36%。在中算力骁龙835芯片上,算子性能提升了1.77倍。在低算力骁龙625芯片上,FlyCV算子性提升了4.38倍。

右侧表格显示的是当采用骁龙835芯片测评设备,处理1080P的图片数据时,FlyCV性能提升排名前十的算子。相比于OpenCV,FlyCV算子性能提升超过61%,最高可达9倍。例如融合算子(bgr_to_rgba_with_mask),OpenCV耗时10毫秒以上,但FlyCV仅耗时1.2毫秒,性能提升明显。

为了提升性能,百度采用了一系列的优化方法。

  • ARM端

FlyCV结合32位、64位汇编进行优化,使用NEON指令进行并行计算,同时布局ARM最新V9指令集SVE2。实际上,使用汇编不一定会提升速度,因为像C++编译器已完成很多指令优化工作,所以在开发汇编程序时,工程师还需要做好很多方面的设计,比如数据分块、分组、预取等,进而极大提升cache的命中和流水线的并行度。在这方面,FlyCV经过长时间打磨,已经有了一些成熟的积累。

  • X86平台

FlyCV开展了AVX/SSE指令集的优化工作。

  • 算子融合方面

FlyCV通过联合多个操作、减少数据传递、提升计算并行度等方法,进一步缩小耗时,目前已支持5+综合算子。

  • 异构计算方面

FlyCV正在开展类似硬件加速、GPU加速的建设。

轻量化

目前,FlyCV已应用在20多款百度视觉产品,在体积缩减90%以上的同时,大幅提升性能表现。

如下图所示,FlyCV在人脸离线识别SDK、数字人方案、度目智能门禁机等软件设备上都显著提升产品性能,特别是在文字识别和小度机器人这类产品中,在体积减小的同时,性能实现了提升。其中,具体的体积缩减大小与集成FlyCV的方式有关,如果使用动态库或静态库进行集成,结果会略有不同。

跨平台

FlyCV支持五类主流操作系统,覆盖移动端、嵌入式、PC等设备。

在系统架构最上层,FlyCV实现了6大类算子应用,比如图像转换、图像绘制、图像求值、多媒体IO、数学运算和融合算子。其核心模块主体基于C++,实现了定制汇编模块,并在内部设计集成了多线程框架和硬件加速等方案。

目前,FlyCV在GitHub上提供源码、编译工具和Docker镜像,用户可以下载预编译库,直接集成。同时FlyCV还提供一些文档、Demo示例工程,并在飞桨FastDeploy部署工具中集成,供用户使用。

  • GitHub项目地址

http://github.com/PaddlePaddle/FlyCV

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-01-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 PaddlePaddle 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
图像处理
图像处理基于腾讯云深度学习等人工智能技术,提供综合性的图像优化处理服务,包括图像质量评估、图像清晰度增强、图像智能裁剪等。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档