RetinaNet

整个网络结构采用resnet作为backbone,resnet整个网络结构如下:在这里插入图片描述
1 FPN结构,采用conv3_x,conv4_x,conv5_x的结果作为feature pyramid,自上而下进行上采样特征叠加,具体步骤举例:假设输入图片大小为 224 ∗ 224 224*224 224224,对于conv5_x的feature大小为 7 ∗ 7 7*7 77,采用上采样nn.Upsample(scale_factor=2, mode=‘nearest’),得到 14 ∗ 14 14*14 1414,然后与conv4_x的特征相加,得到最终的conv4_x特征。对于最终conv3_x,conv4_x,conv5_x 特征,在用一层卷积nn.Conv2d(feature_size, feature_size, kernel_size=3, stride=1, padding=1),保持size不变;最后对于conv5_x,采用nn.Conv2d(C5_size, feature_size, kernel_size=3, stride=2, padding=1)两次,分别得到conv6_x,conv7_x(conv5_x,conv6_x,conv7_x不叠加特征), 得到所有conv3_x,conv4_x,conv5_x,conv6_x,conv7_x特征size分别为 28 ∗ 28 , 14 ∗ 14 , 7 ∗ 7 , 4 ∗ 4 , 2 ∗ 2 28*28,14*14,7*7,4*4,2*2 2828,1414,77,44,22
2 生成anchor,对于P3到P7所有的feature,每一层对应的base areas分别为 32 ∗ 32 32*32 3232 512 ∗ 512 512*512 512512,对应的stride为8到112,aspect ratio为(0.5,1,2.0),又增加三个areas,scales( 2 0 2^0 20 2 1 / 3 2^{1/3} 21/3 2 2 / 3 2^{2/3} 22/3),相对于FPN未增加areas scales,Faster Rcnn采用的是(0.5,1,2),最终每一层一个点对应9个anchor,一共有9441个anchor
3 对每一层的anchor,分别计算框偏移,及得分,并未采用roi_pooling, 对于regression和classification,采用相同的网络结构,都是用5层卷积(nn.Conv2d(num_features_in, feature_size, kernel_size=3, padding=1)),但是两个不共享参数,单独分开的。
4 如果是test阶段,根据得到的regression(得到的regression需要减去均值除以标准差),classification利用nms得到最后结果,对于训练阶段,每个anchor只保留与所有框最大IOU结果,然后对于IOU小于0.4的设为背景,大于0.5的认为是前景,然后计算focal loss,具体focal loss参见https://zhuanlan.zhihu.com/p/28527749
5 本文一些tricks,第一 模型初始化对于classification,将最后一个卷积层,权重设为0,bias设为-log((1-pi)/pi),这样在第一个迭代中,可以使得大部分anchor都被分类为背景,那样loss就会小很多(主要处理类别不均衡问题,因为检测大部分都是背景),训练更稳定;采用resnet imagenet预训练模型,会冻结bn层,是因为训练内存问题,本身训练的batch设置很小,而bn层需要很大的batch才有效。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值