注:等我摸完鱼再把链接补上
可以关注我的B站号工具人呵呵的个人空间,后期会考虑出视频教程,务必催更,以防我变身鸽王。
第一章 昇腾Altas 200 DK上手
第二章 下载昇腾案例并运行
第三章 官方模型适配工具使用
第四章 炼丹炉的搭建(基于Ubuntu23.04 Desktop)
第五章 Ubuntu远程桌面配置
第六章 下载yolo源码及样例运行验证
第七章 转化为昇腾支持的om离线模型
第八章 jupyter lab的使用
第九章 yolov5在昇腾上推理
第十章 yolov5在昇腾上应用
未完待续…
注:本文基于Ubuntu23.04编写,老版本入口可能存在差异
这应该算保姆级教程了吧,毕竟连怎么进github都讲了。当然,条件允许请自行准备好梯子,有些资源可能下不动。
注意:我有两个环境,一个是yolov5,用于yolov5训练等,一个是ascend,由于昇腾配套软件的运行。下文没有特殊说明的都是在ascend环境中运行,昇腾的pytorch只能使用cpu,我没尝试过在一个环境里同时安装cpu和gpu的torch,所以还是分两个环境吧。有910的富哥就不需要了,直接安装cpu的就好了。
yolov8链接放这里:https://github.com/ultralytics/ultralytics
yolov5我已经在昇腾上跑通了,v8应该也差不多,所以我下面统一用v5做教程
yolov5的github仓库(这里直接点击后使用csdn的加速,访问会更快)。
对于只clone的懒人来说请使用这个,直接下载压缩包。主要是可以避免一些网络波动导致的下载失败。
如果使用自己的训练集,不使用预训练模型的话应该可以跳过这一步。
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的镜像。
如果你全程按照我的教程来,这里origin环境中应该是python3.10。
conda create --name yolov5 --clone origin #从origin环境克隆
当然你想创建一个全新的环境也可以,删除后面那个参数就可以。但是请保证python>=3.8.0,pytorch>=1.8
。
origin环境在第4节中我们已经安装了cuda工具链,这样可以省去重新安装的过程。
这里请先手动安装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
如遇下载失败,多试几次,换个源试试?
如果你需要使用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
这里小孩子才做选择,我肯定是全要啦。
MindStudio下有昇腾专用的图形化界面工具,懒癌晚期患者敲不了一点指令。当然,你想用命令行也可以。
虽然免费,还是昇腾官方指定的IDE,但是感觉使用起来确实有点说不出来的不舒服。
我们下载社区版,往下找到合适的版本。
下载后我们得到MindStudio_6.0.RC3_linux_x86_64.tar.gz
,直接右键提取。这里我解压到了~/software
目录下。
使用时cd到mindstudio/bin
目录下,然后输入MindStudio.sh
就可以启动。
当然,懒人肯定不能止步在此,毕竟每次cd挺麻烦的。具体方式参考问题区。
第一次使用需要同意协议。
不知道是我激活有问题还是怎么,ubuntu下每次掉激活都是毫无征兆的。当然你们用win的然后远程也可以。
这里给出官方下载地址,安装方法和mindstudio一样。
激活方法这个真不能写,自行百度吧。当然,你要是是学生,那就直接用学生认证白嫖就可以了。
如果你想一直连接板子去转换模型的话,那这不做也可以。
首先查看python版本,版本不符合要求会无法安装。
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 |
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去运行,然后一直在报错。
后来我一想,root用户的python是3.11,虽然当前环境里是3.9.0。所以这里一定要注意,你用哪个用户创建的依赖环境,就用哪个用户安装。
将Ascend/ascend-toolkit/set_env.sh
文件中的内容写入~/.bashrc
中
这里我在后面模型转换的时候报错了,是少了几个包,所以一起安装一下吧,版本号不重要。
pip install decorator scipy attrs #如果你安装了attr,请先卸载,否则还是会报错
网站在这,下载2.1.0的版本。我也打包了一份,在本文最上方配套资源里。
按照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())"
这里因为我在pycharm中打开过,所以会有图标。是打开这个文件夹,不是.py文件
文件->项目结构->SDK
然后点左上方的加号
Conda环境->现有环境->解释器
选择我们之前创建的环境的目录下的python,我的路径如图所示
添加完成的样子。
选择我们环境中的解释器,不要选错了。脚本选择源码目录下的train.py
参数描述在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自带测试数据集需要下载资源,在输出界面可用看到进度,反正我下不动,最后还是迅雷下的。
这是我的训练效果
--weights runs/train/exp2/weights/best.pt
--include onnx
--opset=12 #默认值是17,在转换为om模型时会报错
--simplify
具体参数说明在export.py
文件的699行run函数中。
一般onnx模型大约是pt模型的两倍大小
如果差的有点多的话,建议检查一下模型结构。
github是没有被墙的,但是可能因为DNS污染导致无法访问。
C:\Windows\System32\drivers\etc
修改hosts文件。然后在cmd中执行ipconfig /flushdns
刷新dns缓存,重启浏览器应该可以秒进。当然,下载可能还是龟速。在拉取的时候,git会提示需要账号,账号用你的gitcode账号,密码需要使用你的个人令牌,令牌添加入口在这里只显示一次,会过期。
不得不吐槽一下,没有快捷方式让习惯了win的真的很难适应。这里给出三种方案,第一种不管用不用的上,建议还是做一下,这样ssh时打开也方便。
记得把路径改成自己的。
vim .bashrc
export PATH=~/software/MindStudio_6.0.RC3_linux_x86_64/MindStudio/bin:$PATH
source .bashrc
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
保存后就可以在应用列表中看到,右键添加到收藏栏就可以了。
在桌面打开终端,如果你的路径和我一样的话直接抄
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
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中写的内容跑不会有问题,也就是一些神奇的兼容性问题,确实头疼。大部分问题一般都是由于你的网络环境导致的。