为 YOLO 算法准备数据集

人工智能 神经网络 机器学习 卷积神经网络 喀拉斯 约洛
2021-11-06 09:51:43

嗨,我正在开展一个项目,该项目需要You Only Look Once算法来对图像中的对象进行分类和定位。我必须准备我的数据集(它有 2 个类,每个网格单元预测 6 个对象,并且 448 * 448 图像被拆分为 7*7 网格)。什么是可行的方法来做到这一点?我 在这篇文章中找到了这段代码。但是我不明白他为什么做了他所做的事情,例如他为什么专门检查“盒子”的第 24 个元素,那么我必须检查盒子的哪个元素?是否有任何教程贯穿其中?有人可以解释甚至调整他的方法以适应我的数据集吗?

仅供参考:我正在从头开始编写 YOLO 算法

1个回答

好吧,一步一步放手。

您正在研究的是 YOLOv1,在此版本的 YOLO 算法中,模型可以返回的最大边界框是 7x7 = 49 个框,即 49 个单元格,因为输出形状为 7x7x30。

对于每个框,输出的深度为 30,因为 PASCAL VOCS 2012 的标签数量为 20(YOLOv1 的作者在此数据集上训练),因此从索引 0 到索引 19 将表示该边界框的标签。从 20 到 23 是那个盒子的位置和大小。

第 24 位代表两件事,首先是那个框的置信度,因为这是 ground truth,所以置信度应该是 1。其次,你知道 YOLOv1 最多只能返回 49 个框(实际上,你可以通过编辑框的数量你自己)所以基本事实应该只处理一个单元格,因此第 24 个是二进制值,以确保一个单元格中没有重复的边界框。(25到29是因为作者预测每个cell有2个bounding box)

在您的情况下,输出应该是 7x7x(2 + 5 x 2) = 7x7x12,每个单元格有 2 个类和 2 个框。