【问题标题】:Questions about loss function in yolov2?关于yolov2中损失函数的问题?
【发布时间】:2019-05-08 02:15:39
【问题描述】:

我阅读了yolov2的实现。我对它的损失有一些疑问。下面是损失函数的伪代码,希望我做对了。

costs = np.zeros(output.shape)
for pred_box in all prediction box:  
    if (max iou pred_box has with all truth box < threshold):
        costs[pred_box][obj] = (sigmoid(obj)-0)^2 * 1
    else:
        costs[pred_box][obj] = 0
    costs[pred_box][x] = (sigmoid(x)-0.5)^2 * 0.01  
    costs[pred_box][y] = (sigmoid(y)-0.5)^2 * 0.01  
    costs[pred_box][w] = (w-0)^2 * 0.01  
    costs[pred_box][h] = (h-0)^2 * 0.01  
for truth_box all ground truth box:  
    pred_box = the one prediction box that is supposed to predict for truth_box
    costs[pred_box][obj] = (1-sigmoid(obj))^2 * 5  
    costs[pred_box][x] = (sigmoid(x)-truex)^2 * (2- truew*trueh/imagew*imageh)  
    costs[pred_box][y] = (sigmoid(y)-truey)^2 * (2- truew*trueh/imagew*imageh)  
    costs[pred_box][w] = (w-log(truew/anchorw))^2 * (2- truew*trueh/imagew*imageh)  
    costs[pred_box][h] = (h-log(trueh/anchorh))^2 * (2- truew*trueh/imagew*imageh)  
    costs[pred_box][classes] = softmax_euclidean  
total loss = sum(costs)

我对此有一些疑问:

1. 代码每 10 批随机将训练图像的尺寸调整为 320 到 608 之间的尺寸,但锚框没有相应调整大小。为什么不调整锚尺寸。我的意思是你选择了一组最常见的锚在 13*13 的特征图中,这些锚点在 19*19 的特征图中并不常见,所以为什么不根据图像大小调整锚点的大小。

2. 对未分配真值的框的 x,y,w,h 预测应用成本,这会促使 w,h 完全适合锚点,默认情况下 x,y 会在单元格中居中,很有帮助以及为什么会这样。为什么不将位置预测成本仅应用于分配了事实的那些,而忽略未分配的那些。

3. 为什么不简单地应用 (obj-0)^2 作为所有未分配真值的框的 obj 预测成本。在 yolov2 中,对未分配真值的框的 obj 预测并非全部应用成本,只有那些没有分配真值的框分配的真理与所有真理没有太多重叠,并且是应用成本。为什么会这样,很复杂。

【问题讨论】:

    标签: python machine-learning yolo darknet


    【解决方案1】:

    1

    在 YOLOv2 的实现中,Random Cropping 用于扩充训练数据。随机裁剪裁剪图像的一部分并将其扩展,使其具有与原始图像相同的大小。

    这种训练数据的增强使得训练后的网络在训练数据中未见过的不同大小的对象上具有鲁棒性。因此,不应通过此过程更改锚框。

    请记住,锚框是对在训练和预测之前输入的对象形状的假设。但是,如果网络做出这样的假设,那么对于形状与假设大不相同的对象,它就会变得不鲁棒。数据增强解决了这个问题。

    2

    这是因为我们不知道中心坐标和盒子形状的真相。当我们训练 YOLO 时,我们使用 Responsible Boxes 的概念。它们是要通过培训过程更新的框。

    请参阅“ my Medium post 的“负责任的”边界框。

    3 这是因为 YOLO 的输出来自卷积层的目录,而不是来自全连接的激活。因此输出不限制在 0 和 1 之间。所以我们应用 sigmoid 函数,使其代表概率。

    【讨论】:

      猜你喜欢
      • 2019-07-24
      • 2021-02-26
      • 2018-03-18
      • 2018-09-18
      • 1970-01-01
      • 2018-05-25
      • 2021-07-20
      • 2023-04-05
      相关资源
      最近更新 更多