Nvidia Jetson AGX Orin 初体验(七)Hello AI World
在 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好像也没跑成功。这个问题只能等着以后来解决了。
劳动节,该休息了。
(未完待续)
- 点赞
- 收藏
- 关注作者
评论(0)