前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >利用NVIDIA TRT和Deepstream创建一个实时车牌检测和识别应用程序

利用NVIDIA TRT和Deepstream创建一个实时车牌检测和识别应用程序

作者头像
GPUS Lady
发布2021-03-12 16:39:48
3.3K0
发布2021-03-12 16:39:48
举报
文章被收录于专栏:GPUS开发者

本教程来自NVIDIA 官网blog,

原文链接:

https://developer.nvidia.com/blog/creating-a-real-time-license-plate-detection-and-recognition-app/?ncid=em-webi-28960-vt24&sfdcid=EM08#cid=em08_em-webi_en-us

请复制链接后在浏览器上打开,本文只是对这篇文章做一个快速介绍。原文包含了代码和执行细节,请直接阅读原文。


自动车牌识别(ALPR)是智能城市常用的智能视频分析应用程序之一。一些常见的用例包括停车辅助系统,自动收费站,在港口和医疗物资运输仓库进行运输和物流的车辆登记和识别。能够实时做到这一点是为这些市场充分发挥潜力的关键。传统技术依赖于专用相机和处理硬件,这既部署昂贵又难以维护。

用于ALPR的管道包括使用对象检测深度学习模型检测车架中的车辆,使用车牌检测模型对车牌进行定位,然后最终识别车牌上的字符。使用深度神经网络的光学字符识别(OCR)是一种流行的技术,可以识别任何语言的字符。

在本文中,我们向您展示如何结合NVIDIA Transfer Learning Toolkit(TLT)来使用具有生产质量的AI模型,例如车牌检测(LPD)和车牌识别(LPR)模型。即用型模型使您可以快速启动ALPR项目。使用DeepStream SDK可以轻松部署生成的TLT优化模型。

要开始从TLT创建和部署高度精确的,经过预训练的模型,您需要以下资源:

  • 从NGC上下载TrafficCamNet或DashCamNet模型来检测车辆
  • 车牌检测(LPD)模型来检测车牌
  • 车牌识别(LPR)模型将图像转换为文本
  • DeepStream SDK

所有预训练的模型都是免费的,并且可以在NVIDIA NGC上轻松获得。TLT提供了两种LPD模型和两种LPR模型:一套在美国车牌上训练过,另一套在中国车牌上训练过。有关更多信息,请参阅LPD和LPR模型。

您可以通过tlt-launcher界面使用TLT进行训练。要运行TLT启动器,请~/tlt-experiments使用该~/.tlt_mounts.json文件将本地计算机上的目录映射到Docker容器。有关更多信息,请参见TLT Launcher。

在NVIDIA的原文blog中,包含:

车牌检测

NVIDIA将引导您如何从NGC中获取经过预训练的基于美国的LPD模型,以及如何使用OpenALPR数据集对模型进行微调。

数据集

使用OpenALPR基准测试作为实验数据集。您可以从NGC提取LPD预训练模型,并在OpenALPR数据集上进行微调。

算法介绍

LPD模型基于TLT的Detectnet_v2网络。训练算法优化了网络,以最大程度地减少对象的定位和置信度损失。

训练分两个阶段进行。在第一阶段,对网络进行正则化训练以利于修剪。在第一阶段之后,请修剪网络删除通道,这些通道的内核规范低于修剪阈值。在第二阶段,对修剪的网络进行重新培训。在第二阶段不包括正则化。

训练LPD模型

设置您的NVIDIA NGC帐户并安装TLT启动器。要微调LPD模型,请从NGC下载LPD笔记本。然后,下载NGC LPD预训练模型(usa_unpruned.tlt)。

-准备数据集

-配置规格文件

-训练

-导出模型

-LPD训练模型的精确性

车牌识别

在本节中,我们将详细介绍LPR模型训练。NVIDIA提供了在美国车牌和中国车牌上训练的LPRNet模型。您可以在模型卡中找到这些模型的详细信息。在以下部分中,您将使用在美国牌照上训练的LPRNet作为微调的起点。

数据集

您还可以在OpenALPR US图像数据集上训练和评估LPRNet。将其拆分为80%(177张图像)进行训练,并拆分为20%(44张图像)进行验证。

算法介绍

对于车牌识别任务,您可以按车牌图像的顺序预测字符。像其他计算机视觉任务一样,您首先要提取图像特征。利用广泛使用的DNN体系结构(例如ResNet 10/18)成为LPRNet的骨干。ResNet网络的原始跨度为32,但为了使其更适用于车牌图像的较小空间大小,请将跨度从32调整为4。然后,将图像特征输入分类器。与正常的图像分类任务不同,在常规的图像分类任务中,模型只为一个图像提供单个类别ID,LPRNet模型会生成一系列的类别ID。图像特征沿水平方向分为多个切片,并且在预测中为每个切片分配了一个字符ID。

最后,使用连接主义者的时间分类(CTC)损失来训练此序列分类器。训练算法优化了网络,以使车牌的地面真实字符序列与预测字符序列之间的CTC损失最小化。

通常,LPRNet是带有已调优ResNet主干的序列分类模型。它以图像作为网络输入并产生序列输出。然后,基于贪婪解码方法,使用CTC解码器从输出的序列中解码车牌。

训练LPR模型

-准备数据

-实验配置

-训练

-导出模型

-LPR训练模型的精确性

使用DeepStream SDK部署LPD和LPR

在本节中,我们将引导您完成在DeepStream中部署LPD和LPR模型的步骤。我们提供了一个示例DeepStream应用程序。LPD / LPR样本应用程序为多个视频流输入构建了管道,并使用级联模型推理批处理的视频,以检测汽车及其车牌并识别字符。

该示例应用程序的源代码分为两部分:

  • lpr-test-sample—LPD / LPR示例的主要应用程序,该示例使用DeepStream插件构建Gstreamer管道。
  • nvinfer_custom_lpr_parser—nvinfer用于LPR模型的定制DeepStream插件分类器解析器库。默认的DeepStreamnvinfer分类器仅支持置信度分析,并从由配置文件中的labelfile-path参数配置的标签文件中获取标签nvinfer。由于LPR模型argmax以两层输出和置信度,因此需要定制的输出解析功能来解析LPR输出层并为车牌串生成正确的标签。定制的解析器功能应查找指定的词典以查找具有argmax值和置信度值的字符,然后将这些字符组合到车牌字符串中作为标签。

下载并准备模型

对于此应用程序,您需要TLT的三个模型:

  • TrafficCamNet可检测车辆。
  • LPD检测车牌。
  • LPR识别字符。

所有型号均可从NVIDIA NGC下载。或者,如果您遵循前面两节中的训练步骤,则也可以改用训练过的LPD和LPR模型。

生成并运行示例应用程序

从NVIDIA-AI-IOT / deepstream_lpr_app GitHub存储库下载示例代码并构建应用程序。

性能

下表仅显示了美国LPD修剪模型的推断吞吐量(以每秒帧数(FPS)为单位),该模型在具有超过45,000张美国汽车图像的专有数据集上进行了训练。性能随输入大小,修剪比率,设备等的不同而变化。性能是针对NGC上可用的模型的修剪版本,而不是先前部分中训练的模型。

LPR独立性能

下表显示了在不同设备的美国牌照上训练的LPR的推理性能。我们使用trtexecTensorRT的命令分析了模型推断。

示例应用程序性能

此示例应用程序的完整管道运行三种不同的DNN模型。您可以在TLT中使用经过预训练的TrafficCamNet进行汽车检测。LPD和LPR已使用美国车牌的NVIDIA训练数据集进行了预训练。

以下测试是使用示例LPR应用程序对1080p(1920×1080)分辨率的视频进行的。下表显示了使用三种DNN模型处理整个视频分析管道的端到端性能,从摄取视频数据到在帧上呈现元数据开始。数据是在不同的设备上收集的。

概括

在本文中,我们介绍了用于自动车牌识别的端到端AI解决方案。该解决方案涵盖了开发智能视频分析管道的所有方面-使用Transfer Learning Toolkit训练深度神经网络模型,以在DeepStream SDK中部署训练后的模型。

对于训练,您不需要专业知识即可构建自己的DNN和优化模型。TLT提供了一种简化的模型训练方法-您所要做的就是准备数据集并设置配置文件。此外,您可以利用TLT中高度精确的预训练模型,而不必进行随机初始化。

对于部署,DeepStream优化了系统资源以进行视频解码,图像预处理和推理,从而为您提供了最高的通道密度以进行实时视频分析。您可以通过DeepStream轻松地将训练有素的模型快速部署到多流视频分析管道中。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-03-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 GPUS开发者 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 车牌检测
    • 数据集
      • 算法介绍
        • 训练LPD模型
        • 车牌识别
          • 数据集
            • 算法介绍
              • 训练LPR模型
              • 使用DeepStream SDK部署LPD和LPR
                • 下载并准备模型
                  • 生成并运行示例应用程序
                    • LPR独立性能
                      • 示例应用程序性能
                      • 概括
                      相关产品与服务
                      汽车相关识别
                      汽车相关识别(Vehicle Optical Character Recognition,Vehicle OCR)基于行业前沿的深度学习技术,提供驾驶证识别、行驶证识别、车牌识别、车辆 VIN 码识别等多种服务,支持将图片上的文字内容,智能识别为结构化的文本,应用于车主身份认证、ETC 出行、违章识别、停车管理等多种场景,大幅提升信息处理效率。
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档