Yolov5Net报错【已解决】:System.IndexOutOfRangeException: ‘Index was outside the bounds of the array.

首先感谢作者让我们.NET玩家能应用上Yolov5/6这一深度学习网络。链接:Github:Yolov5-net。
通常,我们需要检测我们自己训练的模型,根据YoloCocoP5Model或者YoloCocoP6Model修改字节的模型文件即可,非常方便。
网络上有很多数据集,其中流传最为广泛的是东北大学“热轧带钢表面缺陷数据集”。本文在处理这个数据集中遇到了这个异常:System.IndexOutOfRangeException: 'Index was outside the bounds of the array.
在其他数据集检测中也经常出现这个问题。这里记录一下我的一个解决方案:

异常情况出现的原因

在Model 文件中设置了错误的维度参数:
Yolov5Net报错【已解决】:System.IndexOutOfRangeException: ‘Index was outside the bounds of the array._第1张图片
图中的Dimensions参数要根据实际情况修改,并且要完全正确,才不会出现“Index was outside the bounds of the array.”异常。

解决方案

解析使用的onnx文件

Yolov5Net报错【已解决】:System.IndexOutOfRangeException: ‘Index was outside the bounds of the array._第2张图片
打开网站:onnx文件解析
找到最终的output,点击一下,右边出现具体的结构
Yolov5Net报错【已解决】:System.IndexOutOfRangeException: ‘Index was outside the bounds of the array._第3张图片
我这里的结构是[1,25200,7]

查看报错位置的Output 数组结构

Yolov5Net报错【已解决】:System.IndexOutOfRangeException: ‘Index was outside the bounds of the array._第4张图片
这里的output 长度是:277200

计算Dimensions参数

Dimensions = 277200 / 25200 = 11

修改Dimensions参数

Yolov5Net报错【已解决】:System.IndexOutOfRangeException: ‘Index was outside the bounds of the array._第5张图片

Happy Ending

结语

由于github上也有人提出此问题:Github Issues58,本人也一并回答了,可前往了解。
也许有更好的解决方案,欢迎大家讨论,补充!

你可能感兴趣的:(YoloV5,人工智能,深度学习)