## DeepLabv3+:Encoder-Decoder with Atrous Separable Convolution语义分割模型在Pytorch当中的实现
---
### 目录
1. [性能情况 Performance](#性能情况)
2. [所需环境 Environment](#所需环境)
3. [注意事项 Attention](#注意事项)
4. [文件下载 Download](#文件下载)
5. [训练步骤 How2train](#训练步骤)
6. [预测步骤 How2predict](#预测步骤)
7. [评估步骤 miou](#评估步骤)
8. [参考资料 Reference](#Reference)
### 性能情况
| 训练数据集 | 权值文件名称 | 测试数据集 | 输入图片大小 | mIOU |
| :-----: | :-----: | :------: | :------: | :------: |
| VOC12+SBD | [deeplab_mobilenetv2.pth](https://github.com/bubbliiiing/deeplabv3-plus-pytorch/releases/download/v1.0/deeplab_mobilenetv2.pth) | VOC-Val12 | 512x512| 72.59 |
| VOC12+SBD | [deeplab_xception.pth](https://github.com/bubbliiiing/deeplabv3-plus-pytorch/releases/download/v1.0/deeplab_xception.pth) | VOC-Val12 | 512x512| 76.95 |
### 所需环境
torch==1.2.0
### 注意事项
代码中的deeplab_mobilenetv2.pth和deeplab_xception.pth是基于VOC拓展数据集训练的。训练和预测时注意修改backbone。
### 文件下载
训练所需的deeplab_mobilenetv2.pth和deeplab_xception.pth可在百度网盘中下载。
链接: https://pan.baidu.com/s/1nDzHR803q8SsGZfnOoOIsg 提取码: x9cb
VOC拓展数据集的百度网盘如下:
链接: https://pan.baidu.com/s/1BrR7AUM1XJvPWjKMIy2uEw 提取码: vszf
### 训练步骤
#### a、训练voc数据集
1、将我提供的voc数据集放入VOCdevkit中(无需运行voc_annotation.py)。
2、在train.py中设置对应参数,默认参数已经对应voc数据集所需要的参数了,所以只要修改backbone和model_path即可。
3、运行train.py进行训练。
#### b、训练自己的数据集
1、本文使用VOC格式进行训练。
2、训练前将标签文件放在VOCdevkit文件夹下的VOC2007文件夹下的SegmentationClass中。
3、训练前将图片文件放在VOCdevkit文件夹下的VOC2007文件夹下的JPEGImages中。
4、在训练前利用voc_annotation.py文件生成对应的txt。
5、在train.py文件夹下面,选择自己要使用的主干模型和下采样因子。本文提供的主干模型有mobilenet和xception。下采样因子可以在8和16中选择。需要注意的是,预训练模型需要和主干模型相对应。
6、注意修改train.py的num_classes为分类个数+1。
7、运行train.py即可开始训练。
### 预测步骤
#### a、使用预训练权重
1、下载完库后解压,如果想用backbone为mobilenet的进行预测,直接运行predict.py就可以了;如果想要利用backbone为xception的进行预测,在百度网盘下载deeplab_xception.pth,放入model_data,修改deeplab.py的backbone和model_path之后再运行predict.py,输入。
```python
img/street.jpg
```
可完成预测。
2、在predict.py里面进行设置可以进行fps测试、整个文件夹的测试和video视频检测。
#### b、使用自己训练的权重
1、按照训练步骤训练。
2、在deeplab.py文件里面,在如下部分修改model_path、num_classes、backbone使其对应训练好的文件;**model_path对应logs文件夹下面的权值文件,num_classes代表要预测的类的数量加1,backbone是所使用的主干特征提取网络**。
```python
_defaults = {
#----------------------------------------#
# model_path指向logs文件夹下的权值文件
#----------------------------------------#
"model_path" : 'model_data/deeplab_mobilenetv2.pth',
#----------------------------------------#
# 所需要区分的类的个数+1
#----------------------------------------#
"num_classes" : 21,
#----------------------------------------#
# 所使用的的主干网络
#----------------------------------------#
"backbone" : "mobilenet",
#----------------------------------------#
# 输入图片的大小
#----------------------------------------#
"input_shape" : [512, 512],
#----------------------------------------#
# 下采样的倍数,一般可选的为8和16
# 与训练时设置的一样即可
#----------------------------------------#
"downsample_factor" : 16,
#--------------------------------#
# blend参数用于控制是否
# 让识别结果和原图混合
#--------------------------------#
"blend" : True,
#-------------------------------#
# 是否使用Cuda
# 没有GPU可以设置成False
#-------------------------------#
"cuda" : True,
}
```
3、运行predict.py,输入
```python
img/street.jpg
```
可完成预测。
4、在predict.py里面进行设置可以进行fps测试、整个文件夹的测试和video视频检测。
### 评估步骤
1、设置get_miou.py里面的num_classes为预测的类的数量加1。
2、设置get_miou.py里面的name_classes为需要去区分的类别。
3、运行get_miou.py即可获得miou大小。
### Reference
https://github.com/ggyyzm/pytorch_segmentation
https://github.com/bonlime/keras-deeplab-v3-plus
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
采用pytorch深度学习框架实现的deeplab_v3+语义分割任务,谷歌deeplab系列性能最好也是最复杂的一个版本,可满足绝大部分基础语义分割场景。主干网络在算力不足时可选择轻量版的mobilenet_v2,算力足够时可选择Xception。 deeplab_v3+:用一个简单有效的解码器模块扩展deeplab_v3优化细分结果,尤其是沿目标边界。此外,在这种编码器 - 解码器结构中,可以通过空洞卷积任意地控制所提取的编码器特征的分辨率,以平衡准确率和运行时间。 本代码可作为入门计算机视觉语义分割任务时的学习了解用处,也可作为高校大学生的毕业课程设计使用。
资源推荐
资源详情
资源评论
收起资源包目录
deeplabv3-plus-pytorch-insulator.zip (39个子文件)
deeplabv3-plus-pytorch-insulator
deeplab_jyz.py 16KB
summary.py 542B
img
sliding_window.py 3KB
street.jpg 437KB
logs
README.MD 98B
epoch_loss_2022_02_17_15_04_16.txt 2KB
epoch_val_loss_2022_02_17_15_04_16.txt 2KB
ep098-loss0.126-val_loss0.125.pth 209.59MB
epoch_loss_2022_02_17_15_04_16.png 38KB
get_miou.py 3KB
json_to_dataset.py 3KB
nets
__init__.py 1B
xception.py 7KB
mobilenetv2.py 6KB
deeplabv3_training.py 3KB
deeplabv3_plus.py 8KB
train.py 15KB
predict.py 7KB
voc_annotation.py 2KB
LICENSE 1KB
deeplab.py 14KB
requirements.txt 150B
model_data
deeplab_mobilenetv2.pth 22.4MB
VOCdevkit
VOC2007
SegmentationClass
README.md 55B
JPEGImages
README.md 49B
ImageSets
Segmentation
README.md 38B
README.md 5KB
常见问题汇总.md 36KB
utils
callbacks.py 2KB
utils.py 1KB
utils_fit.py 5KB
dataloader.py 5KB
__init__.py 1B
utils_metrics.py 9KB
predict_jyz.py 7KB
datasets
SegmentationClass
1.png 5KB
JPEGImages
1.jpg 51KB
before
1.json 70KB
1.jpg 48KB
共 39 条
- 1
菅田将晖丶
- 粉丝: 7
- 资源: 13
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页