工程(二)——DeeplabV3+语义分割训练自制数据集
目录
1、配置环境
1.1 利用conda新建一个环境并激活
conda create -n deeplabv3 python=3.8
conda activate deeplabv3
1.2 安装pytorch
conda install pytorch torchvision cudatoolkit=11.3 -c pytorch
//11.3为电脑cuda的版本,其他版本也可以
1.3 更新bashrc环境
alias python='/home/cxl/anaconda3/envs/deeplabv3/bin/python3.8'
source ~/.bashrc
2、安装DeeplabV3
2.1 克隆代码
git clone https://github.com/VainF/DeepLabV3Plus-Pytorch.git
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
2.2 下载数据集和预训练模型
数据集:链接: https://pan.baidu.com/s/1eiPyD6Esjihiph9yCTYv0Q 提取码: qrcl
权重:链接: https://pan.baidu.com/s/1-CE9WUVkyhg64YD6IDwL9g 提取码: t4wt
下载到DeepLabV3Plus-Pytorch/datasets/data目录下并解压
解压命令
tar xvf VOCtrainval_06-Nov-2007.tar
tar xvf VOCtest_06-Nov-2007.tar
tar xvf VOCtrainval_11-May-2012.tar
将训练模型放在weight文件夹中
3、测试算法
使用deeplabv3plus_mobilenet模型
单张图片
python predict.py --input datasets/data/VOCdevkit/VOC2007/JPEGImages/000001.jpg --dataset voc --model deeplabv3plus_mobilenet --ckpt weights/best_deeplabv3plus_mobilenet_voc_os16.pth --save_val_results_to test_results
文件夹图片
python predict.py --input datasets/data/VOCdevkit/VOC2007/JPEGImages --dataset voc --model deeplabv3plus_mobilenet --ckpt weights/best_deeplabv3plus_mobilenet_voc_os16.pth --save_val_results_to test_results
cityscapes
python predict.py --input datasets/data/JPEGImages --dataset cityscapes --model deeplabv3plus_mobilenet --ckpt weights/best_deeplabv3plus_mobilenet_cityscapes_os16.pth --save_val_results_to test_results
使用deeplabv3_mobilenet模型
python predict.py --input datasets/data/VOCdevkit/VOC2007/JPEGImages/000001.jpg --dataset voc --model deeplabv3_mobilenet --ckpt weights/best_deeplabv3_mobilenet_voc_os16.pth --save_val_results_to test_results
python predict.py --input datasets/data/VOCdevkit/VOC2007/JPEGImages --dataset voc --model deeplabv3_mobilenet --ckpt weights/best_deeplabv3_mobilenet_voc_os16.pth --save_val_results_to test_results
4、制作VOC数据集
4.1 转VOC格式
labelme官方转化代码,roadscene_train为图片和json混合的文件
labelme/examples/semantic_segmentation at main · wkentaro/labelme · GitHub
训练数据集
python labelme2voc.py roadscene_train roadscene_train/data_dataset_voc --labels
labels.txt
验证数据集
python labelme2voc.py roadscene_val roadscene_val/data_dataset_voc --labels
labels.txt
其中labels.txt文件是自己定义的类别
4.2 项目数据准备
在DeepLabV3Plus-Pytorch/datasets/data文件夹下,创建目录结构如下:
└── VOCdevkit
├── VOC2007
├── ImageSets
├── JPEGImages
└── SegmentationClass
其中:
JPEGImages放所有的数据集图片;
SegmentationClass放标注的数据集掩码文件;
ImageSets/Segmentation下存放训练集、验证集、测试集划分文件
train.txt给出了训练集图片文件的列表(不含文件名后缀)
val.txt给出了验证集图片文件的列表
trainval.txt给出了训练集和验证集图片文件的列表
test.txt给出了测试集图片文件的列表
txt文件名可用一下命令获得,随后用gedit的替换排序去掉后缀名
find . -name "*.*" > lists.txt
5、训练验证数据集
5.1 visdom可视化
#install visdom
pip install visdom
anaconda3/envs/deeplabv3/lib/python3.8/site-packages/visdom
注释掉server.py文件中函数download_scripts_and_run()中的一句
#download_scripts()
# Run visdom server
python -m visdom.server
5.2 训练网络
使用deeplabv3plus_mobilenet模型
python main.py --model deeplabv3plus_mobilenet --enable_vis --vis_port 8097 --gpu_id 0 --year 2007 --crop_val --lr 0.01 --crop_size 513 --batch_size 16 --output_stride 16 --num_classes 6 --total_itrs 1000 --ckpt weights/best_deeplabv3plus_mobilenet_voc_os16.pth
batch_size根据电脑性能做调整
num_classes 为种类个数+1
--ckpt 为预训练权重文件
visdom可视化
训练好的模型在checkpoints文件夹中
5.3 验证模型
性能指标统计:用的验证数据集
python main.py --model deeplabv3plus_mobilenet --gpu_id 0 --year 2007 --crop_val --lr 0.01 --crop_size 513 --batch_size 16 --output_stride 16 --ckpt checkpoints/best_deeplabv3plus_mobilenet_voc_os16.pth --test_only --save_val_results
图片测试
python predict.py --input datasets/data/VOCdevkit/VOC2007/JPEGImages/img001.jpg --dataset voc --model deeplabv3plus_mobilenet--ckpt checkpoints/best_deeplabv3plus_mobilenet_voc_os16.pth --save_val_results_to test_results1 --crop_size 513
6、cityscapes数据集的训练及制作
6.1 训练cityscapes数据集
1、下载cityscapes数据集
Cityscapes Dataset – Semantic Understanding of Urban Street Scenes
2、下载官网数据集功能文件cityscapesScripts-master
将文件一定放对目录
cityscapesScripts/cityscapesscripts at master · mcordts/cityscapesScripts · GitHub
3、预处理数据集
- helpers/label.py文件对训练种类标签进行选择
trainID这一列,凡是255的表示均没有加入训练分类。修改trainID和不感兴趣的ignoreInEval改为True
直接运行一下python文件
preparation/createTrainIdLabelImgs.py
将多边形格式的注释转换为带有标签ID的png图像,其中像素编码可以在“labels.py”中定义的“训练ID”。preparation/createTrainIdInstanceImgs.py
将多边形格式的注释转换为带有实例ID的png图像,其中像素编码由“train ID”组成的实例ID。
4、训练
先打开visdom,不然会报错ConnectionRefusedError: [Errno 111] Connection refused
--vis_port 后面的数字是自己visdom生成的数字
python -m visdom.server
#训练
python main.py --model deeplabv3plus_mobilenet --dataset cityscapes --enable_vis --vis_port 8097 --gpu_id 0 --lr 0.1 --crop_size 321 --batch_size 2 --output_stride 16 --data_root ./datasets/data/cityscapes --ckpt weights/best_deeplabv3plus_mobilenet_cityscapes_os16.pth
#验证
python main.py --model deeplabv3plus_mobilenet --dataset cityscapes --enable_vis --vis_port 8097 --gpu_id 0 --year 2012_aug --crop_val --lr 0.01 --crop_size 513 --batch_size 16 --output_stride 16 --ckpt checkpoints/best_deeplabv3plus_mobilenet_cityscapes_os16.pth --test_only --save_val_results
6.2 cityscapes数据集的制作
相关文章
- 计算机等级考试二级C语言程序设计专项训练题——单链表
- 在浏览器中运行 TensorFlow.js 来训练模型并给出预测结果(Iris 数据集)
- 『NLP经典项目集』08: 使用预训练模型完成阅读理解
- 回顾BART模型 其实是BART的策略,训练标准的transformer模型
- (《机器学习》完整版系列)第13章 半监督学习——13.5 基于分歧的方法(多学习器间的差异、协同训练算法)
- Caffe初试(三)使用caffe的cifar10网络模型训练自己的图片数据
- 建立bp神经网络,并训练,仿真。其中输入为p,输出为t
- YOLOV3训练环境的搭建
- 数据科学家所需的大脑训练
- 利用TFRecord和HDFS准备TensorFlow训练数据
- 2020年中文NLP顶级预训练模块
- Caffe学习系列(23):如何将别人训练好的model用到自己的数据上
- 水果数据集(Fruit-Dataset )+水果分类识别训练代码(支持googlenet, resnet, inception_v3, mobilenet_v2)
- 使用自己的数据集训练MobileNet、ResNet实现图像分类(TensorFlow)
- Pytorch TextCNN实现中文文本分类(附完整训练代码)
- YOLOV5学习笔记(七)——训练自己数据集
- 使用您自己的计算机训练 Stable Diffusion 和 Bloom (175B) 等模型
- 【转载】 PyTorch下训练数据小文件转大文件读写(附有各种存储格式对比)
- 计算机科学采用训练数据集,验证数据集,测试数据集 的方法 为什么不采用统计学中常用的假设检验呢? (参数检验 和 非参数检验)
- 人体姿态估计(人体关键点检测)2D Pose训练代码和Android源码
- 山东理工大学ACM平台题答案关于C语言 1137 C/C++经典程序训练7---求某个范围内的所有素数
- 蓝桥杯训练5
- Caffe训练数据转换为HD5与LMDB的代码实现