【图像语义分割】Windows10训练DeepLabv3模型(Pytorch版)


2021.1.14更新:
出现识别类别色彩与原图不一样的情况,原因是代码默认是pascal数据集的上色策略,请将 ./dataloaders/utils.py下第五行: def decode_seg_map_sequence(label_masks, dataset='pascal'):
更改为 def decode_seg_map_sequence(label_masks, dataset='cityscapes'):

更新日期:2020.12.23
环境:Win10 + Anaconda3 + pytorch1.6.0 + cuda10.2.89 + cudnn7.6.5
GPU:2070
IDE:pycharm

图像分割是计算机视觉中除了分类和检测外的另一项基本任务,它意味着要将图片根据内容分割成不同的块。相比图像分类和检测,分割是一项更精细的工作,因为需要对每个像素点分类,如下图的街景分割,由于对每个像素点都分类,物体的轮廓是精准勾勒的,而不是像检测那样给出边界框。

一、环境搭建

1、安装Anaconda3、cuda、cudnn、pytoch

详见此文

2、安装相应库

由于github源码中并没有阐明环境中具体工具包的版本号或requirement.txt,因此读者可以选择:
a、待运行代码时根据报错逐一弥补缺漏的工具包,安装时直接conda install 库名,如不确定有哪些版本可选,可运行conda search 库名查询。
b、依据上面链接中yolov5的环境配置工具包

3、安装pycocotools包

pycocotools,即python api tools of COCO。COCO是一个大型的图像数据集,用于目标检测、分割、人的关键点检测、素材分割和标题生成。这个包提供了Matlab、Python和luaapi,这些api有助于在COCO中加载、解析和可视化注释。

若不安装pycocotools包,在后续运行训练模型的代码时,会报错:

No module named ‘pycocotools’

点击此链接下载Microsoft Visual C++ 14.0,压缩包内附教程。

二、准备数据集(cityscapes)

Cityscapes拥有5000张在城市环境中驾驶场景的图像(2975train,500 val,1525test)。它具有19个类别的密集像素标注(97%coverage),其中8个具有实例级分割。Cityscapes数据集,即城市景观数据集,这是一个新的大规模数据集,其中包含一组不同的立体视频序列,记录在50个不同城市的街道场景。
在这里插入图片描述
官网链接——需要注册账号、下载速度慢。
百度云链接 提取码:dhr8

并将文件摆放为如下结构:
----cityscapes
--------gtFine_trainvaltest
------------gtFine
----------------test
----------------train
----------------val
--------leftImg8bit
------------test
------------train
------------val
--------preprocess.py
--------read_depth.py
--------testImages.txt
……一堆.txt

本人尝试过使用pascal VOC 2012 ,只有1.9G,训练效果并不佳。(可能是我参数没调对)

三、准备源码

github:源码地址

四、训练模型

配置参数

1、打开mypath.py将cityscapes下的return地址改为自己的cityscapes文件夹地址,如return 'E:\cityscapes/',并保存。
2、打开train.py,将设置中的dataset设为cityscapes;use-sbd改为false;修改自己合适的batch-size(本人RTX2070 8G,只能设为2);backbone可根据需要自行选择,我选的是xception模型,其它模型如下:
在这里插入图片描述
其它参数本人均为默认。如有需要也可自行修改。

开始训练

运行train.py首次训练时,会自动下载xception预训练模型C:\Users\HP.cache\torch\hub\checkpoints,但速度很慢。因此可以点击此处下载预期训练模型直接拷贝到目录下。再次运行训练代码。

请关注模型是否能顺利运行完第一个Epoch,如有报错:ValueError: Expected more than 1 value per channel when training, got input size是因为模型中用了batchnomolization,训练中用batch训练的时候当前batch恰好只含一个sample,而由于BatchNorm操作需要多于一个数据计算平均值,因此造成该错误。
解决方法:删掉一个训练样本(包括每个文件夹下的图片和.txt中的标签),使得train、test、val的样本数量均能被batchsize整除。(我train和test下各删了一个样本)

其它疑难杂症

待发现

  • 9
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 17
    评论
要在Visual Studio中使用C#进行语义分割,可以按照以下步骤进行操作。首先,根据官方文档说明,生成项目工程有两种方式。一种是使用CMake对PaddleX/deploy/cpp中的代码进行编译,另一种是使用Visual Studio直接打开PaddleX/deploy/cpp文件夹中的CMakeLists.txt进行项目生成。如果选择使用Visual Studio进行项目生成,可以按照以下步骤进行操作: 1. 打开Visual Studio 2019,并点击“继续但无需代码”。 2. 点击“文件”->“打开”->“CMake”。 3. 选择PaddleX/deploy/cpp文件夹,并打开CMakeLists.txt文件。 另外,如果你想使用PaddleX中的C#示例工程进行测试,可以参考官方在PaddleX/deploy/cpp/docs/csharp_deploy/c#路径下给出的说明进行操作。其中包括关闭Visual Studio,替换model_infer.cpp文件,打开PaddleDeploy.sln,配置解决方案为release,对model_infer项目进行生成,生成model_infer.dll文件,并在C#项目中进行调用。 <span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Windows10系统下C#部署Paddlex模型](https://blog.csdn.net/weixin_46846685/article/details/126803357)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值