来了解一下deeplabv3+模型的工业应用流程
来源:投稿 作者:某一个名字
编辑:学姐
导语
在工业视觉应用中,目标检测算法常用于特征的粗定位,而语义分割则在特征的精定位方面有着突出的表现。使用较多的语义分割模型主要有FCN、deeplab系列、unet等,根据自身的实践来看deeplabv3+以及unet往往能够在工业数据集上有着良好的检测效果。这里就先介绍下deeplabv3+的工业应用流程。
1、代码获取
1.1这里推荐使用的代码库
https://github.com/bubbliiiing/deeplabv3-plus-pytorch
1.2版本选择

2、两种途径
很多教程往往只会说按照readme的要求安装requirements即可,但是往往会出现torch或者torchvision安装失败等现象,这里提供两种途径可以规避可能出现的坑。
2.1 pytorch与torchvision的离线安装
首先在官网https://download.pytorch.org/whl/torch_stable.html下载对应的torch以及torchvision版本。下载完成后cmd定位到下载文件夹后利用文件夹名进行安装即可,例如(torch1.4)E:\torch>pip install torch-1.4.0-cp37-cp37m-win_amd64.whl
。
2.2 镜像安装库
例如安装opencv_python==4.1.2.30可通过pip install opencv_python==4.1.2.30 -i
https:://pypi.doubanio.com/simple。
3、模型训练
3.1训练数据处理
使用labelme工具制作自己的数据集,制作完成后将原图与json格式文件一起放入datasets\before文件夹下,运行json_to_dataset.py生成检测图片与标签图片,分别位于datasets\JPEGImages、datasets\SegmentationClass下。最后将这两个文件夹copy到VOCdevkit\VOC2007文件夹下,运行voc_annotation.py即可生成最终的训练数据集格式。
注意点:运行json_to_dataset.py之前需要将classes更改成自己数据集种类,例如classes=[“_background_”,”luo”]。
3.2 模型训练
该代码库对于模型训练参数的更改设置均在train.py文件中做了很详细的说明,可以按照给出的注释适配自己的数据。
4、模型导出
目前模型部署的工具有很多例如openvino、libtorch、tensorrt、onnxruntime、opencvdnn等,个人使用比较多的是openvino、libtorch、tensorrt,现在就以libtorch为例来说明下模型部署的流程。
4.1 pth2pt
Libtorch接受的是pt格式的模型文件,所以需要将训练得到的pth权重文件转化为pt模型文件格式,转化代码为:
5、模型部署
5.1基于Windows的libtorch安装以及vs2019配置
5.1.1下载与安装
5.1.2附加依赖
1)opencv:需要提前配置opencv,本文以openCV3.4.0为例;
2)cuda:如果需要GPU部署的话需要提前配置cuda,本文以cuda10.2为例如只需要CPU部署这步可忽略。
5.1.3下载地址
1)libtorch下载地址: https://pytorch.org/get-started/locally/
5.1.4 vs2019配置libtorch(注意文件路径即可)
release、X64
VC++-目录:
包含:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\include
D:\opencv\build\include\opencv
D:\opencv\build\include\openCV2
D:\opencv\build\include
D:\libtorch\include\torch\csrc\api\include
D:\libtorch\include
库目录:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\lib
D:\opencv\build\x64\vc15\lib
D:\libtorch\lib
链接器-输入:
D:\libtorch\lib\torch.lib
D:\libtorch\lib\torch_cuda.lib
D:\libtorch\lib\caffe2_detectron_ops_gpu.lib
D:\libtorch\lib\caffe2_module_test_dynamic.lib
D:\libtorch\lib\torch_cpu.lib
D:\libtorch\lib\c10_cuda.lib
D:\libtorch\lib\caffe2_nvrtc.lib
D:\libtorch\lib\mkldnn.lib
D:\libtorch\lib\c10.lib
D:\libtorch\lib\dnnl.lib
D:\libtorch\lib\libprotoc.lib
D:\libtorch\lib\libprotobuf.lib
D:\libtorch\lib\libprotobuf-lite.lib
D:\libtorch\lib\fbgemm.lib
D:\libtorch\lib\asmjit.lib
D:\libtorch\lib\cpuinfo.lib
D:\libtorch\lib\clog.lib
D:\opencv\build\x64\vc14\lib\opencv_world340.lib
5.2 基于libtorch的部署代码如下


语义分割论文学姐也准备了部分经典必读!需要的同学来领取啦~
关注【学姐带你玩AI】回复“500”即可