PyTorch 实现经典模型8:FCN
生活随笔
收集整理的這篇文章主要介紹了
PyTorch 实现经典模型8:FCN
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
FCN
網絡結構
代碼
class fcn(nn.Module):def __init__(self, num_classes):super(fcn, self).__init__()self.stage1 = nn.Sequential(*list(pretrained_net.children())[:-4]) # 第一段self.stage2 = list(pretrained_net.children())[-4] # 第二段self.stage3 = list(pretrained_net.children())[-3] # 第三段self.scores1 = nn.Conv2d(512, num_classes, 1)self.scores2 = nn.Conv2d(256, num_classes, 1)self.scores3 = nn.Conv2d(128, num_classes, 1)self.upsample_8x = nn.ConvTranspose2d(num_classes, num_classes, 16, 8, 4, bias=False)self.upsample_8x.weight.data = bilinear_kernel(num_classes, num_classes, 16) # 使用雙線性 kernelself.upsample_4x = nn.ConvTranspose2d(num_classes, num_classes, 4, 2, 1, bias=False)self.upsample_4x.weight.data = bilinear_kernel(num_classes, num_classes, 4) # 使用雙線性 kernelself.upsample_2x = nn.ConvTranspose2d(num_classes, num_classes, 4, 2, 1, bias=False) self.upsample_2x.weight.data = bilinear_kernel(num_classes, num_classes, 4) # 使用雙線性 kerneldef forward(self, x):x = self.stage1(x)s1 = x # 1/8x = self.stage2(x)s2 = x # 1/16x = self.stage3(x)s3 = x # 1/32s3 = self.scores1(s3)s3 = self.upsample_2x(s3)s2 = self.scores2(s2)s2 = s2 + s3s1 = self.scores3(s1)s2 = self.upsample_4x(s2)s = s1 + s2s = self.upsample_8x(s2)return sRef
總結
以上是生活随笔為你收集整理的PyTorch 实现经典模型8:FCN的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PyTorch 实现经典模型7:YOLO
- 下一篇: PCB 零件尺寸图:Arduino Me