博主,训练过程中,是否一个gt对应多个anchor呢?每个anchor匹配到iou最大真实框
` best_iou = encoded_boxes[:, :, -1].max(axis=0) best_iou_idx = encoded_boxes[:, :, -1].argmax(axis=0) best_iou_mask = best_iou > 0 best_iou_idx = best_iou_idx[best_iou_mask]
assign_num = len(best_iou_idx)
保留重合程度最大的先验框的应该有的预测结果
encoded_boxes = encoded_boxes[:, best_iou_mask, :] assignment[:, :4][best_iou_mask] = encoded_boxes[best_iou_idx,np.arange(assign_num),:4] `
一个真实框有多个先验框匹配,但是每一个先验框只能和一个重合度最大的真实框匹配
谢谢博主解答,这部分选择最佳先验框的代码折磨人,搞明白了
博主你好,对于bondingbox的预测,各个有效层卷积后的输出channel数是num_priors*4,这里的4为什么是[x_offset、y_offset、h和w的调整情况], 而不是[预测框的x1, y1, x2, y2(预测框的左上角和右下角的坐标值)]呢,谢谢!
如果是这样的话还要这先验框干嘛呢
博主你好,感谢你的回答,在代码的ssd_layers.py的最后,先验框产生完之后,为什么还要给prior_boxes增加一个维度,并让它在这个维度上重复(tf.shape(x)[0] => 应该是feature map的宽度吧)次呢
代码: prior_boxes = np.concatenate((prior_boxes, variances), axis=1) prior_boxes_tensor = K.expand_dims(K.variable(prior_boxes), 0) pattern = [tf.shape(x)[0], 1, 1] prior_boxes_tensor = tf.tile(prior_boxes_tensor, pattern)
return prior_boxes_tensor
谢谢!
博主你好,上面问题已找到答案,谢谢!
好