一、环境安装测试
1、创建环境
conda create -n yolo python=3.7
conda activate yolo
2、安装pytorch
conda install pytorch torchvision cudatoolkit=11.3 -c pytorch
11.3为cuda版本号
3、克隆yolov5
git clone https://github.com/WongKinYiu/yolov7 # clone
cd yolov7
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
//为了避免安装失误采用镜像安装https://pypi.tuna.tsinghua.edu.cn/simple
4、安装功能包
sudo apt update
sudo apt install -y zip htop screen libgl1-mesa-glx
pip install seaborn thop
pip install --upgrade protobuf
pip install wandb
5、权重文件
在官网下载yolov7.pt权重文件,放在文件夹weights下
二、测试
python detect.py --weights weights/yolov7.pt --conf 0.25 --img-size 640 --source inference/images/horses.jpg
成功!
三、训练
训练和yolov5步骤一样见其他笔记:YOLOV5学习笔记(七)——训练自己数据集
原文链接:https://blog.csdn.net/HUASHUDEYANJING/article/details/126045094
这里主要介绍一下训练参数
- --weights: 预权重路径
- -- cfg: 模型yaml文件路径
- --data: 数据集yaml文件路径
- --hpy: 训练中超参数配置路径,默认data/hpy.scratch.p5.yaml,比如学习率、动量参数、权重衰减、预热epoch等
- --epoch: 训练轮次
- --batch_size:batch大小
- --img-size: 网络输入图像大小
- --rect: rectangular training(就是不失真的resize图像训练)
- --resume: 重新开始最近的训练。
- --nosave: 设置为True后只保存最后一个epoch权重
- --notest: 设置为True后只测试最后一个epoch
- --noautoanchor: 设置为True,表示不自动聚类anchor
- --evolve:设置为True,超参数优化,可以选择自己的更有的超参数(但资源消耗也很厉害),一般情况下用不到
- --bucket: 谷歌云盘bucket,一般也用不到
- --cach-images: 设置为True,提前缓存图像可用于加速训练
- --image-weights:加权图像选择进行训练。指对于那些训练不理想的图像,再下一次训练的时会增加一些权重,使其更关注这些困难样本
- --device: 设备选择,如果是GPU就输入GPU索引【如0,1,2..】,CPU训练就填cpu
- --multi-scale: 默认为False,是否采用多尺度训练
- --single-cls: 数据集是单类别还是多类别,默认False
- --adam: adam优化器,默认False(即采用随机梯度下降SGD)
- --sync-bn: 是否使用跨卡同步BN,在DDP模式使用,默认False
- --local_rank: DDP参数(不要改动)
- --workers:
- --label-smoothing:标签平滑,防止过拟合
- --upload_dataset:更新数据集,和wandb 库有关。也基本不用
- --bbox_interval:设置bbox log,也是和wandb有关,一般用不到
- --save_period:在每个保存周期的epoch后用于记录模型日志,默认为-1
- 线程数,根据自己的电脑设置
- --project: 训练模型保存的位置,默认为run/train
- --name: 保存项目名字,一般是run/train/exp
- --exist-ok:模型目录是否存在,不存在就创建
- --linear-lr: 对于学习率的调整,默认为False,开启后用余弦函数调整学习率
- --label-smoothing:标签平滑,防止过拟合
- --upload_dataset:更新数据集,和wandb 库有关。也基本不用
- --bbox_interval:设置bbox log,也是和wandb有关,一般用不到
- --save_period:在每个保存周期的epoch后用于记录模型日志,默认为-1
python train.py --workers 2 --device 0 --batch-size 16 --data data/uav.yaml --img 640 640 --cfg cfg/training/yolov7.yaml --weights weights/yolov7.pt --epochs 100