在英伟达NIM中测试OCDRNET

OCDRNET结合了OCR和OCD模型的相关内容,

一、OCRNet 模型概述

1.该模型的作用是从灰度图像中识别字符。OCRNet的基础架构是ResNet50,模型版本有:

  • trainable_v1.0 - Pre-trained model with ResNet backbone on scene text.
  • deployable_v1.0 - Models deployable with ResNet backbone.
  • trainable_v2.0 - Pre-trained model with FAN backbone on scene text.
  • deployable_v2.0 - Model deployable with FAN backbone on scene text.
  • trainable_v2.1 - Pre-trained model with FAN backbone on PCB text.
  • deployable_v2.1 - Model deployable with FAN backbone on PCB text。

2.软件集成

Runtime(s): NVIDIA AI Enterprise

Toolkit: TAO Framework

Supported Hardware Platform(s): Ampere, Jetson, Hopper, Lovelace, Pascal, Turing

Supported Operating System(s): Linux

3.训练与微调

数据集:

OCRNet 预训练模型在 Uber-Text 和 TextOCR 数据集上进行训练。Uber-Text 包含从车载传感器收集的街道级图像和由图像分析师团队注释的事实。TextOCR 是来自 OpenImages 数据集的带注释文本的图像。从 Uber-text 和 TextOCR 收集原始数据后,删除 Uber-text 中带有 * 标签的所有文本图像,并在两个数据集中仅保留最大长度为 25 的字母数字文本图像。最终构建了包含 805007 张文本图像的数据集用于训练,包含 24388 张图像用于验证。

4.推理

Engine: TensorRT

Test Hardware:

  • Orin Nano
  • Orin NX
  • AGX Orin
  • L4
  • L40
  • T4
  • A2
  • A30
  • A100
  • H100

二.OCDRNet 模型概述

1.OCDNet模型是一个光学字符检测网络,旨在检测图像中的文字, 提供了可训练和可部署的 功能。 这些模型分别在 Uber-Text 数据集和 ICDAR2015 数据集上进行了训练。

2.模型架构

该模型基于一个相对复杂的文本检测网络 DBNet。DBNet 是一种具有可微分二值化的实时场景文本检测网络架构。它旨在解决具有复杂背景和各种文本形状的自然图像中的文本定位和分割问题。

3.训练

训练算法将二值化操作插入到分割网络中并联合优化,使得网络能够学习更有效地分离前景和背景像素。通过最小化预测二值图和真实二值图之间的 IoU 损失来学习二值化阈值。

4.训练数据

可训练模型分别在 Uber-Text 数据集和 ICDAR2015 数据集上进行训练。Uber-Text 数据集包含从车载传感器收集的街道级图像和由图像分析师团队注释的事实 - 包括 train_4Kx4K、train_1Kx1K、val_4Kx4K、val_1Kx1K、test_4Kx4K 作为训练数据集,test_1Kx1K 作为验证数据集。该数据集由 107812 张用于训练的图像和 10157 张用于验证的图像组成。ICDAR2015 数据集包含 1000 张训练图像和 500 张测试图像。可部署模型是使用可训练模型导出的 ONNX 模型。

5.评估

评估数据使用 Uber-Text 测试数据集和 ICDAR2015 测试数据集对 OCDNet 模型进行评估。

6.Methodology和 KPI
关键绩效指标是检测的 hmean。评估数据的 KPI 如下所示。

7.实时推理性能

推理使用 FP16 精度。输入形状为 <batch>x3x640x640。推理性能针对 AGX Orin、Orin NX、Orin Nano、NVIDIA L4、NVIDIA L4 和 NVIDIA A100 GPU 上的 OCDNet 可部署模型运行,其中使用 trtexec。Jetson 设备在 Max-N 配置下运行,以实现最大系统性能。数据仅用于推理性能。流视频数据的端到端性能可能会因应用程序的使用情况而略有不同。 

 三、如何使用OCDRNet模型

在NVIDIA的NIM部署.,NVIDIA NIM™ 是 NVIDIA AI Enterprise 的一部分,它提供容器来自托管 GPU 加速推理微服务,用于跨云、数据中心和工作站的预训练和定制 AI 模型。使用单个命令部署后,NIM 微服务会公开行业标准 API,以便轻松集成到 AI 应用程序、开发框架和工作流程中。NIM 微服务基于 NVIDIA 和社区的预优化推理引擎(包括 NVIDIA® TensorRT™ 和 TensorRT-LLM)构建,可自动优化运行时检测到的每种基础模型和 GPU 系统组合的响应延迟和吞吐量。NIM 容器还提供标准可观察性数据馈送和内置对 GPU 上 Kubernetes 自动扩展的支持。

(1)登陆Deploy Generative AI with NVIDIA NIM | NVIDIA。

2.注册NIM账号,注册完后进入

3. 点击Get API Key获得NIM的key,这部很关键,第五步中要用到。

 4.配置开发环境,请参考:2024 NVIDIA开发者社区夏令营环境配置指南(Win & Mac)-CSDN博客

5.配置好环境之后,新建OCDRNet.py文件,在文件中输入

#光学字符检测
#用于光学字符检测和识别的预训练模型
#识别发票/账单金额,并转存为格式化数据
#对图片中的文字进行识别,并与图片存储在一起,便于后期图片信息检索
#申请地址:https://build.nvidia.com/nvidia/ocdrnet?snippet_tab=Python
import os
import sys
import uuid
import zipfileimport requests# NVCF API 的OC DRNet模型端点
nvai_url = "https://ai.api.nvidia.com/v1/cv/nvidia/ocdrnet"# 授权头,需要API key(第三部申请的nvapi开头的key),如果在NGC之外执行
header_auth = f"Bearer nvapi-"def _upload_asset(input, description):"""上传一个资产到NVCF API。:param input: 要上传的二进制资产:param description: 资产的描述:return: 资产ID(UUID对象)"""assets_url = "https://api.nvcf.nvidia.com/v2/nvcf/assets"# 设置请求头headers = {"Authorization": header_auth,"Content-Type": "application/json","accept": "application/json",}# 设置S3请求头s3_headers = {"x-amz-meta-nvcf-asset-description": description,"content-type": "image/jpeg",}# 设置请求负载payload = {"contentType": "image/jpeg", "description": description}# 发送POST请求以获取上传URL和资产IDresponse = requests.post(assets_url, headers=headers, json=payload, timeout=30)response.raise_for_status()asset_url = response.json()["uploadUrl"]asset_id = response.json()["assetId"]# 发送PUT请求上传资产response = requests.put(asset_url,data=input,headers=s3_headers,timeout=300,)response.raise_for_status()# 返回资产IDreturn uuid.UUID(asset_id)if __name__ == "__main__":"""上传一张自选图片到NVCF API,并向光学字符检测和识别模型发送请求。响应保存到本地目录。注意:必须设置环境变量NGC_PERSONAL_API_KEY。"""# 检查命令行参数数量if len(sys.argv) != 3:print("Usage: python test.py <image> <output_dir>")sys.exit(1)# 上传资产并获取资产IDasset_id = _upload_asset(open(sys.argv[1], "rb"), "Input Image")# 设置请求负载inputs = {"image": f"{asset_id}", "render_label": False}# 设置资产列表asset_list = f"{asset_id}"# 设置请求头headers = {"Content-Type": "application/json","NVCF-INPUT-ASSET-REFERENCES": asset_list,"NVCF-FUNCTION-ASSET-IDS": asset_list,"Authorization": header_auth,}# 发送POST请求到OC DRNet模型response = requests.post(nvai_url, headers=headers, json=inputs)# 保存响应内容到本地ZIP文件with open(f"{sys.argv[2]}.zip", "wb") as out:out.write(response.content)# 解压ZIP文件到输出目录with zipfile.ZipFile(f"{sys.argv[2]}.zip", "r") as z:z.extractall(sys.argv[2])# 输出保存目录和目录内容print(f"Output saved to {sys.argv[2]}")print(os.listdir(sys.argv[2]))

6.在当前文件夹新建文件夹fo用于放置测试图片fp.jpg和输出结果,在虚拟环境下输入:

python OcdrNet.py .\fp\fp.jpg .\fp

 得到输出结果:

 

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

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

相关文章

使用 three.js和 shader 实现一个五星红旗 飘扬得着色器

使用 three.js和 shader 实现一个五星红旗 飘扬得着色器 源链接&#xff1a;https://threehub.cn/#/codeMirror?navigationThreeJS&classifyshader&idchinaFlag 国内站点预览&#xff1a;http://threehub.cn github地址: https://github.com/z2586300277/three-ce…

centos系列图形化 VNC server配置,及VNC viewer连接,2024年亲测有效

centos系列图形化 VNC server配置&#xff0c;及VNC viewer连接 0.VNC服务介绍 VNC英文全称为Virtual Network Computing&#xff0c;可以位操作系统提供图形接口连接方式&#xff0c;简单的来说就是一款桌面共享应用&#xff0c;类似于qq的远程连接。该服务是基于C/S模型的。…

Ubuntu QT 交叉编译环境搭建

文章目录 下载安装qtCreatornot a valid identifier 的错误 安装g下载并安装交叉编译器下载交叉编译器安装交叉编译器 下载编译 ARM 的Qt平台源码配置arm的QT平台 下载安装qtCreator 去QT下载官网下载对应需要的QT软件。 这里下载5.12.96版本的 改变安装包权限&#xff0c;…

cocos中Sprite的填充模式

做进度条效果会用到Sprite的填充模式: cocoscreator教程&#xff1a;制作进度条_哔哩哔哩_bilibili

对接优惠折扣影票接口有什么好处?

对接电影票接口可以为开发者、商家和用户提供多种好处&#xff0c;以下是一些主要优势&#xff1a; 便捷性&#xff1a;用户可以直接在应用程序或网站上查询电影信息、选择座位和购票&#xff0c;无需离开平台即可完成整个购票流程。 提高用户粘性&#xff1a;为用户提供一站式…

chrome清除https状态

莫名其妙的http跳转到https的url了。 解决办法 浏览器地址栏输入&#xff1a;chrome://net-internals/#hsts 输入你需要删除的域名即可&#xff01;&#xff01;&#xff01;

uni-app 打包成app时 限制web-view大小

今天对接一个uni-app的app 内置对方h5 web-view的形式 需要对方在web-view顶部加点东西 对方打的app的web-view始终是全屏的状态&#xff0c;对方表示做不到我要的效果 emmmmmm。。。。。。 于是乎 自己搭了个demo 本地h5跑起来审查了下代码&#xff0c;发现web-view是给绝对定…

影刀RPA实战:操作Mysql数据库

1.摘要 影刀RPA&#xff08;Robotic Process Automation&#xff09;是一种软件自动化工具&#xff0c;它可以模拟人类用户执行各种重复性任务&#xff0c;其中包括对数据库的操作。 我们可以使用软件自动化指令&#xff0c;通过获取数据库窗口对象来操作数据库&#xff0c;也…

Java项目:157 基于springboot技术的美食烹饪互动平台的设计与实现(含论文+说明文档)

作者主页&#xff1a;源码空间codegym 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 本知识管理系统有管理员和用户两个角色 管理员权限操作的功能包括管理美食&#xff0c;对美食留言进行回复&#xff0c;管理美食知识信息&…

安装和配置k8s可视化UI界面dashboard-1.20.6

安装和配置k8s可视化UI界面dashboard-1.20.6 1.环境规划2.初始化服务器1&#xff09;配置主机名2&#xff09;设置IP为静态IP3&#xff09;关闭selinux4&#xff09;配置主机hosts文件5&#xff09;配置服务器之间免密登录6&#xff09;关闭交换分区swap&#xff0c;提升性能7&…

QT QML 练习8-Simple Transformations

简单的转换&#xff08;Simple Transformations&#xff09; 转换操作改变了一个对象的几何状态。QML元素对象通常能够被平移&#xff0c;旋转&#xff0c;缩放。下面我们将讲解这些简单的操作和一些更高级的用法。 我们先从一个简单的转换开始。用下面的场景作为我们学习的开始…

Qt- QSS风格选择器常用属性选择器样式表盒子

1. 风格设置 Qt 提供了 3 种整体风格&#xff0c;使用 QStyleFactory::keys() 来获取 &#xff08;windowsvista 、Windows 、Fusion&#xff09; 可以在 main.cpp 中调用 setStyle 方法对应用程序进行全局风格的设置 int main(int argc, char *argv[]) {QApplication a(arg…

Redis协议详解及其异步应用

目录 一、Redis Pipeline&#xff08;管道&#xff09;概述优点使用场景工作原理Pipeline 的基本操作步骤C 示例&#xff08;使用 [hiredis](https://github.com/redis/hiredis) 库&#xff09; 二、Redis 事务概述事务的前提事务特征&#xff08;ACID 分析&#xff09;WATCH 命…

爱快路由器配置腾讯云动态域名DDNS详细说明

直白点说就是让爱快路由器自动配置当前公网IP地址给域名&#xff0c;动态域名DDNS不清楚的请自行百度&#xff0c; 这里就可以看见操作日志&#xff0c;那么我们一步一步来配置它吧&#xff0c;首先登录爱快路由器&#xff0c;如下图&#xff1a; 那么腾讯云我们怎么找到ID和…

koa知否论坛交流系统的设计与实现---附源码53933

目 录 1 绪论 1.1研究背景 1.2研究意义 1.3论文结构与章节安排 2 知否论坛交流系统系统分析 2.1 可行性分析 2.1.1 技术可行性分析 2.1.2 经济可行性分析 2.1.3 法律可行性分析 2.2 系统功能分析 2.2.1 功能性分析 2.2.2 非功能性分析 2.3 系统用例分析 2.4本章小…

Spring Boot环境下的大创项目质量保证系统

3系统分析 3.1可行性分析 通过对本大创管理系统实行的目的初步调查和分析&#xff0c;提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本大创管理系统采用SSM框架&#xff0c;JAVA作为开发语言&#…

鸿蒙OS启动流程

启动流程(基于openharmony4.1) 系统上电加载内核后&#xff0c;按照以下流程完成系统各个服务和应用的启动&#xff1a; 内核加载init进程&#xff0c;一般在bootloader启动内核时通过设置内核的cmdline来指定init的位置。init进程启动后&#xff0c;会挂载tmpfs&#xff0c;…

宝塔PHP8.1安装fileinfo拓展失败解决办法

在宝塔面板中安装PHP8.1后&#xff0c;安装fileinfo扩展一直安装不上&#xff0c;查看日志有报错&#xff0c;于是手动来安装也报错。 宝塔报错&#xff1a; 手动命令行编译安装同&#xff0c;也有报错 cd /www/server/php/81/src/ext/fileinfo/ make distclean ./configure …

MongoDB初学者入门教学:与MySQL的对比理解

&#x1f3dd;️ 博主介绍 大家好&#xff0c;我是一个搬砖的农民工&#xff0c;很高兴认识大家 &#x1f60a; ~ &#x1f468;‍&#x1f393; 个人介绍&#xff1a;本人是一名后端Java开发工程师&#xff0c;坐标北京 ~ &#x1f389; 感谢关注 &#x1f4d6; 一起学习 &…

020 elasticsearch7.10.2 elasticsearch-head kibana安装

文章目录 全文检索流程ElasticSearch介绍ElasticSearch应用场景elasticsearch安装允许远程访问设置vm.max_map_count 的值 elasticsearch-head允许跨域 kibana 商品数量超千万&#xff0c;数据库无法使用索引 如何使用全文检索&#xff1a; 使用lucene&#xff0c;在java中唯一…