实验环境
华为云
pytorch1.8-cuda10.2-cudnn7-ubuntu18.04
GPU: 1*V100(32GB)|CPU: 8核 64GB
数据集代码准备
打开jupyter,输入:
import moxing as mox
dataset_url = "obs://wkkk/Deeplabv3/"
mox.file.copy_parallel(dataset_url,"./")
模型训练
在终端输入:
python train.py
记得修改–data-path
def parse_args():
import argparse
parser = argparse.ArgumentParser(description="pytorch deeplabv3 training")
parser.add_argument("--data-path", default="./", help="VOCdevkit root")
parser.add_argument("--num-classes", default=20, type=int)
parser.add_argument("--aux", default=True, type=bool, help="auxilier loss")
parser.add_argument("--device", default="cuda", help="training device")
parser.add_argument("-b", "--batch-size", default=4, type=int)
parser.add_argument("--epochs", default=30, type=int, metavar="N",
help="number of total epochs to train")
parser.add_argument('--lr', default=0.0001, type=float, help='initial learning rate')
parser.add_argument('--momentum', default=0.9, type=float, metavar='M',
help='momentum')
parser.add_argument('--wd', '--weight-decay', default=1e-4, type=float,
metavar='W', help='weight decay (default: 1e-4)',
dest='weight_decay')
parser.add_argument('--print-freq', default=10, type=int, help='print frequency')
parser.add_argument('--resume', default='', help='resume from checkpoint')
parser.add_argument('--start-epoch', default=0, type=int, metavar='N',
help='start epoch')
# Mixed precision training parameters
parser.add_argument("--amp", default=False, type=bool,
help="Use torch.cuda.amp for mixed precision training")
args = parser.parse_args()
return args
训练30个epoch后模型的参数:
[epoch: 29]
train_loss: 0.5049
lr: 0.000000
global correct: 94.3
average row correct: ['95.4', '95.3', '79.1', '95.4', '92.9', '90.9', '95.2', '95.2', '94.3', '67.8', '92.6', '83.2', '90.6', '92.2', '89.8', '94.8', '80.2', '97.4', '81.3', '94.4', '89.4']
IoU: ['93.7', '91.1', '46.1', '84.5', '68.5', '64.3', '92.2', '79.0', '90.3', '45.9', '85.4', '61.8', '86.0', '84.5', '84.7', '89.1', '57.4', '83.4', '56.9', '79.1', '65.3']
mean IoU: 75.7
预测结果
预测1:
预测2:
预测3:
预测4:
预测5:
预测6:
总结
由于FCN的使用,输入图片的大小已经不在受到尺寸的影响。