DeepStream中的车牌识别demo记录(同时支持中文车牌识别和英文车牌识别(美国))

1 引言

鉴于实验室需求,需要在原有的路侧目标检测框架中加入车牌识别功能。因为之前的框架是基于NVIDIA的deepstream框架,所以在网上寻找了一下,看看官网有没有基于deepstream框架的车牌识别解决方案。事实上,NVIDIA是提供了车牌识别的相应解决方案,基于jetson开发板系列。本文基于该demo做一些记录,方便以后查阅,包括但不限于一些步骤讲解。

官方项目地址: NVIDIA-AI-IOT/deepstream_lpr_app

官方车牌识别讲解:nvidia/models/tlt_lprnet
在这里插入图片描述
在这里插入图片描述

2 Demo介绍

在这里插入图片描述
demo中主要用到的三个模型:车辆检测模型(PGIE)、车牌检测模型(SGIE)、车牌识别模型(SGIE),在运行demo之前需要去官网下载对面的模型。

车辆检测模型(PGIE)这是 DeepStream 的主模型,以“Car”为检测(detection)目标,可以到label.txt查看对象检测目标
车牌检测模型(SGIE)以“车牌位置检测(LPD)”的模型,在PGIE所找到的“Car”范围内,定位出“车牌”的标框位置。
车牌识别模型(SGIE)从二级SGIE得到的车牌图形中,执行“车牌内容识别(LPR)”任务,并将识别的文字回传

具体下载路径如下(最好提前下载好预训练模型,也可以用官方demo中的脚本下载):

模型相关信息可以去官网查看(以上三个网址),包括一些网络结构,标签类别数,准确率等等。项目支持在 Jetson 以及 dGPU 上部署,并且同时支持中文车牌识别和英文车牌识别(美国)

将下载好的模型放在models文件夹(自建)下(具体目录参考下面的官方),或者用脚本下载:

# Download CAR model
mkdir -p ./models/tao_pretrained_models/trafficcamnet
cd ./models/tao_pretrained_models/trafficcamnet
wget https://api.ngc.nvidia.com/v2/models/nvidia/tao/trafficcamnet/versions/pruned_v1.0/files/trafficnet_int8.txt
wget https://api.ngc.nvidia.com/v2/models/nvidia/tao/trafficcamnet/versions/pruned_v1.0/files/resnet18_trafficcamnet_pruned.etlt
cd -

# Download LPD model
mkdir -p ./models/LP/LPD
cd ./models/LP/LPD
wget https://api.ngc.nvidia.com/v2/models/nvidia/tao/lpdnet/versions/pruned_v1.0/files/ccpd_pruned.etlt
wget https://api.ngc.nvidia.com/v2/models/nvidia/tao/lpdnet/versions/pruned_v1.0/files/ccpd_cal.bin
wget https://api.ngc.nvidia.com/v2/models/nvidia/tao/lpdnet/versions/pruned_v1.0/files/ccpd_label.txt
cd -

# Download LPR model
mkdir -p ./models/LP/LPR
cd ./models/LP/LPR
wget https://api.ngc.nvidia.com/v2/models/nvidia/tao/lprnet/versions/deployable_v1.0/files/ch_lprnet_baseline18_deployable.etlt
touch labels_ch.txt
cd -

3 Demo部署(Xavier,NX,Nano)

运行条件

  • Deepstream SDK (可以参考之前的博客对Xavier刷机装Deepstream SDK Xavier 使用SDK Manager工具刷机
  • tlt-converter(tao-converter)去官网下载对应版本,本文下载的是Jetson Jetpack4.5
    在这里插入图片描述
    在下载好预训练模型和tao-converter转换器后,首先需要将预训练模型转换为TensorRT engine

在转化之前我需要说明一下在使用tao-converter转换器需要安装的环境。不装这些环境,你可能会遇到一些错误,如下:

[ERROR] UffParser: Validator error: FirstDimTile_2: Unsupported operation _BatchTilePlugin_TRT
[ERROR] Failed to parse the model, please check the encoding key to make sure it's correct
[ERROR] Network must have at least one output
[ERROR] Network validation failed.
[ERROR] Unable to create engine
Bus error (core dumped)

安装步骤如下:

1. $ sudo apt-get install libssl-dev
2. $ export TRT_LIB_PATH=”/usr/lib/aarch64-linux-gnu”
   2.1 $ export TRT_INC_PATH=”/usr/include/aarch64-linux-gnu”

最后把下载的 tao-convert 放到/usr/bin/里面即可完成安装。

下面讲解Tensorrt OSS配置:

  • 首先去网站上下载libnvinfer_plugin.so.7.1.3 下载地址
    -在这里插入图片描述
    在这里插入图片描述
    在下载好后,需要将原本的插件替换掉,具体步骤如下:
$ cd /usr/lib/aarch64-linux-gnu

$ sudo mv libnvinfer_plugin.so libnvinfer_plugin.so.bak

$ sudo mv libnvinfer_plugin.so.7 libnvinfer_plugin.so.7.bak

$ sudo mv libnvinfer_plugin.so.7.1.3 libnvinfer_plugin.so.7.1.3.bak

然后把刚刚下载的文件复制到/usr/lib/aarch64-linux-gnu
$ sudo copy libnvinfer_plugin.so.7.1.3 /usr/lib/aarch64-linux-gnu/
之后建立两个软链接
$ sudo ln -s /usr/lib/aarch64-linux-gnu/libnvinfer_plugin.so.7.1.3 /usr/lib/aarch64-linux-gnu/libnvinfer_plugin.so.7
$ sudo ln -s /usr/lib/aarch64-linux-gnu/libnvinfer_plugin.so.7.1.3 /usr/lib/aarch64-linux-gnu/libnvinfer_plugin.so

部署测试

亲测,完成以上配置后就可以正常转换了,将之前下载好的模型文件夹,移到demo目录下,如下:
在这里插入图片描述

在转化模型时(对于中国车牌识别):

tao-converter -k nvidia_tlt -p image_input,1x3x48x96,4x3x48x96,16x3x48x96 \
           models/LP/LPR/us_lprnet_baseline18_deployable.etlt -t fp16 -e models/LP/LPR/us_lprnet_baseline18_deployable.etlt_b16_gpu0_fp16.engine

只转换了车牌识别模型,车辆检测和车牌检测模型在运行时候会自动转化,在运行时,需要等待几分钟,转化完后,就会自动运行。
**记住!**在不同设备上必须个别执行一次转换,因为在 AGX Xavier 上转换好的 TensorRT 引擎,是不能用在 Jetson Nao 上面的。

deepstream_lpr_app目录结构如下:
在这里插入图片描述

$ cd ./deepstream_lpr_app
$ make
目录用中文字典文件 dict_ch.txt 置换dict.txt
$ cp dict_ch.txt dict.txt
然后再执行车牌识别指令
$ ./deepstream-lpr-app 2 2 0 test0.mp4 test0_output.mp4

运行效果图如下:
在这里插入图片描述

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值