Yolov3的理解

 


YOLO3改进有:

调整了网络结构

利用多尺度特征进行对象检测

对象分类用Logistic取代了softmax

 

 

 

 

Yolo_v3网路就是使用了darknet-53的前面的52层,大量使用残差的跳层连接。

它借鉴了残差网络residual network的做法,在一些层之间设置了快捷链路。

在YOLO3更进一步采用了3个不同尺度的特征图来进行对象检测。

yolov3的特点同样:

yolov3同样采用了划分的方法来进行预测,总共使用了9个anchor box。

使用用"leaky ReLU"作为激活函数

使用一个loss function训练

 

 

 

 

YOLOV3的损失函数


        xy_loss = object_mask * box_loss_scale * K.binary_crossentropy(raw_true_xy, raw_pred[...,0:2], from_logits=True)
        wh_loss = object_mask * box_loss_scale * 0.5 * K.square(raw_true_wh-raw_pred[...,2:4])
        confidence_loss = object_mask * K.binary_crossentropy(object_mask, raw_pred[...,4:5], from_logits=True)+ \
            (1-object_mask) * K.binary_crossentropy(object_mask, raw_pred[...,4:5], from_logits=True) * ignore_mask
        class_loss = object_mask * K.binary_crossentropy(true_class_probs, raw_pred[...,5:], from_logits=True)

        xy_loss = K.sum(xy_loss) / mf
        wh_loss = K.sum(wh_loss) / mf
        confidence_loss = K.sum(confidence_loss) / mf
        class_loss = K.sum(class_loss) / mf
        loss += xy_loss + wh_loss + confidence_loss + class_loss
        if print_loss:
            loss = tf.Print(loss, [loss, xy_loss, wh_loss, confidence_loss, class_loss, K.sum(ignore_mask)], message='loss: ')
    return loss

 

下面的看的简书的讲解:

 

对象分类softmax改成logistic

预测对象类别时不使用softmax,改成使用logistic的输出进行预测。这样能够支持多标签对象(比如一个人有Woman 和 Person两个标签)。

输入映射到输出

 

©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页