Jetson Nano 的初始化
1. 安装镜像系统
Jetson Nano 的各个组件所对应的位置
2. 安装jetson-stats工具
使用jetson-stats工具来实时监控系统的各项性能和各种指标,官网链接为
https://github.com/rbonghi/jetson_stats
安装命令如下:
sudo -H pip3 install -U jetson-stats
如果没有pip3就使用如下命令:
sudo apt-get install python3-pip
安装完成后,reboot你的系统后,使用jtop命令就可以运行了
sudo jtop
3. 查看cuda版本和相关信息
先进入控制栏查看cuda目录
cd /usr/local/cuda/bin
./nvcc -V
将nvcc添加到环境变量
sudo vim ~/.bashrc #进入目录的末尾添加如下几行
# Add this to your .bashrc file
export CUDA_HOME=/usr/local/cuda
# Adds the CUDA compiler to the PATH
export PATH=$CUDA_HOME/bin:$PATH
# Adds the libraries
export LD_LIBRARY_PATH=$CUDA_HOME/lib64:$LD_LIBRARY_PATH
其中有一段会让你输入下载的目标目录,按照喜好选择
然后编译
source ~/.bashrc
nvcc -V # 来查看cuda的版本信息
4. 测试官方demo
Jetson Nano Yolov5 部署手册
1. Yolov5的版本选择
Yolov5的官网:
pytorch版本
ultralytics/yolov5: YOLOv5 🚀 in PyTorch > ONNX > CoreML > TFLite (github.com)
选择YOLOv5 v6.1
2. Conda 管理虚拟环境
下载方式
wget -c https://repo.anaconda.com/archive/Anaconda3-2021.05-Linux-aarch64.sh
bash Anaconda3-2021.05-Linux-aarch64.sh
/home/ysc/anaconda3/bin
使用conda 来管理虚拟环境,
下载方法:
conda创建环境和删除环境的操作
conda create -n name python=xx -y # 创建环境,并指定python版本
conda remove -n name --all # 彻底删除
conda activate name # 激活环境
创建虚拟环境
conda create -n yolo python=3.6
conda activate yolo
which python
which pip
- which python
结果如下
/home/lishun/下载/data/app/anconda/envs/yolo/bin/python
- which pip
结果如下
/home/lishun/下载/data/app/anconda/envs/yolo/bin/pip
显示虚拟环境列表
conda env list
3. torch和torchvision的选择
torch 版本: pytorch-1.9.0-py36
torchviosion 版本: torchvision-0.10.0
3.1. 下载pytorch-1.9.0-py36
本地或者网络获取
wget https://nvidia.box.com/shared/static/h1z9sw4bb1ybi0rm3tu8qdj8hs05ljbm.whl -O torch-1.9.0-cp36-cp36m-linux_aarch64.whl # 从网上下载
sudo apt-get install libopenblas-base libopenmpi-dev #安装
pip3 install Cython -i https://pypi.tuna.tsinghua.edu.cn/simple
pip3 install numpy==1.19.3 torch-1.9.0-cp36-cp36m-linux_aarch64.whl -i https://pypi.tuna.tsinghua.edu.cn/simple
sudo apt-get install libjpeg-dev zlib1g-dev libpython3-dev libavcodec-dev libavformat-dev libswscale-dev
3.2. 安装torchvision-0.10.0
我们同样可以从git上获取到相关的版本
wget https://github.com/pytorch/vision/archive/refs/tags/v0.10.0.tar.gz #下载torchvision-0.10.0的源码
gzip -d v0.10.0.tar.gz
tar -xvf v0.10.0.tar
cd v0.10.0/
export BUILD_VERSION=0.10.0
sudo "填写witch python的地址" setup.py install
# 编译的时间比较长,请耐心等待
#这里我们使用的是conda创建的环境,那么想要把torcvision编译到我们创建的环境,又想要使用sudo权限,就要这样运行命令!因为编译安装的时候,存在需要sudo权限的操作,别问我为什么知道,因为我编译了好几次。
3.3. 测试pytorch和torchvision
# 验证pytorch
import torch
print(torch.__version__)
print('CUDA available: ' + str(torch.cuda.is_available()))
print('cuDNN version: ' + str(torch.backends.cudnn.version()))
a = torch.cuda.FloatTensor(2).zero_()
print('Tensor a = ' + str(a))
b = torch.randn(2).cuda()
print('Tensor b = ' + str(b))
c = a + b
print('Tensor c = ' + str(c))
# 验证torchvision
import torchvision
print(torchvision.__version__)
验证pytorch结果
验证torchvision 结果
4. 下载Yolov5并查看所需库
- 下面的所有操作一行代码就能实现:
pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ --verbose
也能看到安装的进度
4.1. 下载yolo相关的文件
建议提前准备好文件夹来存放yolo文件
wget https://github.com/ultralytics/yolov5/archive/refs/tags/v6.1.tar.gz
gzip -d v6.1.tar.gz
tar -xvf v6.1.tar
cd yolov5-6.1/
vim requirements.txt
在需要安装的依赖包文件中,我们可以看到Base、Logging、Export、Extras等组件列表
最核心的就是Base
内部包含:
- matplotlib>=3.2.2
- numpy>=1.18.5
- opencv-python>=4.1.2
- Pillow>=7.1.2
- PyYAML>=5.3.1
- requests>=2.23.0
- scipy>=1.4.1
- torch>=1.7.0
- torchvision>=0.8.1
- tqdm>=4.41.0
然后就是其他组件
- tensorboard>=2.4.1
- pandas>=1.1.4
- seaborn>=0.11.0
- thop # FLOPs computation
来查看当前环境有哪些包
pip list
4.2.下载yolo所需的相关库并编译matplotlib
在安装matplotlib之前要先安装一些组件,不然会报错,matplotlib安装起来比较麻烦,编译需要一些时间,请耐心等待
sudo apt-get install libfreetype6-dev
sudo apt-get install pkg-config
pip3 install matplotlib PyYAML requests seaborn tqdm tensorboard thop -i https://mirrors.aliyun.com/pypi/simple/ # 使用国内的镜像源,下载更快
成功
4.3.opencv
opencv下降和编译巨花费时间,请耐心等待(大约2h)
pip install opencv-python==4.5.5.64 -i https://pypi.tuna.tsinghua.edu.cn/simple --verbose
# --verbose 追踪安装过程,会显示编译进度,至少有一个盼头
运行效果如下,(多少还是有些盼头了)
成功编译:
5. 运行yolov5
如果没设置代理,建议在官网下载权重文件,导入到当前目录下
# 执行预测代码
python detect.py --weights yolov5n.pt --source data/images/bus.jpg
结果如下:
YOLOv5训练和使用手册
作为yolov5训练学习手册,记录本人使用yolo过程中遇到的一些问题
1. 出现了torch和torchvision的错误
错误出现的原因是torch-cuda和torchvision-cuda没配对
一定要cuda版本对应相应的cuda版本!!
拿cpu跑100轮费时间6hours
2. 如何训练
参考链接:
# 训练集的目录结构
- VOCdevkit
- images
- train
- val
- labels
- train
- val
Pytorch与ONNX
1. 什么是ONNX?
1.1下载
pip install onnxruntime -i https://mirrors.aliyun.com/pypi/simple/
2.怎么查看ONNX文件的输入输出
import onnxruntime
def main(onnx_model_path):
# 创建ONNX运行时的InferenceSession
ort_session = onnxruntime.InferenceSession(onnx_model_path)
# 打印模型的输入和输出节点
print("Model input nodes:")
for node in ort_session.get_inputs():
print(" ", node.name, node.shape)
print("\nModel output nodes:")
for node in ort_session.get_outputs():
print(" ", node.name, node.shape)
if __name__ == "__main__":
path = './yolov8n.onnx'
main(path)
3.ONNX基础
遇到的问题
1. 安装torchvision的时候
编译过程,出现了卡住的情况
报错如下:
gcc -pthread -B /home/lishun/下载/data/app/anconda/envs/yolo/compiler_compat -Wl,–sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -DWITH_CUDA -I/home/lishun/下载/vision-0.10.0/torchvision/csrc -I/home/lishun/下载/data/app/anconda/envs/yolo/lib/python3.6/site-packages/torch/include -I/home/lishun/下载/data/app/anconda/envs/yolo/lib/python3.6/site-packages/torch/include/torch/csrc/api/include -I/home/lishun/下载/data/app/anconda/envs/yolo/lib/python3.6/site-packages/torch/include/TH -I/home/lishun/下载/data/app/anconda/envs/yolo/lib/python3.6/site-packages/torch/include/THC -I/usr/local/cuda/include -I/home/lishun/下载/data/app/anconda/envs/yolo/include/python3.6m -c /home/lishun/下载/vision-0.10.0/torchvision/csrc/ops/roi_pool.cpp -o build/temp.linux-aarch64-3.6/home/lishun/下载/vision-0.10.0/torchvision/csrc/ops/roi_pool.o -DTORCH_API_INCLUDE_EXTENSION_H -DPYBIND11_COMPILER_TYPE=”_gcc” -DPYBIND11_STDLIB=”_libstdcpp” -DPYBIND11_BUILD_ABI=”_cxxabi1011” -DTORCH_EXTENSION_NAME=_C -D_GLIBCXX_USE_CXX11_ABI=1 -std=c++14
cc1plus: warning: command line option ‘-Wstrict-prototypes’ is valid for C/ObjC but not for C++
报错的原因
GPT的回答:
你看到的警告表明选项-Wstrict-prototypes适用于C/ObjC,而不适用于C++。当在C++编译中使用一个本来是为C代码设计的命令行选项时,就会出现这种警告。
在你的情况下,似乎在你的编译命令中包含了这个选项:
-Wstrict-prototypes
为了解决这个警告,你可以移除或替换掉这个选项,因为它对C++代码不适用。如果你需要对C++代码进行严格的原型检查,你可以在C文件中使用-Wstrict-prototypes,在C++文件中使用-Wstrict-prototypes -Wstrict-prototypes。
在你提供的编译命令中,不清楚为什么会包含这个选项,因为它通常用于检查C代码中的函数原型,而你的源文件(roi_pool.cpp)是一个C++文件。
因此,你可以尝试移除这个特定的选项,看看是否解决了警告:
解决方法:
gcc -pthread -B /home/lishun/下载/data/app/anconda/envs/yolo/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -DWITH_CUDA -I/home/lishun/下载/vision-0.10.0/torchvision/csrc -I/home/lishun/下载/data/app/anconda/envs/yolo/lib/python3.6/site-packages/torch/include -I/home/lishun/下载/data/app/anconda/envs/yolo/lib/python3.6/site-packages/torch/include/torch/csrc/api/include -I/home/lishun/下载/data/app/anconda/envs/yolo/lib/python3.6/site-packages/torch/include/TH -I/home/lishun/下载/data/app/anconda/envs/yolo/lib/python3.6/site-packages/torch/include/THC -I/usr/local/cuda/include -I/home/lishun/下载/data/app/anconda/envs/yolo/include/python3.6m -c /home/lishun/下载/vision-0.10.0/torchvision/csrc/ops/roi_pool.cpp -o build/temp.linux-aarch64-3.6/home/lishun/下载/vision-0.10.0/torchvision/csrc/ops/roi_pool.o -DTORCH_API_INCLUDE_EXTENSION_H -DPYBIND11_COMPILER_TYPE="_gcc" -DPYBIND11_STDLIB="_libstdcpp" -DPYBIND11_BUILD_ABI="_cxxabi1011" -DTORCH_EXTENSION_NAME=_C -D_GLIBCXX_USE_CXX11_ABI=1 -std=c++14
放置不管也可以的,不影响使用的
2.在安装torchvision目录下进入python并且调用torchvision
python
import torchvision
报错如下:(警告)
/home/lishun/下载/vision-0.10.0/torchvision/init.py:26: UserWarning: You are importing torchvision within its own root folder (/home/lishun/下载/vision-0.10.0).This is not expected to work and may give errors. Please exit the torchvision project source and relaunch your python interpreter.
warnings.warn(message.format(os.getcwd()))
GPT回答:
这个警告表明你在torchvision项目的根文件夹中(/home/lishun/下载/vision-0.10.0)导入了torchvision模块。这可能导致问题,因为在同一个项目中直接导入可能引起命名空间的混淆。
为了解决这个问题,你可以按照警告中的建议,在退出torchvision项目源码目录后,重新启动你的 Python 解释器。换句话说,确保你在导入 torchvision 之前不在 torchvision 项目的根文件夹中。
解决方法:
不在torchvision目录下执行该命令
3. 安装opencv后编译卡死?
Linux编译opencv需要很长的时间,我们可能认为他卡死了,用下列方法就能追踪他的安装过程了
pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple --verbose
4. opencv-python编译到最后失败
报错如下:
cmake-install/share/opencv4/lbpcascades/lbpcascade_silverware.xml
Copying files from CMake output
creating directory _skbuild/linux-aarch64-3.6/cmake-install/cv2
copying _skbuild/linux-aarch64-3.6/cmake-install/python/cv2/python-3/cv2.abi3.so -> _skbuild/linux-aarch64-3.6/cmake-install/cv2/cv2.abi3.so
copying _skbuild/linux-aarch64-3.6/cmake-install/python/cv2/init.py -> _skbuild/linux-aarch64-3.6/cmake-install/cv2/init.py
copying _skbuild/linux-aarch64-3.6/cmake-install/python/cv2/load_config_py2.py -> _skbuild/linux-aarch64-3.6/cmake-install/cv2/load_config_py2.py
copying _skbuild/linux-aarch64-3.6/cmake-install/python/cv2/load_config_py3.py -> _skbuild/linux-aarch64-3.6/cmake-install/cv2/load_config_py3.py
copying _skbuild/linux-aarch64-3.6/cmake-install/python/cv2/config.py -> _skbuild/linux-aarch64-3.6/cmake-install/cv2/config.py
copying _skbuild/linux-aarch64-3.6/cmake-install/python/cv2/config-3.py -> _skbuild/linux-aarch64-3.6/cmake-install/cv2/config-3.py
Traceback (most recent call last):
File “/home/lishun/下载/data/app/anconda/envs/yolo/lib/python3.6/site-packages/pip/_vendor/pep517/in_process/_in_process.py”, line 363, in
main()
File “/home/lishun/下载/data/app/anconda/envs/yolo/lib/python3.6/site-packages/pip/_vendor/pep517/in_process/_in_process.py”, line 345, in main
json_out[‘return_val’] = hook(**hook_input[‘kwargs’])
File “/home/lishun/下载/data/app/anconda/envs/yolo/lib/python3.6/site-packages/pip/_vendor/pep517/in_process/_in_process.py”, line 262, in build_wheel
metadata_directory)
File “/tmp/pip-build-env-wj3dpx0y/overlay/lib/python3.6/site-packages/setuptools/build_meta.py”, line 231, in build_wheel
wheel_directory, config_settings)
File “/tmp/pip-build-env-wj3dpx0y/overlay/lib/python3.6/site-packages/setuptools/build_meta.py”, line 215, in _build_with_temp_dir
self.run_setup()
File “/tmp/pip-build-env-wj3dpx0y/overlay/lib/python3.6/site-packages/setuptools/build_meta.py”, line 268, in run_setup
self).run_setup(setup_script=setup_script)
File “/tmp/pip-build-env-wj3dpx0y/overlay/lib/python3.6/site-packages/setuptools/build_meta.py”, line 158, in run_setup
exec(compile(code, file, ‘exec’), locals())
File “setup.py”, line 535, in
main()
File “setup.py”, line 309, in main
cmake_source_dir=cmake_source_dir,
File “/tmp/pip-build-env-wj3dpx0y/overlay/lib/python3.6/site-packages/skbuild/setuptools_wrap.py”, line 683, in setup
cmake_install_dir,
File “setup.py”, line 448, in _classify_installed_files_override
raise Exception(“Not found: ‘%s’” % relpath_re)
Exception: Not found: ‘python/cv2/py.typed’
Building wheel for opencv-python (pyproject.toml) … error
ERROR: Failed building wheel for opencv-python
Failed to build opencv-python
ERROR: Could not build wheels for opencv-python, which is required to install pyproject.toml-based projects
gpt对于回答:
这个错误信息表明在尝试编译安装 opencv-python 时出现了问题。具体而言,它报告了一个找不到文件 'python/cv2/py.typed' 的异常。
查阅了博客之后发现可能得原因是
opencv版本太高了,无法和python3.6配合使用
解决方法:
pip install opencv-python==4.5.5.64 -i https://pypi.tuna.tsinghua.edu.cn/simple --verbose
运行结果如下
5.执行yolo的预测语句报错
执行这句话
python detect.py --weights yolov5n.pt --source data/images/bus.jpg
报错如下
CONTRIBUTING.md detect.py export.py LICENSE README.md setup.cfg tutorial.ipynb val.py
data Dockerfile hubconf.py models requirements.txt train.py utils
(yolo) lishun@lishun-desktop:~/yolo/yolov5-6.1$ python detect.py –weights yolov5n.pt –source data/images/bus.jpg
Matplotlib is building the font cache; this may take a moment.
Downloading https://ultralytics.com/assets/Arial.ttf to /home/lishun/.config/Ultralytics/Arial.ttf…
Traceback (most recent call last):
File “detect.py”, line 42, in
from models.common import DetectMultiBackend
File “/home/lishun/yolo/yolov5-6.1/models/common.py”, line 27, in
from utils.plots import Annotator, colors, save_one_box
File “/home/lishun/yolo/yolov5-6.1/utils/plots.py”, line 65, in
class Annotator:
File “/home/lishun/yolo/yolov5-6.1/utils/plots.py”, line 67, in Annotator
check_pil_font() # download TTF if necessary
File “/home/lishun/yolo/yolov5-6.1/utils/plots.py”, line 60, in check_pil_font
return ImageFont.truetype(str(font), size)
File “/home/lishun/下载/data/app/anconda/envs/yolo/lib/python3.6/site-packages/Pillow-10.1.0-py3.6-linux-aarch64.egg/PIL/ImageFont.py”, line 797, in truetype
File “/home/lishun/下载/data/app/anconda/envs/yolo/lib/python3.6/site-packages/Pillow-10.1.0-py3.6-linux-aarch64.egg/PIL/ImageFont.py”, line 794, in freetype
File “/home/lishun/下载/data/app/anconda/envs/yolo/lib/python3.6/site-packages/Pillow-10.1.0-py3.6-linux-aarch64.egg/PIL/ImageFont.py”, line 198, in init
File “/home/lishun/下载/data/app/anconda/envs/yolo/lib/python3.6/site-packages/Pillow-10.1.0-py3.6-linux-aarch64.egg/PIL/_util.py”, line 19, in getattr
File “/home/lishun/yolo/yolov5-6.1/utils/plots.py”, line 56, in check_pil_font
return ImageFont.truetype(str(font) if font.exists() else font.name, size)
File “/home/lishun/下载/data/app/anconda/envs/yolo/lib/python3.6/site-packages/Pillow-10.1.0-py3.6-linux-aarch64.egg/PIL/ImageFont.py”, line 797, in truetype
File “/home/lishun/下载/data/app/anconda/envs/yolo/lib/python3.6/site-packages/Pillow-10.1.0-py3.6-linux-aarch64.egg/PIL/ImageFont.py”, line 794, in freetype
File “/home/lishun/下载/data/app/anconda/envs/yolo/lib/python3.6/site-packages/Pillow-10.1.0-py3.6-linux-aarch64.egg/PIL/ImageFont.py”, line 198, in init
File “/home/lishun/下载/data/app/anconda/envs/yolo/lib/python3.6/site-packages/Pillow-10.1.0-py3.6-linux-aarch64.egg/PIL/_util.py”, line 19, in getattr
File “/home/lishun/下载/data/app/anconda/envs/yolo/lib/python3.6/site-packages/Pillow-10.1.0-py3.6-linux-aarch64.egg/PIL/ImageFont.py”, line 48, in
ImportError: cannot import name ‘_imagingft’
gpt 的回答如下
看起来你在运行 YOLOv5 的检测脚本 (
detect.py
) 时遇到了与 Pillow 库相关的问题。错误具体涉及到 Pillow 库中_imagingft
模块的导入。
解决方法:
卸载重装
1.先删除pillow
pip3 uninstall pillow
2.重新安装pillow并且加上些参数
pip3 install pillow --no-cache-dir
6.opencv摄像头成功调用但是终端不显示画面
问题描述::
opencv成功调用了摄像头,但是终端直接卡死,也不显示画面
可能原因分析:
- 没加sudo,没访问摄像头的权限
- 没加全局utf-8编码
- opencv存在问题,需要重新编译
# 解决方法
sudo python
可以成功调用
但是又出现新的问题:
sudo python 指向的的python是
/usr/bin/python
但是conda中yolo的python环境是
/home/lishun/下载/data/app/anconda/envs/yolo/bin/python
解决方法,重新搭建吧,没解决