华为云AI开发平台ModelArts样例介绍_云淘科技

在创建工程时选择“vehicle_detection”工程模板将会创建视频车辆检测样例工程,该样例是一个视频类的ModelBox应用样例,通过读取视频,经过目标检测的模型得到视频中车辆的位置。该样例中“src”目录下预置了视频车辆检测的具体实现,它包含“flowunit”和“graph”两个目录,分别代表功能单元和图。

在基于ModelBox框架的AI应用开发中,AI应用是由图构成的。其中,功能单元可以理解为一段相对独立的数据处理功能,所有功能单元编排连线后构成图,代表一个AI应用。图在ModelBox中的呈现形式为toml文件,在该样例中位于如下路径:

src/graph/vehicle_detection.toml

图1 AI应用样例

该toml文件代表的数据处理流程如下:

图2 数据处理流程

该图从上到下代表了对输入视频的每一步数据处理。“video_input”是功能单元接收的输入视频流,往下分别经过“videodemuxer”和“videodecoder”功能单元,“videodecoder”功能单元输出“image”,“image”经过前处理,包含“resize”、“normalize”之后,送给模型(“vehicle_inference”是一个yolov3模型),模型将推理得到的bbox结果传入后续的后处理功能单元进行处理(vehicle_bbox_post),可得到最终的bbox框,将bbox框和“videodecoder”出来的“image”一同送入“draw_bbox”中,将绘制完bbox的image传入“videoencoder”,即得到带有检测框的视频流输出。

流程图中的各个功能单元的实现,一部分是直接使用ModelBox框架预置的功能单元,预置功能单元位于“/usr/local/lib64/”目录下,以二进制so文件的形式提供;另一部分是自己开发的功能单元,位于“src/flowunit”目录下。

图3 功能单元

每一个功能单元中即为该单元模块的实现代码,功能单元有三种类型,分别为“cpp”、“python”和“infer”,即c++功能单元、python功能单元以及推理功能单元。图4为一个c++功能单元的样例,Process函数为数据处理主函数。

图4 C++功能单元样例

父主题: 应用样例1:视频车辆检测

同意关联代理商云淘科技,购买华为云产品更优惠(QQ 78315851)

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家