环境配置

本项目使用的是飞腾官方提供的镜像xfce_v2.1_4GB_240123.tar.gz,系统是ubuntu20.04,python3.9.5

建议使用Anaconda3配置一个虚拟环境,如果出错可以轻松从头再来,但本次为了懒得再安装一次系统本身自带的配置,于是没有采用该方法。但在最后讲了应该如何在飞腾派中安装anaconda3并配置虚拟环境,有兴趣的话可以试一下。

Python3.9安装

飞腾派镜像默认下载了python3.8,但是本次项目拟采用python3.9,固需要升级

1.通过系统包管理器安装

在 Ubuntu 20.04 上,可以通过以下步骤安装 Python 3.9:

  1. 更新包管理器索引

    1
    sudo apt update
  2. 安装 Python 3.9

    1
    sudo apt install python3.9 python3.9-distutils
  3. 验证安装

    1
    python3.9 --version

2.设置默认 Python 版本(可选)

如果你想让 python3 命令默认指向 Python 3.9,可以创建一个符号链接:

1
2
3
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.9 2
sudo update-alternatives --config python3

在提示中选择 python3.9


3. 安装 pip 以支持 Python 3.9

安装完 Python 3.9 后,需要为其安装 pip

  1. 下载 get-pip.py 脚本:

    1
    wget https://bootstrap.pypa.io/get-pip.py
  2. 使用 Python 3.9 运行脚本:

    1
    python3.9 get-pip.py
  3. 验证 pip 安装是否成功:

    1
    python3.9 -m pip --version

4.测试是否安装成功

随便编写一个脚本在终端中运行 python test.py

如果出现 -bash: python:未找到命令 的错误,说明系统中没有找到默认的 python 命令。这可能是因为:

  1. 系统中没有安装 Python。
  2. 系统中安装了 Python,但没有创建 pythonpython3 的符号链接。
  3. 当前环境中使用的 Python 版本不是默认版本。

以下是解决方法:


方法 1:检查是否安装了 Python

运行以下命令,检查系统中是否有 Python 安装:

1
python3 --version

如果返回类似以下内容,则说明 Python 已安装:

1
Python 3.8.10

如果没有安装,可以按照以下步骤安装 Python。

安装 Python 3(适用于 Ubuntu 20.04)

1
2
sudo apt update
sudo apt install python3 python3-pip

方法 2:创建 pythonpython3 的符号链接

在某些系统中,默认的 python 命令可能被移除,只保留了 python3。你可以通过创建符号链接来解决这个问题。

创建符号链接

1
sudo ln -s /usr/bin/python3 /usr/bin/python

验证:

1
python --version

如果输出显示 Python 的版本号(例如 Python 3.9.5),则说明问题已解决。


方法 3:直接使用 python3 运行脚本

如果你不想创建符号链接,可以直接使用 python3 命令运行脚本:

1
python3 test.py

方法 4:检查虚拟环境

如果你正在使用虚拟环境(例如通过 venvconda 创建的环境),需要确保虚拟环境中已激活并正确配置。

激活虚拟环境:

1
source /path/to/venv/bin/activate

验证:

1
which python

如果输出类似于 /path/to/venv/bin/python,说明虚拟环境中的 Python 正常工作。


方法 5:修复 PATH 环境变量

如果系统中确实安装了 Python,但仍然无法找到 pythonpython3 命令,可能是 PATH 环境变量配置有问题。

检查 PATH:

1
echo $PATH

手动添加 Python 路径:

编辑 ~/.bashrc 文件,添加以下内容:

1
export PATH=$PATH:/usr/bin

保存后使更改生效:

1
source ~/.bashrc

Cmake3.20.0+安装

本次项目采用的是cmake-3.28.3,已经在官网上下载了安装包,要在飞腾派开发板上安装 cmake-3.28.3-linux-aarch64.tar.gz,可以按照以下步骤进行操作。以下是详细的说明:


1. 解压文件

首先,通过 SSH 登录到开发板,并确保你已经将 cmake-3.28.3-linux-aarch64.tar.gz 文件传输到了开发板的某个目录(例如 /home/user//tmp/)。

使用以下命令解压 .tar.gz 文件:

1
tar -xvzf cmake-3.28.3-linux-aarch64.tar.gz

解压后会生成一个目录,通常命名为 cmake-3.28.3-linux-aarch64


2. 移动到合适的位置

为了方便管理,建议将解压后的 CMake 移动到系统的标准路径,例如 /usr/local/

执行以下命令:

1
sudo mv cmake-3.28.3-linux-aarch64 /usr/local/cmake-3.28.3

3. 配置环境变量

为了让系统能够识别新安装的 CMake,需要将其二进制文件路径添加到 PATH 环境变量中。

编辑 ~/.bashrc 文件:

1
nano ~/.bashrc

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

1
export PATH=/usr/local/cmake-3.28.3/bin:$PATH

保存并退出编辑器后,使更改生效:

1
source ~/.bashrc

**问题:**如果显示:nano ~/.bashrc -bash: nano:未找到命令

解决方案:安装nano

  1. 更新包管理器索引

    1
    sudo apt update
  2. 安装 nano

    1
    sudo apt install nano
  3. 安装完成后,再次尝试编辑 文件:.bashrc

    1
    nano ~/.bashrc

4. 验证安装

验证 CMake 是否安装成功以及版本是否正确:

1
cmake --version

如果安装成功,你应该会看到类似以下的输出:

1
2
cmake version 3.28.3
CMake suite maintained and supported by Kitware (kitware.com/cmake).

5. 可选:创建符号链接(如果需要全局使用)

如果你希望所有用户都能直接使用这个版本的 CMake,可以创建一个符号链接到 /usr/bin/

执行以下命令:

1
sudo ln -sf /usr/local/cmake-3.28.3/bin/cmake /usr/bin/cmake

再次验证:

1
2
which cmake
cmake --version

注意事项

  1. 权限问题:在执行 sudo 命令时,确保你有足够的权限。
  2. 依赖项:虽然 CMake 是独立的工具包,但某些功能可能依赖于系统中的其他库。如果遇到问题,请检查是否有缺失的依赖项。
  3. 卸载旧版本:如果系统中已存在旧版本的 CMake,可以通过包管理器卸载(例如 apt remove cmake),然后替换为新版本。

完成以上步骤后,你应该能够在飞腾派开发板上成功安装并使用 CMake 3.28.3。

YOLOv5项目环境配置及运行

==注意:==项目需要的torch版本不要大于2.5否则会出错!!!因此不能直接使用命令pip install -r requirements.txt直接进行安装,否则大概率会安装最新的版本。

1.torch1.8.1+torchversion0.9.1

1.1安装包下载

为了节省时间,用开发板直接下载会很慢,可以使用其它的源,如阿里、清华源等。

本项目已经在官网上下载了torch-1.8.1-cp39-cp39-manylinux2014_aarch64.whl和torchvision-0.9.1-cp39-cp39-manylinux2014_aarch64.whl文件

==注意:==下载的版本需要和你的环境匹配!!!要满足以下三点!!!

  • 架构匹配:文件名中的 aarch64 表示这是为 ARM 64位架构 编译的包,而飞腾派(Phytium-Pi)使用的是 Phytium ARM v8 架构(aarch64),因此兼容。
  • Python 版本匹配:文件名中的 cp39 表示包是为 Python 3.9 编译的,与本次的环境(Python 3.9.8)完全兼容。
  • 系统兼容性manylinux2014 是 Linux 平台的二进制兼容性标签,适用于主流 Linux 发行版(包括飞腾派的操作系统)。

torch-1.8.1-cp39-cp39-manylinux2014_aarch64.whl 为例:

  • torch-1.8.1: PyTorch 库的版本号(1.8.1)。
  • cp39: 表示该包适用于 Python 3.9cp 是 “C Python” 的缩写,后接 Python 主版本号)。
  • manylinux2014: 表示该包兼容符合 manylinux2014 标准的 Linux 系统(支持 CentOS 7+、Ubuntu 16.04+ 等)。
  • aarch64: 表示该包是为 ARM 64位架构 编译的。

同理,torchvision-0.9.1 的命名规则与 PyTorch 一致。

官网:download.pytorch.org/whl/torch_stable.html(CPU版本)


1.2检查当前的 pip 版本

首先,确认你的 pip 是否为最新版本。YOLOv5 和其他深度学习框架可能需要较新的 pip 版本来支持 .whl 文件的安装。

运行以下命令检查 pip 版本:

1
pip --version

如果版本较低(例如低于 20.x),建议升级 pip

1
pip install --upgrade pip

验证升级是否成功:

1
pip --version

1.3 安装 torch 和 torchvision

已经下载了 torch-1.8.1-cp39-cp39-manylinux2014_aarch64.whltorchvision-0.9.1-cp39-cp39-manylinux2014_aarch64.whl 文件。接下来可以通过 pip 安装这些文件。

方法 1:直接使用 pip 安装 .whl 文件

假设 .whl 文件位于 /path/to/wheel/ 目录下,执行以下命令:

安装 PyTorch:

1
pip install /path/to/torch-1.8.1-cp39-cp39-manylinux2014_aarch64.whl

安装 TorchVision:

1
pip install /path/to/torchvision-0.9.1-cp39-cp39-manylinux2014_aarch64.whl

方法 2:将 .whl 文件上传到开发板并安装

如果你是通过 SSH 将 .whl 文件上传到开发板的某个目录(例如 /home/user/),可以直接在该目录下运行:

1
2
3
cd /home/user/
pip install torch-1.8.1-cp39-cp39-manylinux2014_aarch64.whl
pip install torchvision-0.9.1-cp39-cp39-manylinux2014_aarch64.whl

1.4 验证安装是否成功

安装完成后,验证 torchtorchvision 是否正常工作:

运行以下 Python 脚本:

1
2
3
4
5
6
import torch
import torchvision

print("PyTorch version:", torch.__version__)
print("TorchVision version:", torchvision.__version__)
print("CUDA available:", torch.cuda.is_available())

输出应该类似于:

1
2
3
PyTorch version: 1.8.1
TorchVision version: 0.9.1
CUDA available: False

注意:飞腾派开发板通常不支持 CUDA,因此 torch.cuda.is_available() 应该返回 False

2.numpy 1.26.4

当你在安装 时,如果需要下载依赖项(例如 ),但网络速度很慢,可以通过以下方法手动下载并安装这些依赖项。

官网:numpy ·PyPI

在文件列表中找到适合你环境的 文件,例如 :

numpy-1.26.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

==注意:==当在开发板上使用默认安装的时候会下载2.0.0+的版本与torch1.8.1不匹配,因此本项目选择1.26.4

将文件上传到开发板后,使用 手动安装。.whl``pip

假设文件位于目录下,运行以下命令安装:.whl``/home/user/

1
pip install /home/user/numpy-2.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

安装完成后,继续安装其他依赖项

检查 numpy 是否正常工作:

运行以下命令:

1
2
3
4
import numpy as np
print("NumPy version:", np.__version__)
a = np.array([1, 2, 3])
print(a)

如果输出正常,则说明 NumPy 安装没有问题。

如果出现问题:

可以尝试卸载当前的 NumPy 并重新安装稳定版本:

1
2
pip uninstall numpy
pip install numpy

3.opencv-python

如果你希望手动下载 文件以节省时间或避免网络问题,可以从以下地址获取:.whl

下载完成后,可以通过以下命令安装:

1
pip install /path/to/opencv_python-4.5.5.62-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

验证是否安装成功:编写脚本运行

1
2
3
4
5
6
7
8
9
import torch
import torchvision
import numpy as np
import cv2

print("PyTorch version:", torch.__version__)
print("TorchVision version:", torchvision.__version__)
print("NumPy version:", np.__version__)
print("OpenCV version:", cv2.__version__)

输出类似:

1
2
3
4
PyTorch version: 1.8.1
TorchVision version: 0.9.1
NumPy version: 1.26.4
OpenCV version: 4.5.5

4.matplotlib3.7.1

为了安装 matplotlib 并确保版本号大于 3.2.2,你可以通过以下方法进行下载和安装。以下是详细的步骤和链接地址:

通过 pip 安装指定版本的 matplotlib

你可以直接使用 pip 安装一个大于 3.2.2 的稳定版本。例如,安装最新版本(或某个特定版本):

1
pip install matplotlib>=3.2.2

如果你想安装一个具体的版本(例如 3.7.1),可以运行:

1
pip install matplotlib==3.7.1

手动下载 .whl 文件

如果你希望通过手动下载 .whl 文件来安装 matplotlib,可以从 PyPI 官方页面 获取适合你环境的文件。

具体步骤:

  1. 打开 matplotlib PyPI 页面
  2. 在文件列表中找到适合你 Python 版本(例如 cp39 对应 Python 3.9)和系统架构(manylinux_2_17_aarch64.manylinux2014_aarch64 对应 ARM 架构)的 .whl 文件。
    • 示例文件名:matplotlib-3.7.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
  3. 下载该文件到本地计算机。

下载链接示例:

.whl 文件传输到开发板并安装

下载完成后,将 .whl 文件传输到飞腾派开发板,并使用 pip 安装。

在开发板上安装:

1
pip install /home/user/matplotlib-3.7.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

验证安装是否成功

安装完成后,可以通过以下脚本验证 matplotlib 是否正常工作:

1
2
3
4
5
6
7
8
import matplotlib
import matplotlib.pyplot as plt

print("Matplotlib version:", matplotlib.__version__)

# 测试绘图功能
plt.plot([1, 2, 3], [4, 5, 6])
plt.show()

如果输出显示 Matplotlib 的版本号(例如 3.7.1),并且能够正常绘制图形,则说明安装成功。

5.其余的环境安装

进入到项目的文件路径下,打开requirements.txt文件,将已经安装好的四个配置注释掉,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# YOLOv5 requirements
# Usage: pip install -r requirements.txt

# Base ------------------------------------------------------------------------
gitpython>=3.1.30
#matplotlib>=3.2.2/*注释*/
#numpy>=1.18.5/*注释*/
#opencv-python>=4.1.1/*注释*/
Pillow>=7.1.2
psutil # system resources
PyYAML>=5.3.1
requests>=2.23.0
scipy>=1.4.1
thop>=0.1.1 # FLOPs computation
#torch>=1.7.0 # see https://pytorch.org/get-started/locally (recommended)/*注释*/
#torchvision>=0.8.1/*注释*/
tqdm>=4.64.0
# protobuf<=3.20.1 # https://github.com/ultralytics/yolov5/issues/8012

随后运行进行安装其余的代码(时间比较久):

1
pip install -r requirements.txt

遇到的问题

1.pip下载缓慢

如果你没有换成国内源话,下载速度有时候会很慢,甚至直接报错 Read timed out

解决办法: 使用国内源去下载

国内源:

阿里云:https://mirrors.aliyun.com/pypi/simple/

清华:https://pypi.tuna.tsinghua.edu.cn/simple

中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/

华中理工大学:https://pypi.hustunique.com/

山东理工大学:https://pypi.sdutlinux.org/

豆瓣:https://pypi.douban.com/simple/

bfsu:https://mirrors.bfsu.edu.cn/pypi/web/simple/

终端输入格式:

1
2
pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
pip install 单个包名 -i https://mirrors.aliyun.com/pypi/simple/

代码运行

1
python3 detect.py --weights ./weights/best.pt --source ./demo/

说明:

./weights/best.pt :当前目录下weights文件夹下训练好的网络模型

./demo/:需要检测的图像或者视频放在此文件夹下

./runs/detect/:生成的检测结果

QT5项目配置及运行

系统镜像默认安装了QT5,固我们只需要安装程序所需要的相关包即可。

安装依赖

在飞腾派上确保已安装以下依赖:

1
sudo apt-get install build-essential cmake qt5-default qtmultimedia5-dev libqt5multimedia5-plugins

如果视频无法播放,可能需要安装GStreamer编解码器:

1
sudo apt-get install gstreamer1.0-plugins-good gstreamer1.0-libav

Qt5Multimedia

确保系统中已安装 Qt5Multimedia 模块。

步骤:

更新包管理器索引:

1
sudo apt update

安装 Qt5Multimedia 及相关依赖:

1
sudo apt install qt5-default libqt5multimedia5 libqt5multimediawidgets5 qtbase5-dev qtdeclarative5-dev

验证安装是否成功:

检查是否存在 Qt5MultimediaConfig.cmake 文件:

1
find /usr/ -name "Qt5MultimediaConfig.cmake"

==如果找到了该文件,说明模块已正确安装。直接跳到编译运行代码即可!!后面的都不用管==

如果显示没有找到:

方法0:

如果 编译代码的时候,CMake 报错 Could NOT find Qt5Multimedia可以手动指定路径:

1
2
set(Qt5_DIR "/usr/lib/aarch64-linux-gnu/cmake/Qt5")
find_package(Qt5 COMPONENTS Multimedia REQUIRED)

方法1:

重新安装所有必要的 Qt5 开发包

确保系统中已安装所有与 Qt5Multimedia 相关的开发包。

步骤:

  1. 更新包管理器索引:

    1
    sudo apt update
  2. 安装完整的 Qt5 开发包:

    1
    sudo apt install qtbase5-dev libqt5multimedia5 libqt5multimediawidgets5 qtdeclarative5-dev qttools5-dev-tools
  3. 验证是否包含 CMake 配置文件:

    1
    find /usr/ -name "Qt5MultimediaConfig.cmake"

    如果仍然没有输出,说明开发包未正确安装。

  4. 强制重新安装:

    1
    sudo apt --reinstall install qtbase5-dev libqt5multimedia5 libqt5multimediawidgets5 qtdeclarative5-dev

**方法 2:**手动指定 CMAKE_PREFIX_PATH

如果 Qt5Multimedia 已安装但路径不在默认搜索范围内,可以通过手动设置 CMAKE_PREFIX_PATH 来指定路径。

步骤:

  1. 找到 Qt5 的安装路径:

    1
    ls /usr/lib/aarch64-linux-gnu/cmake/Qt5/
  2. 设置 CMAKE_PREFIX_PATH
    在运行 CMake 时,指定 Qt5 的安装路径:

    1
    cmake .. -DCMAKE_PREFIX_PATH=/usr/lib/aarch64-linux-gnu/cmake/Qt5
  3. 如果路径不同,请根据实际情况调整。

方法 3:检查 Qt5 的安装完整性

如果重新安装后仍未解决问题,可能是 Qt5 的安装不完整或损坏。

步骤:

  1. 卸载现有的 Qt5 相关包:

    1
    sudo apt remove --purge qt5-default qtbase5-dev libqt5multimedia5 libqt5multimediawidgets5 qttools5-dev-tools
  2. 清理残留文件:

    1
    2
    sudo apt autoremove
    sudo apt autoclean
  3. 重新安装 Qt5:

    1
    sudo apt install qt5-default qtbase5-dev libqt5multimedia5 libqt5multimediawidgets5 qttools5-dev-tools
  4. 验证安装是否成功:

    • 检查是否存在 Qt5MultimediaConfig.cmake 文件:
      1
      find /usr/ -name "Qt5MultimediaConfig.cmake"
  5. 重新运行CMake:

    1
    cmake ..

**方法 4:**手动下载并放置缺失文件

如果系统中确实缺少 Qt5MultimediaConfig.cmake 文件,可以尝试从官方源或其他可信来源获取。

步骤:

  1. 下载 Qt5MultimediaConfig.cmake 文件:

    • 可以从 Qt 官方网站 下载对应版本的 Qt5 源代码包。
    • 或者从其他 Ubuntu 镜像站点下载 qtbase5-dev.deb 包并提取文件。
  2. 将文件放置到正确位置:

    • 目标路径通常是 /usr/lib/aarch64-linux-gnu/cmake/Qt5Multimedia/
    • 如果该目录不存在,可以手动创建:
      1
      2
      sudo mkdir -p /usr/lib/aarch64-linux-gnu/cmake/Qt5Multimedia/
      sudo cp /path/to/Qt5MultimediaConfig.cmake /usr/lib/aarch64-linux-gnu/cmake/Qt5Multimedia/
  3. 确保权限正确:

    1
    sudo chmod 644 /usr/lib/aarch64-linux-gnu/cmake/Qt5Multimedia/Qt5MultimediaConfig.cmake
  4. 再次运行 CMake:

    1
    cmake ..

**方法 6:**验证 Qt5 版本兼容性

确保你的项目使用的 Qt5 版本与系统中安装的版本兼容。

步骤:

  1. 检查 Qt5 版本:

    1
    qmake --version
  2. 如果版本过旧或过新,可能导致模块不可用。尝试安装匹配的版本。

==总结:==问题千千万,不如叫上师兄去唱歌。

编译并运行该Qt5项目的步骤

创建构建目录

1
2
mkdir build
cd build

生成构建系统

1
cmake .. -DCMAKE_BUILD_TYPE=Release

编译项目

1
make -j$(nproc)

运行程序

编译完成后,可执行文件会生成在项目根目录的bin文件夹中:

1
../bin/ui

目录结构参考

1
2
3
4
5
6
7
8
9
项目根目录/
├── CMakeLists.txt
├── bin/ # 可执行文件输出目录
├── build/ # 编译目录
├── include/
│ └── mainwindow.h
└── src/
├── main.cpp
└── mainwindow.cpp

代码运行说明

  1. 视频加载与播放
    • 用户点击“原视频”按钮选择文件 → player1 加载并播放。
    • 用户点击“低照度处理”或“裂缝检测”按钮 → 调用外部程序处理视频 → 处理完成后手动选择结果视频 (运行完成会跳出一个窗口界面手动进行选择处理后的视频)→ player2 加载并播放。
  2. 双视频窗口控制
    • 两个独立的 QMediaPlayer 实例(player1player2)分别控制原视频和处理后视频。
    • 每个播放器关联独立的 QVideoWidgetQSlider,实现并行播放和进度控制。
  3. 外部程序调用
    • 低照度处理:直接执行编译后的C++程序。
    • 裂缝检测:调用Python脚本运行YOLOv5模型,需确保Python环境和依赖正确配置。

LIME项目环境配置

以下是在针对飞腾派上运行该项目的完整步骤说明:


飞腾派环境配置

1. 安装依赖项

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 更新系统
sudo apt-get update && sudo apt-get upgrade -y

# 安装编译工具和基础依赖
sudo apt-get install build-essential cmake git libgtk-3-dev pkg-config

# 安装OpenCV依赖(需包含视频编解码支持)
sudo apt-get install libopencv-dev libopencv-contrib-dev libavcodec-dev libavformat-dev libswscale-dev

# 安装FFmpeg(视频处理)
sudo apt-get install ffmpeg

# 安装多线程开发库(可选)
sudo apt-get install libomp-dev

2. 验证OpenCV安装

1
2
3
# 检查OpenCV版本及是否包含视频模块
pkg-config --modversion opencv4
# 输出应包含:4.x.x(如4.5.4)

3. 配置NEON支持

  • 飞腾派基于ARM架构,默认支持NEON指令集。在CMake中启用优化:
    1
    2
    # 在CMakeLists.txt中添加以下内容
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3 -mfpu=neon")

编译与运行

1. 调整项目结构

确保目录结构如下:

1
2
3
4
5
6
7
8
项目根目录/
├── CMakeLists.txt
├── include/
│ └── lime.h
├── src/
│ ├── main.cpp
│ └── lime.cpp
└── bin/ # 可执行文件输出目录

2. 构建项目

1
2
3
4
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j$(nproc)

3. 运行程序

1
2
3
4
5
# 确保输入视频文件存在(如/home/phytium/data/video/source.mp4)
#查看lime文件夹中的main.cpp文件查看输入视频的路径
# 输出视频的路径
# 输出图片的路径
../bin/main

关键依赖安装包来源

  1. OpenCV

  2. FFmpeg

  3. CMake


常见问题解决

  1. OpenCV未找到

    • CMakeLists.txt中显式指定OpenCV路径:
      1
      find_package(OpenCV REQUIRED PATHS /usr/local/opencv4)
  2. NEON指令编译错误

    • 确保CMake中启用了ARM优化标志:
      1
      set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mcpu=native -O3")
  3. 视频无法读取/写入

    • 安装GStreamer插件:
      1
      sudo apt-get install gstreamer1.0-plugins-good gstreamer1.0-libav

Anaconda3

Anaconda下载

官网下载

官网首页:https://www.anaconda.com/

image-20250423164635088

image-20250423164651649

image-20250423164706927

Anaconda安装

打开一个终端窗口

安装命令

image-20250423164811886

运行安装脚本:

1
bash /home/user/Desktop/Anaconda3-2024.02-1-Linux-aarch64.sh

==注意:==/home/user/Desktop/Anaconda3-2024.02-1-Linux-aarch64.sh替换成自己的路径

image-20250423164834279

这里需要阅读并同意它才能继续安装。直接按q跳过。发送yes同意许可协议。

image-20250423164910568

这里可以修改自定义安装位置。

安装完成,如图所示。

image-20250423164926206

添加环境变量

在终端窗口输入以下命令来编辑.bashrc文件:

1
nano ~/.bashrc

按回车进入环境变量编辑器

image-20250423165004624

在打开的编辑器中,将以下行添加到文件的末尾:

1
export PATH="/home/user/anaconda3/bin:$PATH"

请确保将/home/user/anaconda3/bin替换为你的Anaconda安装路径。

按下Ctrl+X退出编辑器,然后系统会询问您是否保存修改。按Y表示要保存,然后按Enter确认文件名并保存。保存并关闭编辑器。

为了使更改生效,运行以下命令:

1
source ~/.bashrc

飞腾派上测试是否成功安装了Anaconda3

image-20250424125143393

打开终端并输入以下命令:

1
conda --version

如果成功安装Anaconda3,这个命令将返回Anaconda的版本信息。
如果系统提示找不到命令,那么可能安装完后没有添加环境变量可以重复上个步骤添加环境变量或者没有成功安装Anaconda3也可以尝试重复上面的步骤。

新建Anaconda3虚拟环境

创建新虚拟环境

image-20250424125219472

image-20250424125245294

打开终端,创建新环境 - 使用conda命令创建新的Python环境,指定你想要的Python版本:

1
conda create -n your_env_name python=3.9

==注:==这里your_env_name是你为新环境起的名字,python=3.9是指定的Python版本。(环境名字和python可自行决定)

装完虚拟环境,可以在命令行中输入以下命令查看Anaconda3中的虚拟环境:

1
conda info --envs

image-20250423165430256

如果没有显示有当前激活的幻境标*,飞腾派中使能conda,终端中输入:

1
conda init

image-20250424130019892

==注:==如果没有先使能conda,当你激活环境的时候会出现

image-20250424130054103

运行 conda init 后,需重新加载 .bashrc 文件以生效(或直接关闭当前终端窗口,重新打开一个新的终端。):

1
conda activate base

image-20250424130331564

检查终端提示符前是否出现 (base) 字样,若出现则表示Conda已激活基础环境。

创建了新的虚拟环境之后,使用以下命令激活该环境:

1
conda activate your_env_name

image-20250424130546752

YOLOv5项目环境配置及运行

==注意:==项目需要的torch版本不要大于2.5否则会出错!!!因此不能直接使用命令pip install -r requirements.txt直接进行安装,否则大概率会安装最新的版本。

1.torch1.8.1+torchversion0.9.1

1.1安装包下载

为了节省时间,用开发板直接下载会很慢,可以使用其它的源,如阿里、清华源等。

本项目已经在官网上下载了torch-1.8.1-cp39-cp39-manylinux2014_aarch64.whl和torchvision-0.9.1-cp39-cp39-manylinux2014_aarch64.whl文件

==注意:==下载的版本需要和你的环境匹配!!!要满足以下三点!!!

  • 架构匹配:文件名中的 aarch64 表示这是为 ARM 64位架构 编译的包,而飞腾派(Phytium-Pi)使用的是 Phytium ARM v8 架构(aarch64),因此兼容。
  • Python 版本匹配:文件名中的 cp39 表示包是为 Python 3.9 编译的,与本次的环境(Python 3.9.8)完全兼容。
  • 系统兼容性manylinux2014 是 Linux 平台的二进制兼容性标签,适用于主流 Linux 发行版(包括飞腾派的操作系统)。

torch-1.8.1-cp39-cp39-manylinux2014_aarch64.whl 为例:

  • torch-1.8.1: PyTorch 库的版本号(1.8.1)。
  • cp39: 表示该包适用于 Python 3.9cp 是 “C Python” 的缩写,后接 Python 主版本号)。
  • manylinux2014: 表示该包兼容符合 manylinux2014 标准的 Linux 系统(支持 CentOS 7+、Ubuntu 16.04+ 等)。
  • aarch64: 表示该包是为 ARM 64位架构 编译的。

同理,torchvision-0.9.1 的命名规则与 PyTorch 一致。

官网:download.pytorch.org/whl/torch_stable.html(CPU版本)


1.2检查当前的 pip 版本

首先,确认你的 pip 是否为最新版本。YOLOv5 和其他深度学习框架可能需要较新的 pip 版本来支持 .whl 文件的安装。

运行以下命令检查 pip 版本:

1
pip --version

如果版本较低(例如低于 20.x),建议升级 pip

1
pip install --upgrade pip

验证升级是否成功:

1
pip --version

1.3 安装 torch 和 torchvision

安装前环境配置

1
2
3
4
5
# 安装基础依赖(通过 Conda 或 Apt)
conda install numpy ninja pyyaml typing_extensions

# 安装图像处理依赖(Pillow 是 TorchVision 的必需依赖)
pip install Pillow

已经下载了 torch-1.8.1-cp39-cp39-manylinux2014_aarch64.whltorchvision-0.9.1-cp39-cp39-manylinux2014_aarch64.whl 文件。接下来可以通过 pip 安装这些文件。

方法 1:直接使用 pip 安装 .whl 文件

假设 .whl 文件位于 /path/to/wheel/ 目录下,执行以下命令:

安装 PyTorch:

1
pip install /path/to/torch-1.8.1-cp39-cp39-manylinux2014_aarch64.whl

安装 TorchVision:

1
pip install /path/to/torchvision-0.9.1-cp39-cp39-manylinux2014_aarch64.whl

方法 2:将 .whl 文件上传到开发板并安装

如果你是通过 SSH 将 .whl 文件上传到开发板的某个目录(例如 /home/user/),可以直接在该目录下运行:

1
2
3
cd /home/user/
pip install torch-1.8.1-cp39-cp39-manylinux2014_aarch64.whl
pip install torchvision-0.9.1-cp39-cp39-manylinux2014_aarch64.whl

1.4 验证安装是否成功

安装完成后,验证 torchtorchvision 是否正常工作:

运行以下 Python 脚本:

1
2
3
4
5
6
import torch
import torchvision

print("PyTorch version:", torch.__version__)
print("TorchVision version:", torchvision.__version__)
print("CUDA available:", torch.cuda.is_available())

输出应该类似于:

1
2
3
PyTorch version: 1.8.1
TorchVision version: 0.9.1
CUDA available: False

注意:飞腾派开发板通常不支持 CUDA,因此 torch.cuda.is_available() 应该返回 False

2.其余环境配置


步骤说明

根据你当前的Conda环境(fly)中已安装的包,需调整原 requirements.txt 文件以 避免版本冲突重复安装。以下是具体操作指南:


1. 分析已安装包与需求文件的差异

当前环境中已安装的关键包版本:

包名 当前版本 requirements.txt要求 是否需调整?
numpy 2.0.2 numpy(未指定) 需降级 → 1.19.5(YOLOv5需要低版本兼容)
Pillow 11.2.1 Pillow==9.0.1 需降级 → 9.0.1(TorchVision 0.9.1依赖)
PyYAML 6.0.2 PyYAML==5.4.1 需降级 → 5.4.1(YOLOv5代码可能不兼容高版本)
torch 1.8.1 torch==1.5.1 保留当前版本(已适配ARM)
torchvision 0.9.1 torchvision==0.6.1 保留当前版本(与torch 1.8.1匹配)

2. 调整后的 requirements.txt 文件

将已满足的包注释掉,并明确需调整版本的包:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# 已安装的包注释掉
# numpy==1.19.5 # 需手动降级
# Pillow==9.0.1 # 需手动降级
# PyYAML==5.4.1 # 需手动降级
# torch==1.8.1 # 已安装
# torchvision==0.9.1 # 已安装

# 需安装的其他依赖
absl-py==0.12.0
altgraph==0.17
cachetools==4.2.1
certifi==2020.12.5
chardet==4.0.0
cycler==0.10.0
future==0.18.2
google-auth==1.28.1
google-auth-oauthlib==0.4.4
GPUtil==1.4.0
grpcio==1.37.0
idna==2.10
importlib-metadata==3.7.3
kiwisolver==1.3.1
Markdown==3.3.4
matplotlib==3.4.3
oauthlib==3.1.0
olefile==0.46
opencv-python-headless==4.5.1.48 # ARM兼容版本
pefile==2019.4.18
protobuf==3.15.8
pyasn1==0.4.8
pyasn1-modules==0.2.8
pyinstaller==4.2
pyinstaller-hooks-contrib==2021.1
pyparsing==2.4.7
python-dateutil==2.8.1
requests==2.25.1
requests-oauthlib==1.3.0
rsa==4.7.2
scipy==1.5.4 # ARM兼容版本
six==1.15.0
tensorboard==2.4.1
tensorboard-plugin-wit==1.8.0
tornado==6.1
tqdm==4.59.0
typing-extensions==3.7.4.3
urllib3==1.26.5
Werkzeug==1.0.1
zipp==3.4.1

3. 手动降级关键包

由于 numpyPillowPyYAML 的版本冲突需手动处理:

1
2
3
4
5
6
7
8
9
10
11
# 在 fly 环境中执行
conda activate fly

# 降级 numpy 到 1.19.5(YOLOv5兼容版本)
pip install numpy==1.19.5

# 降级 Pillow 到 9.0.1(TorchVision依赖)
pip install Pillow==9.0.1

# 降级 PyYAML 到 5.4.1(YOLOv5代码兼容)
pip install PyYAML==5.4.1

4. 安装剩余依赖

使用调整后的 requirements.txt

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

5. 验证环境

1
2
3
4
5
6
7
8
9
# 检查关键包版本
python -c "import numpy; print(numpy.__version__)" # 应输出 1.19.5
python -c "import torch; print(torch.__version__)" # 应输出 1.8.1
python -c "import cv2; print(cv2.__version__)" # 应输出 4.5.1

# 运行 YOLOv5 测试
git clone https://github.com/ultralytics/yolov5
cd yolov5
python detect.py --weights yolov5s.pt --source data/images/bus.jpg

关键问题说明

  1. numpy 版本冲突
    • YOLOv5 的某些代码(如张量操作)可能不兼容 numpy>=2.0,必须降级到 1.19.5
  2. Pillow 版本限制
    • torchvision==0.9.1Pillow 有严格版本要求(通常 <=9.0.1)。
  3. PyYAML 兼容性
    • YOLOv5 的配置文件解析依赖 PyYAML<=5.4.1,高版本可能引发语法错误。

最终环境清理

如果安装过程中出现依赖混乱,可重建环境:

1
2
3
4
5
conda deactivate
conda remove -n fly --all
conda create -n fly python=3.9.21
conda activate fly
# 重新按上述步骤安装