ONNX-MM目标检测(faster-rcnn)
使用ONNX Runtime调用ONNX格式的MMDetection预训练模型 faster-rcnn_r50_fpn_1x_coco 开发的目标检测应用。
MMDetection 是一个基于 PyTorch 的目标检测开源工具箱,它是 OpenMMLab 项目的一部分。
模型下载:
pip3 install openmim==0.3.7
mim download mmdet --config faster-rcnn_r50_fpn_1x_coco --dest model_data
得到:
模型文件: faster_rcnn_r50_fpn_1x_coco.pth
配置文件: faster-rcnn_r50_fpn_1x_coco.py
模型转换(PyTorch => ONNX):
python3 deploy.py mmdeploy/configs/mmdet/detection/detection_onnxruntime_dynamic.py model_data/faster-rcnn_r50_fpn_1x_coco.py model_data/faster_rcnn_r50_fpn_1x_coco.pth demo.jpg --work-dir model_data --device cuda --dump-info
deploy.py 来至于 MMDeploy 项目中的: https://gitee.com/open-mmlab/mmdeploy/blob/main/tools/deploy.py
得到:
end2end.onnx
然后改名为: faster_rcnn_r50_fpn_1x_coco.onnx
模型应用开发和部署
模型服务化
本模型基于 ServiceBoot微服务引擎 进行服务化封装,参见: 《CubeAI模型开发指南》
直接源代码运行
$ sh pip-install-reqs.sh
$ serviceboot start
或
$ python3 run_model_server.py
本地容器化部署
一键式本地容器化部署和运行,参见: 《CubeAI模型独立部署指南》 或 CubeAI Docker Builder
云原生网络部署
本模型服务可一键发布至 CubeAI智立方平台 进行共享和部署,参见: 《CubeAI模型发布指南》
API接口
本模型提供了4个API接口:
-
API接口1:
-
API端点: /api/data
-
HTTP方法: POST
-
HTTP请求体:
{
"action": "predict",
"args": {
"img": <压缩图像的base64编码字符串(或其Data URL表示)>
}
}
-
HTTP响应体:
{
"status": "ok"|"err",
"value": [<results>, <带目标检测标注的base64编码压缩图像URL>]
}
-
API接口2:
-
API端点: /api/data
-
HTTP方法: POST
-
HTTP请求体:
{
"action": "predict_video",
"args": {
"url": <云端视频流媒体URL, 例如: rtmp://localhost/live/ch1>
}
}
-
HTTP响应体:
{
"status": "ok"|"err",
"value": <(流媒体当前帧图像)带目标检测标注的base64编码压缩图像URL>
}
-
API接口3:
-
API接口4: