GitHub 又一开发必备神器问世,代号「LiteKit」
一款没有任何 AI 实践的产品,不仅要进行模型的训练、预测引擎的集成,还需要根据不同模型进行数据的前后处理,图像的各种颜色空间、存储格式的转换,过程中可能会使用到 Python、C/C++、iOS、Java 等多种语言,接入门槛高。
同时,接入 AI 能力的过程非常复杂,涉及引擎调用相关开发、前后处理相关开发、甚至并发相关处理,考虑到移植和复用情况,更需要兼容多种业务场景、进行模块化拆分,导致工作量成倍增加。
视频超分
(图1:高清原视频)
(图2:低清超分后视频)
性能优化
从上面的测试结果可以看到,在 18 年 iPhoneXsMax 上,视频超分也能够达到 32.15ms 的预测速度,支持播放器 25FPS 的超分。在最新的 iPhone12 上,相比 iPhoneXsMax,预测速度进一步提升 30%。
手势识别
人像分割
快速体验
可以一秒接入的AI能力
如何接入
// 1. 创建实例,创建接口为同步的接口,不需要进行额外的配置。
self.srVideo = [LiteKitVideoSuperResolutionor createVideoSuperResolutionorWithError:&error];
// 2.推理,对于视频超分,只需要输入后图片和scale倍数,即可获得超分后的图片。
UIImage *newImg = [self.srVideo superResolutionWithUIImage:inputImage scale:1.0 error:&error];
// 3. 释放,根据业务场景定义
self.srVideo = nil;
LiteKit的设计
创建后,可以反复使用执行推理
推理的过程整体只有一类 API:对输入数据(input)执行推理,同步返回输出数据(output)。图中和模型直接相关的前后处理的流程,都被封装在了AI能力推理接口内部,用户既不需要关心,也不需要任何处理。为了方便不同业务不同的输入,每个能力的推理接口可能有几个,这几个接口能力完全相同,唯一不同的只是输入和输出类型,用户通常只需要根据自己的输入输出类型关心最便捷使用的一个即可。
释放与创建一一对应,当 AI 业务退出的时候,执行即可。
LiteKit的架构
移动端的 AI 开发者接入了 LiteKitCore 之后,不必再关心推理引擎的配置、模型的加载等复杂操作,LiteKit 内部管理了推理引擎大部分复杂的配置,同时仍然支持使用者灵活的配置一些入模型地址等的关键参数。
LiteKitCore 向上对 AI 能力的开发者,提供了 Java/ObjectiveC/C++ 三套接口,能大大降低端 AI 开发者的开发成本。
使用 LiteKitCore 创建 AI 推理引擎管理实例,不再需要关心模型的结构,推理引擎的使用方式,只需要通过 LiteKitCore 进行简单的配置。
// 1. 创建config
litekit_framework::LiteKitConfig config;
config.machine_type = litekit_framework::LiteKitConfig::MachineType::PaddleLite; // machine_type设置
litekit_framework::LiteKitConfig::PaddleLiteConfig paddle_config;
paddle_config.model_type = litekit_framework::LiteKitConfig::PaddleLiteConfig::LITE_MODEL_FROM_FILE; // 设置模型的路径
paddle_config.model.model_from_file.data = fileDir.data;
paddle_config.model.model_from_file.size = fileDir.length;
config.machine_config.paddle_lite_config = paddle_config;
/*省略一些不重要属性的设置*/
// 2. 加载machine
std::shared_ptr<litekit_framework::LiteKitMachineService> service = litekit_framework::CreateLiteKitMachineService(config);
使用 AI 推理能力的时候也不需要关心推理引擎具体如何调用,LiteKitCore 提供方便使用的 C++/Java/ObjectiveC API。
// 1. 创建input
std::unique_ptr<litekit_framework::LiteKitData> inputData = service->getInputData(0);
litekit_framework::LiteKitTensor *ainput = inputData->litekitTensor;
// 2. 执行predict
service->run();
// 3. 获取output
std::unique_ptr<const litekit_framework::LiteKitData> outputData = service->getOutputData(0);
const litekit_framework::LiteKitTensor *output_tensor = outputData->litekitTensor;
展望
LiteKit 在不久的将来还会开放 OCR 等更多的能力,支持更多的业务场景。大家对 LiteKit 即将开放的能力,还有什么期待呢,如果有的话,就请快速扫描二维码,填写您对 AI 能力的需求吧。
相关链接
LiteKit GitHub 地址:
飞桨(PaddlePaddle)以百度多年的深度学习技术研究和业务应用为基础,是中国首个开源开放、技术领先、功能完备的产业级深度学习平台,包括飞桨开源平台和飞桨企业版。飞桨开源平台包含核心框架、基础模型库、端到端开发套件与工具组件,持续开源核心能力,为产业、学术、科研创新提供基础底座。飞桨企业版基于飞桨开源平台,针对企业级需求增强了相应特性,包含零门槛AI开发平台EasyDL和全功能AI开发平台BML。EasyDL主要面向中小企业,提供零门槛、预置丰富网络和模型、便捷高效的开发平台;BML是为大型企业提供的功能全面、可灵活定制和被深度集成的开发平台。
END