YOLOv5s训练学习记录 - test

发布时间 2023-05-24 23:37:17作者: RimroseLim

armorFinder_ROS2

YOLOv5s训练学习记录:

训练、获取模型

YOLOv5初级使用教程

下载yolov5

git上下载Yolov5并调通测试代码

数据集准备与文件夹结构

这里我使用的是之前提供的装甲板数据集'RM_train_data'
这个和原本提供的'RM_train_data'不太一样,需要改成下边的样子

├─images
│ ├─test
│ ├─train
│ └─val
└─labels
├─test
├─train
└─val

新建数据路径yaml配置文件

比如我在./data下新建了一个RM.yaml(应该很容易看懂)

# YOLOv5 ? by Ultralytics, AGPL-3.0 license
# PASCAL VOC dataset http://host.robots.ox.ac.uk/pascal/VOC by University of Oxford
# Example usage: python train.py --data VOC.yaml
# parent
# ├── yolov5
# └── datasets
#     └── VOC  ← downloads here (2.8 GB)


# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
# path: ../datasets/VOC
train: /home/danielvon/MyCodes/RM_train_data/images/train # 3555 images
val: /home/danielvon/MyCodes/RM_train_data/images/val # 360 images
test: /home/danielvon/MyCodes/RM_train_data/images/test


# Classes
nc: 12 # number of classes
names: ['r1', 'r2', 'r3', 'r4', 'b1', 'b2', 'b3', 'b4', 'rs', 'rj', 'bs', 'bj'] # class names

新建yaml配置文件

比如我在./models下新建了个yolov5s_RM.yaml(从yolov5s.yaml改来的,只要改一下nc的值(也就是'number of classes'的值)就好了)

训练

用下边的命令开始训练

python train.py --data RM.yaml --cfg yolov5s_RM.yaml --weights yolov5s.pt --epoch 120 --batch-size 16 --device 0

训练结束后会在./runs中生成/train/expX文件夹,最后训练出的模型为/expX/weights/best.pt,加载这个模型即可进行目标检测
例如:

python3 detect.py --weights ./runs/train/exp2/weights/best.pt --source 0 --device 0

一些参数 YOLOv5训练与测试参数介绍
train.py

--weigths: 指的是训练好的网络模型,用来初始化网络权重
--cfg:为configuration的缩写,指的是网络结构,一般对应models文件夹下的xxx.yaml文件
--data:训练数据路径,一般为data文件夹下的xxx.yaml文件
--epochs:设置训练的轮数
--batch-size:每次输出给神经网络的图片数
--rect: 是否采用矩形训练
--resume: 指定之前训练的网络模型,并继续训练这个模型
--cache-images:是否对图片进行缓存,可以加快训练
--device:训练网络的设备cpu还是gpu
--sync-bn:生效后进行多 GPU 进行分布式训练
--workers: 多线程训练
--name: 训练结果保存文件名
--multi-scale:训练过程中对图片进行尺度变换

detect.py

--weights:训练的权重
--source:测试数据,可以是图片/视频路径,也可以是'0'(电脑自带摄像头),也可以是rtsp等视频流
--output:网络预测之后的图片/视频的保存路径
--img-size:网络输入图片大小
--conf-thres:置信度阈值(检测精度,作者是设置的0.25)
--iou-thres:做nms的iou阈值()
--device:设置设备
--save-txt:是否将预测的框坐标以txt文件形式保存,默认False
--classes:设置只保留某一部分类别,形如0或者0 2 3
--agnostic-nms:进行nms是否也去除不同类别之间的框,默认False
--augment:推理的时候进行多尺度,翻转等操作(TTA)推理
--update:如果为True,则对所有模型进行strip_optimizer操作,去除pt文件中的优化器等信息,默认为False

C++下使用opencv部署yolov5模型

我感觉这个不太好搞,当然,也可能是我的搜索方式不太对

【opencv c++】实现yolov5部署onnx模型完成目标检测 - iuk11 - 博客园

基于OpenCV和ROS的Yolov5模型推理部署 - 掘金

有个人写了好多相关内容
2021.03.11更新 c++下使用opencv部署yolov5模型(一)_[error:0] global c:\build\master_winpack-build-win_爱晚乏客游的博客-CSDN博客
2021.04.15更新 c++下使用opencv部署yolov5模型 (二)_opencv调用yolov5模型_爱晚乏客游的博客-CSDN博客
2021.09.02更新说明 c++下使用opencv部署yolov5模型 (三)_opencv yolov5_爱晚乏客游的博客-CSDN博客
2021.11.01 c++下 opencv部署yolov5-6.0版本 (四)_如何查看yolov5版本_爱晚乏客游的博客-CSDN博客
2022.07.25 C++下使用opencv部署yolov7模型(五)_opencv yolov7_爱晚乏客游的博客-CSDN博客
2022.09.29更新 c++下面部署yolov5实例分割模型(六)_c++ yolov5_爱晚乏客游的博客-CSDN博客