• YOLOv5分类任务——手势识别


    1. 下载YOLOv5官方代码

    ultralytics/yolov5: YOLOv5 🚀 in PyTorch > ONNX > CoreML > TFLite (github.com)

    2. 配置环境

    打开终端,先建立名为YOLO5的环境,再将路径切换为requirements.txt文件夹所在的路径,再输入以下命令

    pip install -r requirements.txt

    操作没有问题的情况下,等待片刻环境就配置成功了。

    3. 准备数据集

    由于这是分类任务,数据集是不用标注的。只需先划分训练集、测试集、验证集,再将对应类别的图片放到对应类别的文件夹下即可。

    这里的话每种类别400张图片,在训练集中有320张,测试集中有40张,验证集中有40张。

    4. 准备预训练模型

    如果让代码自动下载,会下载很久,推荐预先下载好了之后放在主文件夹下。

    你可以访问以下链接下载预训练模型yolov5s-cls.pt:

    https://github.com/ultralytics/yolov5/releases/download/v7.0/yolov5s-cls.pt

    如图所示

    5. 训练模型

    由于是分类任务,训练时用到的是classify文件夹下的train.py。数据会用到训练集和测试集。

    找到parse_opt函数,设置命令行参数

    parser.add_argument("--model", type=str, default="yolov5s-cls.pt", help="initial weights path")

     设置预训练模型为yolov5s-cls.pt

    parser.add_argument("--data", type=str, default="D:\\object_detection\\yolov5-master\\datasets", help="cifar10, cifar100, mnist, imagenet, ...")

    设置数据集路径为D:\\object_detection\\yolov5-master\\datasets

    按运行键开始训练

    显示

    1. D:\Env\ANACONDA\envs\YOLO5\python.exe D:\object_detection\yolov5-master\classify\train.py
    2. github: skipping check (not a git repository), for updates see https://github.com/ultralytics/yolov5
    3. classify\train: model=yolov5s-cls.pt, data=D:\object_detection\yolov5-master\datasets, epochs=10, batch_size=64, imgsz=224, nosave=False, cache=None, device=, workers=8, project=..\runs\train-cls, name=exp, exist_ok=False, pretrained=True, optimizer=Adam, lr0=0.001, decay=5e-05, label_smoothing=0.1, cutoff=None, dropout=None, verbose=False, seed=0, local_rank=-1
    4. YOLOv5 2024-7-13 Python-3.8.0 torch-2.3.1+cpu CPU
    5. TensorBoard: Start with 'tensorboard --logdir ..\runs\train-cls', view at http://localhost:6006/
    6. albumentations: not found, install with `pip install albumentations` (recommended)
    7. Model summary: 149 layers, 4180166 parameters, 4180166 gradients, 10.5 GFLOPs
    8. optimizer: Adam(lr=0.001) with parameter groups 32 weight(decay=0.0), 33 weight(decay=5e-05), 33 bias
    9. Image sizes 224 train, 224 test
    10. Using 8 dataloader workers
    11. Logging results to ..\runs\train-cls\exp5
    12. Starting yolov5s-cls.pt training on D:\object_detection\yolov5-master\datasets dataset with 6 classes for 10 epochs...
    13. Epoch GPU_mem train_loss test_loss top1_acc top5_acc
    14. 1/10 0G 0.533 0.562 1 1: 100%|██████████| 30/30 [01:51<00:00, 3.73s/it]
    15. 2/10 0G 0.435 0.441 1 1: 100%|██████████| 30/30 [02:16<00:00, 4.57s/it]
    16. 3/10 0G 0.428 0.43 1 1: 100%|██████████| 30/30 [02:23<00:00, 4.78s/it]
    17. 4/10 0G 0.426 0.423 1 1: 100%|██████████| 30/30 [02:24<00:00, 4.81s/it]
    18. 5/10 0G 0.425 0.423 1 1: 100%|██████████| 30/30 [02:24<00:00, 4.81s/it]
    19. 6/10 0G 0.424 0.421 1 1: 100%|██████████| 30/30 [02:06<00:00, 4.23s/it]
    20. 7/10 0G 0.423 0.423 1 1: 100%|██████████| 30/30 [02:05<00:00, 4.20s/it]
    21. 8/10 0G 0.423 0.421 1 1: 100%|██████████| 30/30 [01:11<00:00, 2.38s/it]
    22. 9/10 0G 0.422 0.421 1 1: 100%|██████████| 30/30 [00:59<00:00, 2.00s/it]
    23. 10/10 0G 0.422 0.421 1 1: 100%|██████████| 30/30 [01:01<00:00, 2.07s/it]
    24. Training complete (0.313 hours)
    25. Results saved to ..\runs\train-cls\exp5
    26. Predict: python classify/predict.py --weights ..\runs\train-cls\exp5\weights\best.pt --source im.jpg
    27. Validate: python classify/val.py --weights ..\runs\train-cls\exp5\weights\best.pt --data D:\object_detection\yolov5-master\datasets
    28. Export: python export.py --weights ..\runs\train-cls\exp5\weights\best.pt --include onnx
    29. PyTorch Hub: model = torch.hub.load('ultralytics/yolov5', 'custom', '..\runs\train-cls\exp5\weights\best.pt')
    30. Visualize: https://netron.app
    31. 进程已结束,退出代码为 0

    表明运行成功。

    运行结果在"D:\object_detection\yolov5-master\runs\train-cls\exp5"路径下

    文件夹weights:存储模型训练得到的权重(类似于人类学习得到的知识)

    文件opt.yaml:YAML源文件,包含模型的配置选项

    文件results.csv:XLS工作表,包含训练或测试的结果数据。

    文件test_images.jpg:JPG图片文件,是用于测试的图片的拼图。

    文件train_images.jpg:JPG图片文件,是用于训练的图片的拼图。

    6. 评估模型

    评估模型用到的是classify文件夹下的val.py文件。这个文件主要用于评估模型的性能。它会加载训练好的模型,然后使用验证数据集进行预测,计算模型在验证集上的性能指标(如准确率、召回率等),以评估模型的泛化能力。数据会用到验证集。

    根据训练时的输出的这行提示,修改val.py中的weights和data参数

    Validate:        python classify/val.py --weights ..\runs\train-cls\exp5\weights\best.pt --data D:\object_detection\yolov5-master\datasets

    找到parse_opt函数,修改参数

    1. parser.add_argument("--data", type=str, default="D:\\object_detection\\yolov5-master\\datasets", help="dataset path")
    2. parser.add_argument("--weights", nargs="+", type=str, default="D:\\object_detection\\yolov5-master\\runs\\train-cls\\exp\\weights\\best.pt", help="model.pt path(s)")

    运行 val.py显示的结果为

    1. D:\Env\ANACONDA\envs\YOLO5\python.exe D:\object_detection\yolov5-master\classify\val.py
    2. classify\val: data=D:\object_detection\yolov5-master\datasets, weights=D:\object_detection\yolov5-master\runs\train-cls\exp5\weights\best.pt, batch_size=128, imgsz=224, device=, workers=8, verbose=True, project=..\runs\val-cls, name=exp, exist_ok=False, half=False, dnn=False
    3. YOLOv5 2024-7-13 Python-3.8.0 torch-2.3.1+cpu CPU
    4. Fusing layers...
    5. Model summary: 117 layers, 4174374 parameters, 0 gradients, 10.4 GFLOPs
    6. testing: 100%|██████████| 2/2 [00:02<00:00, 1.36s/it]
    7. Class Images top1_acc top5_acc
    8. all 240 1 1
    9. back 40 1 1
    10. down 40 1 1
    11. front 40 1 1
    12. left 40 1 1
    13. right 40 1 1
    14. up 40 1 1
    15. Speed: 0.0ms pre-process, 9.4ms inference, 0.0ms post-process per image at shape (1, 3, 224, 224)
    16. Results saved to ..\runs\val-cls\exp
    17. 进程已结束,退出代码为 0

    结果显示,在所有类别上,准确率为100%,这意味着模型在这个验证集上的表现非常好。最后,预测结果被保存到了指定的文件夹中。 

    7. 模型预测

    使用模型进行预测用到的是classify文件夹下的predict.py文件,这个文件用于使用已经训练好的模型进行预测。它通常会加载预训练的模型,然后对输入的数据进行预测,并输出预测结果。

    1. D:\Env\ANACONDA\envs\YOLO5\python.exe D:\object_detection\yolov5-master\classify\predict.py
    2. classify\predict: weights=..\runs\train-cls\exp5\weights\best.pt, source=D:\object_detection\yolov5-master\predictdata\right.jpg, data=..\data\coco128.yaml, imgsz=[224, 224], device=, view_img=False, save_txt=False, nosave=False, augment=False, visualize=False, update=False, project=..\runs\predict-cls, name=exp, exist_ok=False, half=False, dnn=False, vid_stride=1
    3. YOLOv5 2024-7-13 Python-3.8.0 torch-2.3.1+cpu CPU
    4. Fusing layers...
    5. Model summary: 117 layers, 4174374 parameters, 0 gradients, 10.4 GFLOPs
    6. image 1/1 D:\object_detection\yolov5-master\predictdata\right.jpg: 224x224 down 0.41, right 0.34, back 0.10, front 0.06, up 0.05, 21.0ms
    7. Speed: 0.0ms pre-process, 21.0ms inference, 0.0ms NMS per image at shape (1, 3, 224, 224)
    8. Results saved to ..\runs\predict-cls\exp6
    9. 进程已结束,退出代码为 0

    预测结果保存在D:\object_detection\yolov5-master\runs\predict-cls

  • 相关阅读:
    python知识点100篇系列(18)-解析m3u8文件的下载视频
    OpenGL进阶(一)之帧缓冲FrameBuffer
    Maven-入门
    MySQL数据库干货_16—— SQL99标准中的查询
    【Python自然语言处理】使用SVM、随机森林法、梯度法等多种方法对病人罹患癌症预测实战(超详细 附源码)
    zip压缩包密码怎么解开,zip压缩包权限限制怎么解除?
    2022年IC行业还缺人吗?
    SpringCloud - Spring Cloud 之 Gateway网关(十三)
    python单元测试框架(继承、unittest参数化、断言、测试报告)
    LeetCode+ 71 - 75
  • 原文地址:https://blog.csdn.net/Winkyyyyyy/article/details/140446281