ultralytics/yolov5: YOLOv5 🚀 in PyTorch > ONNX > CoreML > TFLite (github.com)
打开终端,先建立名为YOLO5的环境,再将路径切换为requirements.txt文件夹所在的路径,再输入以下命令
pip install -r requirements.txt
操作没有问题的情况下,等待片刻环境就配置成功了。
由于这是分类任务,数据集是不用标注的。只需先划分训练集、测试集、验证集,再将对应类别的图片放到对应类别的文件夹下即可。
这里的话每种类别400张图片,在训练集中有320张,测试集中有40张,验证集中有40张。
如果让代码自动下载,会下载很久,推荐预先下载好了之后放在主文件夹下。
你可以访问以下链接下载预训练模型yolov5s-cls.pt:
https://github.com/ultralytics/yolov5/releases/download/v7.0/yolov5s-cls.pt
如图所示
由于是分类任务,训练时用到的是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
按运行键开始训练
显示
- D:\Env\ANACONDA\envs\YOLO5\python.exe D:\object_detection\yolov5-master\classify\train.py
- github: skipping check (not a git repository), for updates see https://github.com/ultralytics/yolov5
- 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
- YOLOv5 2024-7-13 Python-3.8.0 torch-2.3.1+cpu CPU
-
- TensorBoard: Start with 'tensorboard --logdir ..\runs\train-cls', view at http://localhost:6006/
- albumentations: not found, install with `pip install albumentations` (recommended)
- Model summary: 149 layers, 4180166 parameters, 4180166 gradients, 10.5 GFLOPs
- optimizer: Adam(lr=0.001) with parameter groups 32 weight(decay=0.0), 33 weight(decay=5e-05), 33 bias
- Image sizes 224 train, 224 test
- Using 8 dataloader workers
- Logging results to ..\runs\train-cls\exp5
- Starting yolov5s-cls.pt training on D:\object_detection\yolov5-master\datasets dataset with 6 classes for 10 epochs...
-
- Epoch GPU_mem train_loss test_loss top1_acc top5_acc
- 1/10 0G 0.533 0.562 1 1: 100%|██████████| 30/30 [01:51<00:00, 3.73s/it]
- 2/10 0G 0.435 0.441 1 1: 100%|██████████| 30/30 [02:16<00:00, 4.57s/it]
- 3/10 0G 0.428 0.43 1 1: 100%|██████████| 30/30 [02:23<00:00, 4.78s/it]
- 4/10 0G 0.426 0.423 1 1: 100%|██████████| 30/30 [02:24<00:00, 4.81s/it]
- 5/10 0G 0.425 0.423 1 1: 100%|██████████| 30/30 [02:24<00:00, 4.81s/it]
- 6/10 0G 0.424 0.421 1 1: 100%|██████████| 30/30 [02:06<00:00, 4.23s/it]
- 7/10 0G 0.423 0.423 1 1: 100%|██████████| 30/30 [02:05<00:00, 4.20s/it]
- 8/10 0G 0.423 0.421 1 1: 100%|██████████| 30/30 [01:11<00:00, 2.38s/it]
- 9/10 0G 0.422 0.421 1 1: 100%|██████████| 30/30 [00:59<00:00, 2.00s/it]
- 10/10 0G 0.422 0.421 1 1: 100%|██████████| 30/30 [01:01<00:00, 2.07s/it]
-
- Training complete (0.313 hours)
- Results saved to ..\runs\train-cls\exp5
- Predict: python classify/predict.py --weights ..\runs\train-cls\exp5\weights\best.pt --source im.jpg
- Validate: python classify/val.py --weights ..\runs\train-cls\exp5\weights\best.pt --data D:\object_detection\yolov5-master\datasets
- Export: python export.py --weights ..\runs\train-cls\exp5\weights\best.pt --include onnx
- PyTorch Hub: model = torch.hub.load('ultralytics/yolov5', 'custom', '..\runs\train-cls\exp5\weights\best.pt')
- Visualize: https://netron.app
-
-
- 进程已结束,退出代码为 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图片文件,是用于训练的图片的拼图。
评估模型用到的是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函数,修改参数
- parser.add_argument("--data", type=str, default="D:\\object_detection\\yolov5-master\\datasets", help="dataset path")
- 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显示的结果为
- D:\Env\ANACONDA\envs\YOLO5\python.exe D:\object_detection\yolov5-master\classify\val.py
- 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
- YOLOv5 2024-7-13 Python-3.8.0 torch-2.3.1+cpu CPU
-
- Fusing layers...
- Model summary: 117 layers, 4174374 parameters, 0 gradients, 10.4 GFLOPs
- testing: 100%|██████████| 2/2 [00:02<00:00, 1.36s/it]
- Class Images top1_acc top5_acc
- all 240 1 1
- back 40 1 1
- down 40 1 1
- front 40 1 1
- left 40 1 1
- right 40 1 1
- up 40 1 1
- Speed: 0.0ms pre-process, 9.4ms inference, 0.0ms post-process per image at shape (1, 3, 224, 224)
- Results saved to ..\runs\val-cls\exp
-
- 进程已结束,退出代码为 0
结果显示,在所有类别上,准确率为100%,这意味着模型在这个验证集上的表现非常好。最后,预测结果被保存到了指定的文件夹中。
使用模型进行预测用到的是classify文件夹下的predict.py文件,这个文件用于使用已经训练好的模型进行预测。它通常会加载预训练的模型,然后对输入的数据进行预测,并输出预测结果。
- D:\Env\ANACONDA\envs\YOLO5\python.exe D:\object_detection\yolov5-master\classify\predict.py
- 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
- YOLOv5 2024-7-13 Python-3.8.0 torch-2.3.1+cpu CPU
-
- Fusing layers...
- Model summary: 117 layers, 4174374 parameters, 0 gradients, 10.4 GFLOPs
- 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
- Speed: 0.0ms pre-process, 21.0ms inference, 0.0ms NMS per image at shape (1, 3, 224, 224)
- Results saved to ..\runs\predict-cls\exp6
-
- 进程已结束,退出代码为 0
预测结果保存在D:\object_detection\yolov5-master\runs\predict-cls