YOLO_v1和YOLO_v2比较

YOLO_v1和YOLO_v2在目标检测上存在显著区别。YOLO_v1使用单一anchor_box,将检测视为回归问题,而YOLO_v2引入多个anchor_boxes以提升检测效果。confidence_loss方面,YOLO_v2增强了对背景和前景的区分,调整了修正系数。classification_loss保持相似,但YOLO_v2增加了更多类别预测。coordinates_loss上,YOLO_v2改进了坐标计算方式,使用相对网格单元的偏移量和log尺度。这些改进提高了YOLO_v2的定位精度和检测效率。

YOLO_v1和YOLO_v2比较

YOLO的误差主要分为三大部分:IOU损失、分类损失、坐标损失,IOU损失分为了no_objects_loss和objects_loss。

no_objects和objects的分辨:

objects:anchor_boxes与ground truth的IOU最大的框
no_objects:除去IOU最大的框都是

confidence_loss:

confidence:判断锚框内是否存在检测物体

YOLO_v1:只有一个anchor_box(缺点:只能检测一个单元格内包含一个目标的情况),将目标检测看成回归问题,采用均方差损失函数。
修正系数:no_objects_loss和objects_loss分别是0.5和1

YOLO_v2:总共有845个anchor_boxes,与true_boxes匹配的用于预测pred_boxes,未与true_boxes匹配的anchor_boxes用于预测background。

  • objects_loss:与true_boxes所匹配的anchor_boxes去和预测的pred_boxes计算objects_loss。(预测前景)
  • no_objects_loss:
  1. 未与true_boxes所匹配的anchor_boxes中,若与true_boxes的IOU>0.6,则无需计算loss。
  2. 未与true_boxes所匹配的anchor_boxes中,若与true_boxes的IOU<0.6,则计算no_objects_loss。(预测背景
    修正系数:no_objects_loss和objects_loss分别是1和5

classification_loss:

YOLO_v2和YOLO_v1基本一致,就是经过softmax()后,20维向量(数据集中分类种类为20种)的均方误差。

coordinates_loss:

YOLO_v1:

  1. 计算x,y的误差相对于整个图像(416x416)的offset坐标误差的均方
  2. 计算w,h的误差w,h平方根的差的均方误差
    修正系数:5
    YOLO_v2:
  3. 计算x,y的误差相对于gird cell的offset(这个offset是取sigmoid函数得到的处于(0,1)的值)坐标误差的均方
  4. 计算w,h的误差w,h与对true_boxes匹配的anchor_boxes的长宽的比值取log函数
    修正系数:1
def yolo_loss(args,
              anchors,
              num_classes,
              rescore_confidence=False,
              print_loss=False):
    """
    参数
    ----------
    yolo_output : 神经网络最后一层的输出,shape:[batch_size,13,13,125]
        
    true_boxes : 实际框的位置和类别,我们的输入。三个维度:
    第一个维度:图片张数
    第二个维度:一张图片中有几个实际框
    第三个维度: [x, y, w, h, class],x,y 是实际框的中心点坐标,w,h 是框的宽度和高度。x,y,w,h 均是除以图片分辨率得到的[0,1]范围的值。


    detectors_mask : 取值是0或者1,这里的shape是[ batch_size,13,13,5,1],其值可参考函数preprocess_true_boxes()的输出,五个维度:
    第一个维度:图片张数
    第二个维度:true_boxes的中心位于第几行(y方向上属于第几个gird cell)
    第三个维度:true_boxes的中心位于第几列(x方向上属于第几个gird cell)
    第四个维度:哪个anchor box
    第五个维度:0/1。1的就是用于预测改true boxes 的 anchor boxes

    matching_true_boxes :这里的shape是[-1,13,13,5,5],其值可参考函数preprocess_true_boxes()的输出,五个维度:
    第一个维度:图片张数
    第二个维度:true_boxes的中心位于第几行(y方向上属于第几个gird cel)
    第三个维度:true_boxes的中心位于第几列(x方向上属于第几个gird cel)
    第四个维度:第几个anchor box
    第五个维度:[x,y,w,h,class]。这里的x,y表示offset,是相当于gird cell的坐标,w,h是取了log函数的,class是属于第几类。

    anchors : 实际anchor boxes 的值,论文中使用了五个。[w,h],都是相对于gird cell 长宽的比值。二个维度:
    第一个维度:anchor boxes的数量,这里是5
    第二个维度:[w,h],w,h,都是相对于gird cell 长宽的比值。
    [1.08, 1.19], [3.42, 4.41], [6.63, 11.38], [9.42, 5.11], [16.62, 10.52]
 num_classes :类别个数(有多少类)

    rescore_confidence : bool值,False和True计算confidence_loss的objects_loss不同,后面代码可以看到。

    print_loss : bool值,是否打印损失,包括总损失,IOU损失,分类损失,坐标损失

   返回值
    -------
    total_loss : float,总损失    
    """
    (yolo_output, true_boxes, detectors_mask, matching_true_boxes) = args
    num_anchors = len(anchors)
    object_scale = 5  '物体位于gird cell时计算置信度的修正系数'
    no_object_scale = 1  '物体位于gird cell时计算置信度的修正系数'
    class_scale = 1   '计算分类损失的修正系数'
    coordinates_scale = 1</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值