全流程机器视觉工程开发(二)PaddleDetection:拉框,然后开始训练模型
前言
我现在在准备做一个全流程的机器视觉的工程,之前做了很多理论相关的工作。大概理解了机器视觉的原理,然后大概了解了一下,我发现现在的库其实已经很发展了,完全不需要用到非常多的理论,只需要知道开发过程就可以了,甚至paddlex已经直接有了傻瓜式模型训练的软件,所以我现在准备来做一个全流程机器视觉工程开发,不涉及过多理论。
书接上文,我们在先前的文章全流程机器视觉工程开发(一)环境准备,paddledetection和labelme中说明了如何准备PaddleDetection环境和Labelme工具,现在我们来做后续的开发工作。
到这里开始我们就可以开始尝试训练模型了。当然了,工欲善其事,必先利其器,我们在正式训练模型之前,先要学会如何获得数据集。
在正式开始训练和使用之前,可以先来测试一下如何使用paddledetection库。与传统的python库不同,PaddleDetection库与其说是一个库,不如说是一个类似于ffmpg那样的一个程序,通过给程序入口点参数来控制PaddleDetection库的行为
在当前的文章中,所有的操作都是直接通过python直接操作具体的文件执行的,所以我们现在在CMD上默认你已经转到了PaddleDetection的目录下,比如我的电脑上是这样:
cd /d E:\Leventure\WorkShop\Python\PaddleDetection

然后所有的命令也都是通过cmd执行的,当然了你也可以通过脚本或者python终端去完成这些任务,这些都是无所谓的。
注:为了写文档的方便,下文中为了编写的方便,Paddledetection库统一称为PD库,当前目录指的是PaddleDetection的库根目录
试用
首先我们安装完成后,按照教程,先尝试这个命令检查库的安装情况:
python ppdet/modeling/tests/test_architectures.py
通过后会提示如下信息:
..........
----------------------------------------------------------------------
Ran 12 tests in 2.480s
OK (skipped=2)
在PD库中,已经提供了一些Demo图片以供测试,就在当前目录下的demo文件夹中

我们这里取000000014439.jpg进行测试,在cmd中输入如下命令:
python tools/infer.py -c configs/ppyolo/ppyolo.yml -o use_gpu=true weights=https://paddlemodels.bj.bcebos.com/object_detection/ppyolo.pdparams --infer_img=demo/000000014439.jpg
这里我暂时先不解释这条命令做了什么,我们先来看结果。结果输出到当前目录/output文件夹下

开发流程
开发一个训练模型,我们大概有如下流程:
- 使用labelme对数据集标签进行划分
- 转换labelme数据集到COCO数据集或者VOC数据集,这里转换成COCO数据集
- 修改PaddleDetection的配置文件,以我们给定的数据集为训练集
- 进行训练
- 进行预测
使用labelme 对数据集进行划分
这个部分比较简单,参考图片标注工具Labelme的安装及使用方法
然后我们获得了图片和标签,我们画好文件夹,如图:
图片在文件夹:

标签在
J:\Train\labelme_annos

转换labelme数据集到COCO数据集或者VOC数据集,这里转换成COCO数据集
我们这里要用到PD项目下的工具,tools/x2coco.py
我们在cmd中输入:
python tools/x2coco.py --dataset_type labelme --json_input_dir J:\Train\labelme_annos --image_input_dir J:\Train\labelme_imgs --output_dir J:\Train\cocome --train_proportion 0.8 --val_proportion 0.2 --test_proportion 0.0
上面每一个--标签 空格后面的内容就是参数的内容
--dataset_type :当前转换的数据类型
--json_input_dir:标签json文件的目录路径
--image_input_dir:图片文件的目录路径
--output_dir:输出路径
--train_proportion:训练集数据占比
--val_proportion:评估集数据占比
--test_proportion:测试集数据占比
我们这里输入这个命令,就会在J:\Train\cocome文件夹下创建一个COCO数据格式的数据集

修改PaddleDetection的配置文件,以我们给定的数据集为训练集
在使用之前,我们要先选定一个模型
能用的模型有挺多的,我们这里以yolov3为例
找到yolov3_mobilenet_v1_270e_coco的配置文件,在.configs/yolov3/yolov3_mobilenet_v1_270e_coco.yml

这里这个../datasets/coco_detection.yml就是当前这个模型配置数据集的目录,我们转到这个文件
./configs/datasets/coco_detection.yml

这里我已经改了,你可以按照我给的目录和注释自己修改。
到此就已经配置好了我们想要的数据集。
进行训练
进行训练的话,比较简单,就是直接调库。
python -u tools/train.py -c configs/yolov3/yolov3_mobilenet_v1_270e_coco.yml --eval
这里的configs路径是根据我们前面挑选和使用的模型来进行修改,不同的模型有不同的优势,准确度或者训练时间或者mAP值都不同,这里我们不关心细节,只关心结果。

这里就已经开始进行了训练,这里可以看到需要训练好几个小时,慢慢等吧。
等训练结束后,输入命令
python -u tools/export_model.py -c configs/yolov3/yolov3_mobilenet_v1_270e_coco.yml --output_dir=./inference_model
导出这个模型,当然了这个模型也会保存在C盘一个临时位置,后面再训练模型的话会把原先这个模型覆盖掉也是很正常的。
导出之后,会导出一个.pdparams文件,这个文件之后我们会用。
进行预测
进行预测的命令也很简单,这个时候我们就可以来看看我们本文开头的那个测试命令了:
python tools/infer.py -c configs/ppyolo/ppyolo.yml -o use_gpu=true weights=https://paddlemodels.bj.bcebos.com/object_detection/ppyolo.pdparams --infer_img=demo/000000014439.jpg
我们通过这个infer.py来进行的预测工作,参数列表如下:
-c :模型的配置文件
-o : use_gpu=true 是否使用gpu weights= 用什么模型,这里我们可以使用我们自己训练的,网上实际上也提供了一些训练好的模型,当你在初始化训练的时候实际上已经把训练好的模型下载到你本地了,训练完成后你也可以自行导出到本地。你可以自己找找
--infer_img :需要推测的图片
在这里插入图片描述

全流程机器视觉工程开发(二)PaddleDetection:拉框,然后开始训练模型的更多相关文章
- 全球首个全流程跨平台界面开发套件,PowerUI分析
一. 首个全流程跨平台界面开发套件,PowerUI正式发布 UIPower在DirectUI的基础上,自主研发全球首个全流程跨平台界面开发套件PowerUI(PUI)正式发布,PowerU ...
- FineReport——JS二次开发(下拉框)
下拉框显示多列时,输入的内容检索的内容为显示值整行数据,而不是实际值. 下拉框选择之后,控件显示的是显示值而非实际值. 对于下拉框显示队列,可以有多种方法,但是经过测试大多数方法不适用,检索效率太低, ...
- Dorado开发——树形下拉框
最近在学习Dorado开发的过程中,遇到了一个问题,Dorado的树形下拉框选择:Dorado默认情况下父节点和子节点都是可选的,而我要实现的是父节点不可选. 解决办法:在下拉框中,判断父子节点,点击 ...
- android 开发-spinner下拉框控件的实现
Android提供实现下拉框功能的非常实用的控件Spinner. spinner控件需要向xml资源文件中添加spinner标签,如下: <Spinner android:id="@+ ...
- halcon机器视觉工程开发思路
参考:halcon学习笔记——机器视觉工程应用的开发思路https://www.cnblogs.com/hanzhaoxin/archive/2013/02/15/2912879.html
- 微信小程序开发——获取小程序带参二维码全流程
前言: 想要获取微信小程序带参数二维码,如这种: 官方文档只说了获取小程序码和二维码的三种接口及调用(参考链接:https://developers.weixin.qq.com/miniprogram ...
- 十分钟带你了解CANN应用开发全流程
摘要:CANN作为昇腾AI处理器的发动机,支持业界多种主流的AI框架,包括MindSpore.TensorFlow.Pytorch.Caffe等,并提供1200多个基础算子. 2021年7月8日,第四 ...
- Halcon学习笔记——机器视觉应用工程开发思路及相机标定
机器视觉应用工程开发思路 机器视觉应用工程主要可划分为两大部分,硬件部分和软件部分. 1.硬件部分,硬件的选型至关重要,决定了后续工作是否可以正常开展,其中关键硬件部分包括:光源,相机以及镜头. 2. ...
- 基于Jenkins的开发测试全流程持续集成实践
今年一直在公司实践CI,本文将近半年来的一些实践总结一下,可能不太完善或优美,但的确初步解决了我目前所在项目组的一些痛点.当然这仅是一家之言也不够完整,后续还会深入实践和引入Kubernetes进行容 ...
- AI全流程开发难题破解之钥
摘要:通过对ModelArts.盘古大模型.ModelBox产品技术的解读,帮助开发者更好的了解AI开发生产线. 本文分享自华为云社区<[大厂内参]第16期:华为云AI开发生产线,破解AI全流程 ...
随机推荐
- ASP.NET Core 8 在 Windows 上各种部署模型的性能测试
ASP.NET Core 8 在 Windows 上各种部署模型的性能测试 我们知道 Asp.net Core 在 windows 服务器上部署的方案有 4 种之多.这些部署方案对性能的影响一直以来都 ...
- js上传多个文件到asp.net core,并实时转存到阿里云oss
有时候,为了追求便利性,我们可能会让前端直接将文件上传到阿里云OSS,然后将URL提交给ASP.NET.然而,这种做法意味着前端需要拥有OSS的访问密钥,而将密钥存放在前端,无疑增加了被破解的风险.因 ...
- The fourth day learning summary
一.for 循环循环就是重复做某件事,for循环是python提供第二种循环机制(第一种是while循环),理论上for循环能做的事情,while循环都可以做.目的:之所以要有for循环,是因为for ...
- NetSuite 开发日记:如何管理多环境自定义列表值
在 NetSuite 中可以创建自定义列表,列表可用于为其他(自定义)记录上的下拉选项列表值. var rec = record.create({ type: 'customrecord_xx' }) ...
- --{module_name}_binary_host_mirror和--{module_name}_binary_site
--{module_name}_binary_host_mirror和--{module_name}_binary_site demo // .npmrc文件 sass_binary_site=htt ...
- ElasticSearch之cat recovery API
命令样例如下: curl -X GET "https://localhost:9200/_cat/recovery?v=true&pretty" --cacert $ES_ ...
- CentOS 7.3 操作系统 详解安装手册
CentOS 7.3 操作系统 安装手册 在安装ESPC前(绿盟WAF.IPS等外置日志中心),需要确保已经在计算机中正确安装CentOS 7.3 x86_64(内核版本为3.10.0-514.el7 ...
- shiro基于角色URL进行鉴权
前言 shiro基于URL进行鉴权,网上有很多,但是多数都是copy不排版,眼睛都看花了,还不如自己看看源码. 2021年1月14日21:23:49最新的shiro是1.7,使用时发现了首次访问的一个 ...
- UE5:相机震动CameraShake源码分析
本文将会分析UE5中相机震动的调用流程,会简要地分析UCameraModifier_CameraShake.UCameraShakeBase等相关类的调用过程. 阅读本文,你至少需要使用或者了解过Ca ...
- Git使用经验总结2-配置用户名邮箱
可以使用git config指令来配置一些设置,比如配置用户名邮箱.在开发团队要求成员配置用户名和邮箱是很有用的,可以配合工具区分成员的代码,以及将代码中的问题发送给成员的邮箱中. 查看当前Git的用 ...