0.运行环境
- 处理器:AMD Ryzen 7 5800H 8C16T
- 内存:640x640分辨率下300余个训练集和100余个校验集要求可使用物理内存大于8GB,实测占用8~10GB。
- 运行模式:CPU/(GPU需要安装cuda、cudnn,后续补充)
1.安装环境
使用环境为Windows 10 x64(此文章后续出边缘arm平台部署教程)
YOLOV5要求Python至少为3.8且Pytorch版本大于1.8.0
1.1.Python 3.8.17
本教程采用Anaconda3虚拟环境替代繁琐的本地环境。
下载地址:https://repo.anaconda.com/archive/Anaconda3-2023.07-2-Windows-x86_64.exe
1.2.Pytorch 1.13.1 / 2.0.1
- 修改pip源命令
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
- 下面指令是安装默认最新版本
pip3 install torch torchvision torchaudio
- 下面指令是安装1.13.1 CPU版本
pip install torch==1.13.1+cpu torchvision==0.14.1+cpu torchaudio==0.13.1
1.3.Pycharm IDE
下载地址:https://www.jetbrains.com/pycharm/download/download-thanks.html?platform=windows&code=PCC
1.4.YOLOV5
YoloV5属于One Stage的R-CNN算法,简单来讲精度比Two Stages低但速度快。
github地址:https://github.com/ultralytics/yolov5
gitee地址:https://gitee.com/monkeycc/yolov5?_from=gitee_search
如果使用git clone需要安装git
2.数据集处理
最终数据集以YOLO的格式运进模型
2.0.下载数据标注工具
在这里隆重推荐labelstudio,嘎嘎好看,嘎嘎好用。
pip install label-studio
2.1.寻找需要的图片构建图片集
等待服务加载再运行命令
label-studio start
- 1.等待服务构建完成,进入网址并注册登录然后create项目:http://localhost:8080/
- 2.选择数据集类型为:Object Detection
- 3.删除原有的两个标签并输入添加新的标签
- 4.import图像(一次性上传不超过100个图像)
2.2.进行数据标注
Q键上面的数字1是第一个的快捷键,依此类推
每张图标注后都需要提交,可多账号登录和分配任务,非常银杏化。
2.3.导出为YOLO格式
- 标注完,点击export并选择YOLO。
- 下载完解压并构建YOLO数据集结构
├──fallDetect
│ ├── images (图像文件夹)
│ │ ├── train (训练集)
│ │ │ ├── xximage1.jpg
│ │ │ ├── xximage2.jpg
│ │ │ └── ...
│ │ ├── val (校验集)
│ │ │ ├── xyimage1.jpg
│ │ │ ├── xyimage2.jpg
│ │ │ └── ...
│ │
│ ├── labels (标签文件夹)
│ │ ├── train (训练集)
│ │ │ ├── xximage1.txt
│ │ │ ├── xximage2.txt
│ │ │ └── ...
│ │ ├── val (标签集)
│ │ │ ├── xyimage1.txt
│ │ │ ├── xyimage2.txt
│ │ │ └── ...
└─────────────────────────
2.4.修改yaml文件中的路径
- 鼠标右键新建文本文档修改文件后缀为.yaml
- 加入下面的内容
path: ./datasets/ # dataset root dir
train: falldetect/images/train # train images (relative to 'path') 128 images
val: falldetect/images/val # val images (relative to 'path') 128 images
#test: # test images (optional)
# Classes
names:
0: fallen
1: hello
名称 | 后加参数 | 含义 |
---|---|---|
path | ./datasets/fallDetect | 数据集根目录 |
train | images/train | 训练集图片目录 |
val | images/val | 校验集图片目录 |
test | images/test | 测试集图片目录(可不加) |
names | [num]: [labelname] | 标签ID和标签名称 |
基本上格式为:标签名称与图片名称一致,前者只包含四个值,后者是图片
默认的…在linux和windows中都表示为上一个目录,玛德,最后发现是路径的问题。
3.训练与调参
此环节内容较简单,调试参数即可。
3.1.调用train.py
- 在cmd命令中使用python train.py --data fallDetect.yaml
- 在Pycharm中寻找parse中的对应参数,修改default中的内容即可
3.2.使用epochs、batch-size、workers、device等参数
- 在cmd命令中使用
python train.py --data fallDetect.yaml --epochs 10 --batch-size 16 --workers 4 --device cpu
- 在Pycharm中寻找parse中的对应参数,修改default中的内容即可
3.3.训练完查看runs/train/exp中的各项情况
其中有训练参数、指标的图标以及一些校验集测试的情况
3.4.runs/train/exp/weights中有训练好的权重文件
权重文件就是模型的最终成品,可转ONNX
4.推理测试
4.1.detect.py
4.2. 使用weights参数
python detect.py --weights best.pt
4.3.推理完查看runs/detect/exp中的结果
直接在图片上生成推理结果,可查看识别情况和可信度
5.侧面描述
- 额外内容:anaconda3、pytorch、yolov5环境部署
- 调整数据集大小和训练参数
- 侧重操作,唯一目标是实现物体检测
6.边缘设备的本地部署
- python-opencv、pytorch、yolov5环境部署
- 测试并调节参数