目录
二、语义分割工具我使用的是集成SAM的工具,这个工具方便语义分割标注,减轻工作量。
六、将模型转换为onnx格式(详情可以参考官网,我这里简单说一下)
一、飞桨下载。
1.下载链接
飞桨PaddlePaddle-源于产业实践的开源深度学习平台
1.飞桨版本信息
二、语义分割工具我使用的是集成SAM的工具,这个工具方便语义分割标注,减轻工作量。
工具链接https://isat-samzh.readthedocs.io/zh-cn/latest/usage.html
三、数据标注
1.这里同一张图片标注2个类别一个是头部,一个是壳。定义了两个标签一个是头部hat和背部back,标注示意图如下,这是我完成标注的图片,这样就是可以完成同一张图片多类别的标注。
2.所有图片标注完成后我们需要导出符合飞桨训练的数据集。飞桨语义分割的数据集要求如图所示,我们就需要按他们的要求整理这些数据集。根据飞桨的要求我们知道训练的数据集是标注原图和标注后的图片png。png图可以使用我们标注工具的生成。
3.png图导出,打开我们标注时候的导入的图片文件夹你会发现图片文件夹下面多了json文件,.新建一个文件只存放json文件和新建一个png文件夹存放工具转换的png图片。
3.1下面是我存放json文件夹
4.数据转换
4.1点击软件的数据
4.2.选择数据转换,点击VOC,并点击实例分割进入下面的界面。(实例分割必须点击,不然生成的png图片飞桨无法训练)
4.3.选择好需要转换的json目录和保存转换好的png图片的图片文件夹,点击转换就可以生成png图片了
4.4.进入自己新建的png图片保存文件夹查看png文件是否生成成功,这样就是生成成功了,这里图片统一红色是头,背部是绿色证明分类没错,如果出现一张他们颜色调换了或者颜色不一致就证明标注有问题,你要重新修改标注重新生成。因为我这里是两个类别所以只有两种颜色。
四、将训练数据导入飞桨
5.1这里新建了一个label.txt文件,因为没有这个文件到时候标签名字只有显示数字,所以为了更好分辨标签名字我创建了一个label.txt文件。label文件内容如下:background是背景是必须有的,还有我刚刚标注的标签hat和back。
5.2按飞桨文件夹要求新建一个文件夹,将需要导入的飞桨的内容都放进去。
5.3.操作飞桨软件将内容导入。点击数据,然后选择新建数据集
5.4选择语义分割,最后点击创建。
5.5点击这里选择刚刚存放内容文件夹最后点击确定导入。(如果导入失败请检测自己的文件是否出差,png图片名字与原图图片名字是否对上,两文件夹数量是否对上等原因)
5.6点击立即切分如果不切分后续是不能训练的。切分可以按他系统自动分配就行。
5.7这里选择叠加图可以再次确认是否标注出错。
五、开始训练
6.1点击新建项目
6.2选择语义分割然后创建
6.3下拉选择数据集,选择刚刚我们创建的数据集。
6.4模型建议优先选择bisenetv2,这个模型训练语义分割速度和效果较为综合,如果这个模型训练效果不佳可以更换模型。
6.5训练参数自己看着来调,主要修改迭代轮数和批大小,他们这两个越大训练效果越好
6.6.启动训练,其他训练参数设置看自己需求选择。参数设置完后点击启动训练,等待训练完成。
6.7.生成模型并评估,训练完成后点击评估模型。
6.8.选择需要验证的图片,可以选择刚开始的验证集,可以选择另外的图片进行验证。选择好图片后点击启动测试就可以看到这个跑出来的模型结果怎么样。
6.9.点击下一步,并选择发布这样飞桨的模型就保存在本地了。
六、将模型转换为onnx格式(详情可以参考官网,我这里简单说一下)
7.1下载飞桨转onnx工具指令
python -m pip install paddle2onnx
7.2飞桨模型发布后会生成以下这些文件
7.3运行下面指令进行转换
paddle2onnx --model_dir ./inference_model --model_filename model.pdmodel --params_filename model.pdiparams --save_file model.onnx --enable_dev_version True --opset_version 13
7.3.1 ./inference_model替换为飞桨模型存放路径
7.3.2 save_file model.onnx为存放路径,和onnx命名,这里的onnx转换后命名为model。如果你不指定路径存放路径他会将模型默认存放在用户路径下。
7.3.3下面是我的修改路径,并将model.onnx名字该成了haha.onnx。
7.3.4我将onnx存放在了指定目录专业onnx就生成了。
七、最后调用ONNX进行语义分割验证
8.1只获取类别头示意图
8.2只获取背部类别示意图
8.3同时获取头部和背部示意图