bubbliiiing / faster-rcnn-pytorch

这是一个faster-rcnn的pytorch实现的库,可以利用voc数据集格式的数据进行训练。
MIT License
1.52k stars 351 forks source link

关于resnet50 #176

Open LibertazZ opened 1 year ago

LibertazZ commented 1 year ago

博主你好,你提供源码中这个resnet50网络打印出来以后是这样: (6): Sequential( (0): Bottleneck( (conv1): Conv2d(512, 256, kernel_size=(1, 1), stride=(2, 2), bias=False) 从layer2开始每个layer的第一个Bottleneck的第一个卷积层都是1*1的卷积但是步长是2,这样会不会导致特征图中有一半的值完全没有被利用

现在torchvison调用出来resnet50时,打印出来是这样: (layer3): Sequential( (0): Bottleneck( (conv1): Conv2d(512, 256, kernel_size=(1, 1), stride=(1, 1), bias=False) (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False) 第一个卷积层一定是1*1卷积且步长为1,第二个卷积层步长为2用于特征图尺寸的收缩

LibertazZ commented 1 year ago

我觉得应该是在第二个卷积层实现尺寸的压缩 博主你Bottleneck的源代码是: self.conv1 = nn.Conv2d(inplanes, planes, kernel_size=1, stride=stride, bias=False) self.bn1 = nn.BatchNorm2d(planes)

    self.conv2 = nn.Conv2d(planes, planes, kernel_size=3, stride=1, padding=1, bias=False)
    self.bn2 = nn.BatchNorm2d(planes)

我觉得应该是酱紫,不知道对不对因为现在官方给的应该是这样的: self.conv1 = nn.Conv2d(inplanes, planes, kernel_size=1, stride=1, bias=False) self.bn1 = nn.BatchNorm2d(planes)

    self.conv2 = nn.Conv2d(planes, planes, kernel_size=3, stride=stride, padding=1, bias=False)
    self.bn2 = nn.BatchNorm2d(planes)