Paddle目标检测学习笔记(一)

简介: Paddle目标检测学习笔记(一)

发展历程


参考[1905.05055] Object Detection in 20 Years: A Survey (arxiv.org)综述,如图所示(图源论文):



在2012年AlexNet横空出世之前,物体检测主导方法都还是利用人工设计的特征,比如:


Viola Jones Detectors:


在2001年,Viola 和 Jones 在CVPR上发表了经典的《Rapid Object Detection using a Boosted Cascade of Simple Features》和《Robust Real-Time Face Detection》,提出了Viola-Jones检测器。VJ框架在AdaBoost算法的基础上,使用Haar-like小波特征和积分图技术来进行人脸检测。


VJ Det.采用最直接的检测方法,即,利用滑动窗口查看图像中所有可能的位置和比例,看看是否有窗口包含人脸。它通过结合“积分图像”、“特征选择”和“检测级联”三种技术,在当时大大提高了检测速度。


HOG Detector:


HOG Det.利用方向梯度直方图(HOG)特征描述符作为新的特征描述。同时,为了检测不同大小的对象,HOG Det.在保持检测窗口大小不变的情况下,对输入图像进行多次重标**。**


DPM(Deformable Part Model):


正如其名称所述,可变形的组件模型,是一种基于组件的检测算法,其所见即其意。该模型由大神Felzenszwalb在2008年提出,发表了一系列的cvpr,NIPS。并且还拿下了2010年,PASCAL VOC的“终身成就奖


DPM算法采用了改进后的HOG特征,SVM分类器和滑动窗口检测思想,针对目标的多视角问题,采用了多组件的策略,针对目标本身的形变问题,采用了基于图结构的部件模型策略。


2012年之后,在深度学习进入这一领域,诞生了很多优秀的算法,这里我将选取了一些我个人很仰慕的典型的算法。


单阶段*(one-stage)*


YOLOv3:


YOLO系列中,我感觉YOLOv3的应用最广。不同于两阶段的算法,YOLO将候选区和对象识别这两个阶段合二为一 ,将图像分为多个区域,同时预测多个区域的边界框和概率。YOLOv3中,未解决多尺度问题,使用FPN用不同尺寸特征图进行预测。


两阶段*(two-stage)*


R-CNN**:**对每张图通过 Selective search提取2000个候选区域,每个区域被 warped到卷积网络要求的输入大小,然后通过卷积网络得到一个输出作为这个区域的特征。使用这些特征来训练多个SVM来识别物体,每个SVM预测一个区域是不是包含某个物体。最后,使用这些区域特征来训练线性回归器来对区域位置进行调整。



每张图会通过 Selective Search提取2000个候选区域

每个区域被 warped到卷积网络要求的输入大小,然后通过卷积网络得到一个输出,作为这个区域的特征

使用这些特征来训练多个svm来识别物体,每个sm预测一个区域是不是包含某个物体

使用这些区域特征训练线性回归器,对区域位置调整

存在问题:


每个候选区的需要单独过CNN,计算量大

Selective Search提取的区域质量不好

特征提取、SVM分类器是独立训练而非联合训练,耗时长


Fast R-CNN


改进:


RoI Pooling:将每个区域内均匀分成若干小块,每个小块得到该区域内的最大值

Softmax+regressor:可以联合训练

Faster R-CNN:

针对Fast R-CNN中提取候选区域耗时长的不足,Faster R-CNN在产生候选区域时,使用 Anchor + RPN网络替代 Selective Search选取候选区域,选出包含物体的 Anchor进入RoI Pooling提取特征。在第二阶段,对候选区域进行分类并预测目标物体位置。



改进:


RPN替代Selective Search,用于提取候选区域


FPN:

构造多尺度金字塔,期望模型能够具备检测不同大小尺度物体的能力



Anchor:{322,642,1282,2562,5122}{P2,P3,P4,P5,P6}

RPN网络分为多个head预测不同尺度上的候选框

RPN网络的预测结果和 anchor解码得到的R会进行合并


Cascade R-CNN:


在Faster R-CNN中,RPN提出的proposals大部分质量不高,导致没办法直接使用高阈值的detector。为解决此问题,Cascade R-CNN引入多个head对RoI进行微调,每次 BBox head的偏移量和RoI解码作为下个阶段的RoI输入。


Libra R-CNN:


摘要:


相比于模型结构,相比之下如何对模型进行训练这一方面受到的关注比较少,但是其对于目标检测任务来说同样的重要。作者回顾了检测器的标准训练过程,发现了检测性能往往受到训练过程中不平衡的限制,而这种不平衡一般由三个层次组成:样本层(sample level)、特征层(feature level)和目标层(objective level)。


为了解决这个问题,作者提出了Libra R-CNN,用来平衡训练过程。Libra R-CNN由三个新组建构成:IoU平衡采样(IoU-balanced sampling)、平衡特征金字塔(balanced feature pyramid)和平衡L1损失(balanced L1 loss),分别用于降低采样、特征和目标三个层次的不平衡。


***AnchorFree****系列*


CornerNet:



将目标检测问题当作关键点检测问题来解决,也就是通过检测目标框的左上角和右下角两个关键点得到预测框。简单来说,CornerNet预测左上角和右下角两个关键点,再将其通过Embedding,将距离近的关键点组成预测框。


FCOS:



FCOS是基于FCN的逐像素目标检测算法,实现了anchor-free\proposal free的解决方案。简单来说,FCOS的核心思想是预测点和点到目标框四边的距离。

目录
相关文章
|
6月前
|
机器学习/深度学习 人工智能 自然语言处理
PaddleSpeech:百度飞桨开源语音处理神器,识别合成翻译全搞定
PaddleSpeech是百度飞桨团队推出的开源语音处理工具包,集成语音识别、合成、翻译等核心技术,基于PaddlePaddle框架提供高性能解决方案。
554 18
PaddleSpeech:百度飞桨开源语音处理神器,识别合成翻译全搞定
|
7月前
|
设计模式 存储 Java
「全网最细 + 实战源码案例」设计模式——责任链模式
责任链模式(Chain of Responsibility Pattern)是一种行为型设计模式,允许将请求沿着处理者链进行发送。每个处理者可以处理请求或将其传递给下一个处理者,从而实现解耦和灵活性。其结构包括抽象处理者(Handler)、具体处理者(ConcreteHandler)和客户端(Client)。适用于不同方式处理不同种类请求、按顺序执行多个处理者、以及运行时改变处理者及其顺序的场景。典型应用包括日志处理、Java Web过滤器、权限认证等。
146 13
「全网最细 + 实战源码案例」设计模式——责任链模式
|
11月前
|
机器学习/深度学习 PyTorch 算法框架/工具
彻底告别微调噩梦:手把手教你击退灾难性遗忘,让模型记忆永不褪色的秘密武器!
【10月更文挑战第5天】深度学习中,模型微调虽能提升性能,但也常导致灾难性遗忘,即学习新任务时遗忘旧知识。本文介绍几种有效解决方案,重点讲解弹性权重巩固(EWC)方法,通过在损失函数中添加正则项来防止重要权重被更新,保护模型记忆。文中提供了基于PyTorch的代码示例,包括构建神经网络、计算Fisher信息矩阵和带EWC正则化的训练过程。此外,还介绍了其他缓解灾难性遗忘的方法,如LwF、在线记忆回放及多任务学习,以适应不同应用场景。
1229 8
Java- IO 及其相关面试题(上)
Java- IO 及其相关面试题(上)
404 0
|
开发框架 安全 Java
.net和java有什么样的区别?
Java和.NET在本质、编程语言、生态系统与工具、跨平台性、应用领域、性能与效率以及安全性与可靠性等方面都存在明显的区别。选择哪个平台取决于具体的需求、技术栈和目标平台。
709 7
|
Web App开发 缓存 iOS开发
强制退出Mac程序的六种方法
强制退出Mac程序的六种方法
677 2
|
机器学习/深度学习 人工智能 算法框架/工具
深入浅出:使用深度学习进行图像分类
【8月更文挑战第31天】在本文中,我们将一起探索如何利用深度学习技术对图像进行分类。通过简明的语言和直观的代码示例,我们将了解构建和训练一个简单卷积神经网络(CNN)模型的过程。无论你是初学者还是有一定基础的开发者,这篇文章都将为你提供清晰的指导和启发性的见解,帮助你理解并应用深度学习解决实际问题。
|
编解码 搜索推荐 API
通义万相文本绘图与人像美化解决方案体验与评估
通义万相提供详尽文档和简易API调用,适合新手部署。服务集成便捷,响应迅速,模型泛化能力强,支持多样化风格,生成图片质量高。建议增强交互式编辑、多语言支持及智能推荐功能。相比竞品,通义万相成本控制优秀,易用性强,适用范围广泛。
430 8
|
存储 监控 负载均衡
微服务架构中的服务治理与监控技术
【8月更文挑战第3天】微服务架构中的服务治理与监控是确保系统稳定、高效运行的重要手段。通过构建注册中心实现服务的自动注册和发现,通过部署监控工具实现对服务的全面监控,可以有效地提高系统的可靠性和可用性。未来,随着技术的不断发展,服务治理与监控技术也将不断完善和优化,为微服务架构的广泛应用提供更加坚实的支撑。
|
存储 分布式计算 视频直播
阿里云服务器的十二种典型应用场景:解锁云计算的无限可能
场景概述: 区块链技术在金融、供应链管理等领域有着广泛的应用。阿里云提供了区块链服务BaaS,支持联盟链的快速部署和管理。