PyTorch实现一个简单的图像分类(代码详细) |
PyTorch 训练之后的网络模型.pth转.onnx文件并对图像进行预测 |
使用pytorch实现预训练模型迁移学习中的目标检测 |
本文主要是直接利用PyTorch官方提供的预训练目标检测模型对物体进行检测,在此之前使用pytorch实现预训练模型迁移学习中的目标检测 已经提及使用官方提供的预训练目标检测模型进行迁移训练自己的目标检测模型,这篇文章之所以再次提及主要是更加仔细的对其进行实现以及ONNX模型文件的转换,为后面目标检测模型在QT中基于OpenCV的使用打下基础。
1.直接加载预训练目标检测模型进行物体检测
注:如果不进行ONNX模型文件的转换的话,ssdlite320_mobilenet_v3_large,ssd300_vgg16,fcos_resnet50_fpn 模型都是可以图像或者实时检测的,但是如果要转换为ONNX模型文件的话,其中ssdlite320_mobilenet_v3_large,ssd300_vgg16 会转换失败,会报以下错误(未解决):因此,本文只对fcos_resnet50_fpn 模型转换为ONNX文件。
onnxruntime.capi.onnxruntime_pybind11_state.Fail: [ONNXRuntimeError] :
1 : FAIL : Non-zero status code returned while running TopK node. Name:
'TopK_2830' Status Message: k argument [16] should not be greater than
specified axis dim value [0]
关于这个问题的讨论:https://github.com/microsoft/onnxruntime/issues/12669
注:关于NMS算法读者直接在B站上搜索即可知道其原理(过滤掉重叠的框,根据指定的阈值iou_threshold,如果一个框和当前类别置信度最大的框重叠比例大于等于iou_threshold就丢弃该框,保留置信度最大的框)