一、网络主干框架(resnet50, FPN, class子网络,reg子网络)
1.首先设置C1-C5层
C1 | conv7x7,s=2,p=1 BN relu maxpool3x3,s=2,p=1 |
C2(3) | Block[1-3]: conv1x1,BN,relu conv3x3,s=1,,p=1,BN,relu conv1x1,bn add,relu |
C3(4) | Block[1]: conv1x1,BN,relu, conv3x3,s=2,p=1,BN,relu conv1x1,BN x下采样:conv1x1,s=2,BN add,relu Block[2-4]: conv1x1,BN,relu conv3x3,s=2,p=1,BN,relu conv1x1,BN add,relu |
C4(6) | Block[1]: conv1x1,BN,relu, conv3x3,s=2,p=1,BN,relu conv1x1,BN x下采样:conv1x1,s=2,BN add,relu Block[2-6]: conv1x1,BN,relu conv3x3,s=2,p=1,BN,relu conv1x1,BN add,relu |
C5(3) | Block[1]: conv1x1,BN,relu, conv3x3,s=2,p=1,BN,relu conv1x1,BN x下采样:conv1x1,s=2,BN add,relu Block[2-3]: conv1x1,BN,relu conv3x3,s=2,p=1,BN,relu conv1x1,BN add,relu |
但是train.py文件中有这一行代码:retinanet.module.freeze_bn()
个人理解是将网络结构中的BN层冻结。
2.FPN模块
3.class检测子网络
conv3x3,p=1,relu |
conv3x3,p=1,relu |
conv3x3,p=1,relu |
conv3x3,p=1,relu |
conv3x3,p=1,sigmoid |
4.reg检测子网络
conv3x3,p=1,relu |
conv3x3,p=1,relu |
conv3x3,p=1,relu |
conv3x3,p=1,relu |
conv3x3,p=1 |
class与reg一开始是对每层特征图继续计算。最终的classification与regssion是将每层的class与reg进行torch.cat得到的。
以上内容纯属个人理解与记录。如有不对,可以指出,共同进步,谢谢。