在安卓系统中部署yolov5模型出现的问题,ncnn软件在手机上可以运行,但是不画框

在安卓系统中部署yolov5模型出现的问题,ncnn软件在手机上可以运行,但是不画框
reshape参数改了,yolov5ncnn_jni.cpp中的类别与对应Permute的参数也改了

img

img

参考gpt4:
结合自己分析给你如下建议:
您的yolov5模型没有正确转换为ncnn格式。您需要使用onnx-simplifier来简化您的onnx模型,然后使用ncnn提供的工具来将onnx模型转换为ncnn格式。
您的yolov5ncnn_jni.cpp文件没有正确修改。您需要根据您的模型和数据集的特点,修改其中的类别数、锚点、置信度阈值、nms阈值等参数。您也需要修改其中的YoloV5Focus类,以适应yolov5模型中的focus层。
您的Android Studio项目没有正确配置。您需要检查您的CMakeLists.txt文件是否指定了正确的ncnn路径,是否添加了yolov5ncnn_jni.cpp文件。您也需要检查您的AndroidManifest.xml文件是否添加了相机和存储权限。

引用 皆我百晓生 小程序回复内容作答:
在部署Yolov5模型时出现不画框的问题可能有多种原因。以下是一些可能的解决方法:

  1. 检查模型预处理与后处理过程是否正确,确保输入数据经过正确的预处理,并且后处理过程能够正确地解码预测结果。

  2. 检查绘制框的代码是否正确。在确认输入数据和模型输出都正确的情况下,检查代码中绘制框的逻辑是否正确,包括绘制框的位置、尺寸、颜色等参数是否正确。

  3. 确保绘制框的代码能够正确地与手机显示屏幕进行交互。可以尝试调整绘制框的方式,如使用其他的绘制方法或者在其他位置绘制框,以确定是否存在与屏幕交互的问题。

  4. 确保模型在手机上运行时产生了有效的预测结果。可以通过输出预测结果的方式验证模型是否正确地产生了预测结果。

  5. 检查相关参数是否正确设置。除了上述的预处理、后处理和绘制框的参数之外,还需要检查其他相关的参数,如模型的输入尺寸、阈值等是否正确设置。

如果以上方法都不能解决问题,可能需要进一步调试代码和模型,以确定具体的问题所在。

题主,这个问题我来替你解决(参考结合AI智能、文心一言),若有帮助,还望采纳,点击回答右侧采纳即可。


可能是因为ncnn模型预测后的输出结果与你所期望的输出结果不一样,导致画框时出现问题。你可以先尝试在计算机端运行模型,查看输出结果是否正确。

如果输出结果正确,那么问题可能出现在画框部分的代码中。你可以检查是否正确获取到了输出结果,并对输出结果进行解析绘制框的操作。

如果输出结果不正确,则需要检查模型的部署是否有问题,比如输入数据的大小、格式等是否与预期一致,或者模型的参数是否正确。

另外,你可以在代码中添加调试语句,打印出中间结果,帮助你找出问题所在。

如果您在安卓系统中部署 YOLOv5 模型时遇到问题,导致不绘制检测框,可能有几个原因需要排查。以下是一些可能的解决方案:

  1. 检查模型文件:确保您已经正确导出 YOLOv5 模型文件,并将其传输到安卓设备上。请确保模型文件路径正确,并且文件本身没有损坏或缺失。
  2. 检查代码:请检查您的代码是否正确配置了 YOLOv5 模型的输入和输出,以及是否正确加载和处理了输入图像。您可以在代码中添加日志或调试语句来跟踪和检查变量和参数是否正确设置。
  3. 确保支持的安卓版本:YOLOv5 模型可能需要在特定的安卓版本上运行。请确保您的安卓设备运行的是支持的安卓版本,并且您的代码和模型与该版本兼容。
  4. 检查硬件配置:请确保您的安卓设备具有足够的计算能力和内存来运行 YOLOv5 模型。一些设备可能无法处理复杂的深度学习模型,或者在运行时可能会遇到内存不足的问题。
  5. 优化模型:YOLOv5 模型可能需要进行一些优化才能在手机上运行得更好。您可以尝试对模型进行量化、剪枝或压缩等优化操作,以减小模型的大小和计算复杂度,提高在移动设备上的性能。
  6. 检查驱动和库:确保您已经正确安装了 nCNN 库,并且设备驱动程序已正确配置。您可以通过在安卓设备上运行其他 nCNN 示例来验证库和驱动程序的正确性。

如果以上解决方案都没有解决问题,您可以尝试在社区或论坛上寻求更详细的帮助和支持,或者提供更多关于您的设备和代码的详细信息,以便更好地理解和解决问题。

援引讯飞星火:
这个问题可能是由于ncnn库在处理YOLOv5模型时,没有正确识别到类别信息导致的。你可以尝试以下方法来解决这个问题:

  1. 检查你的YOLOv5模型文件是否正确。确保模型文件没有损坏或者格式错误。

  2. 检查你的ncnn库版本是否与YOLOv5模型兼容。如果不兼容,你可能需要更新ncnn库或者使用不同版本的YOLOv5模型。

  3. 在yolov5ncnn_jni.cpp文件中,找到detection_layer函数,然后找到detection_forward函数。在这个函数中,你需要找到处理类别信息的代码部分。这部分代码可能类似于以下形式:

for (int i = 0; i < num; ++i) {
    float* data = output_data + output_offset * stride;
    for (int j = 0; j < size; ++j) {
        float score = data[j];
        if (score > thresh) {
            int class_id = data[j * num_classes + 4];
            // ...其他处理代码...
        }
    }
}

在这个代码中,class_id变量就是从YOLOv5模型中提取的类别信息。你需要确保这个变量的值是正确的,并且与你期望的类别一致。

  1. 如果上述方法都无法解决问题,你可以尝试使用其他深度学习框架(如TensorFlow Lite、MNN等)在安卓系统上部署YOLOv5模型,看看是否能正常显示框。这样可以帮助你确定问题是否出在ncnn库本身。

结合GPT给出回答如下请题主参考
关于部署yolov5模型在安卓系统上出现不画框的问题,您可以尝试检查以下几个方面:

  1. 确认模型预测输出结果是否与期望相符:您可以在ncnn运行输出中,查看模型的预测结果。将预测结果与期望的检测结果进行比对,如果存在偏差,则需要检查模型配置文件、模型训练数据集、预测代码等方面,找出问题所在。

  2. 检查坐标系是否正确:检查模型预测输出的坐标系,确保其和绘制框的坐标系一致。如果两个坐标系不一致,需要进行坐标系转换。

  3. 确认绘制框的代码是否正确:检查绘制框的代码实现是否正确。可以在代码中添加打印语句,输出参数的值,确保绘制框的参数设置正确。

  4. 确保绘制框的代码被正确调用:确认绘制框的代码被正确调用。您可以在调用绘制框的代码处添加断点,观察程序的执行流程,确认代码是否被正确执行。

希望以上建议对您有所帮助。

该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:
根据您提供的信息,您在安卓系统中部署Yolov5模型时遇到了问题,即使用ncnn软件在手机上可以运行,但无法绘制边界框,并出现了一些错误消息。以下是对这些消息的一些解释和建议:

  1. handleWindowFocusChanged mWindowFocusChanged false:此消息表示窗口焦点发生了变化。通常情况下,这不会与绘制边界框的问题直接相关。
  2. find_blob_index_by_name 342 failedfind_blob_index_by_name 380 failed:这些错误消息表示在模型中查找指定名称的blob索引失败。可能是由于模型中不存在对应的blob或者名称错误导致。建议您检查模型的输入和输出blob名称是否正确,并确保在代码中正确指定这些名称。
  3. ex.extract("onnx::Mul_433",out0); 和类似的代码行:这些代码行表示在模型中提取指定名称的输出blob。在这种情况下,您需要确保代码中正确指定了模型输出blob的名称,并且名称与模型中定义的名称一致。
  4. Try:这些错误消息后面的Try提示您尝试使用其他方法来提取指定的blob。根据您提供的信息,您已经尝试了多次提取相同的blob,但失败了。建议您检查模型中的blob名称是否正确,并尝试使用其他方法来提取这些blob。
    综上所述,问题可能在于模型中的blob名称与代码中指定的不匹配,或者模型中根本不存在对应的blob。您需要仔细检查模型和代码,并确保它们之间的一致性。如果问题仍然存在,您可能需要查看更多的代码和调试信息,以找到导致问题的具体原因。

如果以上回答对您有所帮助,点击一下采纳该答案~谢谢


YOLOv5使用NCNN将模型部署到Android端教程(1)部署自己的训练模型到Android实现静态图片检测 - 知乎 1. 前言之前一直是在电脑端运行YOLOv5,但在户外调试的时候不太方便,因此考虑把YOLOv5的代码移植到手机端。这个部署的流程其实很简单:原始pt权重>中间onnx权重>ncnn权重>修改Android Studio源码>得… https://zhuanlan.zhihu.com/p/590972438

【教程】YOLOv5模型转化-Android端部署__less is more的博客-CSDN博客 这里写目录标题前言转化方法官方的转化方法合作者的转化方法量化部署部署流程效果展示前言最近做毕设使用到yolov5,该模型为ultralytics公司的一个开源产品,由Glenn大佬实现,有很多合作的开发者参与了该项目,开发迭代速度非常快,三天两头就有更新。为了实现一个完整的毕业设计流程,就需要实现YOLOv5模型的训练、验证到最终的落地,也就是部署。训练相对简单,只需要跟着官方教程即可,根据特定数据集进行预处理并训练????????链接训练并验证后则需要考虑部署,具体部署方案有:ONNX:该模 https://blog.csdn.net/weixin_42815846/article/details/117533367

【以下回答由 GPT 生成】

首先,无法看到您的具体代码和错误信息,因此我只能给出一般性的建议。要解决画框功能无法正常工作的问题,可以尝试以下几个步骤:

  1. 确保模型和配置文件正确加载和解析:检查模型和配置文件是否正确选择和加载,以及网络层的配置是否正确。可以使用日志打印功能来检查加载和解析的结果。

  2. 检查推理结果:查看推理结果是否正确,并确定是否正确捕获到目标物体的位置和边界框。可以通过在绘制框之前打印预测结果,或者使用调试器来检查。

  3. 调整阈值和NMS(非极大值抑制)参数:阈值和NMS参数可以影响边界框的绘制结果。尝试调整这些参数,以获得更好的结果。

  4. 确保画框代码正确:检查绘制框的代码是否正确,包括坐标计算和图像绘制函数是否正常使用。

  5. 检查模型的输入数据格式:确保模型的输入数据格式与ncnn软件相匹配。可能需要对输入数据进行适当的预处理,以满足模型的要求。

  6. 查看模型输出的类别和置信度结果:检查模型输出的类别和置信度结果,确保它们与期望的结果相匹配。如果结果不正确,可能需要查看模型的输出层配置以及解析代码。

如果以上步骤都已经尝试过,但问题仍然存在,可能需要更详细的信息和代码以便进一步帮助您解决问题。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

确保模型的输入图像格式和预处理与模型训练时相匹配。检查图像输入的通道顺序、均值、标准差等设置。

yolov5转换ncnn部署在安卓端问题记录
可以参考下


安卓端使用ncnn部署yolov5(v6.0)_专业女神杀手的博客-CSDN博客 ncnn是腾讯公司开源的一个专为手机端极致优化的高性能神经网络前向计算框架。ncnn从设计之初,就深刻考虑手机端的部署和使用,无需第三方依赖,跨平台,手机端cpu的速度快于目前所有已知的开源框架。基于ncnn,开发者能够将深度学习算法轻松移植到手机端高效执行,开发出人工智能APP,将AI带到你的指尖。_ncnn部署yolov5 https://blog.csdn.net/Eyesleft_being/article/details/128446368

需要确保模型的输入是正确的。这涉及到模型的输入尺寸、输入图片的格式和像素范围等。查你的模型权重文件是否正确。如果权重文件有问题,可能会导致模型无法正常运行。

不画框说明你的物体识别根本没有跑起来,你先在模拟器上跑下能不能运行
检查下环境。具体什么错误日志贴出看看啊。