YOLOv5项目梳理

1 项目介绍

参考项目:YOLO项目

1.1训练模型

YOLOv5模型
在这里插入图片描述

train.py 训练预训练模型

...
...
def parse_opt(known=False):# 命令行参数解析器初始化parser = argparse.ArgumentParser()# 初始权重路径,默认为 ROOT / 'yolov5s.pt',用于指定模型的初始权重文件路径或者设为空自己训练模型parser.add_argument('--weights', type=str, default=ROOT / 'yolov5s.pt', help='initial weights path')# 模型配置文件路径,默认为空字符串,用于指定模型的配置文件。parser.add_argument('--cfg', type=str, default='', help='model.yaml path')# 数据集配置文件路径,默认为 ROOT / 'data/coco128.yaml',用于指定数据集的配置文件。parser.add_argument('--data', type=str, default=ROOT / 'data/coco128.yaml', help='dataset.yaml path')# 超参数配置文件路径,默认为 ROOT / 'data/hyps/hyp.scratch.yaml',用于指定模型的超参数配置。parser.add_argument('--hyp', type=str, default=ROOT / 'data/hyps/hyp.scratch.yaml', help='hyperparameters path')# 训练的总轮数,默认为 300parser.add_argument('--epochs', type=int, default=300)# 每个GPU的总批量大小,默认为 16parser.add_argument('--batch-size', type=int, default=16, help='total batch size for all GPUs')# 训练和验证图像的大小(像素数),默认为 640。parser.add_argument('--imgsz', '--img', '--img-size', type=int, default=640, help='train, val image size (pixels)')# 是否进行矩形训练的标志parser.add_argument('--rect', action='store_true', help='rectangular training')# 是否恢复最近的训练(是:自动加载最近训练的那一步模型)parser.add_argument('--resume', nargs='?', const=True, default=False, help='resume most recent training')# 只保存最终的检查点(过程中检查点不在保存)parser.add_argument('--nosave', action='store_true', help='only save final checkpoint')# 仅在最终时验证。parser.add_argument('--noval', action='store_true', help='only validate final epoch')# 禁用自动锚点检查parser.add_argument('--noautoanchor', action='store_true', help='disable autoanchor check')# 进化超参数进行 x 代演化。# 可能意味着在某个优化过程中,通过进化算法对模型的超参数进行了多轮(x 代)的优化和演化。这种方法可以自动地探索超参数空间,并尝试找到最优的超参数设置,以便最大化模型的预测能力或其他性能指标。parser.add_argument('--evolve', type=int, nargs='?', const=300, help='evolve hyperparameters for x generations')# gsutil 存储桶parser.add_argument('--bucket', type=str, default='', help='gsutil bucket')# 指在处理图像时选择将缓存存储在 RAM(默认)或者磁盘中,这种缓存通常用于加快图像处理的速度parser.add_argument('--cache', type=str, nargs='?', const='ram', help='--cache images in "ram" (default) or "disk"')# 是否使用加权图像选择进行训练parser.add_argument('--image-weights', action='store_true', help='use weighted image selection for training')parser.add_argument('--device', default='', help='cuda device, i.e. 0 or 0,1,2,3 or cpu')# 是否对图像尺寸进行变化parser.add_argument('--multi-scale', action='store_true', help='vary img-size +/- 50%%')# 将多类数据作为单类进行训练parser.add_argument('--single-cls', action='store_true', help='train multi-class data as single-class')# 是否使用 torch.optim.Adam() 优化器parser.add_argument('--adam', action='store_true', help='use torch.optim.Adam() optimizer')parser.add_argument('--sync-bn', action='store_true', help='use SyncBatchNorm, only available in DDP mode')parser.add_argument('--workers', type=int, default=0, help='maximum number of dataloader workers')# 保存到项目/名称parser.add_argument('--project', default=ROOT / 'runs/train', help='save to project/name')# 保存的项目/名称。parser.add_argument('--name', default='exp', help='save to project/name')# 设置为true每次预测结果默认保存上述文件夹,不再创建新的文件夹parser.add_argument('--exist-ok', action='store_true', help='existing project/name ok, do not increment')# 四重数据加载器parser.add_argument('--quad', action='store_true', help='quad dataloader')# 线性学习率parser.add_argument('--linear-lr', action='store_true', help='linear LR')# 标签平滑的 epsilon 值。parser.add_argument('--label-smoothing', type=float, default=0.0, help='Label smoothing epsilon')# EarlyStopping 的等待时间parser.add_argument('--patience', type=int, default=100, help='EarlyStopping patience (epochs without improvement)')# 要冻结的层数。parser.add_argument('--freeze', type=int, default=0, help='Number of layers to freeze. backbone=10, all=24')# 每 x 轮保存检查parser.add_argument('--save-period', type=int, default=-1, help='Save checkpoint every x epochs (disabled if < 1)')parser.add_argument('--local_rank', type=int, default=-1, help='DDP parameter, do not modify')# Weights & Biases argumentsparser.add_argument('--entity', default=None, help='W&B: Entity')parser.add_argument('--upload_dataset', action='store_true', help='W&B: Upload dataset as artifact table')parser.add_argument('--bbox_interval', type=int, default=-1, help='W&B: Set bounding-box image logging interval')parser.add_argument('--artifact_alias', type=str, default='latest', help='W&B: Version of dataset artifact to use')opt = parser.parse_known_args()[0] if known else parser.parse_args()return opt
...
...

1.加载预训练完成的模型,进行进一步训练

# 初始权重路径,默认为 ROOT / 'yolov5s.pt',用于指定模型的初始权重文件路径或者设为空自己训练模型parser.add_argument('--weights', type=str, default=ROOT / 'yolov5s.pt', help='initial weights path')

训练完成后,会生成在训练过程中最好的模型与最新的模型

在这里插入图片描述
2.存放预模型的相关参数

# 模型配置文件路径,默认为空字符串,用于指定模型的配置文件。parser.add_argument('--cfg', type=str, default='', help='model.yaml path')

在这里插入图片描述

3.数据集的相关配置文件

# 数据集配置文件路径,默认为 ROOT / 'data/coco128.yaml',用于指定数据集的配置文件   
parser.add_argument('--data', type=str, default=ROOT / 'data/coco128.yaml', help='dataset.yaml path')

在这里插入图片描述
4.超参数配置文件路径

# 超参数配置文件路径,默认为 ROOT / 'data/hyps/hyp.scratch.yaml',用于指定模型的超参数配置。
parser.add_argument('--hyp', type=str, default=ROOT / 'data/hyps/hyp.scratch.yaml', help='hyperparameters path')

在这里插入图片描述
5.每次训练完的模型、参数、结果等均保存到该位置

# 保存到项目/名称
parser.add_argument('--project', default=ROOT / 'runs/train', help='save to project/name')
# 保存的项目/名称。
parser.add_argument('--name', default='exp', help='save to project/name')

在这里插入图片描述

1.2使用模型

detect.py使用预训练或者上述训练完成的模型进行预测

...
...
if __name__ == '__main__':# 创建了一个ArgumentParser对象,用于处理命令行参数。parser = argparse.ArgumentParser()# 加载训练好的模型赋予权值parser.add_argument('--weights', nargs='+', type=str, default='yolov5s.pt', help='model.pt path(s)')# 指定网络的输入parser.add_argument('--source', type=str, default='data/images', help='source')  # file/folder, 0 for webcam# 训练过程中照片的尺寸parser.add_argument('--img-size', type=int, default=640, help='inference size (pixels)')# 置信度  检测概率超过某个值,才判断预测成功parser.add_argument('--conf-thres', type=float, default=0.25, help='object confidence threshold')# 多个框重合度在某个标准时,才合为一个框(一个目标)parser.add_argument('--iou-thres', type=float, default=0.45, help='IOU threshold for NMS')parser.add_argument('--device', default='', help='cuda device, i.e. 0 or 0,1,2,3 or cpu')# 展示内容parser.add_argument('--view-img', action='store_true', help='display results')# 保存为txt文本parser.add_argument('--save-txt', action='store_true', help='save results to *.txt')# 保存为置信度parser.add_argument('--save-conf', action='store_true', help='save confidences in --save-txt labels')parser.add_argument('--nosave', action='store_true', help='do not save images/videos')# 规定展示预测哪一个类别   --class 0  只展示下标为0的类别parser.add_argument('--classes', nargs='+', type=int, help='filter by class: --class 0, or --class 0 2 3')# 增强的NMS  多个框重合度在某个标准时,才合为一个框(一个目标)parser.add_argument('--agnostic-nms', action='store_true', help='class-agnostic NMS')# 增强预测  提高预测准确parser.add_argument('--augment', action='store_true', help='augmented inference')parser.add_argument('--update', action='store_true', help='update all models')# 运行结果保存的位置parser.add_argument('--project', default='runs/detect', help='save results to project/name')# 运行结果保存的文件夹名称parser.add_argument('--name', default='exp', help='save results to project/name')# 设置为true每次预测结果默认保存上述文件夹,不再创建新的文件夹parser.add_argument('--exist-ok', action='store_true', help='existing project/name ok, do not increment')opt = parser.parse_args()print(opt)check_requirements(exclude=('pycocotools', 'thop'))with torch.no_grad():if opt.update:  # update all models (to fix SourceChangeWarning)for opt.weights in ['yolov5s.pt', 'yolov5m.pt', 'yolov5l.pt', 'yolov5x.pt']:detect()strip_optimizer(opt.weights)else:detect()
...
...

1.加载训练好的模型,可以是预训练模型,也可以是上述训练的模型

# 加载训练好的模型赋予权值
parser.add_argument('--weights', nargs='+', type=str, default='yolov5s.pt', help='model.pt path(s)')

2.待预测识别的图片或视频

# 指定网络的输入
parser.add_argument('--source', type=str, default='data/images', help='source')  # file/folder, 0 for webcam

在这里插入图片描述
3.每次识别完的结果保存到该位置

# 运行结果保存的位置
parser.add_argument('--project', default='runs/detect', help='save results to project/name')
# 运行结果保存的文件夹名称
parser.add_argument('--name', default='exp', help='save results to project/name')

在这里插入图片描述

2 YOLO数据集

数据与label进行标注MakeSense
在这里插入图片描述

标注完成后,导出数据集
由此建立该数据集的配置文件
parser.add_argument('--data', type=str, default=ROOT / 'data/coco128.yaml', help='dataset.yaml path')

# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]train: images/train2017  # train images (relative to 'path') 128 images
val: images/train2017  # val images (relative to 'path') 128 images
test:  # test images (optional)# Classes
nc: 80  # number of classes
names: ['person', 'bicycle', 'car', 'motorcycle', 'airplane', 'bus', 'train', 'truck', 'boat', 'traffic light','fire hydrant', 'stop sign', 'parking meter', 'bench', 'bird', 'cat', 'dog', 'horse', 'sheep', 'cow','elephant', 'bear', 'zebra', 'giraffe', 'backpack', 'umbrella', 'handbag', 'tie', 'suitcase', 'frisbee','skis', 'snowboard', 'sports ball', 'kite', 'baseball bat', 'baseball glove', 'skateboard', 'surfboard','tennis racket', 'bottle', 'wine glass', 'cup', 'fork', 'knife', 'spoon', 'bowl', 'banana', 'apple','sandwich', 'orange', 'broccoli', 'carrot', 'hot dog', 'pizza', 'donut', 'cake', 'chair', 'couch','potted plant', 'bed', 'dining table', 'toilet', 'tv', 'laptop', 'mouse', 'remote', 'keyboard', 'cell phone','microwave', 'oven', 'toaster', 'sink', 'refrigerator', 'book', 'clock', 'vase', 'scissors', 'teddy bear','hair drier', 'toothbrush']  # class names

训练即可

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/47613.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Navicat 17 for Mac 数据库管理软件

Mac分享吧 文章目录 效果一、准备工作二、开始安装1. 双击运行软件&#xff0c;将其从左侧拖入右侧文件夹中&#xff0c;等待安装完毕。2. 应用程序/启动台显示Navicat图标&#xff0c;表示安装成功。 二、运行测试运行后提示&#xff1a;“Navicat Premium.pp”已损坏&#x…

在qt的c++程序嵌入一个qml窗口

//拖拽一个QQuickWidget c端和qml通信的桥梁 找到qml的main.qml的路径 ui->quickWidget->setSource(QUrl::fromLocalFile("../../../code/main.qml"));// QML 与 Qt Widgets 通信//窗口就成了一个类实例对象pRoot (QObject*)ui->quickWidget->rootObje…

redis面试基础知识

redis的数据类型 Redis是一个key-value的数据库&#xff0c;key一般是String类型&#xff0c;不过value的类型多种多样&#xff1a; 五种基本数据类型 Redis 通用命令 通用指令是部分数据类型的&#xff0c;都可以使用的指令&#xff0c;常见的有&#xff1a; KEYS&#xff…

思维(交互题),CF 1990E2 - Catch the Mole(Hard Version)

一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 E2 - Catch the Mole(Hard Version) 二、解题报告 1、思路分析 考虑每次误判都会让鼹鼠上升一层&#xff0c;相应的&#xff0c;最外层的一层结点都没用了 由于数据范围为5000&#xff0c;我们随便找个叶子…

Electron案例解析-编写一个简单的electron程序

index.html <!DOCTYPE html> <html> <head><meta charset"UTF-8" /><!-- 内容安全策略--><metahttp-equiv"Content-Security-Policy"content"default-src self; script-src self"/><metahttp-equiv&quo…

C语言-栈和队列

文章目录 &#x1f3af;引言&#x1f453;栈和队列1.栈1.1栈的概念与结构1.2栈的实现 2.队列2.1队列的概念与结构2.2队列的实现 &#x1f947;结语 &#x1f3af;引言 欢迎来到HanLop博客的C语言数据结构初阶系列。在之前的文章中&#xff0c;我们详细介绍了链表及其操作方法。…

8年前端总结和感想(转)~

我是牛奶&#xff0c;本文是我前端工作 8 年的一些总结和感想 主要记录下个人点滴、前端知识点、场景应用、未来的憧憬以及个人规划&#xff0c;供自己以后查漏补缺&#xff0c;也欢迎同道朋友交流学习。 自我介绍 我是一名工作在非知名公司的 8 年前端&#xff0c;双非普通本…

JMeter使用手册

安装 下载地址 https://jmeter.apache.org/download_jmeter.cgi 下载后解压到win的文件夹中 打开JMeter的bin文件夹&#xff0c;双击这个jar就启动了JMeter 启动 出现这样的界面 基本使用 添加变量 这个变量在使用的时候可以被引用 创建线程组 所有的请求都得基于…

Linux:Linux进程概念

目录 前言 1. 冯诺依曼体系结构 2. 操作系统 2.1 什么是操作系统 3. 进程 3.1 基本概念 3.2 描述进程——PCB 3.3 进程和程序的区别 3.4 task_struct-PCB的一种 3.5 task_struct的内容分类 4. 查看进程 4.1 通过系统文件查看进程 4.2 通过ps指令查看进程 4.3 …

lse:一款专为渗透测试和CTF设计的Linux枚举工具

关于linux-smart-enumeration linux-smart-enumeration是一款专为渗透测试和CTF设计的Linux枚举工具&#xff0c;该工具可以帮助广大研究人员收集与本地Linux系统安全相关的信息。 工具特性 该工具从2.0版本开始符合POSIX标准&#xff0c;并且经过了shellcheck和posh测试。它…

前端三大主流框架Vue React Angular有何不同?

前端主流框架&#xff0c;Vue React Angular&#xff0c;大家可能都经常在使用&#xff0c;Vue React&#xff0c;国内用的较多&#xff0c;Angualr相对用的少一点。但是大家有思考过这三大框架的不同吗&#xff1f; 一、项目的选型上 中小型项目&#xff1a;Vue2、React居多…

【数据结构-前缀和】力扣2550.统计范围内的元音字符串数

给你一个下标从 0 开始的字符串数组 words 以及一个二维整数数组 queries 。 每个查询 queries[i] [li, ri] 会要求我们统计在 words 中下标在 li 到 ri 范围内&#xff08;包含 这两个值&#xff09;并且以元音开头和结尾的字符串的数目。 返回一个整数数组&#xff0c;其中…

中文诗歌生成

用transformer在诗歌集上训练出的模型 import os os.environ["KERAS_BACKEND"] "tensorflow" # param ["tensorflow", "jax", "torch"] os.environ[TF_CPP_MIN_LOG_LEVEL] 2 os.environ[HF_ENDPOINT] https://hf-mirro…

IT程序员的黄金机遇

在这个数字化时代&#xff0c;IT程序员不仅是技术革新的推动者&#xff0c;更是全球经济的重要支柱。而对于拥有一技之长的IT人才来说&#xff0c;加拿大正敞开大门&#xff0c;提供一片充满机遇的热土。本文将为你揭示为何加拿大是IT程序员移民的不二之选&#xff0c;并提供实…

SecureCRT (mac or windows)解决中文显示乱码

中文乱码问题的方法主要包括设置SecureCRT的编码为UTF-8以及设置LANG环境变量为zh_CN.UTF-8。‌ 1.设置SecureCRT的编码为UTF-8&#xff1a;‌ 打开SecureCRT&#xff0c;‌进入Options -> Global Options -> Default Session -> Edit Default Settings-> Appear…

深入理解设计模式:六大经典模式解析

深入理解设计模式&#xff1a;六大经典模式解析 1. 单例模式&#xff08;Singleton Pattern&#xff09;1.1 概述1.2 示例场景1.3 实现要点 2. 工厂模式&#xff08;Factory Pattern&#xff09;2.1 简单工厂2.2 抽象工厂2.3 示例场景2.4 实现要点 3. 观察者模式&#xff08;Ob…

Idea配置远程开发

Idea配置远程开发 本篇博客介绍使用idea通过ssh连接ubuntu服务器进行开发 目录 Idea配置远程开发1.idae上点击file->Remote Development2.点击New Connection3.填写相关信息4.输入密码5.选择IDE版本和项目路径5.1 点击open an SSH terminal打开控制台5.2 依次执行命令 6.成…

竖版html网页简易抽奖系统

<!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>在线抽奖 随机选取 自动挑选</title> <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <script src"htt…

初阶数据结构的实现1 顺序表和链表

顺序表和链表 1.线性表1.1顺序表1.1.1静态顺序表&#xff08;不去实现&#xff09;1.1.2动态顺序表1.1.2.1 定义程序目标1.1.2.2 设计程序1.1.2.3编写代码1.1.2.3测试和调试代码 1.1.2 顺序表的问题与思考 1.2链表1.2.1链表的概念及结构1.2.1.1 定义程序目标1.2.1.2 设计程序1.…

人工智能算法工程师(高级)课程4-图像生成项目之自编码生成模型与代码详解

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下人工智能算法工程师(高级)课程4-图像生成项目之自编码生成模型与代码详解。自编码生成模型&#xff08;Autoencoder&#xff09;是一种无监督学习算法&#xff0c;旨在通过编码器和解码器学习数据的有效表示。本文将…