嗨,我从头开始编写了一个YOLO模型,然后才意识到我的数据集不适合模型的输出。这就是我的意思:模型输出一个S x S x (B * 5 + C)矩阵。y0的形状是(7,5)。我如何让模型使用我的标签。根据我所知道和阅读的内容,标签以yolo算法的x,y,w,h,objectiveness_score, class_scores格式出现,所以为什么模型将输出3D矩阵,而标签是2d矩阵。
我如何通过使用numpy和keras来解决我的问题?
发布于 2021-01-27 23:20:50
根据paper (section 2),S x S x (B * 5 + C) shaped输出表示YoloV1将图像分割成的S x S网格单元。最后一层可以实现为具有输出长度S x S x (B * 5 + C)的完全连接的层,然后您可以简单地将输出重塑为3D形状。
该文件指出:
“我们的系统将输入图像划分为S×S网格。如果对象的中心落在网格单元中,该网格单元负责检测该对象。”
这意味着您必须将每个标签分配给其相应的网格单元,以便进行反向传播。作为参考,可以在github用户FMsunyh的here中找到损失计算的keras/tensorflow实现。
https://stackoverflow.com/questions/65915176
复制相似问题