高性能轻量化的图像处理系统——FlyCV

news/2023/5/28 8:21:47

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

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

2f524326b40f662e5a6b1d0fc9783f1a.pngFlyCV的应用场景及解决的问题

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

385438221c9948e1a1acd975519d5055.png

53daa1f4d4ce5b49e1a4741528d378c1.pngFlyCV的核心优势

当前,FlyCV的核心优势是:

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

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

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

ee36c360fc44a43eb11a5c29fea1026d.png

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

17a056e9b1090a8f1deeb4f34d80dbc6.png高性能

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

ebf97afb36ab51e1072db966116c44ac.gif

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

77a72f197edd33ff6350d4a9b9868104.png

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

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

da290d5b1033e1c1a644a67e6ac9c14d.png

ARM端

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

X86平台

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

算子融合方面

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

异构计算方面

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

0786e51cb40327002c8fda243f8dfc8f.png轻量化

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

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

17bf9f6f2fdf678fb03339e3b7e021c3.png

4ec90c9bb2143f4576e7b86ccea025c4.png

跨平台

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

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

f84d2a43d2c1640c9a0eba922b645c2f.png

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

f0d1aa9e3a577d656b1572fc87f621dd.png

GitHub项目地址

http://github.com/PaddlePaddle/FlyCV

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-4557911.html

如若内容造成侵权/违法违规/事实不符,请联系郑州代理记账网进行投诉反馈,一经查实,立即删除!

相关文章

workflow标准活动

在WF中,工作流分为两种类型,序列式(Sequential)和状态机(State Machine)。 序列式工作流将一系列待执行的呃步骤以一种预先描述好的次序描述出来。在这种工作流里,控制流程的是我们很熟悉的诸如…

Windows Workflow学习笔记

Workflow Runtime ps:一个AppDomain只能有一个workflowRuntime实例。 表2-1 WorkflowRuntime的属性属性功能IsStarted用来指明workflow运行时是否已经启动并准备接受workflow实例。当宿主调用“StartRuntime”前IsStarted为False。期间它一直维持True直到宿主调用“…

LeetCode刷题笔记 - JavaScript(二)

文章目录1.剑指 Offer 60. n个骰子的点数2.面试题67. 把字符串转换成整数3.面试题59 - II. 队列的最大值剑指 Offer 60. n个骰子的点数 面试题67. 把字符串转换成整数 面试题59 - II. 队列的最大值 1.剑指 Offer 60. n个骰子的点数 把n个骰子扔在地上,所有骰子朝上一…

实用 Git Workflow

创建分支分支是 Git 的核心概念,同时 Git Workflow 也是基于分支进行操作.当你新增功能或修复 bug 时候,新建一个分支是一个不错的选择,这将不会影响主分支 master. 所以你可以放心地尝试和提交更改,直到代码审查和运行通过&#…

WorkFlow建立

所谓WF,就是.NET Framework 3.0的一个构成部分——Windows Workflow Foundation。 工作流(workflow)是为了完成一些预定的目的,根据一组规则,而制定的一系列步骤。对于一个开发者来说,workflow则是将复杂的…

Workflow Engine for .Net Core ENTERPRISE v4.0.10-SEO-狼术

Workflow Engine for .Net Core ENTERPRISE v4.0.10 ( Nov 2019 ) 对于希望将Workflow Designer集成到其项目中并使用路由的公司,Workflow Engine是理想的解决方案。 基本元素集允许业务用户自行修改工作流方案。您可以将Workflow Engine集成为嵌入式组件或通过RE…

GitFlow Workflow

介绍 Gitflow是Git工作流的一个抽象概念,它定义一系列的规则,建立什么样的分支,怎么merge不同的分支。 Gitflow适合定期更新发布的项目。它将不同分支(branch)赋予不同的角色,规定好不同分支间如何相互作用…

疯狂java workflow_疯狂Workflow讲义:基于Activiti的工作流应用开发 完整pdf扫描版[136MB]...

《疯狂Workflow讲义:基于Activiti的工作流应用开发》内容概括:本书是一本介绍Java工作流领域的书,以Activiti为核心,内容囊括了多个流行的企业级Java EE框架,全书主要可分为以下几个部分。第1部分:对Activi…

Hadoop与workflow入门

1、学习hadoop MapReduce流程: (1)使用split对输入文件进行分片,每个分片作为一个map任务。注意,输入分片存储的 并非数据本身,而是一个分片长度和一个记录数据的位置的数组。分片的大小由block决定&#x…

git WorkFlow规范

1、介绍 WorkFlow 的字面意思,工作流,即工作流程。工作流不涉及任何命令,它是一个规则,是由开发者自定义自遵守的规则,需要我们每个开发者熟悉并且也必须遵守的规则。 2、名词介绍 主要分支: • master&a…

Windows Workflow Foundation 2 规则引擎简介

转载于:MSDN http://www.microsoft.com/china/MSDN/library/Windev/WindowsVista/intWF_FndRlsEng.mspx?mfrtrue 摘要:本文概述 Windows Workflow Foundation (WF) 中规则引擎的功能。本文描述如何在 WF 中使用条件和 RuleSet,并讨论规则集合…

使用工作流Workflow规则更新机会Opportunity的可能性

作业: 销售机会可能性估算。 需求:业务员会通过SFDC录入销售机会,一旦这个销售机会所属客户的行业是government,且在一年内有过成功关闭的销售机会(Won equals true),那么自动对此销售机会进行加权处理,其可能性设置为…

尚医通-医院详情功能(二十七)

目录: (1)前台用户系统-医院详请-情接口开发 (2)前台用户系统-技术点-nuxt路由 (3)前台用户系统-医院详情-前端整合 (1)前台用户系统-医院详-情接口开发 现在做在页面…

Android事件分发机制收藏这一篇就够了,我先收藏为敬

前言 刚从阿里面试回来,想和大家分享一些我的面试经验,以及面试题目。 这篇文章将会更加聚焦在面试前需要看哪些资料,一些面试技巧以及一些这次的面试考题。 学会深入思考,总结沉淀 我想说的第一条就是要学会深入思考&#xf…

二级c语言上机题库及解析,2013年计算机二级C语言上机题库及答案解析(3)

填空题给定程序中,函数fun的功能是:在形参ss所指字符串数组中,查找含有形参substr所指子串的所有字符串并输出,若没找到则输出相应信息。ss所指字符串数组中共有N个字符串,且串长小于M。程序中库函数strstr(s1, s2)的功能是在 s1串…

传输层协议:TCP协议(上)——协议结构、主要特点以及应用场景

简介 传输控制协议(英语:Transmission Control Protocol,缩写:TCP)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。在简化的计算机网络OSI模型中,它完成第四层传…

用c语言做判断题题库及答案,河南工业大学C语言题库判断题

判断题1.计算机的一切操作都是由程序控制的,离开了程序,计算机将一事无成。~y 2.所谓程序就是一组计算机能识别和执行的指令。~y3.由于计算机能直接识别和接受机器指令,所以机器语言是最适合人们编程的语言~n 4.编译程序可以把用高级语言写的…

〖百宝书-思维锻炼③〗——三心理论——成功的来源

大家好,我是涵子,今天我们来聊聊三心理论。 💬 人生格言:Stay foolish, stay kind.💬 📫 如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步👀 &a…

什么是两化融合贯标?

近期,很多企业都开始关注两化融合,但有些企业不是很了解两化融合是什么,为了让更多的企业可以深入了解到什么是两化融合,同邦信息科技的小编就给大家说一下两化融合指的是什么? 两化融合是“信息化”和“工业化”的高层…

众达两化融合贯标日记16~两化融合差距分析报告

“ 两化融合差距分析报告。” 差距分析报告为下一步工作计划提出指导性的建设意见,通过差距分析报告,我们可以得出企业下一步需要具体工作的内容。也是两化融合升级版贯标平台必须上传内容之一。 企业在数据集成与共享、IT软硬件、数字化转型环境分析、数…