-
Notifications
You must be signed in to change notification settings - Fork 33
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
c++推理结果与python推理结果不一致问题 #28
Comments
看旁边黄色的好像没问题,你要不多运行一下看下是不是mask颜色的问题? |
大佬你好,感谢回复,我运行了几次查看结果,中间牙齿那部分区域确实没有识别出来,目前出现的情况是我在同时预测多张图片时,只有几张图片会出现上述这种情况,其他的都很正常,不知道这是python转c++造成的精度损失问题还是onnx模型的问题 |
你可以试一试调整下nms阈值,我比较怀疑是因为nms阈值过低导致你左下角那个检测框数据覆盖掉大图的情况了。你可以看下不经过nms的检测框有没有你丢失的这部分区域(会有很多重叠,但是按理来说应该要有这个区域的检测框才对)。 |
我测试了很多例子,发现只有部分图片会出现上述情况,如图:用python加载训练的pt推理,牙齿、牙龈两个目标都正常识别,用python加载onnx模型,牙齿、牙龈两个目标也都正常识别(说明onnx文件没有问题),使用c++加载onnx模型时,只识别了牙龈一个目标,漏掉了牙齿目标,说明是c++推理过程中某一步与python不一致(python用的predict.py)导致的,我试过您写的yolov5和yolov8两个框架都有这样的问题,查阅资料说是数据预处理pt模型resize时的padding方式是不同的(链接:https://blog.csdn.net/kao_lengmian/article/details/126668561),不知道大佬清楚不,这个需要在c++中怎么修改数据预处理过程呢 |
|
我把pt模型和图片发您一下吧,感谢帮我看看,qq:1404561326,先谢谢大佬 |
大佬是否方便留个联系方式,请教一下,万分感谢!!! |
直接传个云盘吧,qq群里喷策划7天还没放出来呢 |
share权限不对,无法访问 |
我更改了权限,大佬再试下 |
实际上,你只需要按照这个调整一下,比如你给我的这些图片,将nms调整到0.6就可以了。并不是resize或者padding策略不一样,只是nms里面计算iou的方式不一样导致的,或者你可以试一下自己实现一下opencv的cv::dnn::NMSBoxes这个函数,然后将其中的IoU换成你运行python源码的时候对于的IoU方式 |
好的,感谢大佬,我调整了_nmsThreshold的值后确实可以正确识别了,太感谢啦 |
大佬您好,再请教一下问题哈: |
|
好的大佬,我目前的情况是python加载onnx可以检测到所有目标,c++加载onnx时只有少部分图片会漏掉一些目标(调整了_nmsThreshold的值也检测不出来),应该可以判断是c++中nms实现过程和python的不一致,我现在先尝试着改成一致,再看看结果吧,感谢大佬指点 |
博主您好,我最近遇到一个问题想请教一下,我在训练完模型后使用官方的predict脚本预测能得到比较满意的分割结果,但是在转换onnx模型后使用该项目的c++代码推理,同一张图片,c++未检测到目标,输出的结果也为空白,这可能是什么原因造成的(如图,c++推理未检测出牙齿区域,但是python可以检测出并进行分割)

The text was updated successfully, but these errors were encountered: