yolodet-pytorch: YOLODet-PyTorch是端到端基于pytorch框架复现yolo最新算法的目标检测开发套件,旨在帮助开发者更快更好地完成检测模型的训练、精度速度优化到部署全流程

简体中文 | English

[](#yolodet-pytorch)YOLODet-PyTorch

YOLODet-PyTorch是端到端基于pytorch框架复现yolo最新算法的目标检测开发套件,旨在帮助开发者更快更好地完成检测模型的训练、精度速度优化到部署全流程。YOLODet-PyTorch以模块化的设计实现了多种主流YOLO目标检测算法,并且提供了丰富的数据增强、网络组件、损失函数等模块。

目前检测库下模型均要求使用PyTorch 1.5及以上版本或适当的develop版本。

[](#%E5%86%85%E5%AE%B9)内容

[](#%E7%AE%80%E4%BB%8B)简介

[](#%E7%89%B9%E6%80%A7)特性:

  • 模型丰富:

    YOLODet提供了丰富的模型,涵盖最新YOLO检测算法的复现,包含YOLOv5、YOLOv4、PP-YOLO、YOLOv3等YOLO系列目标检测算法。

  • 高灵活度:

    YOLODet通过模块化设计来解耦各个组件,基于配置文件可以轻松地搭建各种检测模型。

[](#%E6%94%AF%E6%8C%81%E7%9A%84%E6%A8%A1%E5%9E%8B)支持的模型:

[](#%E6%9B%B4%E5%A4%9A%E7%9A%84backone)更多的Backone:

  • DarkNet
  • CSPDarkNet
  • ResNet
  • YOLOv5Darknet

[](#%E6%95%B0%E6%8D%AE%E5%A2%9E%E5%BC%BA%E6%96%B9%E6%B3%95)数据增强方法:

  • Mosaic
  • MixUp
  • Resize
  • LetterBox
  • RandomCrop
  • RandomFlip
  • RandomHSV
  • RandomBlur
  • RandomNoise
  • RandomAffine
  • RandomTranslation
  • Normalize
  • ImageToTensor
  • 相关配置使用说明请参考【这里

[](#%E6%8D%9F%E5%A4%B1%E5%87%BD%E6%95%B0%E6%94%AF%E6%8C%81)损失函数支持:

  • bbox loss (IOU,GIOU,DIOU,CIOU)
  • confidence loss(YOLOv4,YOLOv5,PP-YOLO)
  • IOU_Aware_Loss(PP-YOLO)
  • FocalLoss

[](#%E8%AE%AD%E7%BB%83%E6%8A%80%E5%B7%A7%E6%94%AF%E6%8C%81)训练技巧支持:

  • 指数移动平均
  • 预热
  • 梯度剪切
  • 梯度累计更新
  • 多尺度训练
  • 学习率调整:Fixed,Step,Exp,Poly,Inv,Consine
  • Label Smooth
  • 强烈说明 通过实验对比发现YOLOv5的正负样本划分定义和损失函数定义,使得模型收敛速度较快,远超原yolo系列对正负样本的划分和损失定义。对于如果卡资源不充足,想在短时间内收敛模型,可采用yolov5的正负样本划分和损失函数定义,相关参数为yolo_loss_type=yolov5
  • 额外补充 YOLOv5对于正样本的定义:在不同尺度下只要真框和给定锚框的的比值在4倍以内,该锚框即可负责预测该真值框。并根据gx,gy在grid中心点位置的偏移量会额外新增两个grid坐标来预测。通过这一系列操作,增加了正样本数量,加速模型收敛速度。而YOLO原系列对于真框,在不同尺度下只有在该尺度下IOU交并集最大的锚框负责预测该真框,其他锚框不负责,所以由于较少的正样本量,模型收敛速度较慢。

[](#%E6%89%A9%E5%B1%95%E7%89%B9%E6%80%A7)扩展特性:

  • Group Norm
  • Modulated Deformable Convolution
  • Focus
  • Spatial Pyramid Pooling
  • FPN-PAN
  • coord conv
  • drop block
  • SAM

[](#%E4%BB%A3%E7%A0%81%E7%BB%93%E6%9E%84%E8%AF%B4%E6%98%8E)代码结构说明

yolodet-pytorch
├──cfg #模型配置文件所在目录(yolov5,yolov4等)
├──tools #工具包,包含训练代码,测试代码和推断代码入口。
├──yolodet #YOLO检测框架核心代码库
│ ├──apis #提供检测框架的训练,测试和推断和模型保存的接口
│ ├──dataset #包含DateSet,DateLoader和数据增强等通用方法
│ ├──models #YOLO检测框架的核心组件集结地
│ │ ├──detectors #所有类型检测器集结地
│ │ ├──backbones #所有骨干网络集结地
│ │ ├──necks #所有necks集结地
│ │ ├──heads #heads集结地
│ │ ├──loss #所有损失函数集结地
│ │ ├──hooks #hooks集结地(学习率调整,模型保存,训练日志,权重更新等)
│ │ ├──utils #所有工具方法集结地

[](#%E5%AE%89%E8%A3%85%E8%AF%B4%E6%98%8E)安装说明

安装和数据集准备请参考 INSTALL.md

[](#%E5%BF%AB%E9%80%9F%E5%BC%80%E5%A7%8B)快速开始

请参阅 GETTING_STARTED.md 了解YOLODet的基本用法。

[](#%E9%A2%84%E8%AE%AD%E7%BB%83%E6%A8%A1%E5%9E%8B)预训练模型

查看预训练模型请点击【这里

[](#%E9%87%8D%E8%A6%81%E8%AF%B4%E6%98%8E)重要说明

由于该检测框架为个人闲暇之余,处于对深度学习的热爱,自己单独编写完成,也由于自己囊中羞涩,没有充足的显卡资源,提供的MSCOCO大型数据集的预训练模型为未完整训练的模型,后面会陆陆续续提供完整版的预训练模型,敬请大家期待。对于小型数据集本人已经测试和验证过,并在实际项目中使用过该框架训练的模型,没有问题,精度和速度都能保证。

[](#%E9%B8%A3%E8%B0%A2)鸣谢

[](#%E5%A6%82%E4%BD%95%E8%B4%A1%E7%8C%AE%E4%BB%A3%E7%A0%81)如何贡献代码

欢迎你为YOLODet提供代码,也十分感谢你的反馈。本人将不断完善和改进这个基于PyTorch实现的YOLO全系列的目标检测框架,并希望更多志同道合的爱好者和从业者能参与进来,共同维护这个项目。 如有对此感兴趣的同学,可联系我的gmail邮箱:wuzhihao7788@gmail.com,期待与你一起完善和进步。


原网址: 访问
创建于: 2024-03-07 16:26:33
目录: default
标签: 无

请先后发表评论
  • 最新评论
  • 总共0条评论