TX2+TensorRT+DIGITS实现图像的识别、检测和分割---1---Jetson配置
DIGITS Workflow
如果您是深度神经网络的新手,您可以查看这个教程,了解更多关于训练和推演的内容。
TensorRT下载地址:https://developer.nvidia.com/nvidia-tensorrt-download
TesnsoRT介绍文档:https://devblogs.nvidia.com/tensorrt-3-faster-tensorflow-inference/
TensorRT开发者指南:http://docs.nvidia.com/deeplearning/sdk/tensorrt-developer-guide/index.html
TensorRT样例代码:http://docs.nvidia.com/deeplearning/sdk/tensorrt-developer-guide/index.html#samples
使用NVIDIA深度学习工具,您可以很容易的开始训练深度神经网络,还能高效的在您所需要的地方部署它们。独立的GPU通常在服务器,个人电脑或者笔记本电脑上面利用DIGITS进行训练。而Jetson 和集成的GPU通常用于嵌入式平台。
NVIDIA DIGITS 是部署在云服务器或者个人电脑上的,用于训练网络模型的交互系统。而TensoRT和Jetson 是用于部署运行时的推理平台。TensorRT 利用了图优化和半精度FP16来支持双精度深度神经网络的推演。DIGITS和TensorRT一起构建了,开发和部署高层次的人工智能和感知的神经网络的高效的工作流程。
System Setup
在这份教程中,我们会使用一个PC(或者AWS)来训练深度神经网络。另外,我们会使用Jetson来进行推演。我们还会利用PC来对Jetson刷新最新的JetPack版本。
首先我们来安装和配置pc端需要的系统和工具
Installing Ubuntu on the Host
在PC端下载并且安装Ubungu 16.04 x86_64,下面是下载地址:
http://releases.ubuntu.com/16.04/ubuntu-16.04.2-desktop-amd64.iso
http://releases.ubuntu.com/16.04/ubuntu-16.04.2-desktop-amd64.iso.torrent
Ubuntu 14.04 x86_64也是可以的,但是在利用apt-get安装包的时候,需要对镜像进行一些修改
Running JetPack on the Host
在PC端下载最新版本的JetPack。除了刷新最新版的Jetson的BSP之外,JetPack还会自动安装一些类似于CUDA Toolkit的工具。您可以在Release Notes查看全版本特性列表和安装包
下载完上面的JetPack,在您的PC端执行下面的命令:
$ cd <directory where you downloaded JetPack>
$ chmod +x JetPack-L4T-3.1-linux-x64.run
$ ./JetPack-L4T-3.1-linux-x64.run
执行完上面的命令,JetPack 的界面就会启动,跟着下面的安装教程,就可以一步步完成安装。在开始的时候,JetPack将会确认您要部署的Jetson版本。
选择您自己的Jetson版本(TX1,TX2或者TK1),然后选择Next继续。接下来,您就可以看到能够安装的包的列表。已经在host上面安装的包会在界面中Host-Ubuntu的栏目下面列出。而打算在Jetson上面安装的会在底部列出。您可以在菜单中选择或者取消一个独立的包装。
如果想用CUDA来加速host端的网络训练,推荐选择右上角的Full选项。然后,选择Next开始安装。JetPack将会下载并且安装一系列的包。注:如果你想要找到下载的包,所有下载的.deb安装包都会保存在jetpack_downloads这个文件夹下面。
在下载完成之后,Jetpack将会进入最后的安装阶段,L4T BSP将会被刷入板子中。您需要把你的Jetson板子通过micro-USB接口连接到PC端(利用您的Jetson包装盒中的那条micro-USB的线)。
然后,同时按住Jetson板子上的Recovery按钮和Reset按钮,一小段时间之后,松开Reset按钮。接下来,您的Jetson 板子就会进入Recovery mode。
在PC端输入lsusb,如果出现了您的NVIDIA设备,那么就证明您的设备已经和PC端链接成功了。接下来JetPack就会把系统和相关工具刷入您的板子中。
刷完系统之后,Jetson就会重新启动,如果连接到了一个HDMI的显示器上,就会看到一个Ubuntu 的桌面。然后,JetPack就会通过SSH连接到您的PC端来安装剩下的包(例如:ARM aarch64版本的CUDA Toolkit,cuDNN 和TensorRT)。您还可以选择您的JetPack以何种模式连接到您的PC端,可以直接相连,也可以连接到同一个路由器中。JetPack的安装程序会让您来确认一下。您可以查看JetPack的安装指南,来了解更多的内容。
Installing NVIDIA Driver on the Host
到这里,JetPack将会将最新的系统和工具刷进您的板子中,cuda toolkit也会在PC端和Jetson端都安好。不过,您还是需要将您PC端的NVIDIA的PCIe驱动安装进去。
在您的PC端输入一下命令来安装驱动:
$ sudo apt-get install nvidia-375
$ sudo reboot
在重新启动之后,输入以下命令,就可以看到英伟达驱动:
$ lsmod | grep nvidia
nvidia_uvm 647168 0
nvidia_drm 49152 1
nvidia_modeset 790528 4 nvidia_drm
nvidia 12144640 60 nvidia_modeset,nvidia_uvm
drm_kms_helper 167936 1 nvidia_drm
drm 368640 4 nvidia_drm,drm_kms_helper
接下来运行CUDA samples中的例子来确认CUDA toolkit和driver安装好了:
$ cd /usr/local/cuda/samples
$ sudo make
$ cd bin/x86_64/linux/release/
$ ./deviceQuery
$ ./bandwidthTest --memory=pinned
Installing cuDNN on the Host
接下来这步是在您的PC端安装NVIDIA的cuDNN库。从Nvidia官网下载libcudnn和libcudnn 包:
https://developer.nvidia.com/compute/machine-learning/cudnn/secure/v6/prod/8.0_20170307/Ubuntu16_04_x64/libcudnn6_6.0.20-1+cuda8.0_amd64-deb
https://developer.nvidia.com/compute/machine-learning/cudnn/secure/v6/prod/8.0_20170307/Ubuntu16_04_x64/libcudnn6-dev_6.0.20-1+cuda8.0_amd64-deb
Then install the packages with the following commands:
$ sudo dpkg -i libcudnn6_6.0.20-1+cuda8.0_amd64.deb
$ sudo dpkg -i libcudnn6-dev_6.0.20-1+cuda8.0_amd64.deb
Installing NVcaffe on the Host
NVcaffe 是NVIDIA版本的对于GPU优化过的Caffe。NVcaffe 利用cuDNN和DIGITS来训练深度神经网络。从GitHub上面下载并且编译源码(下面介绍的是NVcaffe-0.15):
注:在这个教程中,NVcaffe只需要在PC端中安装用于训练。推演阶段我们使用的是TensorRT并不需要安装caffe。
$ sudo apt-get install --no-install-recommends build-essential cmake git gfortran libatlas-base-dev libboost-filesystem-dev libboost-python-dev libboost-system-dev libboost-thread-dev libgflags-dev libgoogle-glog-dev libhdf5-serial-dev libleveldb-dev liblmdb-dev libprotobuf-dev libsnappy-dev protobuf-compiler python-all-dev python-dev python-h5py python-matplotlib python-numpy python-opencv python-pil python-pip python-protobuf python-scipy python-skimage python-sklearn python-setuptools
$ sudo pip install --upgrade pip
$ git clone -b caffe-0.15 https://github.com/NVIDIA/caffe
$ cd caffe
$ sudo pip install -r python/requirements.txt
$ mkdir build
$ cd build
$ cmake ../ -DCUDA_USE_STATIC_CUDA_RUNTIME=OFF
$ make --jobs=4
$ make pycaffe
现在Caffe已经配置编译好了。接下来编辑~/.bashrc来把你的Caffe添加到你的系统环境中去(替换成你自己的地址)。
export CAFFE_ROOT=/home/your-name/workspace/caffe
export PYTHONPATH=/home/your-name/workspace/caffe/python:$PYTHONPATH
然后关闭并且重新打开终端来加载新改的环境。
Installing DIGITS on the Host
NVIDIA DIGITS 是一个基于Python的Web服务,提供了训练深度神经网络和管理数据集的交互界面。它最大的亮点是,您可以在PC端训练您的网络,然后把训练好的模型复制到您的Jetson端,然后再利用TensorRT进行推演。
首先,安装一些caffe需要的工具库,然后从GitHub上下载:
$ sudo apt-get install --no-install-recommends graphviz python-dev python-flask python-flaskext.wtf python-gevent python-h5py python-numpy python-pil python-pip python-protobuf python-scipy python-tk
$ git clone https://github.com/nvidia/DIGITS
$ cd DIGITS
$ sudo pip install -r requirements.txt
Starting the DIGITS Server
在终端中进入您的DIGITS的文件夹下,执行下面的命令,就可以启动DIGITS了:
$ ./digits-devserver ___ ___ ___ ___ _____ ___| \_ _/ __|_ _|_ _/ __|| |) | | (_ || | | | \__ \|___/___\___|___| |_| |___/ 5.1-dev2017-04-17 13:19:02 [INFO ] Loaded 0 jobs.
DIGITS将会在digits/jobs这个目录下保存您的任务(包括训练数据库和训练好的模型)。您可以在浏览器输入:localhost:5000来访问DIGITS界面
注:5000是DIGITS的默认端口,您可以用digits-devserver –port number来更改这个端口
Building from Source on Jetson
与此同时,JetPack还会提供TensorRT。它可以利用GoogleNet/Alexnet 和实时摄像头对图片进行识别,行人检测(画出检测框)和分割。它还能够部署在Jetson上面并且利用在PC端的DIGITS服务器上面训练的网络模型。
您可以在 GitHub上面下载最新的源码,并且在您的TX1/TX2上面编译。
注:您需要验证您的BSP版本和Jetson版本是否对应:
Jetson TX2 - JetPack 3.0 / L4T R27.1 aarch64 (Ubuntu 16.04 LTS)
Jetson TX1 - JetPack 2.3 / L4T R24.2 aarch64 (Ubuntu 16.04 LTS)
Jetson TX1 - JetPack 2.3.1 / L4T R24.2.1 aarch64 (Ubuntu 16.04 LTS)
note: this branch is verified against the following BSP versions for Jetson TX1/TX2:
Jetson TX2 - JetPack 3.0 / L4T R27.1 aarch64 (Ubuntu 16.04 LTS)
Jetson TX1 - JetPack 2.3 / L4T R24.2 aarch64 (Ubuntu 16.04 LTS)
Jetson TX1 - JetPack 2.3.1 / L4T R24.2.1 aarch64 (Ubuntu 16.04 LTS)
Cloning the Repo
首先,您需要安装git,cmake等工具:
$ sudo apt-get install git cmake
接下来下载jetson-inference:
$ git clone https://github.com/dusty-nv/jetson-inference
Configuring with CMake
运行cmake的时候,预安装的脚本(CMakePreBuild.sh)将会自动的安装一些依赖:
$ cd jetson-inference
$ mkdir build
$ cd build
$ cmake ../
注:cmake在加载CMakePrebuild.sh的时候,可能需要sudo权限。它还会从网上下载一些已经训练好的网络模型。
Compiling the Project
进入到jetson-inference/build的文件夹里面进行编译(注意,这里是step #2,后面会用到):
$ cd jetson-inference/build # omit if pwd is already /build from above
$ make
您可以根据您的系统架构,在不同的文件夹里面编译成不同包(armhf 或者 aarch64):
|-build\aarch64 (64-bit)\bin where the sample binaries are built to\include where the headers reside\lib where the libraries are build to\armhf (32-bit)\bin where the sample binaries are built to\include where the headers reside\lib where the libraries are build to
Digging Into the Code
作为参考,请参阅可用的视觉网络,包括用于图像识别的imageNet和用于目标检测的detectNet:
/*** Image recognition with GoogleNet/Alexnet or custom models, using TensorRT.*/
class imageNet : public tensorNet
{
public:/*** Network choice enumeration.*/enum NetworkType{ALEXNET,GOOGLENET};/*** Load a new network instance*/static imageNet* Create( NetworkType networkType=GOOGLENET );/*** Load a new network instance* @param prototxt_path File path to the deployable network prototxt* @param model_path File path to the caffemodel* @param mean_binary File path to the mean value binary proto* @param class_info File path to list of class name labels* @param input Name of the input layer blob.*/static imageNet* Create( const char* prototxt_path, const char* model_path, const char* mean_binary,const char* class_labels, const char* input="data", const char* output="prob" );/*** Determine the maximum likelihood image class.* @param rgba float4 input image in CUDA device memory.* @param width width of the input image in pixels.* @param height height of the input image in pixels.* @param confidence optional pointer to float filled with confidence value.* @returns Index of the maximum class, or -1 on error.*/int Classify( float* rgba, uint32_t width, uint32_t height, float* confidence=NULL );
};
这两个网络都从包含了TensorRT代码的共享tensorNet网络中继承了实例
TX2+TensorRT+DIGITS实现图像的识别、检测和分割---1---Jetson配置相关推荐
- TX2+TensorRT+DIGITS实现图像的识别、检测和分割---3---图像识别(二)
Testing Classification Model in DIGITS TensorRT下载地址:https://developer.nvidia.com/nvidia-tensorrt-dow ...
- 图像数字识别、数字分割(OCR识别,毕业设计)
基本图像处理流程 这是我在测试图像处理中使用的原始图像.它有一些眩光点,但是图像相当干净.让我们逐步完成获取此源图像的过程,并尝试将其分解为单个数字. 影像准备 在开始图像处理流程之前,我们决定先调整 ...
- 计算机视觉、图像分类、目标检测、人脸比对、人脸识别、语义分割、实例分割、图像搜索
计算机视觉.图像分类.目标检测.人脸比对.人脸识别.语义分割.实例分割.图像搜索 目录
- SAR图像飞机目标检测识别进展
目标检测与识别是高分辨合成孔径雷达(SAR)领域的热点问题.机场上飞机作为一种典型目标,其检测与识别具有一定的独特性.在检测与识别的过程中,如何将深度学习和目标电磁散射机理结合.提高网络或模型的泛化能 ...
- 基于yolov3的行人目标检测算法在图像和视频中识别检测
资源下载地址:https://download.csdn.net/download/sheziqiong/85772186 资源下载地址:https://download.csdn.net/downl ...
- Python实现条码识别:从图像中自动检测和识别条形码
Python实现条码识别:从图像中自动检测和识别条形码 在现代零售业中,条形码是一项必不可少的技术.它们提供了一种快速.准确和可靠的方法来追踪和管理库存.随着计算机视觉技术的发展,我们可以利用Pyth ...
- JavaCV进阶opencv图像检测识别:ffmpeg视频图像画面人脸检测
JavaCV免费教程目录: JavaCV入门教程(免费JavaCV教程) javacv实战专栏目录(2016年更新至今): JavaCV实战专栏文章目录(2016年更新至今) 2022年最新JavaC ...
- 端到端伪激光图像3D目标检测
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文由博主:流浪机器人 授权转载,二次转载请联系原作者 原文地址: ...
- 一文读懂图像局部特征点检测算法
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自|新机器视觉 研究图像特征检测已经有一段时间了,图像特征检 ...
最新文章
- ISME:林科院袁志林等-冷杉优势真菌共生发育的基因家族趋同演化及平衡选择机制...
- Py之Seaborn:数据可视化Seaborn库的柱状图、箱线图(置信区间图)、散点图/折线图、核密度图/等高线图、盒形图/小提琴图/LV多框图的组合图/矩阵图实现
- C#中控件Control的Paint事件和OnPaint虚函数的区别
- poj3723Conscription
- 测开2 - Python(文件操作)
- R语言中dim函数_R语言--向量化计算(apply族函数)
- mysql日志文件转存_【转】Mysql日志文件
- 临时和永久关闭Selinux
- SQL Server 2005 应用 全文搜索
- Qt汉字显示乱码的一个简单解决方案
- phpcms代码学习笔记(globle.function.php)
- matlab 系数矩阵存储,用Matlab对矩阵进行LU分解法 值得收藏
- Python 3——xlsxwriter生成图表
- php生成白色背景图片
- 怎么调节台式计算机字体大小,电脑上怎么调整字体大小
- 温故而知新,可以为师矣
- YYDS!大神自己动手制造游戏机
- 数据结构(本科学习)
- 从键盘输入接收多个整数,直到输入quit的时结束输入,把输入过的整数倒序排序输出。
- MATLAB判断是不是质数,MATLAB脚本质数的判断