YOLOV7详细解读(四)训练自己的数据集

本文详细介绍了如何使用YOLOV7进行目标检测训练,包括模型重参数化、标签分配策略、ELAN网络架构和辅助头训练等关键步骤。首先,通过git或压缩包下载项目,然后创建conda环境并安装依赖。接着,准备数据集,生成TXT文件,并配置yaml文件。下载权重文件后,开始训练模型,最后进行推理。在训练过程中可能会遇到无法下载权重文件的问题,可以手动下载并重命名。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言

继美团发布YOLOV6之后,YOLO系列原作者也发布了YOLOV7。
YOLOV7主要的贡献在于:

1.模型重参数化
YOLOV7将模型重参数化引入到网络架构中,重参数化这一思想最早出现于REPVGG中。
2.标签分配策略
YOLOV7的标签分配策略采用的是YOLOV5的跨网格搜索,以及YOLOX的匹配策略。
3.ELAN高效网络架构
YOLOV7中提出的一个新的网络架构,以高效为主。
4.带辅助头的训练
YOLOV7提出了辅助头的一个训练方法,主要目的是通过增加训练成本,提升精度,同时不影响推理的时间,因为辅助头只会出现在训练过程中。

一、下载整个项目

通过git 下载

git clone https://github.com/WongKinYiu/yolov7.git

或者直接下载压缩包

二、安装所需环境

建议使用conda虚拟环境

conda  create  --name  yolov7_env python=3.7 
conda activate yolov7_env
pip install -r requirements.txt

三、准备数据集

生成训练、验证的TXT文件:

import os
def get_txtdata(path):
    VOCdevkit_path = path
    file_names = os.listdir(VOCdevkit_path+"/images")
    train_num = 400
    train_path = os.path.join(VOCdevkit_path,'train.txt')
    val_path = os.path.join(VOCdevkit_path,'val.txt')
    train_file = open(train_path, 'w')
    val_file = open(val_path, 'w')

    for name in file_names[0:train_num]:
        img_path = os.path.join(VOCdevkit_path+"/Images",name)
        train_file.write(img_path + '\n')
    train_file.close()

    for name in file_names[train_num:]:
        img_path = os.path.join(VOCdevkit_path+"/Images",name)
        val_file.write(img_path + '\n')
    val_file.close()

if __name__=="__main__":
    VOCdevkit_path = 'dataset2'
    get_txtdata(VOCdevkit_path)

如图所示:

images:图片文件

labels:标签文件

train.txt:训练数据集的位置

val.txt:验证数据集的位置

在这里插入图片描述

四、配置文件

在data目录下新建一个yaml配置文件,按如图所示格式输入自己训练数据的信息

name:类别名字

nc:类别数量

train:训练集文件位置

val:验证集文件位置

在这里插入图片描述

names:
- balls
- person

nc: 2
train: dataset2/train.txt
val: dataset2/val.txt

五、下载权重文件

如下图所示,官网下载,但是速度会比较慢。
项目已经上传到网盘,可以通过网盘下载(链接在评论中)。

六、开始训练

修改模型名字和配置文件位置

在这里插入图片描述

python3 train.py

七、推理

模型路径和图片路径需要换成自己的

在这里插入图片描述

python3 detect.py

在这里插入图片描述

附录:遇到的问题

运行train.py的时候报错

subprocess.CalledProcessError: Command 'git tag' returned non-zero exit status 128.

解决:

这是由于网络波动或者防火墙无法连接到github下载权重文件。

手动下载权重文件,并修改名字yolo7.pt–>yolov7.pt

parser.add_argument('--weights', type=str, default='yolov7.pt', help='initial weights path')
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

江小皮不皮

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值