前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >YOLODet最新算法的目标检测开发套件,优化到部署

YOLODet最新算法的目标检测开发套件,优化到部署

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

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


代码 获取方式:

分享本文到朋友圈

关注微信公众号 datayx 然后回复 目标检测 即可获取。

YOLODet简介

特性:

  • 模型丰富: YOLODet提供了丰富的模型,涵盖最新YOLO检测算法的复现,包含YOLOv5、YOLOv4、PP-YOLO、YOLOv3等YOLO系列目标检测算法。
  • 高灵活度: YOLODet通过模块化设计来解耦各个组件,基于配置文件可以轻松地搭建各种检测模型。

支持的模型:

  • YOLOv5(s,m,l,x)
  • YOLOv4(标准版,sam版)
  • PP-YOLO
  • YOLOv3

更多的Backone:

  • DarkNet
  • CSPDarkNet
  • ResNet
  • YOLOv5Darknet

数据增强方法:

  • Mosaic
  • MixUp
  • Resize
  • LetterBox
  • RandomCrop
  • RandomFlip
  • RandomHSV
  • RandomBlur
  • RandomNoise
  • RandomAffine
  • RandomTranslation
  • Normalize
  • ImageToTensor

损失函数支持:

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

训练技巧支持:

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

扩展特性:

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

代码结构说明

安装说明

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

要求

  • python3.7 +(不支持python2)
  • PyTorch 1.5或更高版本
  • CUDA 10.0或更高
  • NCCL 2
  • GCC(G++) 4.9或以上

快速开始

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

模型训练

YOLODetection提供执行单卡多卡的训练。所有输出(日志文件和检查点)将保存到工作目录中。

这是由配置文件中的work_dir指定的。

*Important*: 配置文件的默认学习率是1个gpu和小批次大小为2,累计到64个批次大小进行梯度更新。

根据余弦败火规则,如果你使用不同的GPU或每个GPU的图像,你需要设置与批大小成比例的学习率,配置文件中的batch_sizesubdivisions确定。

使用GPU训练

可选参数:

  • --validate(强烈建议):在训练epoch期间每一次k(默认值是1,可以像这样修改this)来执行评估。
  • --work_dir ${WORK_DIR}:覆盖配置文件中指定的工作目录。
  • --device ${device}: 指定device训练, 0 or 0,1,2,3 or cpu,默认全部使用。
  • --resume_from ${CHECKPOINT_FILE}:从以前训练的checkpoints文件恢复训练。
  • --multi-scale:多尺度缩放,尺寸范围为训练图片尺寸+/- 50%

resume_fromload_from的不同:

resume_from加载模型权重和优化器状态,并且训练也从指定的检查点继续训练。它通常用于恢复意外中断的训练。 load_from只加载模型权重,并且训练从epoch 0开始。它通常用于微调。

用于测试图像的高级api接口

下面是一个构建模型和测试给定图像的示例。

预训练模型

YOLO

  • 重要说明: 由于本人资源有限,只有单张1080Ti的显卡可供训练,完整训练完训练周期较长。为了说明本框架可训练,推断和测试。本次给出的预训练模型只是训练24个epoch的模型,损失值还在下降中,未训练充分,仅供大家参考。如有条件的开发者可完成本次训练,并希望你能把训练好的预训练模型提供出来,供大家使用。我也会在重要位置进行声明和感谢。
  • 效果图
  • YOLOv5-l:
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-04-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器学习AI算法工程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • YOLODet简介
    • 特性:
      • 支持的模型:
        • 更多的Backone:
          • 数据增强方法:
            • 损失函数支持:
              • 训练技巧支持:
                • 扩展特性:
                  • 代码结构说明
                  • 安装说明
                    • 要求
                    • 快速开始
                    • 模型训练
                      • 使用GPU训练
                        • 用于测试图像的高级api接口
                          • YOLO
                          领券
                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档