YOLO v1预测数据格式、取值方式及规范出处问询
YOLOv1预测数据格式的疑问与权威依据
- YOLOv1原始论文指出,预测结果编码为
(B*5+C),其中:B为边界框数量(论文设定B=2)5代表单个边界框的预测数据维度:(c, x, y, h, w)(依次为置信度、中心x坐标、中心y坐标、框高度、框宽度)C为类别数(论文设定C=20)
- 按论文描述,推测预测数组的顺序应为
[P, P, C],其中P代表单个边界框的5维数据(即两个边界框数据在前,20个类别概率数据在后) - 但部分第三方实现(比如“YOLOv1 from Scratch”项目)的代码中,预测数据格式为
[C, P, P](即20个类别概率数据在前,两个边界框数据在后)
这就产生了疑问:要提取第一个边界框的(c, x, y, h, w)数据,到底是取前5个值:
cxywh: np.ndarray = prediction[:5]
还是跳过前20个类别值后再取:
cxywh: np.ndarray = prediction[21:26]
权威来源说明
YOLOv1的原始论文是唯一的官方权威定义文档,其中明确规定:每个网格单元预测B个边界框和C个类别概率,输出的每个网格对应B*5 + C个值,顺序为B*5个边界框数据(每个边界框占5位)在前,之后是C个类别概率数据。
部分第三方实现调整维度顺序属于自定义修改,并非YOLOv1的标准设计。如果严格遵循YOLOv1的原始定义,应该按照[P, P, C]的顺序处理,即提取前5个值作为第一个边界框的预测数据。
内容的提问来源于stack exchange,提问作者mon
相关产品推荐
相关产品推荐

