首页 PaddleCV 帖子详情
关于paddle的预训练vgg16计算结果问题
收藏
快速回复
PaddleCV 问答图像分类目标识别 1133 11
关于paddle的预训练vgg16计算结果问题
收藏
快速回复
PaddleCV 问答图像分类目标识别 1133 11

我是飞桨的新手,使用了paddle.vision.vgg16(pretrained=True)得到训练好的vgg16参数。只使用其卷积部分参数做迁移时,输入通道为RGB、224*224,值域[1,0],数据类型为paddle.float32的图像数据的情况下,得到的结果基本全部是0。是我图像数据的格式不正确吗,还是模型参数迁移出现了问题。

在aistudio里面用随机数做测试结果图:

0
收藏
回复
全部评论(11)
时间顺序
FutureSI
#2 回复于2021-06

我也想用这个vgg预训练模型,请问楼主问题解决了么?

0
回复
FutureSI
#3 回复于2021-06

看了下python源码接口,里面模型类的features属性是这么用的:

    def __init__(self, features, num_classes=1000, with_pool=True):
        super(VGG, self).__init__()
        self.features = features
        self.num_classes = num_classes
        self.with_pool = with_pool

        if with_pool:
            self.avgpool = nn.AdaptiveAvgPool2D((7, 7))

        if num_classes > 0:
            self.classifier = nn.Sequential(
                nn.Linear(512 * 7 * 7, 4096),
                nn.ReLU(),
                nn.Dropout(),
                nn.Linear(4096, 4096),
                nn.ReLU(),
                nn.Dropout(),
                nn.Linear(4096, num_classes), )

    def forward(self, x):
        x = self.features(x)

        if self.with_pool:
            x = self.avgpool(x)

        if self.num_classes > 0:
            x = paddle.flatten(x, 1)
            x = self.classifier(x)

        return x

 

0
回复
FutureSI
#4 回复于2021-06

paddle源码里用特征层进行前向计算时没用 Sequential 进行序列封装,应该是已经序列化好了吧

0
回复
FutureSI
#5 回复于2021-06

我想得到vgg19每层输出的 feature map,请问有什么便捷的方法么?

0
回复
FutureSI
#6 回复于2021-06
paddle源码里用特征层进行前向计算时没用 Sequential 进行序列封装,应该是已经序列化好了吧

是用 make_layers 组装的 features

def make_layers(cfg, batch_norm=False):
    layers = []
    in_channels = 3
    for v in cfg:
        if v == 'M':
            layers += [nn.MaxPool2D(kernel_size=2, stride=2)]
        else:
            conv2d = nn.Conv2D(in_channels, v, kernel_size=3, padding=1)
            if batch_norm:
                layers += [conv2d, nn.BatchNorm2D(v), nn.ReLU()]
            else:
                layers += [conv2d, nn.ReLU()]
            in_channels = v
    return nn.Sequential(*layers)
0
回复
FutureSI
#7 回复于2021-06
是用 make_layers 组装的 features [代码]

组装 features 可以参考这里:

https://www.paddlepaddle.org.cn/documentation/docs/zh/api/paddle/vision/models/VGG_cn.html#canshu

0
回复
a
aaaa阿百川
#8 回复于2021-06
我想得到vgg19每层输出的 feature map,请问有什么便捷的方法么?

paddle2.1好像还没有预训练的vgg19模型 

0
回复
a
aaaa阿百川
#9 回复于2021-06

关于为什么那么多0,可能是我经验不足,他其他维度其实是有提取到特征的,简单可视化见下图。

0
回复
a
aaaa阿百川
#10 回复于2021-06
我想得到vgg19每层输出的 feature map,请问有什么便捷的方法么?

对每层输出的特征图我还真不知道怎么搞。可能麻烦一点写个循环一层一层用paddle.nn.Sequential弄成网络后在做输入输出?

0
回复
FutureSI
#11 回复于2021-06
对每层输出的特征图我还真不知道怎么搞。可能麻烦一点写个循环一层一层用paddle.nn.Sequential弄成网络后在做输入输出? [图片]

一起都给包在vgg模型的features成员里了,我也是不知道怎么掏出来

0
回复
FutureSI
#12 回复于2021-06

现在就只能先用paddleclas套件里的预训练模型了

0
回复
需求/bug反馈?一键提issue告诉我们
发现bug?如果您知道修复办法,欢迎提pr直接参与建设飞桨~
在@后输入用户全名并按空格结束,可艾特全站任一用户