论文理解
论文提到有几个方面可以提升网络性能:
(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