yolo_research

GitHub
729 141 较难 1 次阅读 6天前GPL-3.0开发框架语言模型图像
AI 解读 由 AI 自动生成,仅供参考

yolo_research 是一个面向计算机视觉开发者与研究人员的开源项目,旨在提供一个高度灵活且功能全面的 YOLO 算法研究平台。它深度整合了 YOLOv5、YOLOv7 及 YOLOv8 的核心代码,统一支持目标检测、姿态估计、图像分类、实例分割以及目标跟踪等多种高阶任务。

该项目主要解决了研究人员在不同 YOLO 版本间切换困难、新特性(如注意力机制、Swin Transformer V2)集成复杂以及工程部署门槛高等痛点。通过模块化设计,yolo_research 允许用户自由组合网络组件,轻松进行模型改进实验和定制化训练。此外,项目还配套了自动标注工具,显著降低了数据准备成本,并提供了针对 Linux 平台的 DeepStream 部署方案,打通了从算法研发到落地应用的全流程。

其独特亮点在于持续同步官方最新优化,同时保留了大量学术界的创新结构(如各类 Attention 模块),并详细记录了训练技巧与参数调优经验。无论是希望深入理解 YOLO 架构的算法工程师,还是需要快速验证新想法的科研人员,亦或是寻求高效业务定制的企业开发者,都能从中获得极大的便利。

使用场景

某工业质检团队正在开发一套针对精密零部件的多任务视觉检测系统,需同时完成缺陷定位、型号分类及微小划痕分割。

没有 yolo_research 时

  • 多模型维护成本高:检测、分类和分割任务需分别搭建 YOLOv5、v7 或 v8 独立环境,代码库割裂导致工程结构混乱,难以统一迭代。
  • 前沿算法集成困难:想引入 SwinTransformerV2 或特定注意力机制(Attention Series)提升小目标检出率时,需手动修改底层源码,极易引发兼容报错或训练不收敛。
  • 数据标注效率低下:面对海量未标注的产线图片,缺乏自动化工具,完全依赖人工逐帧框选,耗时数周且标准不一。
  • 部署适配复杂:从训练到 C++ 工程化部署(如 DeepStream)存在巨大鸿沟,算子定义不一致导致模型转换失败,落地周期被大幅拉长。

使用 yolo_research 后

  • 一站式多任务集成:直接在统一框架下调用 detect、classify、segment 及 pose 模块,自由组合 YOLOv5/v7/v8 核心架构,单一代码库即可管理所有实验。
  • 即插即用先进组件:内置调试成熟的 SwinTransformerV2 及多种注意力层,仅需修改 YAML 配置即可加载预训练权重,显著提升了微小划痕的识别精度。
  • 自动化标注加速:利用集成的"You Only click Once"工具,通过提示词驱动实现批量自动标注,将原本数周的数据准备工作压缩至数天。
  • 平滑工程落地:提供标准化的算子定义与 C++ 部署接口,消除了训练与推理间的结构差异,快速完成从模型训练到产线边缘设备的交付。

yolo_research 通过高度集成的架构与自动化工具链,将多任务视觉算法的研发周期缩短了 60%,让团队能专注于业务逻辑而非底层代码修补。

运行环境要求

操作系统
  • Linux
  • Windows
  • macOS
GPU
  • 需要 NVIDIA GPU (用于训练和多卡分布式训练),支持 CUDA
  • DeepStream 部署仅限 Linux
  • 具体显存和 CUDA 版本未说明,建议根据 YOLOv8/v7 官方要求配置 (通常推荐 8GB+ 显存,CUDA 11.7+)
内存

未说明 (建议 16GB+ 以处理大型数据集和多卡训练)

依赖
notes1. 项目整合了 YOLOv5, v7, v8 代码。若使用官方 YOLOv8 预训练权重,必须安装 'ultralytics' 库 (pip install ultralytics),否则可能因模型层命名问题导致报错。 2. 支持多机多卡分布式训练 (DistributedDataParallel)。 3. DeepStream 部署功能目前仅支持 Linux 平台。 4. 训练 YOLOv7 辅助头 (aux-head) 模型时需注意特定参数设置。 5. 部分注意力机制 (如 SwinTransformer) 在 FP16 模式下可能需要特殊处理或关闭混合精度。
python3.8+ (基于 PyTorch 和 ultralytics 的常规兼容性推断,文中未明确指定具体版本号)
torch
ultralytics
numpy
opencv-python
pyyaml
tqdm
pandas
seaborn
thop
yolo_research hero image

快速开始

🚀 yolo_research PLUS 高级版

🚀🚀🚀新增一键批量自动生成标注的工具You Only click Once ,Prompt-Can-Anything:自动标注工具 🚀🚀🚀添加最新V8核心yolov8解析:https://blog.csdn.net/weixin_44119362/article/details/129417459 ,(工作繁忙,会不断更新优化,有问题请提交issue)

⭐新闻板块【实时更新&&记录学习】

- 2023/5/15 更新来自ultralytics的rt-detr模型和数据增强mosica9,工程还存在不少问题和优化工作,不影响使用前提下,会业余花时间会慢慢更新。
- 2023/4/27 添加一键批量自动生成标注的工具You Only click Once ,[Prompt-Can-Anything:自动标注工具](https://github.com/positive666/Prompt-Can-Anything)
- 2023/4/6  从2021年到2023年,即使不做检测,依然坚持更新,搬砖不易,后续会有更多更新,但是目前先集成稳定各个功能为主:更新v8的pose模块,支持v8代码训练自定义的网络结构并加载权重训练;之前的问题作个简单解释:就是在安装源码环境后其实只是支持你解析官方的预训练权重,如果你用本项目的代码训练后,可以卸载掉源码环境,继续更新中
- 2023/3/28 同步兼容最新的V8代码更新:目前V8依赖于pip install ultralytics,我在代码更新中也发现了该问题,虽然本项目做了分离,但是使用官方权重作为预训练权重去加载的前提下:仍然需要依赖中的ultralytics.nn文件夹,不然可能会报错,因为是这样的本项目改了模型层的参数名字,因为V8每层的名字是带“ultralytics.nn ”的,如果不安装这个部分代码,你torch打不开V8官方的权重,故目前两种解决办法:1.scratch 2.pip安装后打开将权重名字重构 3.代码目录修改 后续我会优化解决,不过目前项目中的工作太多了,故如果出现报错还是使用临时解决方案:pip install ultralytics,这样比较简单直接兼容,然后可以运行 python train_v8.py ,未解决的就是如果自定义机构可能无法直接加载官方的权重,汇后续解决!  
- 2023/3/1  add v8 core:春节期间看V8,由于近半年项目比较多也是耽误了好久(原版本是将V8的所有功能全部融合到了V5的代码中,和V8命令一样,但是训练的时候发生了问题,排查发现问题发生在V5的数据读取处理,所以暂时使用V8的训练结构代码,也便于区分),然后抓紧时间不停更新;
- 2022/11/23 修复已知BUG,V7.0版本更新兼容,年底比较忙后续忙完业务会大更新
- 2022/10/20 修复适配V7结构和额外任务引起的一些代码问题,实时更新V5的代码优化部分,添加了工具grad_cam在tools目录。
- 2022/9/19 修复已知BUG,更新了实时的V5BUG修复和代码优化融合验证,核心检测、分类、分割的部分CI验证,关键点检测实测训练正常,基本功能整理完毕。
- 2022/9/15 分类、检测、分割、关键点检测基本整合完毕,工程结构精简化中,关键点检测训练正常已经验证,分割待调试,火速迭代中
- 分割代码结合V5和V7的代码进行了合并DEBUG调试,训练部分待验证,另外注意力层训练过程中,没法收敛或者NAN的情况,排除代码问题,需要在超参数YAML里,先对学习衰减率从改为0.2 ,比如GAM的注意力头部问题,训练周期加到400epoch+ 就可以。
- 去年的decoupled结构虽然能提点,不过FLOPS增加的太多,目前用V5作者分支的解耦头替换,效果待验证。
- 融合了代码做了部分的优化,这里看了下V7的代码优化较差,后续会集成精简版本的分类、分割、检测、POSE检测的结构,目前已经完成了一部分工作,更新频繁有问题欢迎反馈和提供实验结果。

关于这个项目的使用说明详请可参考下面博客: csdn持续更新2021-2022年 ,csdn持续更新2023年

当前 Project 结构说明
yolo_research
│   pose  
│   └─────   ## 关键点检测任务使用
│   ...    
│   models   ## 存储模型:算子定义和所有模型的yaml结构定义,包含yolov5\yolov7\yolov8  

    └─────   common.py   模型算子定义
             yolo.py     模型结构定义
│   └─────   cls         分类模型结构
│            pose        关键点模型结构
│            segment     分割模型结构
│            detect  v5u_cfg/v7_cfg/v8_cfg    检测模型结构..其余是V5版本以及一些改的参考示例      
│   ....
│   segment
│   └─────   ## 分割任务
|   classify
│   └─────   ## 分类任务
|   tracker
│   └─────   ## 跟踪任务 Fork V8
│   utils
│   └─────   #通用部分代码
|          .
|          .
|            segment   ##分割的数据处理操作部分
|   yolo
│   └─────   v8        ## yolov8 core ,主要包含训练部分和推理使用部分的相关代码
│             └───── .
|            cfg       ## default.yaml 设置所有V8相关参数
|            engine    ## 定义基类结构
|           utils
|            data
|               .
|               .
|       .
|       .    ##其余为检测核心代码和通用部分

特性 🚀

 - 最新的yoloV5工程风格代码融合,支持自由定义搭配所有组件,加入V8部分,兼容了anchor-free的yolov8,针对High-level任务:完成先进的检测器、跟踪器、分类器、分割、关键点检测功能任务集成,逐步删除额外库依赖
 
 - 实时的v5代码更新改动&&v7等work的结构适配(每周同步yolov5的代码优化)
 
 - 早期集成的attention、self-attention维护和调试
 
 - 额外的网络结构和Tricks补充
	
 - deepstream部署工程(仅限Linux平台:目前git上是21年开源的5.1版本,后续如果有空整理好说明上传6.xxx的版本)
关于模型修改和设计
 - 2021年在CSDN中介绍过一些范式示例包含注意力、自注意力层等机制早期引入了一些比较有热度的修改,其实在如今图像基础任务表现里,CNN和transformer并不没有明显差距,个人觉得作为学习积累就好。比如swinv1和v2等一些当时流行的论文网络组件,以及同样的NECK、HEAD、LOSS的添加,你可以参考github项目中的yaml结构示例去自己尝试修改模型,就是希望大家能够多思考多积累且自己动手实现,也是我当初文章的本意,而不是只限于一种范式或几种结构,如果遇到问题欢迎分享讨论,具体可以看博客中的[修改建议](https://editor.csdn.net/md/?articleId=126895964)

 - 对于自注意力机制的使用:很多人与CNN相结合使用得到精度提升,个人理解:原因不仅仅是长距离的依赖,早期我们使用固定权重的滤波器提取边缘再到CNN,CNN也许是对应着高通滤波,而self-attention对应于低通滤波,那么相当于对featuremap进行了一次平滑,这样从某种程度上可以解释互补之后的提升;而且transfromer是很难发生过拟合或者说不存在,同时由于增量爆炸和工程开发的现象,使得其并不好训练,但是动态特性确实更具泛化性,常规情况中优先考虑你训练数据集的拟合够不够好,你的模型是否能反映出数据之间的特征特异性,其次扩充构建相应的辅助分支加入特征属性描述。

CSDN同步更新,主页可按兴趣原创文章点击 (保证每周同步更新一次维护,不定期更新算法代码和引进结果实验!关于消融实验大多来自朋友的热心反馈,探究范式CNN和transformer,如何根据经验设计网络结构、LOSS改进、辅助训练分支、样本匹配.... 恢迎提供实验数据和結果~)

安装 克隆仓库并安装 [requirements.txt](https://github.com/positive666/yolo_research/requirements.txt)
git clone https://github.com/positive666/yolo_research  # 克隆
cd yolov5_research
pip install -r requirements.txt  # 安装
YOLOV8 在conda环境中安装及官方命令

pip install ultralytics

if you pip install ultralytics,you can run offical command

yolo task=detect    mode=train   data=<data.yaml path>      model=yolov8n.pt        args...
          classify       predict        coco-128.yaml       yolov8n-cls.yaml  args...
          segment        val                                yolov8n-seg.yaml  args...
                         export                             yolov8n.pt        format=onnx  args...

ps: if your model=*.yaml -->scratch else use pretrained models python命令 :

if use this repo ,you need set your data和model路径在cfg/default.yaml

    
    python train_v8.py  --<args>

推理部分和V5、V8的代码兼容 add --v8_det(supprot v8 models)

多GPU分布式数据并行 使用DistributedDataParallel,多个进程只进行倒数传播,每个GPU都进行一次梯度求导和参数更新,这比DataParallel的方式更高效,因为DataParalledl只有一个主GPU进行参数更新,所以需要各个子进程调用的GPU传递倒数到主GPU后,才会更新参数給各个GPU,所以这会比DistributedDataParallel每个GPU直接进行参数更新要慢很多。 –nproc_per_node: 作为GPU的使用数量节点数 –batch:总batch-size ,然后除以Node数量 ,平均给每个GPU。 ```bash python -m torch.distributed.run --nproc_per_node 2 train.py --batch 64 --data coco.yaml --weights yolov5s.pt --device 0,1 ```
多机器&&多GPU ```bash 主机 python -m torch.distributed.run --nproc_per_node G --nnodes N --node_rank 0 --master_addr "192.168.1.1" --master_port 1234 train.py --batch 64 --data coco.yaml --cfg yolov5s.yaml --weights '' #多个副机 python -m torch.distributed.run --nproc_per_node G --nnodes N --node_rank R --master_addr "192.168.1.1" --master_port 1234 train.py --batch 64 --data coco.yaml --cfg yolov5s.yaml --weights '' ``` –master_port:端口号 master_addr:主进程ip地址 G:每个机器的GPU数量 N:机器数量 R:子机器序号

目标检测篇

使用detect.py进行推理
python detect.py --source 0  # 网络摄像头     --weights <你的模型权重>
                          img.jpg  # 图像
                          vid.mp4  # 视频
                          path/  # 目录
                          'path/*.jpg'  # 全局匹配
                          'https://youtu.be/Zgi9g1ksQHc'  # YouTube
                          'rtsp://example.com/media.mp4'  # RTSP、RTMP、HTTP 流

yolov7 官方的训练权重打包链接:https://pan.baidu.com/s/1UIYzEZqTPMUpWWBBczOcgA?pwd=v7v7(由于我删除了P6模型里的Reorg操作和Focus没本质区别,所以删掉需要重新训练,如果你想使用V7原始权重,你只需要在YAML里改回去,还有一种方式是遍历Reorg的权重把它替换掉) 提取码:v7v7

训练

参见train.py参数,命令如下:

python train.py --data <你的数据yaml>  --cfg  <你的模型yaml> --weights <权重路径>  --batch-size 128    --hyp   <hyps yaml>  --batch-size <数字>  
注释
  • “--swin_float” 用于“SwinTransformer_Layer”层,因为“@”不支持fp16,所以可以使用官方yolov7的“Swinv2Block”。
  • “--aux_ota_loss”仅适用于辅助头。例如“models/detect/v7_cfg/training/yolov7x6x.yaml, (P6模型)”,你可以创建带有辅助头的模型。
  • hyps文件中的“ota_loss”,ota_loss默认=0
训练命令示例
  • 运行yolov7-P5模型训练以及yolov5系列模型的训练,无论是从头开始还是微调,都需要一个权重。
python train.py  --data data/coco128.yaml  --cfg models/detect/yolov5s_decoupled.yaml   
python train.py  --cfg  models/detect/v7_cfg/training/yolov7.yaml  --weights yolov7.pt  --data (自定义数据集) --hyp data/hyps/hyp.scratch-v7.custom.yaml	
  • 运行yolov7辅助模型训练,你的模型必须是P6模型!
python train.py  --cfg  models/detect/v7_cfg/training/yolov7w6.yaml --imgsz 1280  --weights ‘yolov7-w6_training.pt’  --data (自定义数据集)  --aux_ota_loss  --hyp data/hyps/hyp.scratch-v7.custom.yaml
  • 训练完成后,在yaml结构下,你的初始权重xxx. PT会变成经过训练的yolov7xxx.pt,并附有重参数化脚本的具体说明。然后使用部署模型加载你的训练权重,通过更改索引和结构来对模型进行重参数化。
重参数化训练后的yolov7模型
   python reparameterization.py  --weights <yolov7.pt,yolov7e6e.pt.....>  --name <模型名称 > --save_file   models/v7_cfg/deploy  --cfg <模型.yaml>
官方模型库
模型 尺寸
(像素)
mAPval
50-95
速度
CPU ONNX
(ms)
速度
A100 TensorRT
(ms)
参数量
(M)
FLOPs
(B)
YOLOv8n 640 37.3 80.4 0.99 3.2 8.7
YOLOv8s 640 44.9 128.4 1.20 11.2 28.6
YOLOv8m 640 50.2 234.7 1.83 25.9 78.9
YOLOv8l 640 52.9 375.2 2.39 43.7 165.2
YOLOv8x 640 53.9 479.1 3.53 68.2 257.8

关键点检测篇

数据集构建
yolov5_research
│   pose  
│   └─────(关键点检测代码 )
│   ...   
│
coco_kpts(你的数据yaml路径名称 )
│   images
│   annotations/**.json
|   labels
│   └─────train2017
│       │       └───
|       |       └───
|       |       '
|       |       .
│       └─val2017
|               └───
|               └───
|               .
|               .
|    train2017.txt
|    val2017.txt

推理

参考v7权重。 yolov7-w6-pose.pt

python pose/detect.py --weights pose/pose_weights/yolov7-w6-pose.pt  --source  data/images/bus.jpg   --kpt-label 

训练

yolov7-w6-person.pt

    python pose/train.py --data  data/coco_kpts.yaml  --cfg  pose/cfg/yolov7-w6-pose.yaml weights yolov7-w6-person.pt --img 960  --kpt-label --hyp data/hyps/hyp.pose.yaml

分割篇

推理

python segment/predict.py --weights yolov5s-seg.pt --source 0                          

训练

python segment/train.py --data coco128-seg.yaml --weights yolov5s-seg.pt --img 640  # 来自预训练模型(推荐)

分类篇YOLOv5官方版本

YOLOv5 发布 v6.2 增加了对分类模型训练、验证、预测和导出的支持!我们让分类器模型的训练变得非常简单。点击下方开始吧。

分类检查点(点击展开)

我们在一台配备4张A100显卡的机器上,使用ImageNet数据集对YOLOv5-cls分类模型进行了90轮训练;同时,我们也用相同的默认训练设置训练了ResNet和EfficientNet模型作为对比。我们将所有模型导出为ONNX FP32格式用于CPU速度测试,并导出为TensorRT FP16格式用于GPU速度测试。所有的速度测试都在Google Colab Pro 上进行,以方便复现。

官方模型库 尺寸
(像素)
准确率
top1
准确率
top5
训练
90轮
4xA100 (小时)
速度
ONNX CPU
(ms)
速度
TensorRT V100
(ms)
参数量
(M)
FLOPs
@224 (B)
YOLOv5n-cls 224 64.6 85.4 7:59 3.3 0.5 2.5 0.5
YOLOv5s-cls 224 71.5 90.2 8:09 6.6 0.6 5.4 1.4
YOLOv5m-cls 224 75.9 92.9 10:06 15.5 0.9 12.9 3.9
YOLOv5l-cls 224 78.0 94.0 11:56 26.9 1.4 26.5 8.5
YOLOv5x-cls 224 79.0 94.4 15:04 54.3 1.8 48.1 15.9
ResNet18 224 70.3 89.5 6:47 11.2 0.5 11.7 3.7
ResNet34 224 73.9 91.8 8:33 20.6 0.9 21.8 7.4
ResNet50 224 76.8 93.4 11:10 23.4 1.0 25.6 8.5
ResNet101 224 78.5 94.3 17:10 42.1 1.9 44.5 15.9
EfficientNet_b0 224 75.1 92.4 13:03 12.5 1.3 5.3 1.0
EfficientNet_b1 224 76.4 93.2 17:04 14.9 1.6 7.8 1.5
EfficientNet_b2 224 76.6 93.4 17:10 15.9 1.6 9.1 1.7
EfficientNet_b3 224 77.7 94.0 19:19 18.9 1.9 12.2 2.4
表格注释(点击展开)
  • 所有检查点均在图像尺寸224下,采用SGD优化器,学习率lr0=0.001、权重衰减weight_decay=5e-5,并使用所有默认设置训练至90轮。
    训练日志记录于 https://wandb.ai/glenn-jocher/YOLOv5-Classifier-v6-2
  • 准确率数值为单模型单尺度在ImageNet-1k数据集上的结果。
    可通过 python classify/val.py --data ../datasets/imagenet --img 224 复现。
  • 速度是在Google Colab Pro 的V100高内存实例上,基于100张推理图片取平均值。
    可通过 python classify/val.py --data ../datasets/imagenet --img 224 --batch 1 复现。
  • 导出为ONNX FP32和TensorRT FP16格式是通过 export.py 完成的。
    可通过 python export.py --weights yolov5s-cls.pt --include engine onnx --imgsz 224 复现。
分类使用示例(点击展开)

训练

YOLOv5 分类训练支持通过 --data 参数自动下载 MNIST、Fashion-MNIST、CIFAR10、CIFAR100、Imagenette、Imagewoof 和 ImageNet 数据集。例如,要在 MNIST 数据集上开始训练,可以使用 --data mnist

# 单 GPU
python classify/train.py --model yolov5s-cls.pt --data cifar100 --epochs 5 --img 224 --batch 128

# 多 GPU DDP
python -m torch.distributed.run --nproc_per_node 4 --master_port 1 classify/train.py --model yolov5s-cls.pt --data imagenet --epochs 5 --img 224 --device 0,1,2,3

验证

在 ImageNet-1k 数据集上验证 YOLOv5m-cls 的准确率:

bash data/scripts/get_imagenet.sh --val  # 下载 ImageNet 验证集(6.3G,50000 张图像)
python classify/val.py --weights yolov5m-cls.pt --data ../datasets/imagenet --img 224  # 验证

预测

使用预训练的 YOLOv5s-cls.pt 对 bus.jpg 进行预测:

python classify/predict.py --weights yolov5s-cls.pt --data data/images/bus.jpg
model = torch.hub.load('ultralytics/yolov5', 'custom', 'yolov5s-cls.pt')  # 从 PyTorch Hub 加载

导出

将一组训练好的 YOLOv5s-cls、ResNet 和 EfficientNet 模型导出为 ONNX 和 TensorRT 格式:

python export.py --weights yolov5s-cls.pt resnet50.pt efficientnet_b0.pt --include onnx engine --img 224

历史更新

更新记录 - 2020/9/15 高级集成待验证,目前姿态训练和检测已经调试完成。 - 2022/7/21 除关键点部分的V7代码以及V5代码风格优化合并更新,改善了重参数脚本的功能,详情看 reparameterization.py
  • 2022/7/13 同步更新加入了yolov7的P6模型訓練部分代碼,p6是需要aux的所以需要添加Loss部分計算,代碼和CSDN持续更新中,由于我删除了P6模型里的Reorg操作其实就说FOcus,所以需要重新训练,如果你想使用V7原始权重,你只需要在YAML里改回去

  • 2022/7/7 依旧全网首发 :以目前仓库的魔改版V5为基准同步了YOLOV7的核心改动,代码风格是最新的,后续会持续完善优化,完美融合V7,后续博客争取更新第一时间!

  • 2022/5/23 合并更新了YOLOV5仓库的最新版本,作者代码有点小问题就是数据集会重复下载,这部分我没就没合并他的更新,引入了新的算子,看来他也在探索实验

  • 2022/3/26 测试下解耦训练结果/更新GAM注意力层代码:按照论文示意在大模型中使用分组卷积降低FLOPs,同步简单实验下,关于实验在闲暇之余都会慢慢完善的。 以small模型,在Visdrone数据下的简单验证:

    Model mAP@.5 mAP@.5:95 Parameters(M) GFLOPs
    YOLOv5s 0.351 0.194 7.2 16.5
    YOLOv5s+GAM 0.35 0.194 22.2 36.9
    YOLOv5s_decoup 0.367 0.203 7.1 17.2
    YOLOv5s_GAM_group 0.353 0.192 11 21.4
  • 2022/3/26 1.修复了一些常规的问题BUG并合并了V5作者的最新代码更新,大概包含之前缺少了一些可学习参数和代码优化,如添加了swintransformerV2.0的相对位置编码加入优化器等。 2.目前看来GAM换用组卷积效果有待商榷,后续进一步整理消融实验总结。

  • 2022/3/16 对上传的GAM注意力层进行了简单的实验,yolov5s+GAM在Visdrone数据集上的结果举例参考,后续的话其实难点在于轻量化,探究大模型的骨干估计只有大厂研究资源能有成本去做。

  • 2022/3/5 近期会整理一些去年的实验数据/、使用swin2的骨干,超参数需要调试一下,首先要稍微减低学习率,(实测SGD);也可以把SWIN层作为注意力插件训练,这个和以往的操作类似,不再赘述了 需要开启--swin_float 命令参数,因为点积不被cuda的half支持,而优化器的问题,那么问题基本就是较多的swin block 堆积导致的增量更新。同时伴随着GPU的开销。

  • 2022/3.1 (不完整更新,供参考,怕忙断更,所以先放出部分修改,目前还在动态调试中)按照SWintransformerV2.0 的改进点:修改了NORM层的位置/attention将dot换成scaled cosine self-attention,待更新的优化部分:1.序列窗口注意力计算,降低显存开销 2、训练优化器

  • 2022/2.28 添加了一个Swintransformer的Backbone和yaml示意结构,很多人把SWIN还像之前做成注意力层,但是其实swin设计是为了摒弃CNN去和NLP一统,而且精髓在于控制计算复杂度,其实backbone的全替换也许更值得尝试 ,内存开销和结构设计待优化

  • 2022/2.22 忙里抽闲:更新了今天的yolov5的工程修复,修改了解耦头的代码风格,直接yaml选择参考使用,服务器回滚了代码。SWIN算子在,YAML文件丢失了,找时间从新写一个再上传,太忙看更新可能优先GIT,等有空博客细致归纳下

  • 2022/2.6 ASFF使用的BUG已经修复;近期更新Swintransformer代码,简单说明下程序上其实是两种改法:1.类似算子层的修改,这个比较简单 2、全部替换成Swintransformer,这个对于整个程序存在一定的代码修改地方,稍微复杂点。

  • 2022/1.9 补充一些注意力算子GAM,原理后续CSDN说明,修复BUG

  • 2021/11.3 合并最新的YOLOV5的改动, 替换了CSPBOTTLENNECK的LeakRELUw为SLIU,其余全是代码和工程规范修改

  • 2021.10.25 修复BUG,恢复EIOU

  • 2021.10.13 更新合并YOLOV5v6.0版本,改进点:第一时间的更新解析可参考CSND博客

  • 2021.9.25 将自注意力位置编码设置成可选项,默认取消,CBAM不收敛——将激活函数改回Sigmoid

  • 2021.6.25 添加BIFPN结构包含P5/P6层,增大开销但是对于一些任务是能够提点的

  • 2021.6 Botnet transformer 算子块引入于Backbone底层

  • 2021.2.10 全网首发的YOLOV5魔改,ASFF检测头封装加入、注意力机制CBAM、CooRD、等注意力算子引入,并介绍了通用修改方式

高性能视频推理部署—待更新升级

工程部署 Why Deepstream?

工程部署:该仓库只属于研究探索,但是工程部署讲究简单高效、故可以参考我的Deepstream SDK改的项目,集合了通用检测、人脸识别、OCR三个项目,高性能的部署AI框架开发逻辑,这个项目是我2021年整理并开源的,代码还未规范,但程序是没问题的。 DS_5.1&&Tensorrt7+ :https://github.com/positive666/Deepstream_Project

 1.英伟达提供的Deepstream &&Tensorrt,应用于流媒体处理,因为做过业务的都知道,推理性能不等于程序运行性能,核心除了模型的本身剪枝量化之外,涉及到了对数据输入的处理,这里的核心问题是如何提高GPU的利用率,那么最直接的就是GPU编解码.
 2.目前嵌入式部署可能大多采用剪枝通道压缩模型的流程,在结合一些框架去进行引擎推理,推荐Yolov5nano或者nanodetplus,(工程上主流是通道裁剪,替换如C3的BOLOCK,你可以在仔细比对YOLOV5的迭代。还有就是如何使用SGD炼丹的经验了)
 还有就是deepstream的普及,网上很多剪枝版本我也看了值得学习,但是工程不只在于学习,而在于成本和结果。
 3.x86和Jeston都可以部署,既有一站式解决方案,我觉得工程和研究应用是完全不同的操作思路,精简高效达到目的.deepstream全做了并完成降维打击 ,当然也需要一定的综合开发能力。

C++ sdk的完整Deepstream5.1部署(内置C++嵌入的Kafka服务)

目前是5.1版本,近期更新6.0(主要区别在于Tensorrt7和Tensorrt8的源码区别导致的,部分6.0 SDK有变动) [Deepsteam YOLOV5 V5.0]https://github.com/positive666/Deepstream_Project/tree/main/Deepstream_Yolo

致谢

Expand

版本历史

yolo_research_v2.0.02023/05/31

常见问题

相似工具推荐

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|今天
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

139k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

107.7k|★★☆☆☆|2天前
开发框架图像Agent

NextChat

NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。

87.6k|★★☆☆☆|今天
开发框架语言模型

ML-For-Beginners

ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。

85k|★★☆☆☆|今天
图像数据工具视频

ragflow

RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。

77.1k|★★★☆☆|昨天
Agent图像开发框架