来源:投稿 作者:某一个名字
编辑:学姐
在工业视觉应用中,目标检测算法常用于特征的粗定位,而语义分割则在特征的精定位方面有着突出的表现。使用较多的语义分割模型主要有FCN、deeplab系列、unet等,根据自身的实践来看deeplabv3+以及unet往往能够在工业数据集上有着良好的检测效果。这里就先介绍下deeplabv3+的工业应用流程。
https://github.com/bubbliiiing/deeplabv3-plus-pytorch
很多教程往往只会说按照readme的要求安装requirements即可,但是往往会出现torch或者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
。
例如安装opencv_python==4.1.2.30可通过pip install opencv_python==4.1.2.30 -i
https:://pypi.doubanio.com/simple。
使用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”]。
该代码库对于模型训练参数的更改设置均在train.py文件中做了很详细的说明,可以按照给出的注释适配自己的数据。
目前模型部署的工具有很多例如openvino、libtorch、tensorrt、onnxruntime、opencvdnn等,个人使用比较多的是openvino、libtorch、tensorrt,现在就以libtorch为例来说明下模型部署的流程。
Libtorch接受的是pt格式的模型文件,所以需要将训练得到的pth权重文件转化为pt模型文件格式,转化代码为:
import torch
import torchvision
from nets.deeplabv3_plus import DeepLab
model = DeepLab(num_classes=2)#自己定义的网络模型
model.load_state_dict(torch.load("D:/deeplearning/pytorch/deeplabv3-plus-pytorch-main/logs/ep300-loss0.008-val_loss0.005.pth"))#保存的训练模型
model.eval()
#如果是基于GPU的libtorch部署则需要加以下两句
model.cuda()
example = torch.rand(1, 3, 512, 512).to('cuda')#生成一个随机输入维度的输入
#如果是基于CPU的libtorch部署则为以下三句,无需cuda,注释掉即可。
example = torch.rand(1, 3, 256, 256)#生成一个随机输入维度的输入
traced_script_module = torch.jit.trace(model, example)
traced_script_module.save("deeplabv3.pt")
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
至此基于deeplabv3+的工业应用流程分析就此结束了,本人也是初次撰稿,希望未来将两年多工业界AI探索应用的经验分享给大家,很多不足的地方需要各位积极指正大家一起进步,加油谢谢!
关注下方《学姐带你玩AI》
回复“500”获取AI必读高分论文合集
(包含语义分割等多个细分方向)
码字不易,欢迎大家点赞评论收藏!