9种深度学习算法简介

导读:从算法处理的流程来划分,基于深度学习的目标检测算法可分为两阶段(Two-Stage)算法和一阶段(One-Stage)算法,两阶段算法需要先进行候选框的筛选,然后判断候选框是否框中了待检测目标,并对目标的位置进行修正;一阶段算法没有筛选候选框的过程,而是直接回归目标框的位置坐标和目标的分类概率。

作者:涂铭金智勇

01两阶段算法

两阶段算法包含选择候选框和修正目标分类/位置两个阶段,对这两个阶段的不同处理方式,构成了不同的算法方案。

1.R-CNN算法

在VOC2007数据集上,R-CNN算法相比之前的检测算法,在性能有了显著的提升(从33.7%提升到58.5%),是检测算法的一个里程碑式的突破。

虽然R-CNN在算法性能上取得了巨大的进展,但弊端也非常明显,因为需要分别从2000多个候选框中提取特征,所以效率非常低,后续各种算法正是为了解决这一问题而提出的一系列改进方案。

2.SPP-Net算法

2014年,何恺明等人提出了SPP-Net(SpatialPyramidPoolingNetworks,空间金字塔池化网络)算法。

R-CNN算法要求输入卷积网络用来提取特征的子图像尺寸固定,比如Alex-Net就要求输入的图像大小为固定的224像素×224像素,而SPP-Net算法则去掉了这一限制。SPP-Net算法基于一个空间金字塔池化层(SPPlayer),无论输入的子图像大小如何,都会将子图像采样成固定大小的图像。

在使用SPP-Net进行检测的过程中,对原始图像只需要进行一次卷积网络计算,在得到整幅图像的特征图之后,通过空间金字塔池化层将每个候选框区域(ROI)都分别采样成相同尺寸的子图像,将相同尺寸的各个子图像送入后续的网络进行特征提取,提取的特征具有相同的维数,最后送入全连接层进行分类。

SPP-Net不需要进行多次卷积网络计算,与R-CNN相比,在算法精度不变的情况下,算法的速度有了20倍的大幅提升。

3.FastR-CNN算法

2015年,R.Girshick等人提出了FastR-CNN算法,其本质是在R-CNN和SPP-Net的基础上进行了进一步改进。FastR-CNN可以在网络里同时预测目标的分类概率和位置偏移。

在VOC2007数据集上,FastR-CNN将mAP(meanAveragePrecision,平均精度均值)从58.5%提升至70.0%,算法速度也比R-CNN有了200倍的提升。虽然FastR-CNN的性能和速度相比R-CNN和SPP-Net有了明显的改善,但整体速度仍然受到候选框检测算法的制约,为了解决这个问题,FasterR-CNN算法诞生了。

4.FasterR-CNN算法

2015年,S.Ren等人提出了FasterR-CNN算法,FasterR-CNN是第一个端到端算法,也是第一个接近实时深度学习的目标检测算法。使用ZF-Net网络骨架,在VOC2007数据集上,mAP达到了73.2%,算法速度达到了17fps。

FasterR-CNN最主要的贡献是使用卷积网络检测候选框。检测候选框、预测目标的类别、回归目标位置的偏移量,共享底层卷积特征,整个算法流程融合成了一个完整的端到端学习框架。FasterR-CNN突破了候选框检测的速度瓶颈,是一种十分重要的两阶段算法。

5.FPN算法

2017年,Lin等人在FasterR-CNN的基础上提出了FPN(FeaturePyramidNetworks,特征金字塔策略)算法。

在FPN之前,绝大多数深度学习检测器都是基于卷积网络最顶层的特征图进行计算的。深层特征包含全局信息,却弱化了细节信息,使用深层特征在小目标检测,尤其是精准定位方面,有着较大的劣势。FPN采用top-down结构以及侧连方法,将深层特征和浅层特征进行融合,使得特征既包含全局信息又包含细节信息。

另外,检测计算也基于特征金字塔的多层特征图,具有更强的多尺度适应性。基于FPN的FasterR-CNN算法在COCO数据集上取得了最优的性能。当前,FPN已经成为构建检测算法的基础策略。

02一阶段算法

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

1.YOLO算法

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

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

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

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

2.SSD算法

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

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

3.Retina-Net算法

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

4.FCOS算法

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

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

THE END
1.超详细:算法简介与函数表达式跟内置函数算法函数算法简介及二分法 1.什么是算法 算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能https://blog.csdn.net/python03012/article/details/135287400
2.算法简介文章教程算法简介 该使用合并排序算法还是快速排序算法,或者该使用数组还是链表。仅仅改用不同的数据结构就可能让结果大不相同。 使用二分查找时,你猜测的是中间的数字,从而每次都将余下的数字排除一半。 不管我心里想的是哪个数字,你在 7 次之内都能猜到,因为每次猜测都将排除很多数字!https://www.wenjiangs.com/article/suanfa-jianjie.html
3.算法简介说明.pdf内容提供方:gcq的书屋 大小:936.7 KB 字数:约2.89万字 发布时间:2024-01-12发布于北京 浏览人气:24 下载次数:仅上传者可见 收藏次数:0 需要金币:*** 金币(10金币=人民币1元) 算法简介说明.pdf 关闭预览 算法简介说明.pdf 原文免费试下载 想预览更多内容,点击免费在线预览全文 https://max.book118.com/html/2024/0110/8034055125006024.shtm
4.量子算法简介量子算法简介 说明:本文来自中山大学数据科学与计算机学院量子计算实验室,已授权公众号”量子科学ABC”发布,转载请注明出处并保持原意,谢谢! 量子计算近年来受到了极大关注,根本原因在于其具有强大的并行性,可以在有效时间内解决一些经典计算机不能有效解决的问题。例如,Shor 算法可以在多项式时间内解决大数因子分解问题,从https://www.scholat.com/teamwork/showPostMessage.html?id=7575
5.算法基础简介简介 比赛相关 工具软件 语言基础 算法基础 搜索 动态规划 字符串 数学 数据结构 图论 计算几何 杂项 专题 算法基础 算法,顾名思义,即计算的方法。算法通常用于解决特定的计算任务,但与可以直接在计算机上运行的程序不同,算法使用数学化的描述,更加侧重于思想,可以被看作抽象的程序。同一个算法可以有许多种不同的https://oi-wiki.org/basic/
6.算法竞赛简介算法竞赛,指的是以算法(和数据结构)为核心主题的编程竞赛。算法竞赛一般要求在规定时间内做若干道题目,并以编程的方式解决问题,可以使用 C/C++/Pascal/Java 等语言(视比赛要求而定)。竞赛规则 算法竞赛胜利的目标不尽相同,但是,如果你能在规定时间内正确解答所有题目,那么你肯定是赢家。 https://upclinux.github.io/intro/04/acm/
7.一文详解Java二分查找算法java二分查找(binary search),也称折半搜索,是一种在有序数组中查找某一特定元素的搜索算法,接下来就来给大家讲讲都有哪些查找算法,以及经典的二分查找法该如何实现,需要的朋友可以参考下+ 目录 一. 查找算法 1. 常用查找算法简介 Java中常用的查找算法有如下几种: 二分查找法 线性查找法 插值查找法 斐波那契查找https://www.jb51.net/program/291199pwb.htm
8.SM3算法的FPGA设计与实现AET1 SM3算法简介 为了满足电子认证服务系统等应用需求,国家密码管理局于2010年12月发布了SM3密码Hash算法。该算法适用于商用密码应用中的数字签名和验证、消息认证码的生成与验证以及随机数的生成,可满足多种密码应用的安全需求。SM3算法能够对任何小于264 bit的数据进行计算,输出长度为256 bit的Hash值。 http://www.chinaaet.com/article/185139
9.科学网—算法博弈论简介(修改版)算法博弈论简介(修改版) 1.1信息安全经济学 本文所涉及的科学领域为普适计算安全领域与计算机理论应用的交叉方向,即信息安全经济学,这是一个新兴的学科领域,并正在得到越来越多研究人员的关注。剑桥大学计算机实验室的Ross Anderson和TylerMoore在2006年10月27日《科学》杂志上刊发的《信息安全经济学(The Economics ofhttps://blog.sciencenet.cn/blog-453771-427582.html
10.多源定性概率网模型的融合算法研究简介,目录书摘多源定性概率网模型的融合算法研究 暂无报价 1评论 100%好评 编辑推荐: 内容简介: 概率网是人工智能学科表示并处理概率知识的一类图模型方法。多源概率网融合是全面进行概率知识表示和推理研究中的重要问题。已有T作大多限于贝叶斯网、影响图和可能性网等定量概率网的融合,较少考虑到概率知识只能定性表示或只需https://www.jd.com/nrjs/f49ca0522b11e889.html
11.机器学习之梯度提升决策树(GBDT)腾讯云开发者社区1.GBDT算法简介 GBDT(Gradient Boosting Decision Tree)是一种迭代的决策树算法,由多棵决策树组成,所有树的结论累加起来作为最终答案,我们根据其名字(Gradient Boosting Decision Tree)来展开推导过程。决策树(Decision Tree)我们已经不再陌生,在之前介绍到的机器学习之决策树(C4.5算法)、机器学习之分类与回归树(CART)https://cloud.tencent.com/developer/article/1486717
12.中华人民共和国密码法–云南城市建设职业学院四、商用密码算法简介 商用密码算法体系包括对称密码算法、公钥密码算法和密码杂凑算法等类型。对称密码算法,即加、解密使用的密钥是相同或容易相互推导得出的,如同往一个上了锁的箱子里放物品,放入和取出物品时需要用同样的钥匙开锁。公钥密码算法,加密的时候用公开的密钥,解密的时候用只有自己知道的私钥,且从私钥可以https://www.yncjxy.com/baoweichu/falufagui/20964/
13.轻松看懂机器学习十大常用算法通过本篇文章可以对ML的常用算法有个常识性的认识,没有代码,没有复杂的理论推导,就是图解一下,知道这些算法是什么,它们是怎么应用的,例子主要是分类问题。 每个算法都看了好几个视频,挑出讲的最清晰明了有趣的,便于科普。 以后有时间再对单个算法做深入地解析。 https://www.jianshu.com/p/55a67c12d3e9
14.常见算法简介算法是一种用来解决问题的有限步骤集合,它描述了在特定输入下如何通过执行一系列定义好的操作来产生所需的输出。算法可以看作是解决问题的一种方法或计算过程。 一个好的算法应当具备以下几个特点: 确定性:对于相同的输入,算法应当总是产生相同的输出。 https://mp.weixin.qq.com/s?__biz=MzUzOTY2OTcyMw==&mid=2247493391&idx=2&sn=6c48236512091265921193b004e04415&chksm=fac642bbcdb1cbade78672c8d96ac2e7da49f8be377f1433b970f82279a173fe915f0781947a&scene=27
15.算法图解(豆瓣)作者简介· ··· Aditya Bhargava,软件工程师,兼具计算机科学和美术方面的教育背景,在adit.io撰写编程方面的博客。 目录· ··· 第1章 算法简介 1 1.1 引言 1 1.1.1 性能方面 1 1.1.2 问题解决技巧 2 1.2 二分查找 2 1.2.1 更佳的查找方式 4 ··· (https://www.douban.com/doubanapp/dispatch?uri=/book/26979890/
16.粒子群算法PSO1基本原理51CTO博客算法简介 粒子群算法,Particle Swarm optimization,简称PSO,是由Eberhart博士和kennedy博士发明的一种启发式算法, 其思想来源于 群体间互相协作和信息共享,使得群体行为形成从无序到有序的演化,进而达到目的 的自然现象; 通过模拟鸟群觅食行为而发展起来的一种基于群体协作的随机搜索算法。 https://blog.51cto.com/u_15127690/4320916