热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PP-YOLO

本文主要分享【PP-YOLO】,技术文章【PP-yoloE论文的理解】为【猫猫与橙子】投稿,如果你遇到目标检测相关问题,本文相关知识或能到你。PP-YOLO目录1.简单回顾PP-YOLOv2

本文主要分享【PP-YOLO】,技术文章【PP-yoloE论文的理解】为【猫猫与橙子】投稿,如果你遇到目标检测相关问题,本文相关知识或能到你。

PP-YOLO

目录

1.简单回顾PP-YOLOv2

2.本文的贡献

2.1 anchor free

2.2 Backbone and Neck

2.2.1 ESE的原始架构 

2.3 TAL和T-head

2.3.1 TAL

2.4 Efficient Task-aligned Head(ET-head) 

2.4.1 varifocal loss (VFL)

2.4.2 distribution focal loss(DFL)

3. 实验

3.1 与sota检测器相比

涉及到的论文


出自:百度 2022.44.2

论文:https://arxiv.org/pdf/2203.16250.pdf

代码:https://github.com/PaddlePaddle/PaddleDetection

 PP-YOLOE的整体框架图:

1.简单回顾PP-YOLOv2

论文:https://arxiv.org/abs/2104.10419

代码:https://github.com/paddlepaddle/paddledetection

主干ResNet50-vd,deformable convolution,PAN neck with SPP layer and DropBlock【7】,lightweight IOU aware head。 主干激活使用relu,neck 激活使用mish。 loss函数有分类loss,回归loss和目标loss,且PP-yolov2使用了IoU loss和Iou aware loss;

2.本文的贡献

①anchor-free

②powerful backbone and neck equipped with CSPRepResStage

③ET-head

④TAL动态label assign

2.1 anchor free

原因:基于anchor的方法掺杂太多人工设定,且同一组anchor参数无法适用于所有数据集;

细节:anchor free方法参考FCOS【25】,PPYOLOE中的anchor free方法,主要就是将之前anchor base中预测相较于anchor的xywh,改进为预测ltrb(left,top,right,bottom),并将ltrb结果乘上当前特征图的stride。

结果:速度略有提升,且ap下降0.3;

2.2 Backbone and Neck

提出了RepResBlock:

使用了resdiual connections和dense connection,将这种模块用于backbone和neck中;

参考TreeBlock【20】,作者提出了RepResBlock,训练阶段如fig3(b),推理阶段如图3(c),简化的TreeBlock如fig3(a),将concat替换成element-wise add operation就得到了fig3(b)作者的backbone命名为CSPRepResBlock,包括三个卷积和四个RepResBlock,如fig3(d) 通过ESE(Effective Squeeze and Extraction) layer施加通道注意力。 

2.2.1 ESE的原始架构 

SE(Squeeze-and-Excitation(SE))结构:

 

ESE结构:

区别:se有两个fc,ese只有一个fc;

2.3 TAL和T-head

物体检测方法的2个局限性:    

①分类和定位的独立性。分类和定位一般用的是2个独立的分支,这样使得2个任务之间缺乏交互,在预测的时候就会出现:得分高的预测位置不准,位置准的预测得分不高。  

 ②任务无关的样本分配:对于分类最优的anchor和对于定位最优的anchor往往并不是同一个。

解决办法:TOOD提出任务对齐头(Task-aligned head, T-head)和新的任务对齐学习(Task-aligned Learning, TAL)来更明确地对齐两个任务; 操作流程:首先,T-head对FPN特征进行预测。然后,计算每个定位点的任务对齐度量,TAL根据此度量为T-head生成学习信号。最后,T-head对分类和定位的分布进行相应的调整。其中,最对齐的锚通过概率图prob (probability map)获得更高的分类得分,通过学习偏移获得更准确的锚框预测。

2.3.1 TAL

Task Alignment Learning:为了进一步指导T-Head做出与任务对齐的预测提出TAL。

它包括一个分配策略和新损失的函数;

分配策略 ①Task-aligned Sample Assignment:

1)对齐良好的锚点应能联合精确定位预测出较高的分类分数;

2)不对齐的锚应具有较低的分类评分,并随后予以抑制。

②Anchor alignment metric:分类得分和IoU的高阶组合来衡量任务对齐程度, 

 

其中:s和u分别表示分类分数和IOU值

③Training sample assignment:选择t值最大的m个锚点为正样本,而使用其余的锚点作为负样本; 

损失函数

t^是对t的归一化

2.4 Efficient Task-aligned Head(ET-head) 

解决的点:分类和定位的任务冲突    

YOLOX使用了decopled head 该方法的缺点:导致分类任务和定位任务分离,使得两个任务独立; 缺乏特定任务学习;

解决方法:参考TOOD【5】,优化得到ET-head 改进点:  

 ①相比较TOOD,使用ESE block替换layer attention。    

②分类分支添加了shortcut。    

③分类分支使用varifocal loss (VFL),优点:这种实现使得iou高的正样本对损耗的贡献相对较大,促使模型更加关注高质量样本;  

 ④回归分支使用distribution focal loss(DFL)。

最终loss:

结果:map提升0.5;

2.4.1 varifocal loss (VFL)

focal loss:

其中a用来均衡正负样本的权重,y为gt,前景类的预测概率p∈[0,1],(1-p)的r次和p的r次用来调制每个样本的权重。使困难样本有更高的权重; VFL从focal loss中借鉴了样本加权思想来解决类不平衡问题;

VFL loss:

其中p是预测的IACS(分类)得分,q是目标IoU得分。 对于训练中的正样本,将q设置为生成的bbox和gt box之间的IoU;而对于负样本,q为0。

2.4.2 distribution focal loss(DFL)

参考:《Generalized Focal Loss: Learning Qualified and Distributed Bounding Boxes for Dense Object Detection》 -清华大学,南京大学 https://blog.csdn.net/qq_52302919/article/details/125304230   https://zhuanlan.zhihu.com/p/310229973 

3. 实验

实验数据:MS COCO-2017(80个类别,118000张图片)

数据处理细节:random crop,random horizontal filp,color distortion,和multi-scale;

参数设置细节:SGD,momentum=0.9,weight decay=5e-4,cosine learning rate schedule,epochs=300,warmup epochs=5,base learning rate=0.01,batch size=64;exponential moving average(EMA) 硬件设备:8*32G V100 GPU

3.1 与sota检测器相比

科普性相关信息

一文看懂Label Assignment--标签分配最新论文总结 - 知乎

涉及到的论文

《Bag of Tricks for Image Classification with Convolutional Neural Networks》

可学习的各种训练策略(文中用于分类):

1.学习率的调整

当batch_size=256时,初始化lr=0.1,当batch_size=b,则学习率调整为

lr=0.1\times \frac{b}{256}

   

如:b=128,

lr=0.1\times \frac{128}{256}=0.1\times0.5=0.05

2.学习率热身效应

在训练初期使用较小的学习率进行热身,逐渐增大到设置的学习率

\eta

,则前m个batches使用warm up使用的学习率:

lr= \frac{i\times n}{m}

    ,1<=i<=qm

3.使的网络初始阶段更容易训练

Zero γ(可查看原文)

4.只对卷积层和全连接层的weight的weights使用weight decay

在SGD中优化中相当于L2正则,作者认为并不是所有的参数weight decay;

5.其他策略

(使用广泛,不一一细讲了):

1.提升模型的训练速度,FP16和FP32的混合训练;

2.ResNet网络结构的优化;

3.Cosine Learning Rate Decay;

4.Label Smoothing

5.Knowledge Distillation

6.Mixup Training

参考:https://www.jianshu.com/p/02a76ac73d48

《Dropblock:A regularization method for convolutional networks:Advaces in neural information process system》

dropblock:一种正则化方法,在ImageNet分类任务中,使用Resnet-50精度提升了1.6%个点,在coco检测任务中,精度提升了1.6%。

SPP layer :将不同尺寸使用max pooling输出为固定长度的尺寸

Relu激活:又称为修正线性单元(Rectified Linear Unit),是一种分段线性函数,其弥补了sigmoid函数以及tanh函数的梯度消失问题。

函数:

g(z)=\left\{\begin{matrix} z,if z>0\\ 0,if z<0 \end{matrix}\right.

ReLU函数的优点:
1. 在输入为正数的时候(对于大多数输入 z 空间来说),不存在梯度消失问题。
2. 计算速度要快很多。ReLU函数只有线性关系,不管是前向传播还是反向传播,都比sigmod和tanh要快很多。(sigmod和tanh要计算指数,计算速度会比较慢)
ReLU函数的缺点:
当输入为负时,梯度为0,会产生梯度消失问题。

参考链接:https://zhuanlan.zhihu.com/p/139696588

mish激活:

一种自正则的非单调神经激活函数,平滑的激活函数允许更好的信息深入神经网络,从而得到更好的准确性和泛化。根据论文实验,该函数在最终准确度上比Swish(+0.494%)和ReLU(+ 1.671%)都有提高。

函数:

f(x)=x\times tanh(ln(1+e^{x}))

图形来自于:https://wenku.baidu.com/view/9cbad2976adc5022aaea998fcc22bcd126ff4236.html 

IOU loss的使用:

标检测任务的损失函数由Classificition Loss和Bounding Box Regeression Loss两部分构成。

Bounding Box Regression Loss Function的演进路线是:
Smooth L1 Loss --> IoU Loss --> GIoU Loss --> DIoU Loss --> CIoU Loss

Iou loss提出前,大家主要通过4个坐标点独立回归Bounding box(bbox,边界框),这样做的缺点有:

目标检测的评价方式是使用IoU,而实际回归坐标框的时候使用4个坐标点,二者是不等价的,如下图所示;
L1或者L2 Loss相同的框,其IoU 不是唯一的
通过4个坐标点回归坐标框的方式,是假设4个点相互独立的,没有考虑其相关性,实际4个坐标点具有一定的相关性
基于L1和L2的距离的loss对于尺度 不具有 不变性
————————————————
版权声明:本文为CSDN博主「寻找永不遗憾」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_45377629/article/details/124911293

 《Fcos:Fully convolutional one-stage object detection》

提出的无anchor的网络结构:

分类使用fcoal loss,回归使用iou loss;center-ness大小为0-1,用BCE loss计算。用于抑制FCOS产生的低质量的bbox,尤其是那些离目标中心较远的locations ;

residual connections:

残差链接主要是为了解决梯度消失问题;

dense connections :

密集连接主要是使用更多的感受野扩大中间特征;

本文《PP-yoloE论文的理解》版权归猫猫与橙子所有,引用PP-yoloE论文的理解需遵循CC 4.0 BY-SA版权协议。


推荐阅读
  • 本文探讨了将PEBuilder转换为DIBooter.sh的方法,重点介绍了如何将DI工具集成到启动层,实现离线镜像引导安装。通过使用DD命令替代传统的grub-install工具,实现了GRUB的离线安装。此外,还详细解析了bootice工具的工作原理及其在该过程中的应用,确保系统在无网络环境下也能顺利引导和安装。 ... [详细]
  • 表面缺陷检测数据集综述及GitHub开源项目推荐
    本文综述了表面缺陷检测领域的数据集,并推荐了多个GitHub上的开源项目。通过对现有文献和数据集的系统整理,为研究人员提供了全面的资源参考,有助于推动该领域的发展和技术进步。 ... [详细]
  • 在稀疏直接法视觉里程计中,通过优化特征点并采用基于光度误差最小化的灰度图像线性插值技术,提高了定位精度。该方法通过对空间点的非齐次和齐次表示进行处理,利用RGB-D传感器获取的3D坐标信息,在两帧图像之间实现精确匹配,有效减少了光度误差,提升了系统的鲁棒性和稳定性。 ... [详细]
  • MySQL性能优化与调参指南【数据库管理】
    本文详细探讨了MySQL数据库的性能优化与参数调整技巧,旨在帮助数据库管理员和开发人员提升系统的运行效率。内容涵盖索引优化、查询优化、配置参数调整等方面,结合实际案例进行深入分析,提供实用的操作建议。此外,还介绍了常见的性能监控工具和方法,助力读者全面掌握MySQL性能优化的核心技能。 ... [详细]
  • 探讨 `org.openide.windows.TopComponent.componentOpened()` 方法的应用及其代码实例分析 ... [详细]
  • 利用PaddleSharp模块在C#中实现图像文字识别功能测试
    PaddleSharp 是 PaddleInferenceCAPI 的 C# 封装库,适用于 Windows (x64)、NVIDIA GPU 和 Linux (Ubuntu 20.04) 等平台。本文详细介绍了如何使用 PaddleSharp 在 C# 环境中实现图像文字识别功能,并进行了全面的功能测试,验证了其在多种硬件配置下的稳定性和准确性。 ... [详细]
  • 第五章详细探讨了 Red Hat Enterprise Linux 6 中的 Ext3 文件系统。5.1 节介绍了如何创建 Ext3 文件系统,包括必要的命令和步骤,以及在实际操作中可能遇到的问题和解决方案。此外,还涵盖了 Ext3 文件系统的性能优化和维护技巧,为用户提供全面的操作指南。 ... [详细]
  • 在Android平台上利用FFmpeg的Swscale组件实现YUV与RGB格式互转
    本文探讨了在Android平台上利用FFmpeg的Swscale组件实现YUV与RGB格式互转的技术细节。通过详细分析Swscale的工作原理和实际应用,展示了如何在Android环境中高效地进行图像格式转换。此外,还介绍了FFmpeg的全平台编译过程,包括x264和fdk-aac的集成,并在Ubuntu系统中配置Nginx和Nginx-RTMP-Module以支持直播推流服务。这些技术的结合为音视频处理提供了强大的支持。 ... [详细]
  • 利用C#技术实现Word文档的动态生成与编辑
    本文通过一个简单的示例,介绍了如何使用C#语言实现Word文档的动态生成与编辑功能。文章详细阐述了在项目中引用Word动态库的方法,并通过具体代码示例展示了如何创建和操作Word表格。此内容旨在为初学者提供参考和学习资料,欢迎读者提出宝贵意见和建议。 ... [详细]
  • 本文探讨了在Lumen框架中实现自定义表单验证功能的方法与挑战。Lumen的表单验证机制默认返回无状态的JSON格式API响应,这给初学者带来了一定的难度。通过深入研究Validate类,作者分享了如何有效配置和使用自定义验证规则,以提升表单数据的准确性和安全性。 ... [详细]
  • 本文深入探讨了 HTML 中的 `margin` 属性,详细解析了其基本特性和应用场景。文章不仅介绍了 `margin` 的基本概念,还重点讨论了垂直外边距合并现象,并分析了 `margin` 在块级元素与内联元素中的不同表现。通过实例和代码示例,帮助读者全面理解 `margin` 的使用技巧和常见问题。 ... [详细]
  • MySQL:不仅仅是数据库那么简单
    MySQL不仅是一款高效、可靠的数据库管理系统,它还具备丰富的功能和扩展性,支持多种存储引擎,适用于各种应用场景。从简单的网站开发到复杂的企业级应用,MySQL都能提供强大的数据管理和优化能力,满足不同用户的需求。其开源特性也促进了社区的活跃发展,为技术进步提供了持续动力。 ... [详细]
  • 提升工作效率:掌握这些技巧,IDEA 使用效率翻倍 | IDEA 高效操作指南
    提升工作效率:掌握这些技巧,IDEA 使用效率翻倍 | IDEA 高效操作指南 ... [详细]
  • 图像分割技术在人工智能领域中扮演着关键角色,其中语义分割、实例分割和全景分割是三种主要的方法。本文对这三种分割技术进行了详细的对比分析,探讨了它们在不同应用场景中的优缺点和适用范围,为研究人员和从业者提供了有价值的参考。 ... [详细]
  • 深入解析Wget CVE-2016-4971漏洞的利用方法与安全防范措施
    ### 摘要Wget 是一个广泛使用的命令行工具,用于从 Web 服务器下载文件。CVE-2016-4971 漏洞涉及 Wget 在处理特定 HTTP 响应头时的缺陷,可能导致远程代码执行。本文详细分析了该漏洞的成因、利用方法以及相应的安全防范措施,包括更新 Wget 版本、配置防火墙规则和使用安全的 HTTP 头。通过这些措施,可以有效防止潜在的安全威胁。 ... [详细]
author-avatar
小情冒_256
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有