YOLOv5 环境搭建、 coco128 训练示例 、 详细记录【一文读懂】

  • 🥇 版权: 本文由【墨理学AI】原创、在CSDN首发、各位大佬、敬请查阅
  • 🎉 声明: 作为 A I领域 全网干货最多的博主之一,❤️ 不负光阴不负卿 ❤️


📔 环境搭建



最新当前环境搭建方法【2021-8-19】

conda create -n torchYolo python=3.8.0

conda activate torchYolo

pip install -r requirements.txt

# export requirements 【模型转换需要安装】
pip install  coremltools onnx scikit-learn


📕 测试


🟧 使用 预训练 模型进行测试: 【2020-09-25 版本代码测试方法】

python detect.py --source ./inference/images/ --weights  ./pretrain/yolov5x.pt --conf 0.4

测试检测效果示例如下:

1

2

  • 可以发现,模型越大,检测越准确(指标数值变大);

【2021-8-19】补充更新,当前版本作者代码一直在更新【测试命令相应也有改变】

🟨 显卡推理测试 Quadro RTX 5000【2021-8-19版本代码测试】

该部分随官方代码更新补充

🔴 对 coco/images/val2017 进行测试
python detect.py --source data/coco/images/val2017

GPU 占用  1217MiB

# 输出如下
...
image 4998/5000 /home/moli/project/projectBy/ten/objectDetect/coco/images/val2017/000000581482.jpg: 448x640 1 clock, Done. (0.008s)
image 4999/5000 /home/moli/project/projectBy/ten/objectDetect/coco/images/val2017/000000581615.jpg: 640x480 1 toilet, Done. (0.008s)
image 5000/5000 /home/moli/project/projectBy/ten/objectDetect/coco/images/val2017/000000581781.jpg: 480x640 22 bananas, 3 oranges, Done. (0.008s)
Results saved to runs/detect/exp3

Done. (121.517s)

# 速度
FPS = 5000 / 121.517 = 41.146  帧 / 秒

🔵 对 视频检测测试 3840 * 2160 分辨率 | 29.97 帧 / 秒
python detect.py --source data/videos/

GPU 占用  1217MiB

# 输出如下
...

video 1/1 (3622/3622) /home/moli/data/videos/5p2b_01A1.m4v: 384x640 5 persons, 1 sports ball, Done. (0.008s)

Results saved to runs/detect/exp2
Done. (384.598s)

# 速度
FPS = 3622 / 384.598 = 9.417   帧 / 秒

🟣 yolov5s.pt 转换 得到 yolov5s.onnx
python export.py --weights yolov5s.pt --img 640 --batch 1 --include onnx

# 输出如下

export: weights=yolov5s.pt, img_size=[640], batch_size=1, device=cpu, include=['onnx'], half=False, inplace=False, train=False, optimize=False, dynamic=False, simplify=False, opset=12
YOLOv5 🚀 v5.0-375-gd1182c4 torch 1.9.0+cu102 CPU

Fusing layers... 
Model Summary: 224 layers, 7266973 parameters, 0 gradients

PyTorch: starting from yolov5s.pt (14.8 MB)

ONNX: starting export with onnx 1.10.1...


ONNX: run --dynamic ONNX model inference with: 'python detect.py --weights yolov5s.onnx'

Export complete (2.88s)

🟡 运行 yolov5s.onnx 进行测试
python detect.py --weights yolov5s.onnx 

detect: weights=['yolov5s.onnx'], source=data/images, imgsz=[640, 640], conf_thres=0.25, iou_thres=0.45, max_det=1000, device=, view_img=False, save_txt=False, save_conf=False, save_crop=False, nosave=False, classes=None, agnostic_nms=False, augment=False, visualize=False, update=False, project=runs/detect, name=exp, exist_ok=False, line_thickness=3, hide_labels=False, hide_conf=False, half=False, tfl_int8=False
YOLOv5 🚀 v5.0-375-gd1182c4 torch 1.9.0+cu102 CUDA:0 (Quadro RTX 5000, 16125.3125MB)

image 1/2 /home/moli/project/project21Next/modelTrans/ncnnLearn/yolov5/data/images/bus.jpg: 640x640 4 class0s, 1 class5, Done. (0.620s)
image 2/2 /home/moli/project/project21Next/modelTrans/ncnnLearn/yolov5/data/images/zidane.jpg: 640x640 2 class0s, 2 class27s, Done. (0.369s)
Results saved to runs/detect/exp
Done. (4.562s)


📗 官方coco128 数据集训练 + 测试


下载 coco128 数据集、并解压:

curl -L -o tmp.zip https://github.com/ultralytics/yolov5/releases/download/v1.0/coco128.zip && unzip -q tmp.zip && rm tmp.zip  # download dataset

训练:

服务器网络畅通,则直接执行如下命令,会自动下载 coco128 数据集,并开始训练:

python train.py --img 640 --batch 16 --epochs 5 --data ./data/coco128.yaml --cfg ./models/yolov5s.yaml --weights ''

测试:(这一步作用是什么???)

python test.py --data coco128.yaml --img 640 --conf 0.001

使用训练得到的模型进行测试:

python detect.py --source ./inference/images/ --weights  ./runs/exp0/weights/best.pt --conf 0.4

测试并生成数据对应的检测结果文本文件 --save-txt

python detect.py --source ./inference/images/ --weights  ./runs/exp0/weights/best.pt --conf 0.4 --save-txt

总结: --save-txt 检测结果txt ;观察 上一步骤 ./inference/output/ 目录下生成的文件,发现如下

9


📘 定制数据集训练


Train Custom Data:直接参考官方


官方示例,步骤简述如下:

2

3

3

4

5

5

6. 使用 yolov5s.pt 预训练模型 对 coco128 进行 300 epochs 训练

time python train.py --img 640 --batch 16 --epochs 300 --data ./data/coco128.yaml --cfg ./models/yolov5s.yaml --weights ./pretrain/yolov5s.pt --device 1
  • 训练时长: 20分钟
  • 生成结果目录: yolov5-master/runs
  • 300 epochs 训练 得到的 results.png 如下:

7


📙 感谢关注


  • ❤️ 你只看一篇就够用的教程 感谢各位大佬一键三连
  • ❤️ 祝愿你的代码没有Bug , 学习顺利 !

9-6


  • 17
    点赞
  • 114
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论
### 回答1: YoloV5是一种常用的目标检测算法,而COCO128是一个较小的COCO数据集子集,包含了128个类别。下面是使用YoloV5训练COCO128数据集的基本步骤: 1. 下载COCO128数据集,包括训练集、验证集和测试集。 2. 安装YoloV5,并将其与COCO128数据集集成。 3. 调整YoloV5的超参数,例如学习率、批量大小、训练时长等。 4. 对YoloV5进行训练,可以使用命令行工具或者使用现有的训练脚本。 5. 对训练结果进行评估和调优,查看模型的准确率和损失值,并对模型进行调整。 6. 最后,使用训练好的模型进行目标检测,可以将其集成到自己的应用程序或者服务中。 需要注意的是,训练一个准确率较高的模型需要耗费大量时间和计算资源,并且需要具备一定的编程和机器学习技能。如果您是初学者,可以从学习基础的目标检测算法和数据集开始,逐步提升自己的能力。 ### 回答2: Yolov5是一个非常流行的目标检测算法。它可以检测相对较小的物体,并且在准确率和速度之间取得了一个很好的平衡。COCO(Common Objects in Conex)数据集是一个广泛使用的目标检测数据集,包含了80种对象。在这篇文章中,我们将了解如何使用Yolov5训练COCO128数据集。 COCO128数据集是COCO数据集的一个子集。它包含了128张图像,每张图像都有5种不同类的已标注目标。我们需要将它们分成训练和测试。我们可以使用提供的脚本将数据集转换为Yolov5所需的格式。 首先,我们需要下载Yolov5,并安装依赖关系。然后,我们可以使用COCO128的文件夹作为我们的数据集目录。我们需要在目录中创建3个txt文件,分别是train.txt,val.txt和test.txt,来存放训练、验证和测试集的文件名。我们可以使用以下命令获得文件名列表: ``` ls **/*.jpg > train.txt ``` 我们还需要创建一个class.names文件来存放数据集中所有类别的名称。在我们的情况下,我们需要将以下内容保存为class.names文件: ``` bird bus car cat dog ``` 然后,我们需要创建一个class_map.json文件,将COCO128数据集中的类别映射到Yolov5中。我们可以使用以下代码作为class_map.json文件的内容: ``` { "bird": 0, "bus": 1, "car": 2, "cat": 3, "dog": 4 } ``` 接下来,我们需要在Yolov5的配置文件中进行一些更改。我们需要将类别数目更改为5,并在训练和测试集中添加一些路径。我们可以使用以下命令修改Yolov5的配置文件: ``` nano yolov5/models/yolov5s.yaml ``` 我们可以在最后一行添加以下内容: ``` nc: 5 train: ../../dataset/coco128/train.txt val: ../../dataset/coco128/val.txt test: ../../dataset/coco128/test.txt ``` 现在我们准备开始训练了。我们可以使用以下命令开始训练: ``` python train.py --batch-size 16 --cfg models/yolov5s.yaml --data ../../dataset/coco128.yaml --weights weights/yolov5s.pt --cache --sync-bn ``` 通过运行上面的命令,我们可以使用大小为16的批处理,同步跨GPU进行训练,并将Yolov5s的预训练权重指定为yolov5s.pt。在训练期间,我们可以使用tensorboard来监视训练进度和模型性能。我们可以使用以下命令启动Tensorboard: ``` tensorboard --logdir runs ``` 最后,我们可以使用以下命令对模型进行测试: ``` python test.py --weights runs/train/exp/weights/best.pt --data ../../dataset/coco128.yaml --img 640 --conf 0.4 --iou 0.5 --task val --batch-size 16 ``` 在这个命令中,我们使用最佳的权重进行测试,并在测试时使用一个图像大小为640,置信度为0.4,重叠度为0.5的IOU阈值。我们还使用大小为16的批次。测试完成后,我们将得到一个JSON格式的输出文件,其中包含测试结果,包括指标和预测结果。 综上所述,这是如何训练COCO128数据集使用Yolov5的步骤。它涵盖了数据集转换,配置文件更改,训练,测试和性能评估。虽然在本文中我们使用的是COCO128数据集,但是如果您有足够的硬件资源,您也可以尝试使用完整的COCO数据集进行训练。 ### 回答3: YOLOv5是近年来应用最为广泛的目标检测算法之一,它是由Ultralytics开发的一种基于深度学习技术的目标检测算法。YOLOv5具有快速、高效、准确等特点,因而得到了广泛的应用。 在训练YOLOv5时,需要准备对应的数据集,其中包括图像及其对应的标注文件。以COCO128数据集为例,该数据集包含128张彩色图像,每张图像中包含一个目标,标注信息保存在JSON文件中。在进行训练之前,需要将COCO128数据集转化为YOLOv5需要的格式,即将标注信息转化为对应的坐标值与目标类别。 具体地,可以使用提供的pycocotools库中的相关函数来完成数据集的转化。然后,使用YOLOv5提供的训练脚本进行训练。在训练之前,可以选择使用预训练模型进行迁移学习,从而提高模型的收敛速度和准确性。此外,还可以根据需要调整模型的相关参数,如学习率、批次大小等。 在模型训练完成后,可以使用训练好的模型对新的图像进行目标检测,即通过给定一张图像,检测其中是否存在目标,并输出目标的类别、坐标等信息。此外,还可以评估模型的性能,如计算准确率、召回率等指标,从而对模型的性能进行评估和优化。 总之,训练YOLOv5模型需要准备对应的数据集和标注文件,进行数据预处理和格式转化,然后使用训练脚本进行模型训练。在训练完成后,可以使用训练好的模型进行目标检测,并对模型的性能进行评估和优化。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

墨理学AI

不必打赏,关注博主公众号即可

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值