【YOLOV2】简单介绍

论文理解

论文提到有几个方面可以提升网络性能:

(1)BN可以防止模型过拟合,增强模型的泛化能力。在文章中提到增加了模型2%的准确率;

(2)预训练一个分类网络,然后使用该网络作为初始化参数,得到的检测网络会提升4%点左右;

(3)使用anchor box模型的map下降了,但是召回率上升了;

(4)维度聚类:

a)好的先验框能得到更高的检测效果;

(5)passthrough:

本质其实就是特征重排,26*26*512的feature map分别按行和列隔点采样,可以得到4幅13*13*512的特征,把这4张特征按channel串联起来,就是最后的13*13*2048的feature map.还有就是,passthrough layer本身是不学习参数的,直接用前面的层的特征重排后拼接到后面的层,越在网络前面的层,感受野越小,有利于小目标的检测。

在tensorflow中实现为:

def space_to_depth_x2(x):
    """Thin wrapper for Tensorflow space_to_depth with block_size=2."""
    # Import currently required to make Lambda work.
    # See: https://github.com/fchollet/keras/issues/5088#issuecomment-273851273
    import tensorflow as tf
    return tf.space_to_depth(x, block_size=2)

def space_to_depth_x2_output_shape(input_shape):
    """Determine space_to_depth output shape for block_size=2.

    Note: For Lambda with TensorFlow backend, output shape may not be needed.
    """
    return (input_shape[0], input_shape[1] // 2, input_shape[2] // 2, 4 *
    input_shape[3]) if input_shape[1] else (input_shape[0], None, None,
    4 * input_shape[3])

conv21_reshaped = Lambda(
space_to_depth_x2,
output_shape=space_to_depth_x2_output_shape,
name='space_to_depth')(conv21)

kmean聚类

http://note.youdao.com/noteshare?id=15a23ec92657e200d0de6dbc0c12e6f5&sub=4A8852D80302412AA0041877AC871E46

训练

http://note.youdao.com/noteshare?id=50000891ec3bb3cd5fd60ee07131eb28&sub=7DBE5941F5774E549E004C8ADD199106

你可能感兴趣的:(论文笔记)