首页 > 其他分享 >全流程机器视觉工程开发(二)PaddleDetection:拉框,然后开始训练模型

全流程机器视觉工程开发(二)PaddleDetection:拉框,然后开始训练模型

时间:2024-01-19 14:23:35浏览次数:33  
标签:训练 -- 模型 PaddleDetection python 视觉 labelme 拉框

前言

我现在在准备做一个全流程的机器视觉的工程,之前做了很多理论相关的工作。大概理解了机器视觉的原理,然后大概了解了一下,我发现现在的库其实已经很发展了,完全不需要用到非常多的理论,只需要知道开发过程就可以了,甚至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文件夹下

在这里插入图片描述

开发流程

开发一个训练模型,我们大概有如下流程:

  1. 使用labelme对数据集标签进行划分
  2. 转换labelme数据集到COCO数据集或者VOC数据集,这里转换成COCO数据集
  3. 修改PaddleDetection的配置文件,以我们给定的数据集为训练集
  4. 进行训练
  5. 进行预测

使用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,python,视觉,labelme,拉框
From: https://www.cnblogs.com/Leventure/p/17974521

相关文章

  • 机器视觉 - yolo 相关工具
    模型可视化netron网站netron源码标签格式转换文章:https://zhuanlan.zhihu.com/p/461488682代码:https://github.com/KKKSQJ/DeepLearning/blob/master/others/label_convert/README.mdyolo标注文件可视化源码:https://github.com/KKKSQJ/DeepLearning/blob/master/oth......
  • 机器视觉 - yolo 调参
    模型训练通用规则:如果train效果挺好,但test或predict效果较差,说明overfit了.原因有:(1)模型太复杂了,这时候应该减少epoch或者使用更小scale的模型.(2)train数据集太小,这时候需要增加训练数据如果train效果不佳,可以使用更大规模的模型,或者增加训练数据,......
  • python pyqt6 QComboBox 设定下拉框背景颜色
    设定QComboBox的背景颜色,边框设定,以及下拉框的背景颜色以及边框设定,selection-background-color不生效可忽略 xxx_source=QComboBox(self.xxx_frame)xxx_source.setStyleSheet("QComboBox{background-color:transparent;color:transparent;border-......
  • 机器视觉 - YoloV8 是采用预训练还是从零开始训练的模型
    关于Fine-tuning和预训练和fromscratch训练yolo命令行model的参数的说明既可以选择yolov8n.pt,也可以选择yolov8n.yaml,区别是:model=yolov8n.pt,即为Fine-tuning训练,yolov8n.pt模型文件已经包含了yolov8网络结构、超参数、训练参数、权重参数信息,它是官方的pre......
  • 机器视觉 - YoloV8 划分数据集
    train/val/test的关系纯训练命令行参数mode=trainval=Falsemodel=yolov8n.pt训练+val命令行参数mode=trainval=Truemodel=yolov8n.pt验证预训练模型的命令行参数mode=valsplit=valmodel=yolov8n.pt验证自有模型的命令行参数mode=valsplit=valm......
  • 机器视觉 - YoloV8 命令行使用
    准备data.yaml文件从roboflow上下载CS游戏数据集,因为只有CPU,我对数据集做了瘦身,train:689张,val:23张,test:40张.https://universe.roboflow.com/roboflow-100/csgo-videogame/dataset/2train:../train/imagesval:../valid/imagestest:../test/imagesnc......
  • 计算机视觉相关会议与期刊
    本文来自知乎用户会找论文的鸡翅根,这里仅作备份,原文链接。计算机视觉和模式识别领域的代表就是四大顶会了:ICCV、ECCV、CVPR、NIPS,还有就是难度最高的PAMI了,这些都让人望而生畏。那么除了这些耳熟能详的期刊和会议之外,还有哪些该领域的期刊呢?下面我收集了一些该领域的代表性期刊......
  • 大模型背景下计算机视觉年终思考小结(上)
    1.引言在过去的十年里,出现了许多涉及计算机视觉的项目,举例如下:使用射线图像和其他医学图像领域的医学诊断应用使用导航图像分析建筑物和土地利用率相关应用各种环境下的目标检测和跟踪,如交通流统计、自然环境垃圾检测估计等上述应用所采用的计算机视觉的方法遵循统一的标准流程:首......
  • OpenCV计算机视觉学习(15)——浅谈图像处理的饱和运算和取模运算
    如果需要其他图像处理的文章及代码,请移步小编的GitHub地址传送门:请点击我如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice本来在前面博客OpenCV计算机视觉学习(2)——图像算术运算&图像阈值(数值计算,掩膜mask操作,边界填充,二值化)里面已经学习了......
  • 机器视觉 - YoloV8 命令行安装
    创建python环境下载并安装miniconda安装包,注意miniconda和python版本对应关系,不要选择python最新的版本,以免yolo或pytorch不能兼容最新版python.这里到安装到C:\miniconda3配置conda环境,修改conda配置文件内容,文件名为C:\Users\myuser\.condarcpy虚拟环......