1. 准备Jetson Nano开发板

更新和升级系统软件包

sudo apt-get update
sudo apt-get upgrade

2.配置CUDA环境(nano默认已安装cuda和cudann)

确认CUDA版本:

nvcc --version

如果出现任何错误,请按照以下步骤操作: 检查 CUDA 是否已安装:

ls /usr/local | grep cuda

如果已安装,您应该会看到类似 cuda- 的目录。

现在请按照以下步骤操作:

vim ~/.bashrc

按下 i 进入编辑模式

在文件末尾添加以下内容:

export PATH=/usr/local/cuda-10.2/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-10.2/lib64:$LD_LIBRARY_PATH

按下 Esc 键退出编辑模式
输入 :wq 保存并退出文件

使更改生效:

source ~/.bashrc

再次确认CUDA版本:

nvcc --version

3. 安装Python3.8

sudo apt-get install python3.8 python3.8-dev python3.8-distutils python3.8-venv

Jetson Nano 默认已安装 Python 3.6,因此现在你已经有两个Python版本。所以需要做一些更改来使用Python3.8作为默认版本:

打开.bashrc文件:

vim ~/.bashrc

按下 i 进入编辑模式,在文件末尾添加以下内容:

alias python="python3.8"
alias python3="python3.8"
alias pip="python3.8 -m pip"
alias pip3="python3.8 -m pip"

按下 Esc 键退出编辑模式
输入 :wq 并按回车键Enter以保存并退出文件

使更改生效:

source ~/.bashrc

确认Python版本:

python --version

安装pip

确保软件包列表是最新的:

sudo apt-get update

为Python3安装pip,使用一下命令:

sudo apt install python3-pip

验证安装: 安装完成后, 通过检查pip的版本来验证pip是否安装成功:

pip3 --version

4. 安装PyTorch和TorchVision

卸载所有已安装的Torch和Torchvision

pip3 uninstall torch
pip3 uninstall torchvision

安装一些需要的库

sudo apt-get install libjpeg-dev zlib1g-dev

python3.8 -m pip install cython

python3.8 -m pip install wheel

pip3 install numpy --upgrade --no-build-isolation

pip3 install cython

pip3 install --upgrade pip

pip3 install numpy --no-build-isolation

pip3 install --upgrade setuptools wheel

sudo apt install libopenmpi-dev

sudo apt install libomp5

sudo apt install mlocate

sudo updatedb

sudo apt install libopenblas-base

locate libopenblas.so

sudo apt update

点击下载文件,文件是python3.8对应的torch 1.11.0和torchvision 0.12.0的whl文件。将下载好的文件移动到jetson nano中。

假设文件放在/home/jetson/Downloads/目录下,使用以下命令安装:

cd /home/jetson/Downloads/

安装软件包

python3 -m pip install torch-*.whl torchvision-*.whl

验证安装

python3 - <<'EOF'
import torch
print("torch:", torch.__version__)
print("CUDA available:", torch.cuda.is_available())
print("Device:", torch.cuda.get_device_name(0) if torch.cuda.is_available() else "CPU")
EOF

如果返回结果显示torch版本和CUDA可用性,则表示安装成功。

以下是我的输出结果:

torch: 1.11.0a0+gitbc2c6ed 
CUDA available: True
Device: NVIDIA Tegra X1

5. 启动交换内存

sudo fallocate -l 4G /mnt/4GB.swap
sudo chmod 600 /mnt/4GB.swap
sudo mkswap /mnt/4GB.swap
sudo swapon /mnt/4GB.swap

以下命令是让交换内存永久生效:

sudo bash -c 'echo "/mnt/4GB.swap swap swap defaults 0 0" >> /etc/fstab'

验证

cat /etc/fstab

sudo swapon --show

重启

sudo reboot

再次验证

sudo swapon --show

6.安装Yolov5所需的软件包

克隆YOLOv5代码库

git clone https://github.com/ultralytics/yolov5.git
cd yolov5

安装所需的库

pip3 install -r requirements.txt

如果网络慢,可以用清华源进行加速安装

pip3 install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

7. 测试Yolov5

cpu版本识别

python3 detect.py --source data/images/bus.jpg

GPU版本识别

python3 detect.py --source data/images/bus.jpg --weights yolov5s.pt --device 0

8. 运行识别程序报错

识别时报错 ‘Upsample’ object has no attribute ‘recompute_scanle_factor

vim  绝对路径/upsampling.py

i进入编辑模式并找到forword函数

修改为以下内容:

def forward(self, input: Tensor) -> Tensor:
# return F.interpolate(input, self.size, self.scale_factor, self.mode, self.align_corners,
# recompute_scale_factor=self.recompute_scale_factor)
return F.interpolate(input, self.size, self.scale_factor, self.mode, self.align_corners)

按下 Esc 键退出编辑模式。
输入 :wq 并按回车键Enter以保存并退出文件。