假设现在我们要设计一个基于VGG的网络,主要考虑的问题是可否修改VGG类似于resnet那样,应该怎么修改?更具体来说,我们需要在VGG网络上考虑eltwise层,现在我们有三种方案,如下:
方案一:直接对相应层进行bn,之后加eltwise sum。
方案二:在进行bn层之前加kernel为1的卷积层,然后bn,最后加eltwise sum。
方案三:直接在相应层进行bn之后,加kernel为1的卷积层,最后加eltwise sum。
这三种方案似乎都是可行的。那问题是这三种方案的性能会有差异吗?我们虽然讨论了深度学习的训练其实和初始化以及调参关系很大,参考这篇博客。但是并没有说过如何设计一个有效的网络,当然这篇博客意在启发读者,就目前来看,研究网络架构也是CNN的一大主题,不乏niubility的论文,因此各种网络层出不穷。换句话说,我们想验证的是直接eltwise sum和间接eltwise sum的性能有无差异,这三种类似的网络的效果怎么样?接下来看看这三种方案有没有区别。使用kernel 为1的卷积层意在压缩特征表示,即减少channel数目,它并不改变特征图大小,仅仅是对提取的特征进行精炼。
结果显示,三个方案的性能很接近,但即使这样,也能在某些具体的场合拉开它们的性能。其中,我最关注的是这三种方案对小目标检测性能的改善情况,训练结果附录下表:
通过实验验证集验证,得到如下结论。
结论:方案三的性能最好,对小目标检测明显优于另两种方案,而且明显改善了误检率,得到更深度更有效的语义信息。