本文章作为笔记所用
环境:
jetson nano 4GB,jetpack4.6,L4T 32.6.1,TensorRT 8.0.1,cuDNN 8.2.1,CUDA 10.2,OpenCV 4.1.1
$ sudo apt-get update
$ sudo apt-get upgrade ---> 选择Automatically restart Docker daemon? -> Yes
$ sudo apt-get install git cmake libpython3-dev python3-numpy
$ git clone --recursive https://github.com/dusty-nv/jetson-inference
当执行到git clone这一句时会报错:
fatal: unable to access 'https://github.com/dusty-nv/jetson-inference': gnutls_handshake() failed: The TLS connection was non-properly terminated.
解决方法:将https 改成git,参考文章
$ git clone --recursive git://github.com/dusty-nv/jetson-inference
但是发现里面有部分文件下载不全,主要原因是因为所下载的项目仓库的一些子模块是通过链接的方式链接到主项目目录上的(即要下载的工程带有子模块)。而这些子模块的仓库是单独建立在另外的目录下,且地址都以https开头,故还是会报相同的错误,所以clone不全
解决方法有二:https://blog.csdn.net/Sunchanghaosch/article/details/103947156
方法一:
手动找那些子模块是三方模块,然后从主项目仓库点进去,手动下载到主项目相应目录下。
方法二:
cd到git clone之后的项目主目录下,执行下述命令即可。(个人感觉其实就是再重新把子模块再git clone一次,还是会报同样的错误)
$ git submodule update --init --recursive
# 可能还要先执行
$ git init
如果还是没用,个人的解决方法:启发文章
可以将该项目fork到自己账号的仓库中,然后在自己仓库中修改.gitmodules文件里的信息,可以将子模块库的url里的https替换成git,然后再直接git自己仓库的项目
# 这是我的,但不保证是最新版本
$ git clone --recursive git://github.com/anbai1223/jetson-inference.git
因为网络问题,下载模型会很慢,还有可能下载不了,所以先注释掉下载模型的语句,后面我们可以按需下载模型,再将模型放到jetson-inference/data/networks目录下,可以参考这位博主的文章,里面有各个模型的下载方式:https://blog.csdn.net/baidu_26678247/article/details/109025873
$ cd jetson-inference
$ vim CMakePreBuild.sh
# 注释掉运行下载模型的那句代码:“./download-models.sh $BUILD_INTERACTIVE”
在jetson-inference目录下创建build文件夹,在build里编译:
$ mkdir build
$ cd build
$ cmake ../
模型下载脚本(download-models.sh)和pytorch安装脚本(install-pytorch.sh)都在tools文件夹下,在build目录下执行cmake …/时,会将这两个文件复制至build目录下并执行。
在下载torch时失败:
所以这里需要我们自行下载pytorch,但在下载之前需要确定下载版本,(注意:先读脚本(install-pytorch.sh),确认你的jetpack版本和L4T版本,看脚本原来会帮你下载哪个版本的pytorch,这里是jetpack4.6,L4T R32.6.1的,所以脚本会下载pytorch1.6.0的)
$ dpkg-query --showformat='${Version}' --show nvidia-l4t-core # 查L4T版本
自行下载torch-1.6.0-cp36-cp36m-linux_aarch64.whl
参考:https://blog.csdn.net/baidu_26678247/article/details/109025873
网上一个博主已经下好在gitee,可以git clone下来
git clone https://gitee.com/XPSWorld/pytorch1.6.0.git
然后解压zip文件,得到whl文件
然后运行
sudo pip3 install torch-1.6.0-cp36-cp36m-linux_aarch64.whl
在jetson-inference/tools目录编辑install-pytorch.sh,将下载pytorch的几句语句注释掉,并且将下载pytorch的函数中的git clone的https替换成git。(在build目录下执行cmake …/时,会将模型下载脚本(download-models.sh)和pytorch安装脚本(install-pytorch.sh)这两个文件复制至build目录下并执行。)
注:这是对应我的jetpack和L4T版本,该脚本会执行这个函数
$ cd ~/jetson-inference/build/
$ cmake ../
$ make -j$(nproc) # 使用-j(nproc)可以最大限度使用cpu核,加速编译
$ sudo make install # 要将编译结果写入系统文件所以要用到sudo
$ sudo ldconfig # 立即让编译的结果生效
编译完成!
$ cd ~/jetson-inference/build/aarch64/bin/
# 运行测试程序,会在当前目录生成一张图片output_0.jpg
$./imagenet-console images/orange_0.jpg output_0.jpg
至此,可以跑通hello ai world案例
参考文章:
https://github.com/dusty-nv/jetson-inference
https://github.com/dusty-nv/jetson-inference/blob/master/docs/building-repo-2.md
https://blog.csdn.net/baidu_26678247/article/details/109025873