常用基于机器学习的一阶段算法

slime2022-05-06 17:18

从算法处理的流程来划分,基于深度学习的目标检测算法可分为两阶段(Two-Stage)算法和一阶段(One-Stage)算法,两阶段算法需要先进行候选框的筛选,然后判断候选框是否框中了待检测目标。

常用基于机器学习的一阶段算法

一阶段算法和两阶段算法最主要的区别,就是没有单独的候选框筛选阶段,而是直接回归目标的位置坐标和分类概率。常用的一阶段算法如下。

1.YOLO算法

2015年,R.Joseph等人提出了YOLO(You Look Only Once)算法,这是首个深度学习领域的一阶段算法。

从名字就可以看出,YOLO没有两阶段算法中提取候选框和验证分类两个步骤,图像送入一个神经网络就能完成整个预测过程。YOLO算法的实现方案是,先把原始图像划分成网格,然后基于网格的每个单元格回归目标的类别概率和位置坐标。

作为一阶段算法,YOLO的一个最大优点就是速度快,在VOC2007数据集上,mAP为63.4%,检测算法速度可以达到45fps;YOLO的加速版本mAP为52.7%,速度甚至可以达到惊人的155fps。

不过,YOLO也有不尽如人意的地方,在目标位置的精度上比两阶段算法有所降低,尤其是在对一些小目标的检测方面,效果明显变差。正因为存在这些问题,后续YOLO的版本以及其他一阶段算法,都致力于更好地解决上述问题。

2.SSD算法

2015年,W.Liu等人提出了SSD(Single Shot MultiBox Detector)算法,这是深度学习领域的第二个一阶段算法。

与仅使用最顶层特征图进行预测的方法不同,SSD最主要的贡献是引入了基于多尺度特征图的检测策略,显著提升了算法的性能,尤其是在小目标检测方面,相比YOLO有了明显的改善,在VOC2007数据集上,mAP达到了76.8%。

3.Retina-Net算法

Retina-Net算法的主要目的是解决正负样本不平衡的问题。常规的一阶段算法在提取训练样本的过程中,背景样本的比例远大于目标样本的比例。正负样本的极度不平衡会导致训练过程中模型较少关注目标样本,这也是一阶段算法的精度低于两阶段算法的主要原因。

Retina-Net算法引入了损失函数,其核心思想是在训练过程中,对传统的交叉熵损失加上权重,使得错分的样本产生的损失在最终损失中占有更大的比例。引入损失函数,使得一阶段算法在保持速度优势的前提下,保证了目标检测的精度。

4.FCOS算法

2019年,沈春华团队提出了FCOS(Fully Convolutional One-Stage)算法。和SSD等一阶段算法不同,FCOS是一种“anchor free”方法,回归目标位置不需要预先设定anchor,在待检测目标尺度和形态变化较大的场景中有重要的应用。

另外,FCOS算法在具体实现的过程中也使用了FPN策略,对于多尺度的目标有更好的检测效果。

以上就是小编为大家整理的“常用基于机器学习的一阶段算法”一文,更多相关信息尽在开课吧广场人工智能资讯频道。

免责声明:本站所提供的内容均来源于网友提供或网络搜集,由本站编辑整理,仅供个人研究、交流学习使用。如涉及版权问题,请联系本站管理员予以更改或删除。
有用
分享
全部评论快来秀出你的观点
登录 后可发表观点…
发表
暂无评论,快来抢沙发!
AI项目实战精讲