“ Nvidia 今年 GTC 上推出价格仅 99$ 的开发板——Jetson Nano,本文将介绍如何开始使用它,包括首次启动,安装系统软件包,配置 Python 开发环境,安装 Keras 和 TensorFlow,修改默认相机,以及运行分类和目标检测任务。希望你读完之后能避免一些坑。”
Jetson Nano 是一款具有 472 GFLOPS 半精度计算能力的端上 AI 开发板,内置 128 个 Maxwell 架构 CUDA 核心。板卡外观如下图所示:
硬件数据手册:
从资源上看相当于 Jetson TX1 的阉割版,无太多亮点。主要是便宜,千元以下的开发板里面算得上中规中矩。
最近国外一小哥 Adrian Rosebrock 拿到了 Jetson Nano 板卡并第一时间做了测试,跑通了完整的流程,后面步骤摘自小哥的笔记。点击“原文链接”可以看小哥的原始文章。国内有朋友从某宝下单,至今还没发货,手头有货的朋友可以验证下本文步骤是否流畅。
01
—
准备工作
开始之前需要准备好以下三样东西:
-
一个 Micro-SD 卡,容量至少 16 GB,推荐 32 GB;
-
5V 2.5A Micro USB 供电线;
-
网线(吐槽下,既然标榜自己是 IoT 和边缘计算设备,为毛连个 WiFi 接口都没有?!);
02
—
刷机
拿到板卡后需要先刷机,之后才能安装软件运行 demo。我们需要从 Nvidia 官网下载 Jetson Nano 开发包 SD 卡镜像。镜像压缩包大约 5 GB 多一点,解压后 12 GB,这也是为什么需要准备一张至少 16 GB 的 Micro-SD 卡,太小的话刷机会出问题。镜像链接:
https://developer.nvidia.com/embedded/dlc/jetson-nano-dev-kit-sd-card-image
下载后解压,在 Linux 上可以用 dd 命令将 img 文件写入 SD 卡。使用 Windows、MacOS 的步骤有所不同,具体请参考官网链接:
https://developer.nvidia.com/embedded/learn/get-started-jetson-nano-devkit#write
03
—
首次启动
把 Micro-SD 卡插入插座。插座在散热片下面,如图这个位置。(吐槽下,这个鬼地方真的很难找)。
插好 SD 卡,接上电源线、网线、显示器,启动板卡。 具体操作步骤:
过一会出现如图画面:
看到桌面说明启动成功。
04
—
安装软件
先安装基本工具和库(保证网络连接顺畅):
1 | |
2 | |
3 | |
4 | |
$ |
sudo apt
get
install git cmake
$
sudo apt
get
install libatlas
base
dev gfortran
$
sudo apt
get
install libhdf5
serial
dev hdf5
tools
$
sudo apt
get
install python3
dev |
配置 Python 环境(pip、virtualenv):
1 | |
2 | |
3 | |
$ |
wget https :// bootstrap .pypa.io / get
pip .py
$
sudo python3 get
pip .py
$
rm
get
pip .py |
使用 virtualenv 好处是让我们的开发环境和其他系统环境互不影响。
1 | |
$ | |
sudo pip install virtualenv virtualenvwrapper | |
修改 ~/.bashrc,末尾增加如下内容:
1 | |
2 | |
3 | |
4 |
$HOME / .virtualenvs
export VIRTUALENVWRAPPER_PYTHON =/ usr / bin / python3
source / usr / local / bin / virtualenvwrapper .sh |
运行如下命令让设置生效:
1 | |
$ |
source ~/ .bashrc |
现在可以运行 mkvirtualenv 命令创建一个虚拟 Python 环境。以下命令创建了一个名为 deep_learning 的虚拟环境,解释器为 Python3:
1 | |
$ |
mkvirtualenv deep_learning
p
python3 |
运行 workon 命令,使能上面创建的虚拟环境:
1 | |
$ |
workon deep_learning |
在虚拟环境中安装 Numpy:
1 | |
$ |
pip install numpy |
安装 TensorFlow 一定不能用 pip install tensorflow-gpu ,Nvidia 官方提供 Jetson Nano 上编译好的 TensorFlow,运行如下命令:
1 | |
$ |
pip
install
extra
index
url
https
://
developer
.download.nvidia.com
/
compute
/
redist
/
jp
/
v42
tensorflow
1.13.1 + nv19 . 3 |
最后安装 scipy 和 Keras,步骤和 x86 平台相同:
1 | |
2 | |
$ |
pip install scipy
$
pip install keras |
05
—
运行 Demo
我们可以通过以下命令在 Jetson Nano 上编译安装 Jetson Inference Engine:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
$ |
git clone
https :// github .com / dusty
nv / jetson
inference
$
cd
jetson
inference
$
git submodule
update
init
$
mkdir
build
$
cd
build
$
cmake
..
$
make
$
sudo make
install |
注意 cmake 阶段会下载几个 GB 的模型文件,尽量保证 SD 卡空间充足,32 GB 比较稳妥。
使用 Jetson Nano 摄像头时你有两个选择:
-
CSI 相机模组(可以直接用树莓派的摄像头模组,接口兼容);
-
USB webcam(本文使用这个);
编译好的 Jetson Inference Engine 有以下几个样例,位于 jetson-inference :
-
detectnet-camera:目标检测样例,使用摄像头输入;
-
detectnet-console:目标检测样例,使用图片输入;
-
imagenet-camera:图片分类样例,使用摄像头输入;
-
imagenet-console:图片分类样例,使用图片输入;
-
segnet-camera:语义分割样例,使用摄像头输入;
-
segnet-console:语义分割样例,使用图片输入;
除此之外还有其他样例,如深度图估计和图像超分辨率。
每个样例代码中,DEFAULT_CAMERA 值为 -1 表示使用 CSI 相机模组,改为 0 表示使用 USB 摄像头。修改后需要重新编译:
1 | |
2 | |
3 | |
$ |
cd
.. / build
$
make
$
sudo make
install |
编译完成后,到 aarch64/bin 目录可以看到样例的可执行程序。直接运行即可。
实测 image classification 在输入分辨率 1280x720 时速度为 10 FPS,object detection 则为 5 FPS。这个性能还算可以。
Nvidia 官方给出的 Jetson Nano 性能如下图所示:
如果你手头还没有板卡,可以到 Nvidia 官网链接了解更多购买信息:
https://developer.nvidia.com/embedded/buy/jetson-nano-devkit