API开发模式

ModelBox API开发模式即是开发者在代码中直接调用ModelBox 所提供的功能单元的API的方式来开发AI应用。ModelBox 支持Python,Java及C++语言的API接口,也可以扩展增加支持其它语言。

ModelBox API包含的模块主要有:

  • 输入模块:负责视频、音频等输入数据的接入管理;
  • 预处理模块:负责视频、音频等媒体数据的处理;
  • 推理模块:负责模型的初始化与推理任务;
  • 输出模块:负责推流、消息通知、告警、数据回流等输出任务的管理;
  • 资源管理模块:负责文件、图片、模型等资源的路径管理和上传下载;
  • 日志模块:负责日志系统管理。

一个典型视频车辆类型检测的Python代码如下:

mb.init()
packets = mb.unit.Demuxer(input_type=camera)
pics = mb.unit.Decoder(packets)
while(pics.finsih()!=eof)
{
pic = pics.getdata()
car_results = mb.unit.car_infer(pic)
car_results = mb.unit.split_by_dim(car_results)
while(car_results.finsih()!=eof)
{
car_result = car_results.getdata()
pic = mb.unit.draw_car(pic,car_result)
}
mb.unit.encoder(pic,output_type=camera)
}

从流程上来看是一个同步过程,但是实际上内部执行是异步的,所以使用API开发模式需要注意的有以下几点:

  • 尽量使用ModelBox API,ModelBox API提供了多平台的硬件加速能力,同时使用ModelBox API会在多个API调用内部实现一个子图,把同步调用转成了高并发的异步调用;
  • 尽可能不使用各个处理的中间结果,读取中间结果会打断整个处理的异步调用流,会导致整体的吞吐量变低;
  • 尽可能不把中间流程的结果转出到CPU侧 (比如转成CV::Mat),这会导致内存在CPU和加速硬件之间的拷贝,会极大的降低性能。

注:为了方便开发者,华为提供了配套的IDE,该IDE支持模拟器及输入、输出配套工具。开发者可以快速开发出符合ModelBox规范的AI应用,推荐使用。开发者也可以直接使用浏览器IDE,在浏览器IDE内断点调试应用,调试成功后,可以直接打包安装应用到支持ModelBox的设备上,可以一次开发支持相应的多种设备类型。

results matching ""

    No results matching ""