open-mmlab/mmocr 环境搭建、推理和训练入门教程【一】

news2024/9/30 15:29:29

文章目录

    • 博文基础信息
    • Linux 搭建 open-mmlab/mmocr 运行环境
        • 准备数据集
        • 准备必要的预训练模型
        • 推理
        • 训练
        • 测试
        • 可视化输出
    • 📙 预祝各位 前途似锦、可摘星辰

1-0

博文基础信息

  • https://mmocr.readthedocs.io/zh_CN/dev-1.x/get_started/quick_run.html
  • 显卡,11G 1080Ti
  • 本博文只是跟着官方文档进行一个 推理、训练、测试 代码试运行
  • 涉及代码修改的地方,请参考官方文档

Linux 搭建 open-mmlab/mmocr 运行环境

conda create -n open-mmlab python=3.8 pytorch=1.10 cudatoolkit=11.3 torchvision -c pytorch -y
conda activate open-mmlab
pip3 install openmim
git clone https://github.com/open-mmlab/mmocr.git
cd mmocr
mim install -e .

准备数据集

wget https://download.openmmlab.com/mmocr/data/icdar2015/mini_icdar2015.tar.gz
mkdir -p data/
tar xzvf mini_icdar2015.tar.gz -C data/

# 我这里选择 把 mini_icdar2015  重命名为 icdar2015
cd  data
mv mini_icdar2015 icdar2015

准备必要的预训练模型

如果服务器网络不通畅,可以复制链接,自行到浏览器下载之后,再复制到 /home/用户名/.cache/torch/hub/checkpoints 目录下

# 下载链接
https://download.pytorch.org/models/resnet18-f37072fd.pth

0-6

推理

0-7

推理命令如下

# 推理会自动下载 DBNet  和 CRNN 模型
python tools/infer.py demo/demo_text_ocr.jpg --det DBNet --rec CRNN --show --print-result

测试GPU 占用如下

1-0

训练

修改配置文件

vi configs/textdet/dbnet/dbnet_resnet18_fpnc_1200e_icdar2015.py

添加如下代码

# 每 10 个 epoch 储存一次权重,且只保留最后一个权重
default_hooks = dict(
    checkpoint=dict(
        type='CheckpointHook',
        interval=10,
        max_keep_ckpts=1,
    ))
# 设置最大 epoch 数为 400,每 10 个 epoch 运行一次验证
train_cfg = dict(type='EpochBasedTrainLoop', max_epochs=400, val_interval=10)
# 令学习率为常量,即不进行学习率衰减
param_scheduler = [dict(type='ConstantLR', factor=1.0),]

1-00

单卡训练命令如下

CUDA_VISIBLE_DEVICES=0 python tools/train.py configs/textdet/dbnet/dbnet_resnet18_fpnc_1200e_icdar2015.py

单卡训练GPU 占用如下

1-1
1-2

测试

对刚刚测试生成的模型进行测试

CUDA_VISIBLE_DEVICES=0 python tools/test.py configs/textdet/dbnet/dbnet_resnet18_fpnc_1200e_icdar2015.py work_dirs/dbnet_resnet18_fpnc_1200e_icdar2015/epoch_400.pth

data_root='icdar2015_textdet_data_root', 时 输出如下

1-9

data_root='tests/data/det_toy_dataset', 时 输出如下

1-3

可视化输出

可视化结果保存在 imgs/ 目录下

python tools/test.py configs/textdet/dbnet/dbnet_resnet18_fpnc_1200e_icdar2015.py work_dirs/dbnet_resnet18_fpnc_1200e_icdar2015/epoch_400.pth --show-dir imgs/

可视化效果如下

  • 真实标签和预测值会在可视化结果中以平铺的方式展示。左图的绿框表示真实标签,右图的红框表示预测值。

1-10


📙 预祝各位 前途似锦、可摘星辰


  • 🎉 作为全网 AI 领域 干货最多的博主之一,❤️ 不负光阴不负卿 ❤️
  • ❤️ 过去的每一天、想必你也都有努力、祝你披荆斩棘、未来可期
  • 🍊 深度学习模型训练推理——基础环境搭建推荐博文查阅顺序【基础安装—认真帮大家整理了】
  • 🍊 计算机视觉:硕博士,交流、敬请查阅
  • 🍊 点赞 👍 收藏 ⭐留言 📝 都是博主坚持写作、更新高质量博文的最大动力!

9-9

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

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

相关文章

【Pytorch】梯度裁剪——torch.nn.utils.clip_grad_norm_的原理及计算过程

文章目录 一、torch.nn.utils.clip_grad_norm_二、计算过程三、确定max_norm 众所周知,梯度裁剪是为了防止梯度爆炸。在训练FCOS算法时,因为训练过程出现了损失为NaN的情况,在github issue有很多都是这种训练过程出现loss为NaN,作…

RISCV Reader笔记_3 RISCV汇编

RISC-V 汇编语言 函数调用的步骤在计算机组成与设计中也有过涉及: 指定寄存器存入参数;跳转到函数开始位置(jal);在callee中按需保存寄存器;执行函数;恢复保存的寄存器;把返回值存入…

使用传统图像处理算法+机器学习进行shadow detection

前言 阴影是图像中常见的现象,它们对于场景理解和分析非常重要。由于阴影区域通常比较暗淡,而且与周围物体区别较大,因此在图像处理和计算机视觉领域中,阴影检测是一个重要的研究方向。传统的阴影检测算法通常基于阈值或边缘检测…

深入理解 kernel panic 的流程

我们在项目开发过程中,很多时候会出现由于某种原因经常会导致手机系统死机重启的情况(重启分Android重启跟kernel重启,而我们这里只讨论kernel重启也就是 kernel panic 的情况),死机重启基本算是影响最严重的系统问题了…

180_Power BI 新卡片图计算组与同环比应用

180_Power BI 新卡片图计算组与同环比应用 一、背景 在 2023 年 6 月,Power BI 更新了新的视觉对象:Card(new) 。 当前还需要在预览功能中将其打开。 我们在实际的应用中将新卡片图做了一些应用,先来看看具体效果。 Power BI 公共 web 效果…

安全区域内活动UWB标签,高精度UWB定位监测,室内厘米级测距应用

随着人们对于室内安全和定位需求的增加,相应的技术应运而生,超宽带(UWB)标签定位技术应用于室内定位领域,并获得了快速的发展和应用。 UWB技术是一种基于极窄脉冲的无线技术,它的主要特点是无载波&#xf…

软件测试技能,JMeter压力测试教程,setUp线程组批量登录(九)

前言 前面一篇已经实现了在 setUp 线程组实现单个用户先登录后提取token给其它线程组使用,在压测的时候,单个用户登录很显然不能满足我们的压测需求 我们在压测接口的时候,需批量获取多个用户登录后返回的token值,那么在setUp 线…

RabbitMQ消息队列高级特性

文章目录 1.消息的可靠投递2.ConSumer ACK消费者确认接收消息3.消费者限流4.TTL过期时间5.死信队列6.延迟队列7.日志与监控8.消息追踪 1.消息的可靠投递 在线上生产环境中,RabbitMQ可能会产生消息丢失或者是投递失败的一个场景,RabbitMQ为了避免这种场景…

Redis慢查询分析

慢查询分析 谓慢查询日志就是系统在命令执行前后计算每条命令的执行时间,当超过预设阀值,就将这条命令的相关信息(例如:发生时间,耗时,命令的详细信息)记录下来。 执行一条命令分为如下4个部分…

【每日算法 数据结构(C++)】—— 05 | 判断单链表是否有环(解题思路、流程图、代码片段)

文章目录 01 | 👑 题目描述02 | 🔋 解题思路03 | 🧢 代码片段 The future belongs to those who believe in the beauty of their dreams. 未来属于那些相信梦想之美的人 01 | 👑 题目描述 给你一个单链表,请判断其中是…

Mac(M1)上安装Ubuntu虚拟机

Mac(M1)上安装Ubuntu虚拟机 0.下载资料汇总 VMware Fusionhttps://www.vmware.com/products/fusion/fusion-evaluation.htmlubuntu-desktop-arm64.isohttps://cdimage.ubuntu.com/jammy/daily-live/current/ 1.安装VMware Mac版本的VMware叫 VMware …

黑马程序员前端 Vue3 小兔鲜电商项目——(十一)支付页

文章目录 基础数据渲染封装接口数据渲染 支付功能实现支付携带参数支付宝沙箱账号信息 支付结果页展示模版代码绑定路由渲染数据 倒计时逻辑函数封装 支付页有俩个关键数据,一个是要支付的钱数,一个是倒计时数据(超时不支付商品释放)。 基础…

Tomcat项目更新Tomcat版本,重新配置conf,并在Idea运行项目,服务器替换SSL证书

Tomcat项目更新Tomcat版本,重新配置conf,并在Idea运行项目 1.下载Tomcat包2.Tomcat配置-ssi配置3.Idea运行 Tomcat 项目4.服务器Tomcat替换SSL证书4. Tomcat 项目重启 1.下载Tomcat包 Tomcat 官网 - https://tomcat.apache.org/ jdk1.8.0_191 我选择的…

如何在电脑、手机《酷游链接》录制屏幕?一看就会!也有剪辑录制视频的方法哦!

最近,我的生活中出现了许多需要录制电脑屏幕的场景! 『酷游链kw9㍠N͜E͜T提供』娜娜友善提醒,要自己输入才会显示出来!比如会议,教学等场景。这些场景我们可以通过Windows10的内建软体来解决。另外,也出现…

Python小白应该怎么学习字典

1.Python 字典 字典 字典是一个无序、可变和有索引的集合。在 Python 中,字典用花括号编写,拥有键和值。 例子:创建并打印字典 thisdict {"brand": "Porsche","model": "911","year": 1963 } pr…

MUR20100DC-ASEMI快恢复二极管MUR20100DC

编辑-Z MUR20100DC在TO-263封装里采用的2个芯片,其尺寸都是102MIL,是一款共阴极快恢复对管。MUR20100DC的浪涌电流Ifsm为200A,漏电流(Ir)为10uA,其工作时耐温度范围为-55~150摄氏度。MUR20100DC采用抗冲击硅芯片材质,…

技术管理第二板斧建团队-沟通

一、沟通的核心原则 我认为,沟通是内心想法和思考逻辑的外延,如果你有良好的沟通能力,可以在整个团队中营造公开透明的信任氛围,让信息透明的同时,也让团队成员愿意发出自己的声音。 但实际情况中,很多人…

TypeScript 中对【函数类型】的约束使用解读

概述 函数是JavaScript 中的 一等公民 概念:函数类型的概念是指给函数添加类型注解,本质上就是给函数的参数和返回值添加类型约束 声明式函数: 在 TypeScript 中,一个函数有输入和输出,需要对其进行约束,需要把输入和…

电力载波远程控制系统

随着电力技术的不断发展,电力载波远程控制系统成为了现代电力系统中的重要组成部分。电力载波远程控制系统是一种利用电力载波技术实现远程控制的系统,可以对电力系统中的各种设备进行实时监测、控制和管理,提高电力系统的安全性、可靠性和效…

Efficient Video Transformers with Spatial-Temporal Token Selection阅读笔记

摘要 Video Transformers在主要视频识别基准测试中取得了令人印象深刻的结果,但其计算成本很高。 在本文中,我们提出了 STTS,这是一种令牌选择框架,它根据输入视频样本在时间和空间维度上动态选择一些信息丰富的令牌。 具体来说&…