resnet的skip connection用的也是eltwise相加
fpn的浅层和高层融合用的eltwise相加
hyper-net和ion都是使用的concat的方式
hyper-net网络结构
https://blog.csdn.net/qq_35608277/article/details/80432907
LRN是必要的,因为不同层的feature resolution 不同,如果不做正则norm大的feature会压制住norm小的feature
但pavenet里面没有用lrn,而是concat之后用了一个1*1的卷积作缓冲处理,保证不同channel差异不是太大
ion-net:
总结:两个都是浅层细节信息和高层语义信息concat融合,但Hyper-net是把最后一层feature map进行concat,ion是在不同层pooling然后concat,两者其实差异性不大。两者都是在stage最后一层做的操作。
自己做的实验:1.ion-net我没加scale层是出现了梯度爆炸(到底自己用了conv1*1没,自己忘了),去确定一下自己在concat之后是否加了bn,个人感觉bn其实可以替代scale
2.hyper-net这个上下层连接自己做过stage4和stage3的,性能提升:
也做过stage2和stage3和stage4的,性能提升:
3.马:多层concat,a层的数量级可能和b层的不一样,会压制住别的层的feature map。比如a层可能在10-100,b层的值可能在0.1到1,concat之后合成一个feature map,虽然在不同通道,但某些通道的值很大,会对最终的结果影响比较大
理论上浅层是提取一些物体的一般特性,颜色、纹理、形状等
他做了在不同层进行roi-pooling看不同层的效果,比如在stage3能检测的一些东西,stage4检测不到,这样其实就可以发现stage3的信息是有用的
如果浅层和深层的信息都学的比较好,那再不同层做pooling然后concat的性能可能没有直接把浅层和深层feature map concat起来pooling效果好
concat > 深层 > 浅层
concat效果好,会不会仅仅是由于增加了数据输入的原因?可以做个试验验证,把最后一层的channel提到和concat的一样,然后再对比
个人感觉如果是concat,由于两个部分的channel来自于不同的stage,数据分布会不一样(但会不会因为bn层在前面用了,所以整个网络的数据分布是一样的?),或者说可能本身一个部分的channel值大,一个部分的channel值小,导致值大的做主导?需要做一个实验,就是加bn和不加bn看性能上是否有提升,我之前做的好像就没有用bn
把ion concat之后加bn看是否还会发生梯度爆炸?
eltiwise和concate效果差不多?