DANet 深度学习场景分割项目教程
1. 项目目录结构及介绍
该项目的目录结构如下:
.
├── experiments # 实验相关代码
│ └── segmentation # 分割任务相关代码
│ ├── models # 存放预训练模型
│ └── test.py # 测试脚本
├── datasets # 数据集存放位置(需手动创建)
└── DANet # 主代码库
├── config # 配置文件
├── lib # 工具类和函数
├── models # 网络模型定义
├── setup.py # 安装脚本
├── README.md # 项目说明
└── main.py # 主入口文件
experiments/segmentation
: 包含了用于测试的代码和模型。DANet/config
: 存放配置参数的yaml文件。DANet/lib
: 提供了网络构建、数据加载等辅助函数。DANet/models
: 实现了DANet和其他模型的架构。DANet/setup.py
: 项目安装脚本。DANet/main.py
: 项目的主入口文件,用于训练和测试。
2. 项目启动文件介绍
2.1 test.py
这是位于 experiments/segmentation
的测试脚本,主要功能是加载预先训练好的模型,对Cityscapes这样的数据集进行单尺度或多尺度测试。通过调整命令行参数,可以改变评估时的基础图像大小、裁剪尺寸以及多尺度参数等。
使用示例:
CUDA_VISIBLE_DEVICES=0 1 2 3 python test.py \
--dataset citys \
--model danet \
--backbone resnet101 \
--resume models/DANet101.pth.tar \
--eval \
--base-size 2048 \
--crop-size 768 \
--workers 1 \
--multi-grid \
--multi-dilation 4 8 16 \
--os 8 \
--aux
2.2 main.py
在 DANet
根目录下的 main.py
是项目的主入口文件,主要用于训练模型。它根据配置文件 (config/*.yaml
) 初始化模型、数据加载器并进行训练循环。
使用示例:
python main.py --cfg configs/danet_citys.yaml
3. 项目的配置文件介绍
配置文件通常以 .yaml
结尾,例如 configs/danet_citys.yaml
,它们包含了训练或测试所需的各种参数,如学习率、批大小、优化器设置、训练轮数等。用户可以根据实际需求修改这些参数以适应不同的实验条件。
一个简单的配置文件示例可能包括以下内容:
data:
name: cityscapes
img_dir: ./datasets/Cityscapes/leftImg8bit/
gt_dir: ./datasets/Cityscapes/gtFine/
num_classes: 19
crop_size: [768, 768]
base_size: 2048
flip: True
scale: 0.5, 0.75, 1.0, 1.25, 1.5, 1.75
model:
arch: danet
backbone: resnet101
output_stride: 8
train:
batch_size: 8
max_epochs: 200
base_lr: 0.01
weight_decay: 0.0001
momentum: 0.9
test:
batch_size: 1
crop_size: [768, 768]
base_size: 2048
flip: False
scales: [1.0]
在这个例子中:
data
部分定义了数据集路径、类别数、图像处理参数等。model
部分指定了模型类型、基础骨干网络和输出分辨率。train
和test
部分分别设置了训练和测试的超参数,如学习率、批次大小等。
请注意,要确保在运行 main.py
或 test.py
前已将数据集放置在指定的目录,并且已经正确地配置了所有依赖项。