温州网站建设推广服务,wordpress转typecho,手机上购物哪个平台比较好,想做个小网站怎么做一点就分享系列#xff08;实践篇5-补更篇#xff09;[迟到补发]—Yolo系列算法开源项目融入V8旨在研究和兼容使用[持续更新] 题外话 去年我一直复读机式强调High-level在工业界已经饱和的情况#xff0c;目的是呼吁更多人看准自己#xff0c;不管是数字孪生交叉领域#…一点就分享系列实践篇5-补更篇[迟到补发]—Yolo系列算法开源项目融入V8旨在研究和兼容使用[持续更新] 题外话 去年我一直复读机式强调High-level在工业界已经饱和的情况目的是呼吁更多人看准自己不管是数字孪生交叉领域还是chatGPT等大模型热点大家都应该去延申自己的研究方向和工程技能栈事实证明这判断完全符合趋势也不是说明基础的检测、分割等任务没有研究和学习的意义所以今天抽空写一下。言归正传之所以现在才更博主要原因是去年开始我就接触了一些交叉方向以及快速的工程落地任务导致个人时间完全没有所以没有做到春节把代码上传。 在yolov8刚出时候我就加进了”玩具项目github实不相瞒我甚至第一时间并没有仔细看V8的Readme和创新点下意识使然觉得无非就是这些事实上确实也是不过出乎我意料的就是anchor-free和新的代码结构于是打算沿用V5代码风格融进去并完全兼容而且一直跟检测的同学也会觉得V5代码风格很亲切。一番修改后确实差不多了但唯独训练的时候发生了问题后大致定位到是用V5的数据处理结构存在问题可是同时我身兼多个业务的项目指标压力拉满毕竟要以工作业务为主同时考虑作者习惯不停更新代码所以我只完全把V8的anchor-free结构和V5的anchor代码风格融合通用了其余所有的训练和推理部分都是使用的V8代码命名为YOLO文件夹可分离使用这种做法看来是临时的迫于工作压力我做到这里同时看了官方的参数文件中标注V5数据读取处理是debug的大概和我估计的问题一致就停了并且我不确定是否全部整理成V5风格还是V8风格故还是先暂定这样近期同步V8仓库做代码相关的整合适配这些和算法创新无关然后上传到了项目地址https://github.com/positive666/yolo_research上如有使用问题也属正常可以提出来最好挂iussue上我会尽快解决和回复那么今天开始更更文章补补欠的债并持续更新优化代码不过由于工作节奏太快更新会较慢还望各位读者见谅。 文章目录一点就分享系列实践篇5-补更篇[迟到补发]—Yolo系列算法开源项目融入V8旨在研究和兼容使用[持续更新]工程结构目录和总结Feature ——概述yolov8改动详解网络结构动手修改V5代码适配V8分割模块补之前V5的分割坑顺便跟踪模块工程结构目录和总结
目前代码风格是以model.py为共同定义和解析网络结构为基础单独拓展yolo/v8 文件夹作为V8部分可独立使用。 项目地址以V5代码为基础新添加了临时版本的V8部分https://github.com/positive666/yolo_research
yolo_research
│ pose
│ └───── ## 关键点检测任务使用
│ ...
│ models ## 存储模型算子定义和所有模型的yaml结构定义包含yolov5\yolov7\yolov8
│ └───── cls 分类模型结构
│ pose 关键点模型结构
│ segment 分割模型结构
│ .... 其余是检测部分待整理
│ ....
│ segment
│ └───── ## 分割任务使用
| classify
│ └───── ## 分类任务使用
| tracker
│ └───── ## 跟踪任务使用 Fork V8
│ utils
│ └───── #通用部分代码
| .
| .
| segment ##分割的数据处理操作部分
| yolo
│ └───── v8 ## yolov8 core ,主要包含训练部分和推理使用部分的相关代码
│ └───── .
| cfg ## default.yaml 设置所有V8相关参数
| engine ## 定义基类结构
| utils
| data
| .
| .
| .
| ..其余为YOLO通用代码---
如果耐心看完我开篇的闲言碎语大概能理解这个目前的结构且也不是我最终的规划简而言之目前在该仓库yolov5—high_level基础上加入yolov8的部分保持以前的V5部分也就是目前我改的逻辑是所有v5.v8所有的模型结构的定义和解析分还是全部集中在model.py中但是V8还是在独立的文件下可以单独使用V5也是V8的命令内容正常使用和官方命令一样也可自己修改用脚本启动。 方式一、比如V8的官方命令解析
yolo taskdetect modetrain modelyolov8n.pt args...classify predict yolov8n-cls.yaml args...segment val yolov8n-seg.yaml args...export yolov8n.pt formatonnx args...也可以直接通过脚本启动后者自己构建调用如找到对应任务下需要你进入到cfg/default.yaml中去配置你的参数比如模型、数据等路径以及超参数。 方式二、在我的项目目录下可以这样使用 python yolo\v8\detect\train.py 在官方的目录下可以直接调包
from ultralytics import YOLO# Load a model
model YOLO(yolov8n.yaml) # build a new model from scratch
model YOLO(yolov8n.pt) # load a pretrained model (recommended for training)# Use the model
model.train(datacoco128.yaml, epochs3) # train the model
metrics model.val() # evaluate model performance on the validation set
#results model(https://ultralytics.com/images/bus.jpg) # predict on an image
#success model.export(formatonnx) # export the model to ONNX format
因为V8提供了全新的命令设计一套yolo的命令格式方式很简单就是现在最流行的低代码设计降低使用者门槛。 通过yolo task… model… arg… 的格式启动所有任务
Feature ——概述
这种创新点其实老生常谈了如果你是从21年看我偶尔随写的YOLO修改博客的话对于算子、结构、LOSS样本匹配的思路应该比较熟悉了可以看到V8版本在官方GIT上展示出了基于COCO性能的比对 左图展示在COCO数据验证集上的性能指标说明在精度提升的同时带来了参数量的提升在常规尺度的n/s/M的模型上参数量增加; 右图展示在COCO数据验证集上Tensorrt的性能指标A100 显卡上FP16精度推理下的速度展示总之可以看出V8精度更高但是相对V5来说牺牲了部分推理速度但是在如今检测器部署泛滥的年代这样的速度差异倒是可以忽略。 另外插一句不知道大家有没有近两年的检测项目包含V5-6.0版本开始已经不满足于检测去年我记得我把顺着V7官方推荐的V5版本的开源关键点检测融进我GIT的那天我晚上调好我习惯性看看V5作者的工程优化时候他就发出来分割代码了 当时就感觉不谋而合 是经典的基础视觉任务“通杀”的工程化模型还有开箱即用的Tensorrt等部署代码的工具都是清一色标配这也能从侧面反应检测、分类、分割等High-level经典任务算法和技术上已经趋于瓶颈我又来说这个了没办法因为去年接触过不少跨领域的东西感觉目前业界做CV除了纯科研产出论文等只做检测或者只研究检测远远不够话呢说回来基础还是要打好所以多兼顾就要多牺牲时间做CV越来越累也正常V8这次的出现褒贬不一不管是质疑SOTA技巧的缝合还是泛化性的不足也好终归也有我们学习的点。
下面我会尽量详细对于V8版本的一些新变化原理和代码等做出一些分析展示把可能短期都更完因为最近很多工程要做尽快完成更新并且我也会额外写出一个如何把V8代码嵌进各位自己修改改进的V5代码中很多读者是自己在V5上做了改进后适应了自己任务的特定数据集那么直接引入V8核心部分的程序使用可能会更方便简单规划总结下我心中V8的一些核心改动特色。
1. 性能提升并在检测、分类、分割三线任务中加入了最新的跟踪bytetrack等方法。
2. 模型结构变化核心算子块C3变成C2F由于增加了不少次shortcut在深层模型中梯度的问题得到缓解同时可能有利用特征重用 head部分沿用之前的解耦头取消掉了objectnetss分支使用了经典魔改利器之一的Distribution Focal
loss以积分表示BOX需要进行解码转换Anchor-free取消了先验anchor部分且提供了v5u的一系列anchorfree的V5、v8模型结构。
3. 训练部分 核心样本匹配策略改为动态匹配Taskaligened分配机制区分正负样本
4. 额外的工程化代码改动和自定以YOLO命令格式预告下面更新的内容进行详细分析感兴趣的可以先MARK读者也可以提议是完全使用V8代码风格还是保持V5的部分。 yolov8改动详解
网络结构
动手修改V5代码适配V8
分割模块补之前V5的分割坑顺便
跟踪模块