每个神经网络都有不同的后处理方法。在 Vitis AI Library 中提供了 xnnpp 后处理库,用于为用户调用提供便利。它支持以下神经网络后处理。
- 分类
- 面部检测
- 面部界标检测
- SSD 检测
- 姿势检测
- 语义分割
- 道路标线检测
- YOLOv3 检测
- YOLOv2 检测
- Openpose 检测
- RefineDet 检测
- ReID 检测
- 多任务
- 面部识别
- 车牌检测
- 车牌识别
- 医学分割
- 医疗检测
- 面部质量
- 沙漏 (Hourglass)
- Retinaface
- Centerpoint
- Multitaskv3
- Pointpillars_nuscenes
- Rcan
- vehicleclassification
- ofa_yolo
- efficientdet_d2
- ocr
- textmountain
有两种方法可用于调用 xnnpp
:
- 使用自动调用通过
vitis::ai::<model>::create
来创建任务,如vitis::ai::YOLOv3::create("yolov3_bdd", true)
。完成 <model> 运行后,即可自动处理xnnpp
。您可通过模型配置文件来修改参数。 - 使用手动调用通过
vitis::ai::DpuTask::create
来创建任务。然后,创建后处理对象,并运行后处理。使用以下步骤。使用 SSD 后处理作为示例:- 创建配置,设置关联数据来控制后处理。
using DPU_conf = vitis::ai::proto::DpuModelParam; DPU_conf config;
- 如果使用 caffemodel,请将“is_tf”设为 FALSE。
config.set_is_tf(false);
- 填充其它参数。
fillconfig(config);
- 创建 SSDPostProcess 对象。
auto input_tensor = task->getInputTensor(); auto output_tensor = task->getOutputTensor(); auto ssd = vitis::ai::SSDPostProcess::create(input_tensor, output_tensor,config);
- 运行后处理。
auto results = ssd->ssd_post_process();
- 创建配置,设置关联数据来控制后处理。
注释: 如需了解有关后处理示例的更多详细信息,请参阅主机系统中的 ~/Vitis-AI/examples/Vitis-AI-Library/samples/dpu_task/yolov3/demo_yolov3.cpp 和 ~/Vitis-AI/src/Vitis-AI-Library/yolov3/test/test_yolov3.cpp 文件。