首先感谢作者让我们.NET玩家能应用上Yolov5/6这一深度学习网络。链接:Github:Yolov5-net。
通常,我们需要检测我们自己训练的模型,根据YoloCocoP5Model或者YoloCocoP6Model修改字节的模型文件即可,非常方便。
网络上有很多数据集,其中流传最为广泛的是东北大学“热轧带钢表面缺陷数据集”。本文在处理这个数据集中遇到了这个异常:System.IndexOutOfRangeException: 'Index was outside the bounds of the array.
在其他数据集检测中也经常出现这个问题。这里记录一下我的一个解决方案:
异常情况出现的原因
在Model 文件中设置了错误的维度参数:
图中的Dimensions参数要根据实际情况修改,并且要完全正确,才不会出现“Index was outside the bounds of the array.”异常。
解决方案
解析使用的onnx文件
打开网站:onnx文件解析
找到最终的output,点击一下,右边出现具体的结构
我这里的结构是[1,25200,7]
查看报错位置的Output 数组结构
这里的output 长度是:277200
计算Dimensions参数
Dimensions = 277200 / 25200 = 11
修改Dimensions参数
Happy Ending
结语
由于github上也有人提出此问题:Github Issues58,本人也一并回答了,可前往了解。
也许有更好的解决方案,欢迎大家讨论,补充!