Nvidia Jetson AGX Orin 初体验(七)Hello AI World

举报
张辉 发表于 2022/05/02 17:43:01 2022/05/02
【摘要】 本文介绍了如何搭建Jetson AGX Orin的HelloWord环境。

https://developer.nvidia.com/embedded/learn/get-started-jetson-agx-orin-devkit 链接中:

提供了一个Nvidia AI示例的链接 HelloAI World:https://github.com/dusty-nv/jetson-inference

这里面提供了 图像处理图像识别Image Recognition 、目标检测Object Detection 、语义分割Semantic Segmentation 、姿态估计Pose Estimation、 深度估计Monocular Depth等几十个应用的案例:

我们看看能不能把 jetson-inference 玩转起来吧。

根据 https://github.com/dusty-nv/jetson-inference/blob/master/docs/aux-docker.md

先看看能不能用docker运行。

git clone --recursive https://github.com/dusty-nv/jetson-inference

执行这个命令恐怕不行,一来,github本来就不容易连,这里面还需要循环连接项目中的子模块,得到的只怕是这么一个结果:

那么我们只好借助于gitee过渡了:

这个时候,最好不要选公开的其他人的gittee仓库,因为对项目工程我们还需要再加工。。。

打开克隆好的gitee上的jetson-inference工程:https://gitee.com/zhanghui_china/jetson-inference

如果直接git clone当然可以:

但是,别忘了,需要加上--recursive才行,结果加上参数还是出错了。

因为 --recursive参数会看 .gitmodules里面的子模块地址,然后循环的完成代码clone:

而这里面的地址都是github的,依然难以连接。

那么,与前面一样的,我们再把对应这些仓库也都迁到自己的gitee上来:

并将.gitmodules文件改为自己的gitee地址:

[submodule "utils"]
	path = utils
	url = https://gitee.com/zhanghui_china/jetson-utils
	branch = master
[submodule "tools/camera-capture"]
	path = tools/camera-capture
	url = https://gitee.com/zhanghui_china/camera-capture
	branch = master
[submodule "python/training/classification"]
	path = python/training/classification
	url = https://gitee.com/zhanghui_china/pytorch-classification
	branch = master
[submodule "python/training/detection"]
	path = python/training/detection
	url = https://gitee.com/zhanghui_china/pytorch-detection
	branch = master
[submodule "python/training/segmentation"]
	path = python/training/segmentation
	url = https://gitee.com/zhanghui_china/pytorch-segmentation
	branch = master
[submodule "plugins/pose"]
	path = plugins/pose
	url = https://gitee.com/zhanghui_china/trt_pose

提交代码后,我们再来git clone.

这里需要注意,子模块的子模块的.gitmodules如果也涉及到github,也需要做相应的修改。

为了防止存储不够,特意转移到 /home1的 1T大硬盘上做:

cd /home1/zhanghui

git clone --recursive https://gitee.com/zhanghui_china/jetson-inference

好了,代码下载终于完成了,确实挺费劲的。


下面开始照着说明来试下docker怎么玩:

cd jetson-inference

docker/run.sh

不一会儿,系统会切换到Model Downloader的界面:

这个时候如果选择下载:

不一会儿开始下载:

不过会出现以下错误:

仔细看下执行的脚本 download-models.sh

它又到了一个中国人找不到的地方下载东西。

所以这个时候虽然错了,你只有看着它继续。

接着脚本会继续下载 pytorch-ssd base model:

查看脚本,它依然是无法下载的:

我们手工下载下来:

系统等了半天,下载不下来,就只好开始下载镜像:

继续下载docker镜像:

经过不懈的下载:

终于可以下载完毕:

但是张小白甚至,没有这些模型,是无法完成AI的推理任务的。

所以,你只有想办法打开浏览器,把这些文件一一下载到手:

直到最后下载了4.5G大小的Model文件:

这边是张小白整理过的:

然后如果要用的时候,将其传到Orin上就行了。


唉,办法总比困难多,是吧?

不过,这种docker的方式张小白还是没搞清楚该怎么玩。。。

唉,那就先试下源码编译吧:

根据 https://github.com/dusty-nv/jetson-inference/blob/master/docs/building-repo-2.md

依次来执行试试,只是git clone已经做过了。

sudo apt-get update

sudo apt-get install git cmake libpython3-dev python3-numpy

cd /home1/zhanghui/jetson-inference

mkdir build

cd build

cmake ../

咦,又切换到了Model Downloader页面了:

这次依然啥也不选:

进入是否要安装Pytorch的页面:

这个就安装吧:

可以看到安装程序在下载torch和orchvision.


终于等到cmake结束:

然后make 12( nproc是12个)

正在张小白美滋滋地等待编译结束时,突然出错了:

度娘了一下:

是因为gcc版本不够。当然了,张小白前面编译MindSpore的时候,将gcc降级到了7.3.0版本。

那就只好将gcc版本改回来:

需要将/usr/bin/gcc放在 /usr/local/bin/gcc前面:

清理,重新编译:

make clean

make -j12

成功了。

sudo make install

sudo ldconfig

所有操作都做完了。

下面来解决模型的问题,仔细看前面的链接说明:

在github上也有models下载:

https://github.com/dusty-nv/jetson-inference/releases

不过这个镜像在github上,有跟没有一样。有种方法,就是将其放到公网其他什么地方下载。但是大家别忘了,张小白前面就下载过了。

将其传到 /home1/zhanghui/jetson-models目录下:

从download_models.sh可以看出,这些文件需要拷贝或者解压到 /home/zhanghui1/jetson-inference/data/network目录下:

对于AlexNet和GoogleNet的6个文件,使用download_file方法,看起来好像就是直接拷贝过去就行了。

而对于其他的gz文件,使用down_archive文件,其实是下载文件,解压文件到 OUTPUT_DIR="../data/networks" 这个目录,然后删掉原gz文件。

那么我们就自己做一个extract.sh,解压这些gz文件:

tar -zxvf Deep-Homography-COCO.tar.gz -C /home1/zhanghui/jetson-inference/data/networks
tar -zxvf DetectNet-COCO-Airplane.tar.gz -C /home1/zhanghui/jetson-inference/data/networks
tar -zxvf DetectNet-COCO-Bottle.tar.gz -C /home1/zhanghui/jetson-inference/data/networks
tar -zxvf DetectNet-COCO-Chair.tar.gz -C /home1/zhanghui/jetson-inference/data/networks
tar -zxvf DetectNet-COCO-Dog.tar.gz -C /home1/zhanghui/jetson-inference/data/networks
tar -zxvf facenet-120.tar.gz -C /home1/zhanghui/jetson-inference/data/networks
tar -zxvf FCN-Alexnet-Aerial-FPV-720p.tar.gz -C /home1/zhanghui/jetson-inference/data/networks
tar -zxvf FCN-Alexnet-Cityscapes-HD.tar.gz -C /home1/zhanghui/jetson-inference/data/networks
tar -zxvf FCN-Alexnet-Cityscapes-SD.tar.gz -C /home1/zhanghui/jetson-inference/data/networks
tar -zxvf FCN-Alexnet-Pascal-VOC.tar.gz -C /home1/zhanghui/jetson-inference/data/networks
tar -zxvf FCN-Alexnet-SYNTHIA-CVPR16.tar.gz -C /home1/zhanghui/jetson-inference/data/networks
tar -zxvf FCN-Alexnet-SYNTHIA-Summer-HD.tar.gz -C /home1/zhanghui/jetson-inference/data/networks
tar -zxvf FCN-Alexnet-SYNTHIA-Summer-SD.tar.gz -C /home1/zhanghui/jetson-inference/data/networks
tar -zxvf FCN-ResNet18-Cityscapes-1024x512.tar.gz -C /home1/zhanghui/jetson-inference/data/networks
tar -zxvf FCN-ResNet18-Cityscapes-2048x1024.tar.gz -C /home1/zhanghui/jetson-inference/data/networks
tar -zxvf FCN-ResNet18-Cityscapes-512x256.tar.gz -C /home1/zhanghui/jetson-inference/data/networks
tar -zxvf FCN-ResNet18-DeepScene-576x320.tar.gz -C /home1/zhanghui/jetson-inference/data/networks
tar -zxvf FCN-ResNet18-DeepScene-864x480.tar.gz -C /home1/zhanghui/jetson-inference/data/networks
tar -zxvf FCN-ResNet18-MHP-512x320.tar.gz -C /home1/zhanghui/jetson-inference/data/networks
tar -zxvf FCN-ResNet18-MHP-640x360.tar.gz -C /home1/zhanghui/jetson-inference/data/networks
tar -zxvf FCN-ResNet18-Pascal-VOC-320x320.tar.gz -C /home1/zhanghui/jetson-inference/data/networks
tar -zxvf FCN-ResNet18-Pascal-VOC-512x320.tar.gz -C /home1/zhanghui/jetson-inference/data/networks
tar -zxvf FCN-ResNet18-SUN-RGBD-512x400.tar.gz -C /home1/zhanghui/jetson-inference/data/networks
tar -zxvf FCN-ResNet18-SUN-RGBD-640x512.tar.gz -C /home1/zhanghui/jetson-inference/data/networks
tar -zxvf GoogleNet-ILSVRC12-subset.tar.gz -C /home1/zhanghui/jetson-inference/data/networks
tar -zxvf Inception-v4.tar.gz -C /home1/zhanghui/jetson-inference/data/networks
tar -zxvf MonoDepth-FCN-Mobilenet.tar.gz -C /home1/zhanghui/jetson-inference/data/networks
tar -zxvf MonoDepth-FCN-ResNet18.tar.gz -C /home1/zhanghui/jetson-inference/data/networks
tar -zxvf MonoDepth-FCN-ResNet50.tar.gz -C /home1/zhanghui/jetson-inference/data/networks
tar -zxvf multiped-500.tar.gz -C /home1/zhanghui/jetson-inference/data/networks
tar -zxvf ped-100.tar.gz -C /home1/zhanghui/jetson-inference/data/networks
tar -zxvf Pose-DenseNet121-Body.tar.gz -C /home1/zhanghui/jetson-inference/data/networks
tar -zxvf Pose-ResNet18-Body.tar.gz -C /home1/zhanghui/jetson-inference/data/networks
tar -zxvf Pose-ResNet18-Hand.tar.gz -C /home1/zhanghui/jetson-inference/data/networks
tar -zxvf ResNet-101.tar.gz -C /home1/zhanghui/jetson-inference/data/networks
tar -zxvf ResNet-152.tar.gz -C /home1/zhanghui/jetson-inference/data/networks
tar -zxvf ResNet-18.tar.gz -C /home1/zhanghui/jetson-inference/data/networks
tar -zxvf ResNet-50.tar.gz -C /home1/zhanghui/jetson-inference/data/networks
tar -zxvf SSD-Inception-v2.tar.gz -C /home1/zhanghui/jetson-inference/data/networks
tar -zxvf SSD-Mobilenet-v1.tar.gz -C /home1/zhanghui/jetson-inference/data/networks
tar -zxvf SSD-Mobilenet-v2.tar.gz -C /home1/zhanghui/jetson-inference/data/networks
tar -zxvf Super-Resolution-BSD500.tar.gz -C /home1/zhanghui/jetson-inference/data/networks
tar -zxvf VGG-16.tar.gz -C /home1/zhanghui/jetson-inference/data/networks
tar -zxvf VGG-19.tar.gz -C /home1/zhanghui/jetson-inference/data/networks

那6个文件可以直接拷贝过去:

然后打开 https://github.com/dusty-nv/jetson-inference/blob/master/docs/imagenet-console-2.md

执行以下命令:

先清空/home/zhanghui/jetson-inference/data/images/test/

rm -f /home/zhanghui/jetson-inference/data/images/test/*

cd /home1/zhanghui/jetson-inference/build/aarch64/bin

解析下orange:

./imagenet /home/zhanghui/jetson-inference/data/images/orange_0.jpg /home/zhanghui/jetson-inference/data/images/test/output_0.jpg

耐心等待代码执行完毕(时间貌似有点长。。)

看日志,好像报了一些error,但是查看文件好像生成了。

cd /home/zhanghui/jetson-inference/data/images/test/

cd /home1/zhanghui/jetson-inference/build/aarch64/bin

再解析下stawberry:

./imagenet /home/zhanghui/jetson-inference/data/images/strawberry_0.jpg /home/zhanghui/jetson-inference/data/images/test/output_1.jpg

...

cd /home/zhanghui/jetson-inference/data/images/test/

看下结果:

将这两个文件下载到本地:

打开看看:

看来Orin对于桔子还不是很确定,但是对于草莓是非常肯定的。

也许是因为桔子还有亲戚叫做橙子、脐橙、丑八怪。。。。

好了,我们这次仅仅是源码编译了jetson-inference,然后运行了一个简单的imagenet代码。还有50多个网络要Hello,张小白好像哈不过来了。而且前面docker好像也没跑成功。这个问题只能等着以后来解决了。

劳动节,该休息了。

(未完待续)

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。