准备好去深入深度学习了吗?只需要两天哦。Nvidia 官方提供了所有我们需要的工具,其中包括简单上手的教程、软件源码以及已经训练好的网络模型(ImageNet和DetectNet的例子)。在这篇教程中,你将能够在Jetson TX2上加载和运行预先训练好的神经网络模型,还能够知道如何去用自己的数据集去重新训练神经网络。在我这篇文章中,我将把官方的教程搬运过来,不过翻译能力有限,还是详细内容请看原文教程。原文链接如下:
Two days to a demo
这篇将介绍如何在Jetson TX2实现图像分类功能。
关于深度学习的网络类型种类丰富,包括识别网络、检测网络、定位网络以及分割网络。在本教程中的第一个深度学习内容是使用“ImageNet”实现图像分类。
Jetson TX2 需要刷个机,刷完之后就有很多必要的工具了,可以看看我的这篇文章:
Jetson TX2 开箱配置+刷机+跑demo(常见坑总结)
现在需要下载Nvidia给的源码,这些源码已经在以下几个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)
补一个我测试成功的:
> Jetson TX2 - JetPack 3.2.1 / L4T R28.2.1 aarch64 (Ubuntu 16.04 LTS)
为了获取源码,请确保安装了git和cmake:
$ sudo apt-get install git cmake
使用git命令克隆jetson-inference:
$ git clone https://github.com/dusty-nv/jetson-inference
使用 CMake命令配置:
$ cd jetson-inference
$ mkdir build
$ cd build
$ cmake ../
注意:当cmake命令运行时,将会运行一个CMakePrebuild.sh的脚本,请确保有足够的权限用来安装,同时这个脚本需要从服务器下载网络模型,请在联网环境下进行。(我大概花了40分钟下载)
请确保你在jetson-inference/build目录下
$ 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
或则是:
|-build
\armhf (32-bit)
\bin where the sample binaries are built to
\include where the headers reside
\lib where the libraries are build to
这个“ImageNet”对象,我们能够输入图片,它将给出这张图片中的物体名称以及可能性。“ImageNet”是一个已经接受过1000中物体训练过的网络,其中包括“AlexNet”和“GoogleNet”。为了能够使用“ImageNet”,Nvidia提供了一个imagenet-console
命令和一个imagenet-camera
命令。
在Jetson TX2上使用console命令
可以使用imagenet-console命令在一些示例图像上测试imageNet识别。 它将会先加载图像,然后使用TensorRT和imageNet类来执行推理,然后覆盖分类并保存输出图像。
使用前请先进入 aarch64/bin 目录
$ cd jetson-inference/build/aarch64/bin
imagenet-console接受2个命令行参数:输入图像的路径和输出图像的路径
$ ./imagenet-console Siberian-Husky-On-White-01.jpg Siberian-Husky-On-White-01_Output
输入图像:
输出图像:
这里的哈士奇是我自己找的,可以使用Nvidia自己带的图片进行测试:
$ ./imagenet-console orange_0.jpg output_0.jpg
在Jetson TX2上使用camera命令
接下来就是直接使用板载摄像头进行实时的视频分类了。和上一个类似的使用前请先进入 aarch64/bin 目录。
$ ./imagenet-camera googlenet # to run using googlenet
$ ./imagenet-camera alexnet # to run using alexnet
以上两个任意选一个就可以了。
(未完待更~~~)
希望对大家有所帮助!:-)