首页 > 其他分享 >玩转Jetson Nano(四):TensorRT图像识别

玩转Jetson Nano(四):TensorRT图像识别

时间:2023-05-21 10:07:12浏览次数:51  
标签:CMakeFiles Nano inference jetson TensorRT camera 图像识别 Jetson dir


玩转Jetson Nano(四):TensorRT图像识别

  • 前言
  • TensorRT简介
  • TensorRT搭建
  • 安装所需的依赖
  • 安装jetson-inference
  • 配置cmake
  • 下载所需的模型文件
  • 编译
  • 测试
  • CSI摄像头实时图像识别
  • 常见问题
  • 参考文献

前言

  • 本文是个人使用Jetson Nano的电子笔记,由于水平有限,难免出现错漏,敬请批评改正。
  • 更多精彩内容,可点击进入
    玩转Jetson Nano专栏或我的个人主页查看

TensorRT简介

  • NVIDIA TensorRT™是一个高性能深度学习推理平台,用于优化经过训练的深度学习模型以实现高性能推理。它包括深度学习推理优化器和运行时,可为深度学习推理应用程序提供低延迟和高吞吐量。在推理期间,基于TensorRT的应用程序比仅CPU平台的执行速度快40倍。
  • 使用TensorRT,您可以优化在所有主要框架中培训的神经网络模型,以高精度校准低精度,最后部署到超大规模数据中心,嵌入式或汽车产品平台。
  • TensorRT构建于NVIDIA的并行编程模型CUDA之上,使您能够利用CUDA-X AI中的库,开发工具和技术,为人工智能,自动机器,高性能计算和图形优化所有深度学习框架的推理。
  • TensorRT为深度学习推理应用的生产部署提供INT8和FP16优化,例如视频流,语音识别,推荐和自然语言处理。降低精度推断可显着减少应用程序延迟,这是许多实时服务,自动和嵌入式应用程序的要求。
  • 您可以将训练有素的模型从每个深度学习框架导入TensorRT。应用优化后,TensorRT选择特定于平台的内核,以最大限度地提高数据中心,Jetson嵌入式平台和NVIDIA DRIVE自动驾驶平台中Tesla GPU的性能。
  • 为了在数据中心生产中使用AI模型,TensorRT推理服务器是一种容器化微服务,可最大化GPU利用率,并在节点上同时运行来自不同框架的多个模型。它利用Docker和Kubernetes无缝集成到DevOps架构中。
  • 使用TensorRT,开发人员可以专注于创建新颖的AI驱动的应用程序,而不是用于推理部署的性能调整。
  • 使用 TensorRT 的典型深度学习开发周期,如在下图所示。

TensorRT搭建

安装所需的依赖

sudo apt-get install libpython3-dev python3-numpy
sudo apt-get install git cmake

玩转Jetson Nano(四):TensorRT图像识别_ubuntu


玩转Jetson Nano(四):TensorRT图像识别_arm_02

安装jetson-inference

git clone https://github.com/dusty-nv/jetson-inference

玩转Jetson Nano(四):TensorRT图像识别_python_03

cd jetson-inference
git submodule update --init

玩转Jetson Nano(四):TensorRT图像识别_深度学习_04

配置cmake

mkdir build    # 创建build文件夹

由于download-models.sh所需模型文件的下载链接为外网,国内网络无法访问,要编辑jetson-inference/CMakePreBuild.sh,把./download-models.sh和./install-pytorch.sh注释掉。 jetson-inference需要的模型文件另外下载,再传输到data/networks目录下。

vi CMakePreBuild.sh

玩转Jetson Nano(四):TensorRT图像识别_人工智能_05


玩转Jetson Nano(四):TensorRT图像识别_人工智能_06

cd build       # 进入build
cmake ../      # 运行cmake,它会自动执行上一级目录下面的 CMakePreBuild.sh

玩转Jetson Nano(四):TensorRT图像识别_ubuntu_07


玩转Jetson Nano(四):TensorRT图像识别_人工智能_08

下载所需的模型文件

下载地址 提取码:jsdm

玩转Jetson Nano(四):TensorRT图像识别_深度学习_09

cd Downloads
unzip jetson-inference-download-models.zip

玩转Jetson Nano(四):TensorRT图像识别_深度学习_10


玩转Jetson Nano(四):TensorRT图像识别_ubuntu_11

mv ~/Downloads/jetson-inference-download-models/* ~/jetson-inference/data/networks/

玩转Jetson Nano(四):TensorRT图像识别_arm_12

cd ~/jetson-inference/data/networks/
ls
for tar in *.tar.gz; do tar xvf $tar; done

玩转Jetson Nano(四):TensorRT图像识别_ubuntu_13

玩转Jetson Nano(四):TensorRT图像识别_人工智能_14

ls

玩转Jetson Nano(四):TensorRT图像识别_人工智能_15

编译

cd jetson-inference/build
# -j4 使用 4 个 CPU 核同时编译
make -j4

玩转Jetson Nano(四):TensorRT图像识别_python_16


玩转Jetson Nano(四):TensorRT图像识别_ubuntu_17

sudo make install

玩转Jetson Nano(四):TensorRT图像识别_深度学习_18


玩转Jetson Nano(四):TensorRT图像识别_人工智能_19


编译成功,会生成下列文件夹结构

build
├── aarch64
│   ├── bin
│   │   ├── images -> /home/ubuntu/jetson-inference/data/images
│   │   └── networks -> /home/ubuntu/jetson-inference/data/networks
│   ├── include
│   │   ├── jetson-inference
│   │   └── jetson-utils
│   └── lib
│       └── python
│           ├── 2.7
│           └── 3.6
├── CMakeFiles
│   ├── 3.10.2
│   │   ├── CompilerIdC
│   │   │   └── tmp
│   │   └── CompilerIdCXX
│   │       └── tmp
│   ├── CMakeTmp
│   ├── Export
│   │   └── share
│   │       └── jetson-inference
│   │           └── cmake
│   └── jetson-inference.dir
│       ├── c
│       ├── calibration
│       └── plugins
│           └── pose
│               └── trt_pose
│                   └── parse
├── docs
│   └── CMakeFiles
├── examples
│   ├── CMakeFiles
│   ├── depthnet
│   │   └── CMakeFiles
│   │       └── depthnet.dir
│   ├── detectnet
│   │   └── CMakeFiles
│   │       ├── detectnet-camera.dir
│   │       ├── detectnet-console.dir
│   │       └── detectnet.dir
│   ├── imagenet
│   │   └── CMakeFiles
│   │       ├── imagenet-camera.dir
│   │       ├── imagenet-console.dir
│   │       └── imagenet.dir
│   ├── posenet
│   │   └── CMakeFiles
│   │       └── posenet.dir
│   └── segnet
│       └── CMakeFiles
│           ├── segnet-camera.dir
│           ├── segnet-console.dir
│           └── segnet.dir
├── python
│   ├── bindings_python_2.7
│   │   └── CMakeFiles
│   │       └── jetson-inference-python-27.dir
│   ├── bindings_python_3.6
│   │   └── CMakeFiles
│   │       └── jetson-inference-python-36.dir
│   ├── bindings_python_3.7
│   │   └── CMakeFiles
│   └── CMakeFiles
├── tools
│   ├── camera-capture
│   │   ├── camera-capture_autogen
│   │   │   ├── EWIEGA46WW
│   │   │   └── include
│   │   └── CMakeFiles
│   │       ├── camera-capture_autogen.dir
│   │       └── camera-capture.dir
│   │           └── camera-capture_autogen
│   ├── CMakeFiles
│   └── depth-viewer
│       └── CMakeFiles
└── utils
    ├── camera
    │   └── camera-viewer
    │       └── CMakeFiles
    │           └── camera-viewer.dir
    ├── CMakeFiles
    │   ├── Export
    │   │   └── share
    │   │       └── jetson-utils
    │   │           └── cmake
    │   └── jetson-utils.dir
    │       ├── camera
    │       ├── codec
    │       ├── cuda
    │       ├── display
    │       ├── image
    │       ├── input
    │       ├── network
    │       ├── threads
    │       └── video
    ├── display
    │   └── gl-display-test
    │       └── CMakeFiles
    │           └── gl-display-test.dir
    ├── python
    │   ├── bindings_python_2.7
    │   │   └── CMakeFiles
    │   │       └── jetson-utils-python-27.dir
    │   ├── bindings_python_3.6
    │   │   └── CMakeFiles
    │   │       └── jetson-utils-python-36.dir
    │   ├── bindings_python_3.7
    │   │   └── CMakeFiles
    │   └── CMakeFiles
    └── video
        └── video-viewer
            └── CMakeFiles
                └── video-viewer.dir

测试

玩转Jetson Nano(四):TensorRT图像识别_arm_20

cd jetson-inference/build/aarch64/bin
./imagenet-console ./images/cat.jpg output.jpg

玩转Jetson Nano(四):TensorRT图像识别_arm_21

第一次执行需要等待一段时间,后面执行就会很快了。

玩转Jetson Nano(四):TensorRT图像识别_arm_22


玩转Jetson Nano(四):TensorRT图像识别_arm_23


玩转Jetson Nano(四):TensorRT图像识别_python_24


玩转Jetson Nano(四):TensorRT图像识别_ubuntu_25

CSI摄像头实时图像识别

cd jetson-inference/build/aarch64/bin
./imagenet-camera --network=googlenet  # 使用googlenet运行

玩转Jetson Nano(四):TensorRT图像识别_python_26


玩转Jetson Nano(四):TensorRT图像识别_人工智能_27


玩转Jetson Nano(四):TensorRT图像识别_深度学习_28


玩转Jetson Nano(四):TensorRT图像识别_python_29

常见问题

注意:CSI摄像头会出现视频画面颠倒,可用以下方法设置修改。

cd ~/jetson-inference/utils/camera/    
sudo vi gstCamera.cpp

进入文件之后,将

if( mOptions.flipMethod == videoOptions::FLIP_NONE )
    mOptions.flipMethod =  videoOptions::FLIP_ROTATA_180;
else if( mOptions.flipMethod =  videoOptions::FLIP_ROTATA_180 )   
    mOptions.flipMethod =  videoOptions::FLIP_NONE;

玩转Jetson Nano(四):TensorRT图像识别_ubuntu_30

中的前三条语句注释掉,

//if( mOptions.flipMethod == videoOptions::FLIP_NONE )
    //mOptions.flipMethod =  videoOptions::FLIP_ROTATA_180;
//else if( mOptions.flipMethod =  videoOptions::FLIP_ROTATA_180 )   
    mOptions.flipMethod =  videoOptions::FLIP_NONE;

玩转Jetson Nano(四):TensorRT图像识别_人工智能_31


注释完成之后,保存并退出,然后对其进行编译即可。

cd ~/jetson-inference/build/    
make 
sudo make install

如果没报错,则编译成功。

参考文献

[1] Jetson Nano Developer Kit User Guide [2] TensorRT官方教程 [3] 官方Demo

  • 更多精彩内容,可点击进入
    玩转Jetson Nano专栏或我的个人主页查看


标签:CMakeFiles,Nano,inference,jetson,TensorRT,camera,图像识别,Jetson,dir
From: https://blog.51cto.com/u_15953612/6318601

相关文章

  • 人脸识别追踪。 图像采集识别和电机驱动系统,利用openmv图像识别对人脸
    人脸识别追踪。图像采集识别和电机驱动系统,利用openmv图像识别对人脸进行实时采集,采集信号传入到单片机,根据分析结果利用matlab-PID算法控制电机系统跟随人脸运动,自动检测追踪ID:482800621183256282......
  • 图像识别入门教程,带你从零到一!
    图像识别是一门利用计算机技术来识别和处理图像中的信息的学科。图像识别的应用非常广泛,例如人脸识别、车牌识别、医学影像分析等。本教程将带你从零到一,了解图像识别的基本原理和方法,以及如何使用Python和TensorFlow等工具来实现图像识别的任务。本教程分为以下几个部分:-第一部......
  • 图像识别的前沿技术和未来趋势
    图像识别是一种利用计算机对图像进行处理和分析,从而识别出图像中的目标或特征的技术。图像识别的前沿技术和未来趋势是什么呢?本文将从以下几个方面进行介绍。一、图像识别的前沿技术图像识别的前沿技术主要包括以下几个方面:-深度学习。深度学习是一种基于多层神经网络的机器学......
  • Linux command line editor nano All In One
    LinuxcommandlineeditornanoAllInOneCtrl+X退出窗口Ctrl+G打开帮助文档LinuxexitnanoeditorAllInOnehttps://www.cnblogs.com/xgqfrms/p/16560419.htmlnanoeditor$nano-h用法:nano[选项][[+行[,列]]文件名]...如需启动时将游标置放在文件的......
  • 图像识别的技术难点和突破,你掌握吗?
    图像识别是人工智能的一个重要分支,它涉及到计算机视觉、机器学习、深度学习等多个领域。图像识别的目标是让计算机能够像人类一样,对输入的图像进行理解和分析,从中提取出有用的信息。图像识别的技术难点和突破,你掌握吗?图像识别的技术难点主要有以下几个方面:-图像质量:图像可能存......
  • SuperTools是一款图片处理工具,提供图片压缩、图像识别等功能
    SuperTools是一款非常实用工具,既能压缩图片,也能识别图像文字,具有很高使用价值,由天津雍博科技有限责任公司提供技术支持服务。访问网址:tool.yongbosoft.com欢迎大家试用品鉴,也请大家提出宝贵意见注意:目前SuperTools仅支持电脑PC端的图像处理。工具首页  登录首页图片压......
  • EMQX vs NanoMQ | 2023 MQTT Broker 对比
    引言EMQX和NanoMQ都是由全球领先的开源物联网数据基础设施软件供应商EMQ开发的开源MQTTBroker。EMQX是一个高度可扩展的大规模分布式MQTTBroker,能够将百万级的物联网设备连接到云端。NanoMQ则是专为物联网边缘场景设计的轻量级Broker。本文中我们将对EMQX和NanoMQ......
  • 图像识别技术原理和神经网络的图像识别技术
    图像识别技术是信息时代的一门重要的技术,其产生目的是为了让计算机代替人类去处理大量的物理信息。随着计算机技术的发展,人类对图像识别技术的认识越来越深刻。图像识别技术的过程分为信息的获取、预处理、特征抽取和选择、分类器设计和分类决策。简单分析了图像识别技术的引入、其......
  • 用于图像识别的编程语言,你知道几个?
    图像识别是大多数现代设备和程序中部署的主要功能之一。该功能具有广泛的应用程序,最常见的是安全系统。它可以使设备通过图像来识别人员或物体的身份。而面部识别是图像识别的产物。那么,创建具有图像识别功能的应用程序或软件需要些什么?你只需要使用编程语言对其进行编程。当然,有些......
  • 如何通过人工神经网络实现图像识别?
    ​如何通过人工神经网络实现图像识别?图像识别是指让计算机能够自动地识别图像中的物体、场景或者特征的技术。人工神经网络是一种模仿生物神经系统的结构和功能的数学模型,它由大量的简单处理单元(神经元)相互连接而成,能够通过学习从数据中提取复杂的特征和规律。人工神经网络实现......