我按照本教程培训了一个pytorch模型,用于实例分割: https://pytorch.org/tutorials/intermediate/torchvision_tutorial.html
我不想在完全不同的数据和类别上训练一个模型,这与COCO完全无关。我需要做哪些更改来重新培训模型。根据我的阅读,我猜除了有正确数量的课程外,我只需要训练这一行:
model = torchvision.models.detection.maskrcnn_resnet50_fpn(pretrained=True)
到
model = torchvision.models.detection.maskrcnn_resnet50_fpn(pretrained=False)
但是我注意到还有另外一个参数:pretrained_backbone=True, trainable_backbone_layers=None
它们也应该更改吗
从
maskrcnn_resnet50_fpn
{a1}因此,对于从头开始的培训,请使用:
或:
因为在maskrcnn_resnet50_fpn的源代码中:
函数签名是
设置
pretrained=False
将告诉PyTorch不要下载在COCO train2017上预先培训过的模型。你想要它,因为你对训练感兴趣通常,如果您想在不同的数据集上进行训练,这就足够了
设置
pretrained=False
时,PyTorch将在ImageNet上下载预训练的ResNet50。默认情况下,它将冻结名为conv1
和layer1
的前两个块。这是如何在更快的R-CNN论文中完成的,该论文对预训练主干的初始层进行了冻结(只需打印模型以检查其结构)
现在,如果您甚至不想冻结前两层,可以设置
trainable_backbone_layers=5
(设置pretrained_backbone=False
时自动完成),这将从头开始训练整个resnet主干网勾选PR#2160
相关问题 更多 >
编程相关推荐