ScaledYOLOv4实践:手把手教物体检测——ScaleYOLOv4-large

简介: ScaledYOLOv4实践:手把手教物体检测——ScaleYOLOv4-large

目录


摘要


训练


制作数据集


下载代码和权重文件


增加Mish函数


准备训练


测试


摘要

YOLOv4-large是专为云端GPU而设计的一种架构,主要目的在于获得更好的目标检测精度。作者基于前述分析设计了一个全尺寸的YOLOv4-P5并扩展得到了YOLOv4-P6和YOLOv4-P7。其对应的网络结构示意图见下图。

tt.png

作者通过实验发现:YOLOv4-P6(宽度缩放因子1)可以达到30fps的实时处理性能;YOLOv4-P7(宽度缩放因子1.25)可以达到15fps的处理速度。


代码:https://github.com/WongKinYiu/PyTorch_YOLOv4

Paper:https://arxiv.org/abs/2011.08036

论文思路:


通过对目前最先进的物体检测器的分析,我们发现YOLOv4[1]的主干CSPDarknet53几乎匹配所有通过网络架构搜索技术得到的最优架构特征。


CSPDarknet53的深度、瓶颈比、龄期间宽度生长比分别为65、1和2。因此,我们开发了基于YOLOv4的模型缩放技术,提出了scale -YOLOv4。提出的缩放yolov4具有出色的性能,如下图所示:


tt.png

scale - yolov4的设计过程如下


首先对yolov4进行了重新设计,提出了YOLOv4-CSP,然后基于onYOLOv4-CSP开发了scale - yolov4。


在提出的scale - yolov4中,本文讨论了线性缩放模型的上界和下界,并分别分析了小模型和大模型缩放时需要注意的问题。因此,我们能够系统地开发YOLOv4-large和yolov4 -tiny模型。Scaled-YOLOv4能够在速度和精度之间实现最好的平衡,能够在15 fps、30 fps和60fps的影片以及嵌入式系统上进行实时对象检测。


我们总结了本文的工作:


1、设计了一种针对小模型的强大的模型缩放方法,系统地平衡了浅层CNN的计算代价和存储带宽;


2、设计一种简单有效的大型目标检测器缩放策略;


3、分析各模型缩放因子之间的关系,基于最优组划分进行模型缩放;


4、实验证实了FPN结构本质上是一种一次性结构;


5、利用上述方法开发yolov4 - tiny 和 yolo4v4 -large。


YOLOv4-large与其他模型对比试验

tt.png

训练

制作数据集

通过对ScaledYoloV4代码的分析,发现ScaledYoloV4的数据集合YoloV5的数据集是相同的。如果使用过YoloV5,就可以直接按照YoloV5的方法即可。


具体的代码可以参考我以前写的博文:


COCO转YoloV5数据集,适用于YoloV5、ScaledYoloV4


https://wanghao.blog.csdn.net/article/details/111472706

Win10 Labelme标注数据转为YOLOV5 训练的数据集

https://wanghao.blog.csdn.net/article/details/108865894

Win10环境下,将VOC数据集转为YOLOV5使用的数据集。

https://wanghao.blog.csdn.net/article/details/108782268

本例选用的Labelme标注的数据集。数据集地址:

https://download.csdn.net/download/hhhhhhhhhhwwwwwwwwww/14003627

将制作好的数据集放在和ScaledYOLOv4-yolov4-large同级目录。

下载代码和权重文件

https://github.com/WongKinYiu/ScaledYOLOv4/tree/yolov4-large

https://github.com/WongKinYiu/ScaledYOLOv4/tree/yolov4-csp

https://github.com/WongKinYiu/ScaledYOLOv4/tree/yolov4-tiny

这个Scaled总共有三个模型,本文使用Yolov4-large,权重文件在Readme里面有链接,如果你是训练自己的数据集,就没有必要下载。

增加Mish函数

增加Mish函数有两种方法,如果需要使用预训练模型就只能用Readme中提供的方法,这个方法我在Win10环境中用的时候出现了问题,而且我使用自己的数据集,可以不使用预训练模型,所以我采用另一种方式,在程序中增加Mish函数。

打开models/common.py加入如下代码:

class Mish(torch.nn.Module):

   def __init__(self):

       super().__init__()

   def forward(self, x):

       x = x * (torch.tanh(torch.nn.functional.softplus(x)))

       return x

准备训练

在data文件夹下面增加voc.yaml,写入配置数据集的配置。

# train and val datasets (image directory or *.txt file with image paths)
train: ../VOC/images/train/  # 118k images
val: ../voc/images/val/  # 5k images
test: ../voc/images/test/  # 20k images for submission to https://competitions.codalab.org/competitions/20794
# number of classes
nc: 2
# class names
names: ['aircraft', 'oiltank']

然后打开train.py文件,在文件的上面加入


import os

os.environ['KMP_DUPLICATE_LIB_OK']='True'

记住一定要放在最上面。


然后修改参数


将weights设置为“”

parser.add_argument('--weights', type=str, default='', help='initial weights path')

将cfg设置为yolo4-p5的配置文件 parser.add_argument('--cfg', type=str, default='models/yolov4-p5.yaml', help='model.yaml path')

将数据集配置为我们刚才增加的voc.yaml parser.add_argument('--data', type=str, default='data/voc.yaml', help='data.yaml path')

4、根据电脑的情况调节batch-size

parser.add_argument('--batch-size', type=int, default=2, help='total batch size for all GPUs')

改完上面的参数就可以运行。


tt.png



目录
相关文章
|
5月前
|
存储 机器学习/深度学习 缓存
vLLM 核心技术 PagedAttention 原理详解
本文系统梳理了 vLLM 核心技术 PagedAttention 的设计理念与实现机制。文章从 KV Cache 在推理中的关键作用与内存管理挑战切入,介绍了 vLLM 在请求调度、分布式执行及 GPU kernel 优化等方面的核心改进。PagedAttention 通过分页机制与动态映射,有效提升了显存利用率,使 vLLM 在保持低延迟的同时显著提升了吞吐能力。
2120 18
vLLM 核心技术 PagedAttention 原理详解
|
人工智能 自然语言处理 运维
AIGC系列文章汇总
AIGC系列文章汇总(2024年3月8日更新)
3295 4
AIGC系列文章汇总
|
人工智能 文字识别 计算机视觉
【AAAI 2024】M2Doc:文档版面分析的可插拔多模态融合方法
M2Doc是一种创新的多模态融合方法,设计用于增强文档版面分析任务中的纯视觉目标检测器。该方法包括Early-Fusion和Late-Fusion模块,前者通过门控机制融合视觉和文本特征,后者则在框级别合并这两种特征。M2Doc易于集成到各种目标检测器,实验证明它能显著提升DocLayNet和M6Doc数据集上的性能,特别是与DINO结合时,在多个数据集上达到SOTA结果。此外,研究表明M2Doc对于增强复杂逻辑版面分析任务中的文本理解和语义关联特别有效。
|
并行计算
最新YOLOv8(2023年8月版本)安装配置!一条龙傻瓜式安装,遇到问题评论区提问
最近需要使用YOLOv8,百度了一下现在网上大多数教程都是比较早期的教程,很多文件已经大不相同,于是我根据官方readme文档,总结了一套安装方法,只需要按照本教程,复制每一段代码,按照教程配置好相应文件即可直接使用。
8707 2
|
Ubuntu 机器人 API
ubuntu 16.04+ros kinetic + gazebo+ aws-robotics 室内环境导航仿真
ubuntu 16.04+ros kinetic + gazebo+ aws-robotics 室内环境导航仿真
735 0
|
机器学习/深度学习 算法 数据挖掘
|
8月前
|
数据可视化
YOLO训练/写作脚本目录一览 | 涉及标签格式转换、数据扩充、热力图、感受野、精度曲线、数量统计等近百个脚本文件
YOLO训练/写作脚本目录一览 | 涉及标签格式转换、数据扩充、热力图、感受野、精度曲线、数量统计等近百个脚本文件
255 5
|
10月前
|
Ubuntu Linux 网络安全
mobaxterm x11 转发Ubuntu mac
通过上述步骤,您可以成功在 macOS 上使用 MobaXterm 实现对 Ubuntu 服务器的 X11 转发。确保每一步操作准确无误,可以有效避免常见的配置问题。通过这种方式,可以在 macOS 上方便地运行和调试远程 Ubuntu 服务器上的图形界面应用程序。
886 5
|
存储 机器学习/深度学习 人工智能
深入浅出 AI 智能体(AI Agent)|技术干货
随着人工智能技术的发展,智能体(AI Agents)逐渐成为人与大模型交互的主要方式。智能体能执行任务、解决问题,并提供个性化服务。其关键组成部分包括规划、记忆和工具使用,使交互更加高效、自然。智能体的应用涵盖专业领域问答、资讯整理、角色扮演等场景,极大地提升了用户体验与工作效率。借助智能体开发平台,用户可以轻松打造定制化AI应用,推动AI技术在各领域的广泛应用与深度融合。
26794 1
|
人工智能 自然语言处理 搜索推荐
智源研究院开源中文互联网语料库CCI3.0,1000GB数据集,498GB高质量子集,魔搭社区可下载
近日,智源研究院正式发布中文互联网语料库CCI 3.0(Chinese Corpora Internet,简称 CCI)