PPOCR - 命令行训练模型基本流程和常用命令+visualdl可视化

news2025/1/18 7:41:55

前言

本文记录实践中用paddleocr训练自己的模型的基本步骤和常用命令,以detection为例
更详细内容请参考官方文档https://github.com/PaddlePaddle/PaddleOCR/tree/release/2.6/doc/doc_ch

〇、环境准备

0.1 paddlepaddle环境安装

paddle环境安装链接 根据自己的配置安装环境

0.2 克隆PaddleOCR repo代码

git clone https://github.com/PaddlePaddle/PaddleOCR
# 进入目录安装依赖
cd PaddleOCR
pip3 install -r requirements.txt

一、训练前准备

1.1 准备数据集(合成 / 下载)

https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.6/doc/doc_ch/dataset/ocr_datasets.md
到该链接根据要求的格式合成数据集 或 下载相关公开数据集

1.2 下载预训练模型(若需要的话)

这边列举几个预训练模型

wget -P ./pretrain_models/ https://paddleocr.bj.bcebos.com/pretrained/MobileNetV3_large_x0_5_pretrained.pdparams
# 或,下载ResNet18_vd的预训练模型
wget -P ./pretrain_models/ https://paddleocr.bj.bcebos.com/pretrained/ResNet18_vd_pretrained.pdparams
# 或,下载ResNet50_vd的预训练模型
wget -P ./pretrain_models/ https://paddleocr.bj.bcebos.com/pretrained/ResNet50_vd_ssld_pretrained.pdparams

1.3 修改配置文件

根据下载的预训练模型修改对应的配置文件;
https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.6/doc/doc_ch/config.md 可以到该链接找到配置文件的参数的用途和解释。

二、训练

2.1 开始训练

# 单机单卡训练 mv3_db 模型
python3 tools/train.py -c configs/det/det_mv3_db.yml \
     -o Global.pretrained_model=./pretrain_models/MobileNetV3_large_x0_5_pretrained

# 单机多卡训练,通过 --gpus 参数设置使用的GPU ID
python3 -m paddle.distributed.launch --gpus '0,1,2,3' tools/train.py -c configs/det/det_mv3_db.yml \
     -o Global.pretrained_model=./pretrain_models/MobileNetV3_large_x0_5_pretrained

-c 选择训练使用configs/det/det_mv3_db.yml配置文件,
-o 在不需要修改yml文件的情况下,改变训练的参数,比如,调整训练的学习率为0.0001

python3 tools/train.py -c configs/det/det_mv3_db.yml -o Optimizer.base_lr=0.0001

其他参考:

  1. 百度Paddlepaddle-GPU运行时出现Error: Cannot load cudnn shared library. Cannot invoke method cudnnGetVersion
  2. PaddleOCR遇到RuntimeError: (PreconditionNotMet) Cannot load cudnn shared library. 错误的解决
    参考总结就是:
    若开始训练遇到了如下报错
RuntimeError: (PreconditionNotMet) Cannot load cudnn shared library. Cannot invoke method cudnnGetVersion.
  [Hint: cudnn_dso_handle should not be null.] (at /paddle/paddle/phi/backends/dynload/cudnn.cc:60)

第一步:用locate libcudnn.so 定位libcudnn.so所在路径
第二步:export LD_LIBRARY_PATH=xxx/lib:$LD_LIBRARY_PATH

2.2 断点训练

如果训练程序中断,如果希望加载训练中断的模型从而恢复训练,可以通过指定Global.checkpoints指定要加载的模型路径:

python3 tools/train.py -c configs/det/det_mv3_db.yml -o Global.checkpoints=./your/trained/model

注意:Global.checkpoints的优先级高于Global.pretrained_model的优先级,即同时指定两个参数时,优先加载Global.checkpoints指定的模型,如果Global.checkpoints指定的模型路径有误,会加载Global.pretrained_model指定的模型。

2.3 visualdl可视化训练

  1. 在配置文件中配置Global.use_visualdl = True,log日志会默认保存到./output/{Global.save_model_dir}/vdl/ 下。
  2. 在命令行执行 visualdl --logdir ./output/{Global.save_model_dir}/vdl/ --host 0.0.0.0 --port 8080,即可开启训练过程的可视化。
    在这里插入图片描述

三、模型评估与预测

3.1 评估

训练中模型参数默认保存在Global.save_model_dir目录下。在评估指标时,需要设置Global.checkpoints指向保存的参数文件。

python3 tools/eval.py -c configs/det/det_mv3_db.yml  -o Global.checkpoints="{path/to/weights}/best_accuracy"

3.2 预测

测试单张图像的检测效果:

python3 tools/infer_det.py -c configs/det/det_mv3_db.yml -o Global.infer_img="./doc/imgs_en/img_10.jpg" Global.pretrained_model="./output/det_db/best_accuracy"

测试文件夹下所有图像的检测效果:

python3 tools/infer_det.py -c configs/det/det_mv3_db.yml -o Global.infer_img="./doc/imgs_en/" Global.pretrained_model="./output/det_db/best_accuracy"

四、模型导出与预测

4.1 导出为inference

检测模型转inference 模型方式:

# 加载配置文件`det_mv3_db.yml`,从`output/det_db`目录下加载`best_accuracy`模型,inference模型保存在`./output/det_db_inference`目录下
python3 tools/export_model.py -c configs/det/det_mv3_db.yml -o Global.pretrained_model="./output/det_db/best_accuracy" Global.save_inference_dir="./output/det_db_inference/"

4.2 预测

DB检测模型inference 模型预测:

python3 tools/infer/predict_det.py --det_algorithm="DB" --det_model_dir="./output/det_db_inference/" --image_dir="./doc/imgs/" --use_gpu=True

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/435167.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

H.264 编码中, I 帧、B 帧、P 帧、IDR 帧的区别

在H.264协议里定义了三种帧,完整编码的帧叫 I 帧,参考之前的 I 帧生成的只包含差异部分编码的帧叫 P 帧,还有一种参考前后的帧编码的帧叫 B 帧。 H.264采用的核心算法是帧内压缩和帧间压缩,帧内压缩是生成 I 帧的算法&#xff0c…

【镜像取证篇】DD和E01镜像格式区别(简)

【镜像取证篇】DD和E01镜像格式区别(简) ​ 简单总结下—【蘇小沐】 文章目录 【镜像取证篇】DD和E01镜像格式区别(简)1、实验环境 (一)DD镜像-原始镜像(和源盘大小一致)&#xff0…

C#基础学习--事件

目录 发布者和订阅者 源代码组件概览 声明事件 事件是成员 订阅事件 触发事件 标准事件的用法 通过扩展EventArgs来传递数据 泛型委托 移除事件处理程序 - 事件访问器 发布者和订阅者 发布者/订阅者模式中,发布者类 定义了一系列程序的其他部分可能感兴趣的事件…

第12讲:ElementUI+Vue路由综合案例

本博文主要呈现一个NPM脚手架Vue路由ElementUI的综合案例,完成本案例需要有一定的Vue基础,请参考以下文章完成项目的构建 第08讲:使用脚手架创建vue项目 第09讲:路由开发 第10讲:vue脚手架集成axios 第11讲&#xff1a…

2023年mahorcupC题电商物流网络包裹应急调运与结构思路分析

C 题 电商物流网络包裹应急调运与结构优化问题 电商物流网络由物流场地(接货仓、分拣中心、营业部等)和物流场 地之间的运输线路组成, 如图 1 所示。受节假日和“双十一” 、“618”等促销 活动的影响,电商用户的下单量会发生显著波动,而疫情…

软件测试真的只能干到35岁吗?难道测试岗位真的只是青春饭吗?

一:前言:人生的十字路口静坐反思 入软件测试这一行至今已经10年多,承蒙领导们的照顾与重用,同事的支持与信任,我的职业发展算是相对较好,从入行到各类测试技术岗位,再到测试总监,再…

释放数据价值这道难题,数据科学基础平台有解

去年底,《中共中央、国务院关于构建数据基础制度更好发挥数据要素作用的意见》(以下简称:" 数据二十条 ")正式颁布,标志着数据基础制度的建设步入快车道,数据要素化有望全面提速。 " 数据二…

通过遍历结果构造二叉树

⭐️前言⭐️ 本篇文章主要总结通过前序遍历、中序遍历、后序遍历中的两个遍历结果,来构造二叉树的过程,通过本篇文章的总结,可以解决一下问题。 LeetCode难度654. 最大二叉树🟠105. 从前序与中序遍历序列构造二叉树&#x1f7e…

编程辅助插件BitoAI使用指南(以VSCode开发环境为例安装并使用BitoAI插件从而提高生产效率)

2023年是AI爆发元年,已经被各种AI工具、新闻轰炸了几个月,只有一种感觉:时间不够用! 本文介绍编程辅助神器:Bito AI。 本插件使用与ChatGPT相同的模型!目前免费,且拥有强大的辅助能力&#xff0…

高压放大器应用之无损检测

在高压放大器的应用中,很多电子工程师经常会进行无损检测实验,那么无损检测是什么,无损检测的知识又有哪些呢,就让安泰电子带大家来看看。 无损检测是什么: 无损检测是指不损害物品的情况下对产品进行检测的方法&#…

FFMPEG源码分析一 av_register_all()

我们在使用FFMPEG库时,第一个调用的就是av_register_all(),这个函数到底做了什么,有什么用,这里做个简单分析。 本文基于雷霄骅博客学习而来。详情请移步FFmpeg源代码结构图 - 编码_ffmpeg源码结构_雷霄骅的博客-CSDN博客 解析和…

Vsync信号和SurfaceFlinger刷新机制;打造智能车厢的关键技术

概述 车载智能座舱系统在现代汽车中已经越来越常见,它可以提供各种功能,例如音乐、导航和驾驶辅助等。要实现这些功能,需要底层硬件和系统软件的支持。其中,Vsync信号和SurfaceFlinger刷新机制是车载智能座舱系统中的两个关键技术…

无人驾驶——ros_canopen安装

上篇文章提到过,对于CAN测试,不能完全依靠CAN卡对应的软件,指导老师推荐了ros_canopen、socketcan_interface方法。记录一下使用该方法的过程。 安装ros_canopen,对应ros版本git clone下载资源并安装。 https://github.com/ros-industrial…

camunda如何启动一个流程

在 Camunda 中启动一个流程需要使用 Camunda 提供的 API 或者用户界面进行操作。以下是两种常用的启动流程的方式: 1、通过 Camunda 任务列表启动流程:在 Camunda 任务列表中,可以看到已经部署的流程,并可以点击“Start”按钮&am…

【Linux】Mysql事务

一、什么是事务 Mysql 数据库中不是所有的存储引擎都实现了事务处理。 支持事务的存储引擎有: InnoDBNDB Cluster 。不支持事务的存储引擎代表有: MyISAM 事务简单来说:一个 Session 中所进行所有的操作,要么同时成功&#xff0c…

CMU15445 - Project 0. C++ Primer(在写)

文章目录 系列笔记作业链接TASK 1GetPutRemove Task 2 系列笔记 环境配置 Project 0. C Primer (ing) 作业链接 作业链接(2020,废) 作业链接 p0就是一个C水平测试,很简单 2023的明显难不少。 TASK 1 先简单说一下看到这个数据…

linux 目录常用操作

1.linux复制粘贴命令 CtrlShiftC 复制 CtrlShiftV 粘贴 2.中断执行 CtrlC 键“保留”用于停止命令 3.终端清屏 clear 4.显示当前路径 pwd 5.进入目录 cd 目录名称 返回上级目录 cd .. 6.查看当前目录 ls查看详细信息 ls -l 7.创建目录(可以理解为文件夹&…

怎么将太大的word文档压缩变小,3个高效方法

怎么将太大的word文档压缩变小?word文档是我们在办公中使用较多的文件格式之一,相信小伙伴们会遇到这样的问题,编辑完成word文档之后发现,编辑完的文档体积太大了,无论是发送给客户还是上传到邮箱中都不方便&#xff0…

pdf转成word | ppt | jpg图片,免费一键转换教程

我不允许真的还有人不知道如何免费将pdf转成 ppt、word 或者 jpg图片! 职场小伙伴是不是会经常遇到pdf怎么转成word,pdf怎么转成word,pdf怎么jpg图片等问题?别再为pdf转化格式难、而且还要付费而发愁了!这份pdf免费一…

设计模式-行为型模式之观察者模式

3. 观察者模式 3.1. 模式动机 建立一种对象与对象之间的依赖关系,一个对象发生改变时将自动通知其他对象,其他对象将相应做出反应。在此,发生改变的对象称为观察目标,而被通知的对象称为观察者,一个观察目标可以对应多…