目标检测概述——YOLOv4详解「这是我参与2022首次更文挑战的第28天,活动详情查看:2022首次更文挑战」。目标

机器学习是实现人工智能的一种方法:

深度学习使用更深层的数学函数解决问题,它属于机器学习的一种方法,类似一个水流系统:

他们的关系如下图所示:

以图像识别为例。我们人为地给机器写一段程序,然后像教学生一样地告诉机器,这张图片是猫,另一张图片是狗等等,机器“学习”完成以后,你再给他看一张新的图片,假设给它看一张它完全没见过的猫的图片,此时,我希望机器能回答出:“这是猫”,如果机器就是这么回答的,那么,我们可以认为机器已经学会了图像识别任务。

其实机器是在一个假设空间中寻找最优解的,哪一个函数能尽可能地拟合输入数据,那么机器就认为那个函数效果较好:

这里的假设空间是非常重要的,如果实际关系是非线性的(比如圆的周长与半径之间的关系C=πR2),却让机器使用“线性假设”去学习,最优结果只能找到一条与该非线性曲线最贴近的直线,而不能突破“直线关系”的表达范畴。

以刚刚的图像识别为例,看看机器的在线性回归问题上的“解题思路”。

机器学习(监督模型)遵照“假设空间+优化目标+寻解算法”的流程,从数据中学到知识并预测未来。

这就类似于“将大象装进冰箱需要几步?”:

图像识别做的是分类任务;

而目标检测中,不光要分类,还要把物体的位置给标注出来:

two-stage是目标检测算法的一种。主要通过一个完整的卷积神经网络来完成目标检测过程,所以会用到的是CNN特征,通过卷积神经网络提取对候选区域目标的特征的描述。典型的代表:R-CNN、fasterRCNN。如果不考虑two-stage方法需要单独训练RPN网络这一过程,可以简单的广义的理解为端到端的过程。但不是完全的端到端,因为训练的整个网络过程中需要两个步骤:

相对于传统的检测算法,two-stage不需要额外的训练分类器,特征表示的过程,整个目标检测的过程都通过一个完整的CNN完成。相对于传统的算法,准确度得到了非常大的提升,速度相对与onestage的方法慢一点,但精度高。

首先输入图片,然后对图片进行深度特征提取(经过卷积神经网络,称之为主干网络),然后通过RPN网络完成传统目标检测算法中滑动窗口所完成的任务(也就是产生候选区域)同时完成对候选框的分类(这个分类过程就将后选区分为背景和目标两个类别)并且RPN网络会对目标的位置进行初步的预测。

然后需要一个roi_pooling层将候选区域进行进一步的位置的精确的回归和修正。(实际上可以将roi_pooling层理解为“抠图”,对于多个featuremap想要不去重复的计算CNN特征,往往通过roi_pooling进行一个抠图的操作。)接下来得到候选目标对应到featuremap上它的那一段区域(特征)之后,会通过一个全连接层来进一步的对候选区域的特征进行表示。然后通过分类和回归的两个分支,来分别完成对候选目标类别的判断和位置的精修。(这里的类别不同于RPN网路的类别,这里通常会得到物体真实的类别)

one-stage检测算法,其不需要regionproposal阶段,直接产生物体的类别概率和位置坐标值,经过单次检测即可直接得到最终的检测结果,因此有着更快的检测速度,比较典型的算法如YOLO,SSD,Retina-Net。

其主要思路是均匀地在图片的不同位置进行密集抽样,抽样时可以采用不同尺度和长宽比,然后利用CNN提取特征后直接进行分类与回归,整个过程只需要一步,所以其优势是速度快,但是均匀的密集采样的一个重要缺点是训练比较困难,这主要是因为正样本与负样本(背景)极其不均衡,导致模型准确度稍低。

SSD采用VGG16作为基础模型,然后在VGG16的基础上新增了卷积层来获得更多的特征图以用于检测。SSD的网络结构如图所示:

SingleShotMultiBoxDetector(SSD)是一种单阶段的目标检测器。与两阶段的检测方法不同,单阶段目标检测并不进行区域推荐,而是直接从特征图回归出目标的边界框和分类概率。SSD运用了这种单阶段检测的思想,并且对其进行改进:在不同尺度的特征图上检测对应尺度的目标。如下图所示,SSD在六个尺度的特征图上进行了不同层级的预测。每个层级由两个3x3卷积分别对目标类别和边界框偏移进行回归。因此对于每个类别,SSD的六个层级一共会产生38x38x4+19x19x6+10x10x6+5x5x6+3x3x4+1x1x4=8732个检测结果。

目前主流的目标检测算法,包括多阶段的各种RCNN和单阶段的SSD、RetinaNet上都是基于Anchor来做的。Anchor的本质是候选框,在设计了不同尺度和比例的候选框后,DNN学习如何将这些候选框进行分类:是否包含object和包含什么类别的object,对于postive的anchor会学习如何将其回归到正确的位置。它扮演的角色和传统检测算法中的滑动窗口等机制比较类似。但是,这种设计思路有很多问题:

基于上述原因,很多人做出了改进,提出了AnchorFree的方法

CenterNet提出了一种简单和高效的方法:使用边界框的中心点表示物体。将图像输入到一个全卷积网络得到一个热图,这个热图的峰值对应于目标的中心点,峰值周围的图像特征用于预测边界框的高和宽。在推理阶段,CenterNet使用单个网络进行前向传播,无需NMS等后处理。

目标检测主要用于人脸检测,车辆检测,行人计数,自动驾驶,安全系统等

通俗的讲,YOLO-v4算法是在原有YOLO目标检测架构的基础上,采用了近些年CNN领域中最优秀的优化策略,从数据处理、主干网络、网络训练、激活函数、损失函数等各个方面都有着不同程度的优化,虽没有理论上的创新,但是会受到许许多多的工程师的欢迎,各种优化算法的尝试。

采用卷积神经的目标检测算法大致可以分为两个流派,一类是以R-CNN为代表的two-stage,另一类是以YOLO为代表的one-stage。

R-CNN系列的原理:通过ROI提取出大约2000个候选框,然后每个候选框通过一个独立的CNN通道进行预测输出。

R-CNN特点:准确度高,速度慢,所以速度成为它优化的主要方向。

YOLO系列的原理:将输入图片作为一个整体,通过CNN通道进行预测输出。

YOLO特点:速度快,准确度低,所以准确度成为它优化的主要方向。

经过一系列的优化与改进,特别是2020年4月份推出的YOLOV4,使得它在准确度方面得到了大幅度的提升,另外,它还能达到实时检测(在GPU加持的情况下)。

在输入上采用Mosaic实现数据增强:

Mosaic算法在输入图片集中随机选取4张图片进行随机缩放,随机裁剪,随机扭曲,然后将他们拼接起来,其目的就是丰富样本数据集。

YOLOV4的骨干网络采用CSPNet(CrossStagePartialNetwork)网络结构,它其实是在残差网络的基础上发展起来的。

一方面,用Concat代替Add,提取更丰富的特征。Concat操作后,特征图的尺寸不变,深度会增加,而Add操作后尺寸和深度都不改变,从这个意义上说,用Concat代替Add,就能够提取更丰富的特征。

另一方面,引入transitionlayer(1*1conv+2*2pooling),提取特征,降低计算量,提升速度。(举一个实例来说明,输入图片大小是56*56*256,要求得到输出大小是28*28*512,这里就有两种实现方式:一次卷积方式,它的卷积核参数个数是117万;另一种是二次卷积方式,引入了1*1卷积,它的卷积核参数个数是62万,相比于一次卷积方式,它的卷积核参数个数降低了一倍。)

还有一点是将Baselayer分为两部分进行融合,提取更丰富的特征。将Baselayer一分为二,一部分通过类似残差网络得到的输出与另一部分进行Concat操作,将操作后的结果通过TransitionLayer。

FPN(Featurepyramidnetworks)+PANet(PathAggregationNetwork)

它其实是在YOLOV3的基础上增加了一个自底向上的PANet结构,特征图的尺寸是通过下采样得到的,而下采样是通过卷积的方式实现的(改变滑动窗口的步长)。

用CIoULoss取代IouLoss

IoUloss中IoU交并比,两个框的交集/并集,有两个缺点:

1.无法反应两个的距离

例如状态1,两个框不相交,无论怎样移动两个框,IoU=0。

2.无法区分两者相交的情况

例如状态2和3,两个框相交的情况完全不一样,但是IoU相同。

THE END
1.AI产品经理要了解的算法有哪些?智能算法正在颠覆整个行业。但是,这种改变才刚刚开始,未来十年将有可能看到所有行业都受到算法的影响。算法可以更快做出更明智的决策,并且降低风险,这就是算法的意义。 解决不同的问题需要用到不同的算法,或者是几种算法配合使用。熟悉并了解各类算法,对AI产品经理在设计产品的时候可以起到辅助决策。 下面我们一起来看http://baijiahao.baidu.com/s?id=1642349776125726801&wfr=spider&for=pc
2.人工智能三大算法,人工智能三大核心算法揭秘人工智能三大算法介绍人工智能三大核心算法,包括机器学习算法、深度学习算法以及神经网络算法等的基本原理和应用,帮助了解如何通过数据建模和分析来实现智能化的决策和操作。人工智能算法,机器学习算法,深度学习算法,神经网络算法,决策树算法,聚类算法 2020.3.26日今日观点 今日观点 信息面上,一、美股三大指数涨跌不一,https://www.55188.com/topics-11081470.html
3.人工智能三大要素:数据,算法,算力。掌握人工智能三大核心,成人工智能三大要素:数据,算法,算力。掌握人工智能三大核心,成为未来科技的引领者——人工智能训练师人工智能的三大要素——数据、算法、算力,是推动AI技术飞速发展的关键。而在这三者之间,有一个角色至关重要,那就是人工智能训练师。数据是AI的 - 人工智能训练师于2https://www.douyin.com/note/7368720838083775782
4.5人工智能崛起的三大基石欢迎收听电子音频内容《5 人工智能崛起的三大基石-深度学习算法》,你可以在线听书也可以下载喜马拉雅APP播放,想收听更多更优质的有声读物小说故事音乐作品,就来喜马拉雅!https://m.ximalaya.com/gerenchengzhang/43640871/354475523
5.人工智能三大核心驱动力:算法数据和计算格灵深瞳、英特尔联手给出了答案:算法、数据和计算是人工智能时代前进的三大马车,也是其核心驱动力和生产力。作为人工智能物联网代表性企业,格灵深瞳在持续性优化、突破全目标结构化算法的同时,也逐渐实现全目标结构化算法在公安、交通、零售、银行等领域的落地应用,爆炸式增长的海量“数据”及计算能力成为格灵深瞳新的https://vr.sina.com.cn/news/hz/2019-08-13/doc-ihytcitm8776640.shtml
6.人工智能(1)三类机器学习算法人工智能三大算法一个监督式学习者的任务在观察完一些训练范例(输入和预期输出)后,去预测这个函数对不论什么可能出现的输入的值的输出。 分类、回归 2.非监督学习(Unsupervised learning) 无监督式学习(Unsupervised Learning )是人工智能网络的一种算法(algorithm)。其目的是去对原始资料进行分类,以便了解资料内部结构。有别于监督式学https://blog.csdn.net/Game_Builder/article/details/83340733
7.算力数据与算法:人工智能崛起的三大动力在人工智能的热潮中,算力、数据和算法构成了驱动这场技术革命的强大引擎。金融界在12月9日报道,宏景科技在回复投资者问询时指出,算力是AI产业链中不可或缺的一环,犹如引擎中的燃料,是推动整个生态系统运转的核心力量。 想象一下:没有数据,算法就是空中楼阁;没有算法,数据如同荒废的金矿;而没有算力,二者则只能是https://m.sohu.com/a/834593949_122004016/
8.解密人工智能发展中的三个关键驱动力之一主要算法探索人工智能发展的关键在于其算法,它们是机器学习、自然语言处理和计算机视觉等领域的核心驱动力。三大算法,即监督学习、无监督学习和强化学习,是目前人工智能研究中最为重要的部分。它们不仅推动了技术进步,也深刻影响着我们的生活方式。 人工智能三大算法:它们如何塑造我们的未来? https://www.xyvlvfvkr.cn/zhi-neng/32921.html
9.人工智能算法交易2019全球首场巡讲—上海站外汇频道近年来,金融领域的人工智能已成为国际知名大公司投入重金搏杀的战场,高盛、花旗以及汇丰等大型金融机构每年都投入数十亿美金,尤其值得注意的是外汇交易人工智能已成为各方势力角逐的顶级角斗场。 1月12日13:30,人工智能算法交易 2019全球首场巡讲—上海站将在上海市黄浦区九江路505号上海大酒店四楼紫晶厅举行。温莎经纪https://forex.hexun.com/2019-01-03/195754872.html
10.完整解析AI人工智能:3大浪潮+3大技术+3大应用AET二、AI的三大技术 快速了解了AI的发展史后,我们来看看当代人工智能的三大代表性模型:遗传算法、专家系统、类神经网络。 1、遗传算法 遗传算法(Genetic algorithm;GA),又称为演化式算法(Evolutionary algorithm),是受达尔文演化论所启发的人工智能。它透过「适者生存」的规则,将“优秀的个体”想象成“好的答案”,透过http://www.chinaaet.com/article/3000082509
11.5G人工智能到底多重要?大咖们这么说新闻频道第三轮人工智能热潮的兴起,令全球再度陷入一种技术狂欢。数据显示,2018年全球人工智能业务规模将达到1.2万亿美元,与2017年相比增长了70%。人工智能发展的三大要素是数据、算法和计算力,这一轮热潮得以快速发展,正是得益于这三个要素已经准备就绪。 TCL李东生:人工智能发展空间广阔将提升制造业竞争力 https://news.cctv.com/2018/11/09/ARTIEjCZmBKoDvMXUKqXSfEI181109.shtml
12.IDC发布医疗人工智能平台白皮书:超过35.3%的受访医院计划未来一年建立专业的人工智能算法平台,包括硬件平台的搭建和计算系统的建立。整体的平台也可以采用专业性一体化的平台式,即打包集成芯片、服务器、计算系统、算法模型软件以及人工智能应用系统和云服务的一体化平台。 先从医疗影像人工智能系统的开发和应用开始,在此基础上,进一步集成更多类型的数据例如病历数据、检验检查数据、患者https://www.tmtpost.com/3659574.html
13.一文知道人工智能芯片的算法人工智能的三大核心,是深度学习算法、数据和算力。在这三大要素中,大数据的获取和处理难度在下降,算法也在深度学习模型的基础上不断优化,而统一协调数据和算法的AI芯片能否获得大的飞跃,成为市场关注的焦点。 根据Gartner数据,全球各大芯片公司、互联网巨头和创业企业都在AI芯片市场竞争,预计到2023年全球市场规模将达到https://m.elecfans.com/article/1390606.html
14.人工智能的三大基石()。人工智能的三大基石( )。A.算法B.数据C.算力D.区块链的答案是什么.用刷刷题APP,拍照搜索答疑.刷刷题(shuashuati.com)是专业的大学职业搜题找答案,刷题练习的工具.一键将文档转化为在线题库手机刷题,以提高学习效率,是学习的生产力工具https://www.shuashuati.com/ti/89776714c3d148a9830393f736ca7624.html?fm=bd441ea39cb6af21b25bb364d899583fcf
15.AI计算,为什么要用GPU?深度学习是目前最主流的人工智能算法。从过程来看,包括训练(training)和推理(inference)两个环节。 在训练环节,通过投喂大量的数据,训练出一个复杂的神经网络模型。在推理环节,利用训练好的模型,使用大量数据推理出各种结论。 训练环节由于涉及海量的训练数据,以及复杂的深度神经网络结构,所以需要的计算规模非常庞大,对芯https://www.huxiu.com/article/2502208.html
16.人工智能之GBM算法前言:人工智能机器学习有关算法内容,请参见公众号“科技优化生活”之前相关文章。人工智能之机器学习主要有三大类:1)分类;2)回归;3)聚类。今天我们重点探讨一下GBM算法。 ^_^ 通过前面文章介绍,我们知道,人工智能之机器学习在生产、科研和生活中有着广泛应用,而集成学习则是机器学习的首要热门方向。之前介绍的AdaBohttps://mp.ofweek.com/ai/a645673021216
17.人工智能十大算法已公布,考验你对人工智能了解程度的时候到了摘要人工智能一直是人类社会科技发展的验证,关于他的思考一直在继续,当然除了这些,我们也需要学习人工智能,比如,我们需要了解人工智能十大算法,这些知识才是人工智能最实际的东西,并且这也是很重要的知识,那么什么是人工智能十大算法,环球网校的宣布带大家一起分析。 https://m.hqwx.com/news/2020-4/15877135755697.html
18.〖光明日报〗智能时代的三要素——数据算法和算力大数据相当于炒菜需要的食材,云计算等算力就相当于炒菜需要的煤气/电力/柴火,人工智能算法就相当于烹饪的方法。 近几年,人工智能技术和应用飞速发展,在我们生活和工作中都得到大量的普及应用,归功于推动人工智能发展的三大要素:数据、算法和算力。 这三个要素缺一不可,相互促进、相互支撑,是智能技术创造价值和取得成https://news.wtu.edu.cn/info/1004/29479.htm
19.中科院大学教授呼吁:AI算法才是核心竞争力,别过分关注芯片卡脖子腾讯科技:人工智能三要素中,算法、算力、数据,哪个是最大的短板? 石勇:我觉得最大的短板从结构上来讲,应该是算法。算法肯定是起关键作用的,没有算法,就不可能创造价值。目前的人工智能有三大要素,即数据、算法和算力。 看数据规模变化来看,我国可能很快超过美国。这是因为中国经济体量大,人口众多,它们正是产生大数http://www.bianews.com/news/details?id=169279
20.广州黄埔出台“算力算法10条”打造全国智能计算高地和人工智能广州市委常委、黄埔区委书记、广州开发区党工委书记陈勇在致辞中表示,黄埔区、广州开发区将坚决扛起使命担当,紧扣数据、算力、算法三大发展数字经济的关键要素,在高端人才引进、关键核心技术攻关、产业升级赋能、数字产业集群培育等方面持续发力,加速组建以数据流通交易为核心的数据联盟,加快打造全国智能计算高地和人工智能https://www.hp.gov.cn/xwzx/zwyw/tpyw/content/post_8313185.html
21.人工智能三大核心是人工智能三大核心要素——算法、算力、数据 算法。 人工智能三大核心是 企服解答 人工智能三大核心要素——算法、算力、数据。 算法、算力和数据是人工智能三大核心要素。AI算法持续突破创新,模型复杂度指数级提升,算法的不断突破创新也持续提升了算法模型的准确率和效率,各类加速方案快速发展,在各个细分领域应用落地,并https://36kr.com/p/1470435927543048