工程(二)——DeeplabV3+语义分割训练自制数据集

2023-11-05

目录

1、配置环境

1.1 利用conda新建一个环境并激活

1.2 安装pytorch

1.3 更新bashrc环境

2、安装DeeplabV3

2.1 克隆代码

2.2 下载数据集和预训练模型

3、测试算法

4、制作VOC数据集

4.1 转VOC格式

4.2 项目数据准备

5、训练验证数据集

5.1 visdom可视化

5.2 训练网络

5.3  验证模型

6、cityscapes数据集的训练及制作

6.1 训练cityscapes数据集

6.2 cityscapes数据集的制作


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数据集的制作

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

工程(二)——DeeplabV3+语义分割训练自制数据集 的相关文章

随机推荐

  • 图片转二进制——各种方法汇总

    使用Base64转换图片 利用Base64实现二进制和图片之间的转换 具体代码如下 import java awt image BufferedImage import java io ByteArrayInputStream import
  • win10开始菜单打不开,找不到(没有)本地安全策略

    方法一 看你C盘windows目录下的system32目录下 这两个文件gpedit msc和secpol msc还在不在 不在了就从别的电脑上拷过来 然后点 开始 运行 输入gpedit msc 点确定 如果没有执行 那么就直接去wind
  • linux查看已删除空间却没有释放的进程

    背景 rm删除了文件或者文件夹 df查看时发现没有释放磁盘空间 执行lsof n grep deleted这个命令 root localhost lsof n grep deleted 发现有几个删除了但是没有释放空间 root local
  • Sequence Modeling: Recurrent and Recursive Nets(1)

    CONTENTS Recurrent neural networks or RNNs Rumelhart et al 1986a are a family of neural networks for processing sequenti
  • keil debug如何在watch直接修改变量值_ST福利:如何使用STM32F103C8T6的后64KB flash

    在STM32F103系列芯片中 C8T6 和CBT6均为LQFP48封装 而且差异仅为flash大小区别 C8T6为64KB CBT6为128KB 然而 虽然C8T6的datasheet中标称为64KB 实际上C8T6和CBT6由同一片di
  • Linux Watchdog 机制

    前言 Watchdog 是 Linux 系统一个很重要的机制 其目的是监测系统运行的情况 一旦出现锁死 死机的情况 能及时重启机器 取决于设置策略 并收集crash dump watchdog 顾名思义 看门狗 这就说明 有一个被watch
  • Ubuntu16.04安装jdk1.8

    Ubuntu16 04安装jdk记录 在官网上下载jdk版本 这个步骤就不详细说明 图形化的 很简单 移到 opt 目录下 个人习惯 sudo mv sudo mv jdk 8u151 linux x64 tar gz opt 解压缩到 o
  • 基于antd Tree实现可编辑菜单树,支持节点新增、删除

    基于antd3 Tree实现可编辑菜单树 支持节点新增 编辑 删除 基于antd Tree 实现了可编辑菜单树 支持以下功能 树节点 新增 编辑 删除 提示 以下代码 可参考 一 效果 二 完整代码 1 引入库 代码如下 示例 import
  • camera isp应用

    ISP应用及市场调研报告 1 调研目标及方法 1 1 调研目标 手机摄像头模组用ISP功能模块的市场走向及研发方向 为能够正确认识手机摄像模组行业提供技术及市场依据 2 ISP在模组上的应用原理 图一 手机摄像模组后端处理IC功能划分图 2
  • 锁相环工作原理

    锁相环 Phase Locked Loop 相位 锁 环路 简称 PLL 基本构成 f1 是输入频率 f2是输出频率 并且反馈给鉴相器 压控振荡器 压控振荡器的全称是 Voltage Controlled Oscillator 电压 控制
  • Unix时间戳和北京时间的相互转换(C语言实现 )

    一 问题背景 最近物联网项目中需要上传包含时间戳的设备数据到服务器平台 原本想把 年 月 日 时 分 秒 分别用一个 uint8 t 的数据类型去存储 即占用6个字节 但是在平台配置协议时 只有一种叫 Unix时间戳 的数据类型 Unix时
  • Restful API思路

    1 通过服务器重写规则 将所有请求走一个入口方法 例如index php的run 方法 2 通过 SERVER 找到请求方法 请求路径 请求参数 进行初始化参数 3 根据请求路径 走不同model处理 根据请求方法不同 走不同的处理方法 4
  • SystemVerilog 验证-测试平台编写指南学习笔记(3):连接设计和测试平台

    文章目录 1 为什么需要更高层次的方法连接 Testbench 与 DUT 2 SystemVerilog 接口 2 1 什么是接口 2 2 接口怎么连接 2 3 接口的优缺点 3 SystemVerilog 控制通信中时序问题地结构 3
  • 教你快速搭建个人网站

    一 搭建环境 云主机 华为云 操作系统 centos 7 x 源码 GitHub wyt1215819315 autoplan 这是一个自动化的托管系统 目前支持网易云 bilibili 米游社原神签到 测试地址https auto old
  • vue项目在ie11 浏览器运行出现错误解决方法

    一 基础配置 vue cli 版本 5 0 1 配置 browserslistrc 文件 gt 1 last 2 versions not dead ie gt 10 2 配置vue config js 配置 transpileDepend
  • C++堆栈详解

    前言 我们经常听见一个概念 堆 heap 和栈 stack 其实在数据结构中也有同样的这两个概念 但是这和内存的堆栈是不一样的东西哦 本文也会说明他们之间的区别的 另外 本文的只是是以C C 为背景来说明 不同的语言在内存管理上面会有区别
  • java实现只能有一个相同用户登录的功能

    需求 使用相同用户名登录系统 确保同名用户登录顶掉之前用户登录或者返回登录的功能 实现效果图 java实现 首先 1 web xml中配置监听器
  • CMD 查杀端口详细

    1 netstat aon findstr pid 2 taskkill pid id f 杀死端口 注 pid 后面的pid 事 查询的进程id
  • 多元回归预测

    文章目录 效果一览 文章概述 部分源码 参考资料 效果一览 文章概述 多元回归预测 Matlab贝叶斯算法 bayes 优化随机森林的数据回归预测 bayes RF回归预测 多变量输入模型 评价指标包括 MAE RMSE和R2等 代码质量极
  • 工程(二)——DeeplabV3+语义分割训练自制数据集

    目录 1 配置环境 1 1 利用conda新建一个环境并激活 1 2 安装pytorch 1 3 更新bashrc环境 2 安装DeeplabV3 2 1 克隆代码 2 2 下载数据集和预训练模型 3 测试算法 4 制作VOC数据集 4 1