一、DeepLabV3+图像语义分割原理
DeepLabV3架构采用扩张卷积(也称为空洞卷积)来捕捉多尺度信息,从而在不损失空间分辨率的情况下实现对图像的精细分割。
 
二、DeepLabV3+代码及预训练权重下载
2.1 下载deeplabv3+代码
这里使用的是B站大佬Bubbliiiing复现的deeplabv3+代码
 仓库地址: https://github.com/bubbliiiing/deeplabv3-plus-pytorch
2.2 下载模型预训练权重
链接:https://pan.baidu.com/s/1dYoFxrWmwASpDKSHl4x37Q
 提取码:vj0h
 将下载的权重文件放到model_data文件夹下。
三、labelme图像标注及格式转换
3.1 图像标注
项目代码中,自行带了一张标注好的图片(如下图),我这边不再标注,读者可以根据自己的需求自行标注。自己标注的数据的图像和标签文件需求都放在datasets\before文件夹下。
 
3.2 标签格式转换
运行json_to_dataset.py文件,转换后,会在datasets\JPEGImages文件夹下生成jpg格式图像,在datasets\SegmentationClass文件夹下生成png格式mask标签。
 
3.3 数据集划分
将上一步的jpg格式图像放到VOCdevkit\VOC2007\JPEGImages文件夹下。
 将上一步的png格式mask标签放到VOCdevkit\VOC2007\SegmentationClass文件夹下。
 运行voc_annotation.py文件。
 查看在VOCdevkit\VOC2007\ImageSets\Segmentation文件夹下生成的txt文件。
 
四、deeplabv3+网络训练和测试
4.1 训练
运行train.py文件。读者需要根据自己的情况修改文件中的num_classes,model_path,input_shape,Freeze_batch_size,Unfreeze_batch_size以及其他训练参数。
 训练结果保存在logs文件夹下。
 
4.2 测试
运行predict.py文件。
 读者需要根据自己的情况修改模型权重和测试图片的地址。
 读者可以通过修改mode参数,实现下面5种模式:
#   'predict'           表示单张图片预测,如果想对预测过程进行修改,如保存图片,截取对象等,可以先看下方详细的注释
#   'video'             表示视频检测,可调用摄像头或者视频进行检测,详情查看下方注释。
#   'fps'               表示测试fps,使用的图片是img里面的street.jpg,详情查看下方注释。
#   'dir_predict'       表示遍历文件夹进行检测并保存。默认遍历img文件夹,保存img_out文件夹,详情查看下方注释。
#   'export_onnx'       表示将模型导出为onnx,需要pytorch1.7.1以上。
设置mode = “predict”模式,测试一张自己手动输入路径的图像,结果如下
 