Jetson Nano系列教程8:HelloAIWorld

摘要: NVIDIA为Jetson Nano做了一系列的教程,其中,HelloAI是基于Jetson Nano的较为基础的一个教程,其中用的项目就是Jetson-Inference.
前言

作为NVIDIA的基础教程,同样这里我们只是做一下搬运和翻译。如果您有什么问题,请直接留评。这里我们不再对如何安装镜像,网络设置和远程登录多做解释,如果还是不清楚怎么操作这些步骤的同学,请自信查看之前的相关教程。这里我们直接从配置Jetson-Inference项目的环境开始。首先,Jetson-Inference的github项目链接:https://github.com/dusty-nv/jetson-inference
有兴趣的同学可以直接参考官方链接,由于本教程是由官方教程翻译而来,可能没有办法跟着官方教程同步更新,不便之处,敬请谅解。
硬件配置
运行本项目,需要用到的配件:
将以上设备连接好。当然,为了好看一点,你可以另外加一个外壳。这里推荐我们的Jetson Nano Case (B)
软件配置
上电启动系统,打开终端(或者远程登录Jetson nano)。
  • 安装cmake
    1sudo apt-get update
    2sudo apt-get install git cmake
  • 下载jetson-inference 项目资源
    1cd ~/
    2git clone https://github.com/dusty-nv/jetson-inference
    3cd jetson-inference
    4git submodule update --init
  • 安装python3.6版本的libpython3-dev和numpy依赖库
    1sudo apt-get install libpython3-dev python3-numpy
  • 配置项目资源
注意:在最后一个cmake语句运行的过程,如果出现error等报错信息的时候,检查一下网络连接是否异常,然后再重新运行一遍该语句
1cd ~/jetson-inference   
2sudo mkdir build
3cd build
4sudo cmake ../
  • 出现下面提示时候,使用箭头->跳过选择,因为国内的下载不了box.com上文件。


 

虽然因为网络问题,国内的用户无法下载box.com上的文件,但是官方也为大家提供了一个方便下载的版本:https://github.com/dusty-nv/jetson-inference/releases 你可以单独去将各个model下载,然后再放置到 ~、jetson-inference/data/networks目录下,然后解压。为了方便用户,这里我们提供参考下载指令

1cd ~/jetson-inference/data/networks/
2#如果你需要下载更多的算法,请参考这里的方法,首先在github上获取model的下载地址,然后用wget 加指令下载。这里下载三个model以作参考
3wget https://github.com/dusty-nv/jetson-inference/releases/download/model-mirror-190618/facenet-120.tar.gz
4wget https://github.com/dusty-nv/jetson-inference/releases/download/model-mirror-190618/GoogleNet.tar.gz
5wget https://github.com/dusty-nv/jetson-inference/releases/download/model-mirror-190618/SSD-Mobilenet-v2.tar.gz
6#下面的指令是解压前面下载的model的,只有解压出来才能用
7tar -zxvf facenet-120.tar.gz
8tar -zxvf GoogleNet.tar.gz
9tar -zxvf SSD-Mobilenet-v2.tar.gz
这里说明下,我们只是各种神经网络(NN)的搬运工,那些动辄上百层的深度神经网络(DNN),目前得靠服务器集群加速训练,训练好权重和偏置后在JetsonNano等端设备上进行部署。
  • 编译工程
1cd ~/jetson-inference/build
2make
3sudo make install
二、使用GoogleNet对物体进行识别
①、静态图片识别,例程包含了C++和Python两种源码,这里使用C++进行演示,输入文件orange_0.jpg,输出文件为output_0.jpg。
1cd ~/jetson-inference/build/aarch64/bin/
2./imagenet-console --network=googlenet orange_0.jpg output_0.jpg
用户可自行将一些物体图片放到 ~/jetson-inference/build/aarch64/bin/ 目录下,使用上面的 ./imagenet-console 命令执行检测。下图展示googlnet对橙子orange的97.923%识别效果。

②、使用摄像头对环境物体进行识别
首先安装视频相关库,在JetsonNano控制台输入下面命令:
1sudo apt-get install v4l-utils
2v4l2-ctl --list-formats-ext
再输入下面命令启动IMX219-77摄像头:
1./imagenet-camera
文档说明GoogleNet能对1000类物体进行识别,小编对周遭物体进行测试,效果如下:


三、使用FaceNet-120进行人脸检测
FaceNet-120可以对视频中出现的人脸进行实时检测,在JetsonNano终端按下Ctrl+Z退出上面演示,输入下面命令:
1./detectnet-camera --network=facenet
启动摄像头后可以观察到当有人经过摄像头画面范围时,可观察到对人脸区域进行标签。感兴趣读者可进行相关测试,用户也可下载github上相关神经网络解压到jetson-inference/data/network目录下,在输入上面命令时将facenet替换为你想验证的神经网络,地址请点击我,enjoy it!