# Segmentation-pytorch
**Repository Path**: acting_chen/Segmentation-pytorch
## Basic Information
- **Project Name**: Segmentation-pytorch
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2020-07-21
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
### 由于时间有限,代码注释没有完善好,我会长期更新,不断完善readme形成一个完整的代码引导,后期数据集也会共享,方便下载调试,谢谢大家的关注~
实验环境 Ubuntu 16.04 GTX1080TI python==3.6
具体参数见requirement.txt
## 数据预处理
本实验可以实现cityscapes;camvid等公开数据集
本人主要是用作遥感卫星图像分割,卫星图像尺寸都较大,所以需要进行切图,切分成512*512尺寸大小的图片
以我使用的paris数据集为例:
#### 1.将彩色的label图片变成灰度图,且颜色从0开始计数
rgb图片转换灰度图公式:
浮点数 Gray = R*0.299+G*0.587+B*0.114
整型数 Gray = (R*299+G*587+B*114)/100
```
datasets文件夹下change_colour.py
```
#### 2.将原始3000尺寸的大小切分为自己需要的512尺寸图片
切分图片可以根据自己需求设置cropsize = 512(切分大小);stride = 488(滑动窗口步长)
```
datasets文件夹下cut_paris.py
```
#### 3.生成切割小图的路径写入txt文件
```
datasets文件夹下gengrate_txt.py
```
#### 4.修改数据集路径
```
dataset_builder.py文件中的build_dataset_train等函数下的root_dir需要修改成本地的数据集文件夹,代码中是'/media/ding/Data/datasets'
```
数据结构:
```
|--paris-origin
| |--label*.png
| |--image*.png
|--paris
| |--train
| |--512-label
| |--label*.png
| |--image*.png
| |--512-image
| |--label*.png
| |--image*.png
| |--val
| |--512-label
| |--label*.png
| |--image*.png
| |--512-image
| |--label*.png
| |--image*.png
| |--test
| |--512-label
| |--label*.png
| |--image*.png
| |--512-image
| |--label*.png
| |--image*.png
```
## 模型搭建
所有的模型搭建都是在builders/model_builder.py文件下导入
## 训练
```
终端下:sh train.sh
train.sh脚本,修改相应参数
builders文件夹下dataset_builder.py文件的data_dir需要修改为数据集的文件夹目录
```
## 测试训练保存的所有模型好坏
test.py文件是用来测试所有训练生成模型权重的好坏,在所有保存的模型权重中测试得到一个指标最高的模型
```
终端中执行: sh test.sh
修改test.sh的参数
best $True指选择最优模型
python test.py --dataset paris \
--model UNet_res101 \
--best $True \
--save $False \
--checkpoint /media/ding/Study/graduate/Segmentation_Torch/checkpoint/paris/UNet_res101bs8gpu1_train/2020-04-16_13:43:19/model_1.pt
```
## 两种预测方法
### 1.预测小图,拼接成大图
```
终端中执行:sh predict.sh脚本--预测小图,修改--checkpoint等参数
接着result/concat_image.py拼接成大图
```
### 2.直接输入大图,滑动窗口进行预测
```
终端中执行:sh predict_sliding.sh脚本--滑动窗口预测大图
```