此文确保你可以正确搭建jetson nano环境,并跑通官方”hello AI world” demo. 核心的步骤都来自一手官方教程,如果访问不了可以使用代理或者把com域名修改为cn域名:
Getting Started With Jetson Nano Developer Kit
注意:官方”hello AI world“ demo 来自jetson-inference这个API仓库,它没有deepstream复杂,但同样基于tensorrt加速,并充分利用了jetson的硬件编解码器。deepstream的安装与使用不在这篇文档中描述。
参考下表,检查你需要准备的硬件与设备
# | 名称 | 作用 | 提供方 | 备注 |
---|---|---|---|---|
1 | 模组与载板 | 核心部件 | 官方 | 到手后应该已经插在了一起 |
2 | 风扇 | 散热 | 非官方 | |
3 | DC电源 | 供电 | 非官方 | jetson支持两种供电模式: |
1) USB | ||||
2) DC | ||||
尽量使用DC供电,确保可提供5V/4A输出,让jetson工作在高功率状态 | ||||
4 | micro-SD (32GB),读卡器 | 镜像烧录/Disk | 非官方 | |
6 | 跳线帽一个 | 确保DC电源可用 | - | |
7 | USB键盘,鼠标,HDMI或DP线与显示器,网线 | - | - | - |
8 | 亚克力外可或官方纸盒 | - | - | - |
如果你是从京东或者淘宝购买的jetson nano,那么除了键盘鼠标显示器,厂家基本会给你配齐所有需要的硬件。
参考下图,该怼的硬件怼上去就可以,注意不要插电源,等我们烧好系统SD卡后再插电源。
继续参考下图,把跳线帽插上,注意要两个针脚都插进去,否则开不了机
jetpack 可以简单理解为jetson专用镜像包,使用它安装的操作系统中除了基础的ubuntu系统之外,还包括如下针对AI开发相关的组件:L4T Kernel / BSP,CUDA Toolkit,cuDNN,TensorRT,OpenCV,VisionWorks,Multimedia API’s
ok,开始
找台电脑,从 https://developer.nvidia.com/jetson-nano-sd-card-image 下载官方镜像 (如果打不开,把com改成cn再试试)
SD卡插入读卡器,然后插到你的电脑上
从 https://www.sdcard.org/downloads/formatter_4/eula_windows/ 下载SD卡格式化工具,安装并打开,参考下图点击”Format”把SD卡格式化一次
从 https://www.balena.io/etcher下载烧录软件,安装并打开,参考下图选择你刚才下载的镜像包,根据提示,点击Flash将镜像烧录到SD卡(中途如果出现弹窗,全部点击cancel)
参考下图,把SD卡插入jetson nano中,接上DC电源,插上鼠标键盘显示器,安装系统(和常规系统安装方式一样,有一步会让你选择”APP partition size“,直接选择最大即可)
看到如下界面就是成功了
注意: jetpack安装好系统后,尽量不要根据非官方步骤来跑demo,否则你的demo可能由于无法使用nano硬件而跑不出应有的性能,同时你也可能会在基础库版本问题上耗费大量的精力。
这里我们还是根据官方的入门教程,安装jetson-inference并跑官方demo。
$ sudo apt-get update
$ sudo apt-get install git cmake libpython3-dev python3-numpy
$ git clone --recursive https://github.com/dusty-nv/jetson-inference
$ cd jetson-inference
$ mkdir build
$ cd build
$ cmake ../
$ make -j$(nproc)
$ sudo make install
$ sudo ldconfig
当你执行到上面”cmake …/“ 命令的时候,会弹出如下的界面,这个是让你选择下载官方的预训练模型界面,这里我们不用选择,直接回车下载默认的模型
下载完成后,又会弹出如下界面让你选择下载pytorch版本,控制方向键到python 3.6 版本,点击空格选择好,然后点击回车开始下载
好了,等待一会儿jetson-inference以及它需要的组件就全部下载好了,继续执行剩下的命令,完成编译与安装。
jetson-inference安装好后,系统中会安装一下几个支持不同AI模型的程序,使用这些程序并选择支持的预训练模型就可以完成基本的任务,参考如下:
接下来,通过两个demo来体验一下jetson,一个目标检测,一个实时手势识别
进入 /build/aarch64/bin 目录,参考运行下面的命令,注意第一次跑这个模型会等待几分钟来对模型进行优化,耐心等待即可
# C++
$ ./detectnet --network=ssd-mobilenet-v2 images/peds_0.jpg images/test/output.jpg # --network flag is optional
# Python
$ ./detectnet.py --network=ssd-mobilenet-v2 images/peds_0.jpg images/test/output.jpg # --network flag is optional
结果:
除了支持图片,程序也支持对视频或者摄像头进行实时识别,参考下面的命令
$ ./detectnet /usr/share/visionworks/sources/data/pedestrians.mp4 images/test/pedestrians_ssd.mp4 #本地视频
$ ./detectnet csi://0 # CSI摄像头
$ ./detectnet /dev/video0 # USB摄像头
$ ./detectnet /dev/video0 output.mp4 # USB摄像头保存
同时,我们可以通过修改—network参数来指定使用不同的模型来做目标检测,参考:
准备一个USB摄像头,插入,参考运行如下命令进行实时手势识别:
# C++
$ ./posenet --network=resnet18-hand /dev/video0
# Python
$ ./posenet.py --network=resnet18-hand /dev/video0
对视频进行目标检测的第一步就是解码,jetson强大的地方就是自带硬件编解码器,我们来看demo,运行下面的程序,通过指定—input-codec指定硬解码
detectnet --input-codec=CODEC /usr/share/visionworks/sources/data/cars.mp4
使用jtop命令(参考下一节安装),可以看到硬件解码器已经启动
运行 detectnet —help 可以查看编解码器的支持情况。
Nvidia官方目前没有系统性能监测工具,我们可以使用 jetson-stats 这个工具包来实时的监控系统的性能以及各项指标,它的官网链接:https://github.com/rbonghi/jetson_stats
运行下面的命令安装:
sudo -H pip3 install -U jetson-stats
如果提示没有pip3则运行如下命令
sudo apt-get install python3-pip
安装完成后reboot你的系统,就可以使用了,直接运行jtop命令
sudo jtop
# 如果无法启动,运行下面命令手动启动服务
# systemctl restart jetson_stats.service
jetson stats除了jtop工具外,还同安装jetson_config,jetson_release,jetson_swap等工具,具体的含义和使用方式参考官网。