针对图像的语义分割网络,本节将介绍PyTorch中已经预训练好网络的使用方式,然后使用VOC2012数据集训练一个FCN语义分割网络。
一、使用预训练好的语义分割网络
PyTorch提供了已预训练好的图像语义分割网络,已经预训练好的可供使用的网络模型如下表所示:
网络类 | 描述 |
segmentation.fcn_resnet50() | 具有Resnet-50结构的全卷积网络模型 |
segmentation.fcn_resnet101() | 具有Resnet-101结构的全卷积网络模型 |
segmentation.deeplabv3_resnet50() | 具有Resnet-50结构的DeepLabV3网络模型 |
segmentation.deeplabv3_resnet101() | 具有Resnet-101结构的DeepLabV3网络模型 |
下面以segmentation.fcn_resnet101()为例,介绍如何使用这些已经预训练好的网络结构进行图像的语义分割任务。
针对语义分割的分类器,需要输入图像使用了相同的预处理方式,即先将每张图像的像素值预处理到0 ~ 1之间,然后对图像进行标准化处理,使用的均值为[0.485,0.456,0.406],标准差为[0.229,0.224,0.225]。。数据集使用Pascal VOC 数据集,该数据集中存在20个类别和1个背景类,预训练好的模型在COCO train2017的子集上进行了预训练。这20个类别分为4个大类,分别为人、动物(鸟、猫、牛、马、羊)、交通工具(飞机、自行车