首批基于仓颉编程语言的高性能图像处理算法库发布


2024年6月21日下午,华为终端BG软件部总裁龚体先生在华为开发者大会主题演讲《鸿蒙原生应用,全新出发!》中向全球开发者介绍了华为自研仓颉编程语言,并发布了HarmonyOS NEXT仓颉语言开发者预览版。这是华为首次公开发布仓颉编程语言。

据介绍,复旦大学工研院认知与智能技术实验室(CITLab)领衔的研发团队与华为仓颉编程语言团队建立了的长期合作关系,早在仓颉语言内测启动以来,就密切关注其技术动态和应用前景。

复旦大学认知与智能技术实验室(简称CITLab),近年来一直在机器直觉、人机融合智能等新一代人工智能理论、脑机接口与脑启发人工智能、多模态感知与人机交互、计算机视觉与行为识别、物理仿真与数字孪生,以及智能机器人、智能网联汽车、智慧医疗等领域开展交叉创新研究,相关学术成果发表于Nature主刊,中国科学,NeurIPS,CVPR,ICCV,AAAI,ACM MM,ICRA以及IROS等国内外顶级期刊与学术会议,并积极开展产学研合作创新,助力解决产业发展中的技术难点、痛点问题。

经过调研,团队发现仓颉语言生态还缺少图像处理算法库的支持。结合团队在图像处理方向积累的丰富研发经验,通过对两个广泛使用的开源代码库zxing的条码识别算法和glide的图像加载与缓存机制进行深入分析,完成了适用于仓颉语言的高性能图像处理算法的研究、开发和优化,并成功实现了QRcode4cj(zxing for cj)和droplet(glide for cj)两个高频图像处理软件库


1.项目背景简介

HarmonyOS NEXT是华为公司自研的操作系统,是鸿蒙系列中首次抛弃Linux内核及安卓开放源代码项目(AOSP)等代码的版本,不再兼容安卓应用,标志着华为在操作系统领域的独立发展。

该系统采用了全栈自研的方式,从编程语言到编译器都是华为自主研发的,包括arkTS和仓颉编程语言、“盘古”AI大模型、“MindSpore”AI框架以及“DevEco Studio”等集成开发环境。

其中,仓颉编程语言是一种面向全场景应用开发的通用编程语言,语法简明高效,并支持函数式、命令式和面向对象等多范式编程,有助于提高开发效率。而一种新的操作系统包括一种新的编程语言的出现,首先需要解决的就是生态系统建设。

本项目的目标就是通过高性能图像处理算法库的示范研发,助力推动仓颉编程语言的生态建设和持续发展。

2.高性能图像处理算法库的实现

2.1 droplet图像处理库

droplet是一个强大的图片加载和缓存库,使用仓颉语言开发,服务于HarmonyOS NEXT应用开发。它简化了从网络、资源文件、应用缓存中加载和显示图片的过程。droplet支持多种图片格式,具有高效的内存管理和磁盘缓存策略,能够自动处理图片缩放和转换,提供流畅的用户体验。在droplet的实现过程中,团队采用了三级缓存设计、高效的异步图像加载流程两种优化设计思路。

其中,三级缓存设计包括活动资源缓存、内存缓存和磁盘缓存。活动资源缓存用于保存当前页面上正在显示的图片,图片首次加载完毕时会保存到活动资源缓存中。由于活动资源缓存中的数据一般会比内存缓存中少,因此具有更快的查询速度。而内存缓存负责保存整个程序运行过程中加载过的所有图像,它使用LRU算法,当缓存超出容量,首先回收不经常使用的图像。此外,drople提供了磁盘缓存功能,即使应用被关闭或系统资源被回收,图片仍然可以被缓存并快速重新加载。

此外,项目设计了高效的异步图像加载流程。drople的图像加载部分使用了策略模式,可以根据图像的格式选择加载器,并支持异步加载、图像缩放、旋转等操作。这使得在不同大小的屏幕上加载和显示图片变得简单而高效。

进一步,droplet的图像解码部分依托于仓颉UI框架强大的图像解码功能,实现了对gif、jpeg、png、svg、webp、raw等常用图像类型文件的解码支持。

2.2 QRcode4cj图像处理库

QRcode4cj是一维/二维码图像处理库,支持多种1D/2D码格式,如QR码、EAN-13等。它用仓颉语言实现,并提供了跨平台的API,用于生成和解码条码,可广泛应用于移动支付、信息分享等场景。其优势在于多格式支持、高性能和易集成。QRcode4cj的实现为HarmonyOS NEXT开发提供了开箱即用的编解码库。

QRcode4cj提供了针对仓颉优化的条码识别库,能够准确、快速地解码不同类型的条码。其条码识别算法经过优化,可以在复杂环境下有效解析二维码,开发者能轻松地从各种质量的图像中提取条码所包含的信息。同时,QRcode4cj提供了强大的条码生成的能力。可以根据开发者的需要生成各种类型的条码图像。此外,QRcode4cj实现了高效且易用的图像处理算法,结合仓颉语言的特性进行了深度优化,极大提高了代码的执行效率,经过测试,相同条件下编解码时间均优于Java版本。

3.深度算法优化

图像处理算法的复杂性较高,为了获得良好的用户体验,团队对相关算法进行了深度优化,以便显著提升计算效率,减少资源消耗,加快处理速度,同时提高系统稳定性和性能,满足不断增长的应用需求。

为了分析代码的执行效率,团队使用了仓颉语言提供的可视化性能分析工具(cjprof),在深入分析了性能数据并结合仓颉语言的特性之后,从代码、算法和并行化三个层面对两个图像处理库的核心算法进行了优化:

  1. 代码层面:首先通过精简和提炼,实现程序的轻量化设计,去除冗余代码,提高代码的执行效率。其次对代码的逻辑进行优化,通过重新设计算法流程,减少不必要的计算过程和方法调用,进一步提升系统性能。
  2. 算法层面:优先采用在行业中经过高度覆盖验证的算法,以确保主干算法的稳定性和有效性。同时设计了灵活的接口形式,开发者可以通过多种方式实现所需的功能。
  3. 并行化层面:以仓颉语言提供的抢占式的线程模型(仓颉原生协程)为基础,将部分程序的计算过程并行化,并在仓颉原生协程的基础上封装了协程的调度策略,确保并行计算过程的有序性和高效性。

此外,针对软件库中高频使用的算法进行了更细致的优化。新算法将原有识别步骤进行精细拆分与重新整合,引入了快速扫描和初步分析机制。这一优化策略在保持高准确性的同时,显著提升了识别效率,为用户提供了更加流畅、快捷的识别体验。

4.小结

经过对仓颉语言的深入研究和实践,团队发现仓颉语言的优势在于多范式编程、原生协程、功能丰富的内置库和对AI开发的支持,并且有一系列较为完备的配套开发工具,能够简化从代码的编写到程序性能分析、测试和优化,以及最终的应用部署的整套开发流程,大幅提高应用软件的开发效率。

相信在仓颉语言发布之后,将会吸引更多的软件开发者加入到仓颉语言的开发中来,助力鸿蒙NEXT应用开发与生态环境建设,彻底打破国外编程语言的垄断。


相關推薦

2024-06-22

华为终端BG软件部总裁龚体宣布,下一代编程语言仓颉今日起正式开启预览。 仓颉编程语言官网:https://developer.huawei.com/consumer/cn/cangjie/ 仓颉编程语言作为一款面向全场景应用开发的现代编程语言,通过现代语言特性的集成

2022-08-11

伴随自动化流程复杂性和规模增加的级联挑战。与标准的基于梯度的替代方案相比,进化算法不需要可微的成本函数,并且更适合现代硬件上的大规模并行化。这意味着可以更高效地解决从学习机器人控制器到优化计划或产品设

2022-09-08

模型导出;框架采用主流的模块化设计,灵活可扩展。 高性能 :支持多机多卡训练和评估,fp16训练加速。针对自监督场景数据量大的特点,利用DALI和TFRecord文件进行IO方面的加速。对接阿里云机器学习PAI平台训练加速、模型

2023-06-17

会成立、上海昇思AI框架&大模型创新中心正式启动及首批22家单位入驻、全模态大模型“紫东·太初2.0”正式发布等。 本次峰会以“一起昇思 无尽创新”为主题,全面聚焦人工智能框架生态发展,推动人工智能产业创新,共

2024-06-22

可配置等能力。 IPC支持异步消息发送方信息、并提供高性能读写共享内存的JS北向接口能力。 IPC_Core和IPC_Single公共部分解耦,持续优化内存使用。 分布式数据管理 Preferences支持可序列化为JSON的Object类型,及基于key

2023-05-27

管理一体化平台。 在内核创新方面,openGauss坚持围绕高性能、高可靠、高安全和高智能四个方面提升技术竞争力: 性能方面,关键基础算子性能大幅提升,可用性方面支持虚拟IP部署; 安全方面,细粒度用户级审计,防

2023-04-08

型,提供了应用程序必备的组件和运行机制。开发者可以基于该模型进行复杂应用开发,使应用开发更简单、高效。 以类形式提供组件开发,方便开发者基于类扩展。 进程内共享虚拟机实例,减少应用内存占用。 支持在

2024-06-06

领域的旗舰孵化器——深圳“模力营”AI生态社区揭牌,首批11家人工智能企业签约入驻“模力营”。 深圳“模力营”AI生态社区是粤港澳大湾区首个垂直领域大模型生态系统,专注于构建集创新资源与高阶服务为一体的生态服

2023-10-11

面助力国家产业升级转型和经济发展。 太平创新是国内首批经原中国银保监会批准设立的保险系私募基金管理公司之一,作为中国太平保险集团旗下专业私募股权投资平台,充分发挥保险资金的专业优势与中国太平的央企担当

2024-04-16

彭博社记者 Mark Gurman 报道称,苹果计划为 iOS 18 推出的首批 AI 功能将完全在端侧上运行,不依赖云服务器。 iOS 18 预计不会包含苹果自己的类 ChatGPT 的聊天机器人,但目前还不清楚 Gemini 或其他聊天机器人是否会直接集成到 iOS 1

2024-07-05

增量刷新。 更完善的透明改写能力: StarRocks 3.3 支持了基于文本和视图的物化视图改写。 除了原来标准 SJPG 的改写能力之外,基于视图的 MV 改写可以把针对视图的查询改写到对等的物化视图上,适用于建模和指标平台等场景

2023-12-07

。“天河星逸”以应用为中心,采用国产先进计算架构、高性能多核处理器、高速互连网络、大规模存储等关键技术构建,全面满足高性能计算、AI 大模型训练、大数据分析等应用场景需求,将为广州市、广东省和粤港澳大湾区

2024-08-10

数据湖和数据仓库融合的阶段,要想充分利用数据仓库的高性能和数据湖的开放性,整合这两者变得至关重要。 SelectDB 基于 Federated Query Engine(联邦查询引擎) 和 Open Data Lake(开放数据湖) 特性进行了大量的技术创新,以实

2023-03-15

的服务器板卡,算能 SG2042 是一款拥有64MB的L3共享缓存的高性能RISC-V处理器。此次成功适配是deepin for RISC-V生态的关键进展。 去年11月,deepin操作系统在V23 Alpha版本中正式适配RISC-V。在stage1 ,deepin实现了在RISC-V平台上适配DDE桌