[嵌入式AI从0开始到入土]6_下载yolo源码及样例运行验证

[嵌入式AI从0开始到入土]嵌入式AI系列教程

注:等我摸完鱼再把链接补上
可以关注我的B站号工具人呵呵的个人空间,后期会考虑出视频教程,务必催更,以防我变身鸽王。

第一章 昇腾Altas 200 DK上手
第二章 下载昇腾案例并运行
第三章 官方模型适配工具使用
第四章 炼丹炉的搭建(基于Ubuntu23.04 Desktop)
第五章 Ubuntu远程桌面配置
第六章 下载yolo源码及样例运行验证
第七章 转化为昇腾支持的om离线模型
第八章 jupyter lab的使用
第九章 yolov5在昇腾上推理
第十章 yolov5在昇腾上应用
未完待续…


文章目录

  • [嵌入式AI从0开始到入土]嵌入式AI系列教程
  • 前言
  • 一、yolo源码下载
    • 1、访问仓库
      • 1、访问github仓库
      • 2、clone仓库
      • 3、git下载配置
  • 二、运行环境的创建
    • 1、创建虚拟环境
    • 2、安装依赖
      • 1、yolov5环境
      • 2、ascend环境
    • 3、IDE下载安装
      • 1、MindStudio
      • 2、PyCharm
  • 三、CANN安装
    • 1、下载
    • 2、安装
    • 3、环境配置
    • 4、 昇腾PyTorch框架适配插件(可选)
  • 四、yolov5样例
    • 1、导入工程
    • 2、项目配置
      • 1、添加Python SDK
      • 2、创建运行/调试配置
    • 3、训练
    • 4、导出onnx
      • 1、添加一个导出的配置
      • 2、判断是否成功
  • 五、问题区
    • 1、github进不去
    • 2、gitcode拉取仓库失败
    • 3、MindStudio快速启动
      • 1、添加环境变量
      • 2、创建Dock栏图标
      • 3、创建桌面快捷方式
    • 4、python3.9安装
  • 总结


前言

注:本文基于Ubuntu23.04编写,老版本入口可能存在差异
这应该算保姆级教程了吧,毕竟连怎么进github都讲了。当然,条件允许请自行准备好梯子,有些资源可能下不动。
注意:我有两个环境,一个是yolov5,用于yolov5训练等,一个是ascend,由于昇腾配套软件的运行。下文没有特殊说明的都是在ascend环境中运行,昇腾的pytorch只能使用cpu,我没尝试过在一个环境里同时安装cpu和gpu的torch,所以还是分两个环境吧。有910的富哥就不需要了,直接安装cpu的就好了。
yolov8链接放这里:https://github.com/ultralytics/ultralytics
yolov5我已经在昇腾上跑通了,v8应该也差不多,所以我下面统一用v5做教程

一、yolo源码下载

1、访问仓库

1、访问github仓库

yolov5的github仓库(这里直接点击后使用csdn的加速,访问会更快)。

2、clone仓库

对于只clone的懒人来说请使用这个,直接下载压缩包。主要是可以避免一些网络波动导致的下载失败。
[嵌入式AI从0开始到入土]6_下载yolo源码及样例运行验证_第1张图片

3、git下载配置

如果使用自己的训练集,不使用预训练模型的话应该可以跳过这一步。

sudo apt-get install git					#安装git
sudo apt install git-lfs					#安装git大文件管理工具
#添加配置文件,只需配置一次
git config --global user.email "邮箱"
git config --global user.name "用户名"
git config --list --show-origin				#查看配置
git clone https://github.com/ultralytics/yolov5.git		#下载源码到当前目录

如果github下载不动,可以使用gitee或者gitcode的镜像。

二、运行环境的创建

1、创建虚拟环境

如果你全程按照我的教程来,这里origin环境中应该是python3.10。

conda create --name yolov5 --clone origin	#从origin环境克隆

当然你想创建一个全新的环境也可以,删除后面那个参数就可以。但是请保证python>=3.8.0,pytorch>=1.8
origin环境在第4节中我们已经安装了cuda工具链,这样可以省去重新安装的过程。

2、安装依赖

1、yolov5环境

这里请先手动安装pytorch,因为昇腾只适配了特定版本的pytorch,截至发文,分别是1.11.0;2.0.1;2.1.0。为了防止有bug,我们两个环境全部用2.1.0版本。
但是,需要一点点的小心思。
这是官方链接pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
但是,大概率会下到2.1.1,而且下不动,因此

#用迅雷等工具下载这个包
https://download.pytorch.org/whl/cu118/torch-2.1.0%2Bcu118-cp39-cp39-linux_x86_64.whl
pip install ./torch-2.1.0+cu118-cp39-cp39-linux_x86_64.whl	#pip离线安装
#我使用阿里云的pip源是可以直接使用这个下载的,其他源不清楚
pip install torch-2.1.0+cu118-cp39-cp39-linux_x86_64.whl

#之后还是按照官方的文档来
pip3 install torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

pytorch安装后,就可以正常安装yolov5的依赖了。

pip install -r requirements.txt

如遇下载失败,多试几次,换个源试试?

2、ascend环境

如果你需要使用pytorch,请务必按照如下流程按照

pip3 install torch==2.1.0+cpu -f https://download.pytorch.org/whl/torch_stable.html
#下不动的迅雷下这个
https://download.pytorch.org/whl/cpu/torch-2.1.0%2Bcpu-cp39-cp39-linux_x86_64.whl
# 本地安装
pip3 install torch-2.1.0+cpu-cp39-cp39-linux_x86_64.whl
#安装对应框架版本的torchvision,PyTorch 1.11.0需安装0.12.0版本,PyTorch 2.0.1版本需安装0.15.2版本,PyTorch 2.1.0版本需安装0.16.0版本。
pip3 install torchvision==0.16.0 

3、IDE下载安装

这里小孩子才做选择,我肯定是全要啦。
MindStudio下有昇腾专用的图形化界面工具,懒癌晚期患者敲不了一点指令。当然,你想用命令行也可以。

1、MindStudio

虽然免费,还是昇腾官方指定的IDE,但是感觉使用起来确实有点说不出来的不舒服。
我们下载社区版,往下找到合适的版本。
[嵌入式AI从0开始到入土]6_下载yolo源码及样例运行验证_第2张图片
下载后我们得到MindStudio_6.0.RC3_linux_x86_64.tar.gz,直接右键提取。这里我解压到了~/software目录下。
使用时cd到mindstudio/bin目录下,然后输入MindStudio.sh就可以启动。
当然,懒人肯定不能止步在此,毕竟每次cd挺麻烦的。具体方式参考问题区。
[嵌入式AI从0开始到入土]6_下载yolo源码及样例运行验证_第3张图片
第一次使用需要同意协议。

2、PyCharm

不知道是我激活有问题还是怎么,ubuntu下每次掉激活都是毫无征兆的。当然你们用win的然后远程也可以。
这里给出官方下载地址,安装方法和mindstudio一样。
激活方法这个真不能写,自行百度吧。当然,你要是是学生,那就直接用学生认证白嫖就可以了。

三、CANN安装

如果你想一直连接板子去转换模型的话,那这不做也可以。
首先查看python版本,版本不符合要求会无法安装。
[嵌入式AI从0开始到入土]6_下载yolo源码及样例运行验证_第4张图片

python --version

如果不是下方表格中的,请更换python版本或重新创建环境。

python 当前支持版本
3.7 3.7.0~3.7.11
3.8 3.8.0~3.8.11
3.9 3.9.0~3.9.7
3.10 3.10.0~3.10.12

1、下载

访问官网下载地址,下载这个文件。
[嵌入式AI从0开始到入土]6_下载yolo源码及样例运行验证_第5张图片

2、安装

chmod +x Ascend-cann-toolkit_7.0.0.alpha001_linux-x86_64.run
./Ascend-cann-toolkit_7.0.0.alpha001_linux-x86_64.run --install --quiet

这里我在安装的时候,犯了一个错,一直在sudo去运行,然后一直在报错。
[嵌入式AI从0开始到入土]6_下载yolo源码及样例运行验证_第6张图片
后来我一想,root用户的python是3.11,虽然当前环境里是3.9.0。所以这里一定要注意,你用哪个用户创建的依赖环境,就用哪个用户安装。

3、环境配置

Ascend/ascend-toolkit/set_env.sh文件中的内容写入~/.bashrc
这里我在后面模型转换的时候报错了,是少了几个包,所以一起安装一下吧,版本号不重要。

pip install decorator scipy attrs		#如果你安装了attr,请先卸载,否则还是会报错

4、 昇腾PyTorch框架适配插件(可选)

网站在这,下载2.1.0的版本。我也打包了一份,在本文最上方配套资源里。
[嵌入式AI从0开始到入土]6_下载yolo源码及样例运行验证_第7张图片
按照cpu架构和python版本,执行以下命令安装

pip install torch_npu-2.1.0rc1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
#执行如下命令,若返回True则说明安装成功。
python3 -c "import torch;import torch_npu;print(torch_npu.npu.is_available())"

四、yolov5样例

1、导入工程

这里因为我在pycharm中打开过,所以会有图标。是打开这个文件夹,不是.py文件

2、项目配置

1、添加Python SDK

文件->项目结构->SDK然后点左上方的加号
[嵌入式AI从0开始到入土]6_下载yolo源码及样例运行验证_第8张图片
Conda环境->现有环境->解释器选择我们之前创建的环境的目录下的python,我的路径如图所示
[嵌入式AI从0开始到入土]6_下载yolo源码及样例运行验证_第9张图片
添加完成的样子。
[嵌入式AI从0开始到入土]6_下载yolo源码及样例运行验证_第10张图片

2、创建运行/调试配置

[嵌入式AI从0开始到入土]6_下载yolo源码及样例运行验证_第11张图片
选择我们环境中的解释器,不要选错了。脚本选择源码目录下的train.py
[嵌入式AI从0开始到入土]6_下载yolo源码及样例运行验证_第12张图片

3、训练

参数描述在train.py的parse_opt函数中。下表为当前版本所有的参数、默认值和含义。重点关注黄色标记的参数,具体输入格式请参考代码中参数后的help说明。我也没有全部测试过。

参数 默认值 含义
weights yolov5s.pt 预训练模型路径
cfg 模型配置文件路径,对应model.yaml路径
data data/coco128.yaml 训练数据集路径
hyp data/hyps/hyp.scratch-low.yaml 超参数路径
epochs 30 训练的轮数
batch-size 16 每次输出给神经网络的图片数,-1为自动
imgsz,img,img-size 640 训练集和测试集图片的像素大小
rect store_true 是否采用矩阵推理的方式去训练模型
resume Flase 是否在之前训练的一个模型基础上继续训练,需要指定上一次的模型路径,使用时填写路径
nosave store_true 是否只保存最后一轮的pt文件,默认是保存best.pt和last.pt
noval store_true 只在最后一轮测试
noautoanchor store_true 禁用自动锚框
noplots store_true 不保存绘图文件
evolve 300 遗传超参数进化
bucket 谷歌云盘
cache False 是否提前缓存图片到内存,以加快训练速度
image-weights store_true 是否启用加权图像策略
device cuda device, i.e. 0 or 0,1,2,3 or cpu 指定硬件设备
multi-scale store_true 是否启用多尺度训练
single-cls store_true 设定训练数据集是否为单类别
optimizer SGD 网络,可选SGD,Adam,AdamW
sync-bn store_true 开启后即可使用 SyncBatchNorm多 GPU 进行分布式训练, only available in DDP mode
workers 8 最大worker数量,如果遇到问题,试试设置成0
project runs/train 指定训练好的模型的保存路径
name exp 保存的模型文件夹名
exist-ok store_true 每次预测模型的结果是否保存在原来的文件夹
quad store_true 开启后,在比默认 640 大的数据集上训练效果更好,但在 640 大小的数据集上训练效果可能会差一些
cos-lr store_true 是否开启余弦学习率;
label-smoothing 0.0 是否对标签进行平滑处理,告诉模型只有1-x的概率是那个标签。
patience 100 早停,如果模型在default值轮数里没有提升,则停止训练模型
freeze 0 指定冻结层数量
save-period -1 设置多少个epoch保存一下checkpoint(disabled if < 1)
seed 0 全局训练种子
local_rank -1 自动 DDP 多图形处理器参数,不要修改
entity None 在线可视化工具,可用Entity
upload_dataset False 是否上传dataset到wandb tabel(将数据集作为交互式 dsviz表 在浏览器中查看、查询、筛选和分析数据集)
bbox_interval -1 设置界框图像记录间隔
artifact_alias latest 要使用的数据集构件的版本

以下是我测试训练所用的参数。

--weights=yolov5s.pt
--data=data/coco128.yaml
--hyp=data/hyps/hyp.scratch-low.yaml
--epochs=30
--batch-size=8
--img-size=640
--workers=8
--cache=true
--patience=10
--seed=1

首次使用yolo自带测试数据集需要下载资源,在输出界面可用看到进度,反正我下不动,最后还是迅雷下的。
这是我的训练效果

4、导出onnx

1、添加一个导出的配置

[嵌入式AI从0开始到入土]6_下载yolo源码及样例运行验证_第13张图片
这是我的参数

--weights runs/train/exp2/weights/best.pt
--include onnx
--opset=12									#默认值是17,在转换为om模型时会报错
--simplify

具体参数说明在export.py文件的699行run函数中。

2、判断是否成功

一般onnx模型大约是pt模型的两倍大小
[嵌入式AI从0开始到入土]6_下载yolo源码及样例运行验证_第14张图片
如果差的有点多的话,建议检查一下模型结构。

五、问题区

1、github进不去

github是没有被墙的,但是可能因为DNS污染导致无法访问。

  1. 最简单粗暴的方法,用手机流量。反正我江西移动是可以的。
  2. 有steam++的同学直接启动,里面有github加速。Microsoft store搜索watt toolkit。
  3. 如果还是不行,站长之家查下最快的dns。按照解析时间排序,然后在C:\Windows\System32\drivers\etc修改hosts文件。然后在cmd中执行ipconfig /flushdns刷新dns缓存,重启浏览器应该可以秒进。当然,下载可能还是龟速。
  4. 这里可以同步项目到国内的gitee码云或者csdn的gitcode,等同步完成后再拉取会快很多。
  5. 还不行,那就老老实实挂梯子!!!

2、gitcode拉取仓库失败

在拉取的时候,git会提示需要账号,账号用你的gitcode账号,密码需要使用你的个人令牌,令牌添加入口在这里只显示一次,会过期
[嵌入式AI从0开始到入土]6_下载yolo源码及样例运行验证_第15张图片

3、MindStudio快速启动

不得不吐槽一下,没有快捷方式让习惯了win的真的很难适应。这里给出三种方案,第一种不管用不用的上,建议还是做一下,这样ssh时打开也方便。

1、添加环境变量

记得把路径改成自己的。

vim .bashrc
export PATH=~/software/MindStudio_6.0.RC3_linux_x86_64/MindStudio/bin:$PATH
source .bashrc

2、创建Dock栏图标

cd /usr/share/applications
vim MindStudio.desktop
#输入以下内容
[Desktop Entry]
Name=MindStudio
Comment=MindStudio_6.0.RC3
Exec=/home/ai/software/MindStudio_6.0.RC3_linux_x86_64/MindStudio/bin/MindStudio.sh
Type=Application
Terminal=false
Icon=/home/ai/software/MindStudio_6.0.RC3_linux_x86_64/MindStudio/bin/MindStudio.png

保存后就可以在应用列表中看到,右键添加到收藏栏就可以了。

3、创建桌面快捷方式

在桌面打开终端,如果你的路径和我一样的话直接抄

vim MindStudio.desktop
#输入以下内容
[Desktop Entry]
Name=MindStudio
Comment=MindStudio_6.0.RC3
Exec=/home/ai/software/MindStudio_6.0.RC3_linux_x86_64/MindStudio/bin/MindStudio.sh
Type=Application
Terminal=false
Icon=/home/ai/software/MindStudio_6.0.RC3_linux_x86_64/MindStudio/bin/MindStudio.png

然后修改属性,允许作为程序运行。
[嵌入式AI从0开始到入土]6_下载yolo源码及样例运行验证_第16张图片

4、python3.9安装

wget https://www.python.org/ftp/python/3.9.7/Python-3.9.7.tgz
#下不动用迅雷
tar xzf Python-3.9.7.tgz
cd Python-3.9.7
./configure --enable-optimizations		#生成makefile
make -j 16								#16是线程数,取决于你的配置
sudo make install						#安装Python3.9到系统目录中
python3.9 --version						#查看版本,确认安装

总结

一般按照readme中写的内容跑不会有问题,也就是一些神奇的兼容性问题,确实头疼。大部分问题一般都是由于你的网络环境导致的。

你可能感兴趣的:(嵌入式ai从0到入土,人工智能,YOLO,华为)