在通过大半个月的不断尝试和网上攻略的查找,终于在TX1上完成了jetson-inference的运行。期间碰到了一些问题,这里一并给出相应的解决方式,但是每个人碰到的问题原因有很多,这里的方法仅供参考,如有误之处希望大佬多多指正,共同提高。
第一步,对TX1刷机
刷机前需要连接完成的部件
两根网线(分别将电脑和TX1连接在同一个有网络的路由器);
Micro-USB连接线(连接电脑和TX1);
笔记本(win10,带ubuntu18.04的虚拟机);
HDMI高清线(连接显示屏和TX1);
有HDMI接口的显示屏;
鼠标、键盘;
路由器;
USB拓展坞(TX1只有一个USB接口,需要拓展,连接键鼠等设备);
SSD固态硬盘。
安装Nvidia Sdkmanager与刷机操作
打开Ubuntu后,
首先需要安装Nvidia Sdkmanager(官网:https://developer.nvidia.com/drive/sdk-manager),并且在Nvidia官网注册账号以供后续使用。
安装指令:
sudo apt install ./sdkmanager_[version]-[build#]_amd64.deb
以上部件全部连接完毕之后,
输入以下指令检查电脑Ubuntu是否与TX1连接成功。
lsusb
打开Sdk manager,输入注册的账号密码,登陆操作都完成后进入以下界面。
这里需要将TX1置为Recovery模式:按下电源键开启TX1,过一会按住REC键不动,再按一下RST键停一两秒再松开,再等一两秒松开REC键,此时Sdkmanager就会检测到相应的型号。
这里我下载的JetPack版本是4.6.3,你也可以选择其他版本;需要注意的是Target Hardware部分需要显示出当前连接的设备则表示连接成功;DeepStream一般不勾选,太大。(需要给主机ubuntu留足空间,最好30G以上)
空间不够可以参考这个链接:https://blog.csdn.net/fanjufei123456/article/details/123517885
选择确定后,点击CONTINUE来到STEP2
第二步就是下载环节,建议全部下载后再安装,即将下面两个选项都勾选。下载完成之后,先返回STEP1后再次进入STEP2,这时只需勾选左边的选项,即可开始安装。
安装期间出现类似下面的提示,不用管,点击yes继续(不点击不清楚还会不会安装),安装过程中最好自己一直守着电脑看着,有时会卡在某个节点不动一段时间,不用急,耐心等。(个别情况时间等待过长需要重新刷)
这里将进入一段时间的等待过程,直到跳到下面的刷机界面才算是成功一半。
选择手动安装(Manual Setup),用户名我看很多博主写的ubuntu就跟个风,密码也是ubuntu,完成之后点击flash。这边可能还需要重复进行一次上述的Recovery操作。
再次经过长时间的等待,进入以下界面,之前我直接install失败了,后来查了一下说是这里需要将连接TX1的网线拔了再插上去,然后就可以install了。
再再经过更加漫长的等待,如果你最终看到下图,恭喜你终于安装成功了。
检测JetPack安装是否成功的办法
在以上完成之后,TX1连接的显示屏这时已经可以显示桌面了,这时打开终端输入以下指令:
jetson_release -v
第二步,让TX1从硬盘启动
上述安装完成之后,TX1内存就剩几百兆了,这里提供加载固态硬盘的方法。
(参考文章:https://blog.csdn.net/qq_38898517/article/details/109116191)
首先将SSD硬盘插到TX1上,点击ubuntu主界面左上角如下图位置,输入disk,点击Disks图标
选择你插入的SSD硬盘,点击如下图的设置按钮,选择格式化操作。
卷名自己定义,类型选择Ext4,然后开始格式化
完成格式化后点击启动器的硬盘图标,硬盘自动挂载,此时按住Ctrl+L,即可显示硬盘路径,将其路径复制复制。
在终端输入
sudo cp -ax / '你的硬盘路径'
//修改启动路径
cd /boot/extlinux
sudo cp extlinux.conf extlinux.conf.original
sudo gedit /boot/extlinux/extlinux.conf
初始文件如下图所示
修改后:
这里的"/dev/sda1"在下图device位置查看。
ubuntu18.04只需修改上述三个部分,与参考文章有所不同。
文件内容改完之后,保存重启TX1即可。
输入以下指令即可查看是否更改成功。
df -hl
第三步,Jetson inference运行
(参考文章:https://github.com/dusty-nv/jetson-inference)
大体部分按照上面的顺序一步步的来,这里做一些补充。
pytorch的安装
whl文件下载地址:https://forums.developer.nvidia.com/t/pytorch-for-jetson/72048
参考网址:https://blog.csdn.net/qq_41660112/article/details/123715549
根据你所安装的Jetpack版本以及python版本选择对应的pytorch版本进行下载,我下载的是1.10.0版本。
python3.6输入下列指令即可安装:
sudo apt-get install python3-pip libopenblas-base libopenmpi-dev
pip3 install Cython
pip3 install numpy torch-1.10.0-cp36-cp36m-linux_aarch64.whl
python2.7输入下列指令即可安装:
sudo apt-get install libopenblas-base libopenmpi-dev
pip install future torch-1.4.0-cp27-cp27mu-linux_aarch64.whl
检测是否安装成功
python3 //进入python3
import torch //载入pytorch
print(torch.__version__) //查看pytorch版本
torchvision的安装
版本对应关系:https://catalog.ngc.nvidia.com/orgs/nvidia/containers/l4t-pytorch
安装指令:
$ sudo apt-get install libjpeg-dev zlib1g-dev libpython3-dev libavcodec-dev libavformat-dev libswscale-dev
$ git clone --branch version https://github.com/pytorch/vision torchvision # 更改第一个vision为你pytorch对应的版本,如v0.11.0
$ cd torchvision
$ export BUILD_VERSION=0.x.0 # where 0.x.0 is the torchvision version
$ sudo python setup.py install # use python3 if installing for Python 3.6
$ cd ../ # attempting to load torchvision from build dir will result in import error
$ pip install 'pillow<7' # always needed for Python 2.7, not needed torchvision v0.5.0+ with Python 3.6
Docker容器
由于我是在Docker容器中运行的Jetson inference,下面将讲解如何通过Docker实现jetson-inference的运行。
找到对应版本的docker
拉取镜像:
docker pull dustynv/jetson-inference:r32.6.1
运行容器:
cd jetson-inference
docker/run.sh
//退出:exit
将自己编写的程序文件路径挂载到docker
docker/run.sh --volume /my/host/path:/my/container/path
下面运行一个图像识别程序看看,在下载的jetson-inference文件夹中jetson-inference/build/aarch64/bin位置输入以下指令
Python
./imagenet.py images/strawberry_0.jpg images/test/output_1.jpg
最终结果:
sudo:command not found解决方法:
可参考:https://blog.csdn.net/hello_1995/article/details/109222650
目前写这么多,后续再补充。。