YOLOv7:快速目标检测算法详解

目标检测技术在多个领域有着广泛的应用,从简单的物品识别到复杂的自动驾驶汽车场景理解。本文将探讨最新的目标检测算法YOLOv7,并介绍如何在自定义数据集上应用该算法。

YOLO(You Only Look Once)是当前流行的目标检测模型框架,它首次将边界框预测和目标分类集成到一个端到端的可微分网络中。YOLOv7是YOLO家族中的最新成员,它在Darknet框架下创建并维护。YOLOv4已经被社区适配到TensorFlow,而YOLOv5则是首个基于PyTorch框架的YOLO模型,它更轻量且易于使用。尽管YOLOv7在标准基准测试COCO数据集上并没有超越YOLOv6,但它在处理小尺寸物体和物体尺寸不均时的性能有所提升。

以下是使用YOLOv7在自定义数据集上进行目标检测的详细步骤:

步骤1:准备数据集 要启动目标检测器,首先需要收集训练照片。应根据目标任务提前规划,尽可能减少模型需要处理的领域范围,以提高最终模型的准确性。如果没有数据,可以使用Open Images数据库,或者从Roboflow平台下载数据,该平台提供了多种数据集以供训练使用。

步骤2:标注数据集 使用LabelImg或其他标注工具对数据集进行标注。为每张图片创建一个同名的标注文本文件。YOLOv7接受的标签数据格式为文本文件,具体格式如下:

步骤3:分割数据集 标注完成后,将数据分为训练集和测试集。分割比例由用户决定,常见的比例为80%用于训练,20%用于测试。可以使用Python库Split Folder来随机分割数据。

pip install split-folders

输入文件夹应按照以下格式组织:

├── yolov7 ## └── train ####└── images (包含所有训练图片的文件夹) ####└── labels (包含所有训练标签的文件夹) ## └── test ####└── images (包含所有测试图片的文件夹) ####└── labels (包含所有测试标签的文件夹) ## └── valid ####└── images (包含所有验证图片的文件夹) ####└── labels (包含所有验证标签的文件夹)

步骤4:创建自定义训练配置文件 现在需要创建一个自定义的配置文件,训练过程将完全依赖于该文件。在yolov7/data文件夹中创建一个名为custom.yaml的文件,并粘贴以下代码。设置数据集文件夹的正确路径,修改类别数量和类别名称,然后保存。

Image_path Number_of_classes Classes_names_array train: (数据集训练文件夹的完整路径) test: (数据集测试文件夹的完整路径) valid: (数据集验证文件夹的完整路径) #Classes nc: 1 # 替换类别数量 #classes names #替换所有自定义类别名称列表 names: ['person', 'bicycle', 'car', 'motorcycle', 'airplane', ...]

完成所有预处理步骤后,可以开始训练。在yolov7的主目录下打开终端,激活虚拟环境,并执行以下命令:

git clone https://github.com/WongKinYiu/yolov7.git # 克隆 cd yolov7 pip install -r requirements.txt # 安装模块 wget https://github.com/WongKinYiu/yolov7/releases/download/v0.1/yolov7.pt # 下载预训练权重

步骤5:训练模型 python train.py --weights yolov7.pt --data "data/custom.yaml" --workers 4 --batch-size 4 --img 416 --cfg cfg/training/yolov7.yaml --name yolov7 --hyp data/hyp.scratch.p5.yaml 参数说明: - img = 模型训练时的图片大小,默认值为640。 - batch-size = 自定义数据集训练时使用的批次大小。 - epochs = 训练周期数,以获得最佳模型。 - data = 自定义配置文件路径。 - weights = 预训练的yolov7权重文件(yolov7.pt)。

步骤6:使用自定义权重进行推理 训练完成后,在终端执行以下命令,使用自定义权重进行检测。

python detect.py --weights runs/train/yolov7/weights/best.pt --source "测试图片的路径"

结论 YOLOv7在速度和准确性方面都有显著提升,它与基于RPN的模型相匹配甚至超越。该模型快速可靠,适用于各种场景。YOLOv7训练迅速,结论准确,性能出色。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485