部署Yolov5环境到Jetson Nano
1. 准备Jetson Nano开发板
更新和升级系统软件包
sudo apt-get update |
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 |
按下 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" |
按下 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 |
安装一些需要的库
sudo apt-get install libjpeg-dev zlib1g-dev |
点击下载文件,文件是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' |
如果返回结果显示torch版本和CUDA可用性,则表示安装成功。
以下是我的输出结果:
torch: 1.11.0a0+gitbc2c6ed |
5. 启动交换内存
sudo fallocate -l 4G /mnt/4GB.swap |
以下命令是让交换内存永久生效:
sudo bash -c 'echo "/mnt/4GB.swap swap swap defaults 0 0" >> /etc/fstab' |
验证
cat /etc/fstab |
重启
sudo reboot |
再次验证
sudo swapon --show |
6.安装Yolov5所需的软件包
克隆YOLOv5代码库
git clone https://github.com/ultralytics/yolov5.git |
安装所需的库
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: |
按下 Esc 键退出编辑模式。
输入 :wq 并按回车键Enter以保存并退出文件。
- 感谢你赐予我前进的力量
