向AI转型的程序员都关注了这个号????????????

机器学习AI算法工程   公众号:datayx

目标检测系列视频讲解mp4,从RCNN>FastRCNN>FasterRCNN>FPN>MaskRCNN,华文讲解,很详细!

01懒人学RCNN.mp4       02懒人学FastRCNN.mp4                     03懒人讲FasterRCNN之简介.mp4   04懒人学FasterRCNN之融合.mp4 05懒人讲FasterRCNN之RPN.mp4   06懒人讲FPN之引言.mp4 07懒人讲FPN之深入浅出FPN.mp4       08懒人讲FPN之FasterRCNN实践.mp4 09懒人学MaskRCNN之介绍.mp4

10懒人学MaskRCNN之RoIAlign.mp4

11懒人学MaskRCNN之画龙点睛.mp4

12懒人学MaskRCNN之Architecture.mp4

13懒人学MaskRCNN之Architecture&画龙点睛.mp4

14懒人学Focal Loss.mp4   

资源获取方式

转发本文到朋友圈,并截图发送给微信公众号 datayx   即可获取

AI项目体验地址 https://loveai.tech

视频讲解(RCNN,FasterRCNN,FPN,MaskRCNN)_特征工程

视频讲解(RCNN,FasterRCNN,FPN,MaskRCNN)_锚点_02

视频讲解(RCNN,FasterRCNN,FPN,MaskRCNN)_深度学习_03

Fast RCNN虽然对于检测的速度已经接近于达到实时,但是候选区域的提取方法依然是依赖于传统的算法例如选择性搜索,而选择性搜索在CPU上要实现一张图像的候选区域提取需要达到2秒,显然是非常耗时的。

而GPU可以达到加速网络计算的速度,因此想到利用GPU加速的网络来代替传统的算法从而实现候选区域的提取过程。于是提出RPN(区域提取网络),并且该网络可以和卷积网络共享参数计算,因此消耗的时间非常少。

RPN就是区域提取网络,也就是代替传统的选择性搜索等算法来实现候选区域的提取部分,对于输入图像首先进行卷积运算,文中用到的ZF和VGG网络,得到HxWx256维度的特征图(ZF,VGG是512维),之后对于HxW特征图进行3x3的滑窗,得到256维特征向量,也就是对于特征图上3x3滑动窗口区域乘上3x3x256x256四维的卷积核,之后对于256维特征向量分别喂给两条分支,一条分类分支,一条边框分支,其中分类分支负责判定该区域是否存在目标,判定前景和背景,而边框回归分支用来修正原始粗略选取的目标区域。最后通过RPN生成大约2000个候选区域,再通过NMS算法筛选出其中的300个,对于每个候选区域进行ROI池化后再进行分类和边框回归(Fast RCNN中的算法过程)。从而实现一个迷你网络代替传统算法实现候选区域提前,并且在同一个网络中实现目标检测的任务。

锚点(Anchors)

锚点就是在滑动窗口的时候,希望能够对于一个滑窗区域能够同时预测多个区域位置,这个多个区域位置设置为k。因为3x3滑动窗口是填充为1,因此对于HxW特征图,得到的是HxW个滑窗区域,而每个滑窗区域中心就是特征图上对应的像素点(例如第一个滑窗中心位置对应的就是特征图上左上角点的像素位置)。接着计算每个滑窗中心点对应于原始图像的中心点,也就是说假设原始图像中一个以这个点为中心的区域经过SPP或者ROI池化得到的3x3的滑动窗口区域,因此如图所示以该点为中心,设置k个不同的大小,不同长宽比的区域,称这k个区域为锚点。

视频讲解(RCNN,FasterRCNN,FPN,MaskRCNN)_锚点_04

因此,对于分类分支,通过一个全连接层,得到2xk个输出(分别为每个锚点区域的前景和背景得分),边框回归的分支得到4xk个输出(分别为每个锚点区域的角点坐标以及长宽)。

损失函数

为了训练RPN网络,我们首先定义锚点边框区域如果与真实的标定区域的交集区域IOU大于0.7的,定义为正样本,而如果IOU小于0.3,则为负样本,而那些除了正负样本以外的锚点则对于训练没有什么帮助。

因此可以定义损失函数

视频讲解(RCNN,FasterRCNN,FPN,MaskRCNN)_特征工程_05

四步交替训练

第一步,训练RPN网络,用ImageNet预训练模型初始化;

第二步,训练一个检测网络,用Fast RCNN检测第一步RPN中提取的候选区域;

第三步,用检测网络来训练RPN,但是固定检测网络部分的参数,只微调RPN部分层;

第四步,保持共享的卷积层不变,只微调Fast RCNN中负责检测的那部分参数。

Faster RCNN简单的是就是区域提取网络RPN代替传统的选择性搜索的方法来实现候选区域的提取,再加上Fast RCNN部分检测网络。

算法的主要步骤就是将一张待检测图像送入卷积网络计算得到一个H*W维的特征图,该卷积网络部分是RPN和检测网络所共享的。接着通过RPN提取出2000个左右的候选区域,将每个区域进行ROI池化得到固定维度的特征向量,最后送入分类和回归的两个分支,进行判定该区域是否存在目标,目标的类别,以及对预测位置进行回归修正。

FPN

图像金字塔在使用传统算法来进行目标检测时已经有了应用,将图像构建一个多尺度的图像金字塔,在不同尺度分别进行提取候选区域进行预测,这样就可以检测出图像中不同大小规模目标,但是存在的问题就是占用内存大,计算量大,因此并没有广泛的应用。

后来随着深度学习的出现,渐渐的深度学习神经网络代替了传统算法,在目标检测领域取得了飞速的发展。深度学习采取的检测方法是仅仅在最后一层卷积层的特征图上进行预测,虽然分类的效果很好,但是对于图中小尺寸目标的检测还存在着问题。

由于卷积网络的特性,浅层网络包含丰富的细节信息,深层网络包含丰富的语义信息,而浅层与深层网络的特征映射图尺寸不一,也就和图像金字塔很类似,因此构建不同尺度的特征金字塔进行预测,从而能够对于不同尺度的目标都能够进行精准的检测。

FPN特征金字塔构造

视频讲解(RCNN,FasterRCNN,FPN,MaskRCNN)_锚点_06

FPN特征金字塔的构造如图所示,图中左侧是一个自底向上的卷积网络,将一个原始图像通过一系列的卷积层,提取出高层语义信息的特征图。之后从一系列的卷积层中,挑选出每一个尺寸大小的特征图中的最后一层(例如有5层卷积层的特征图大小都为13x13,那么只选出第5层,也就是包含更高层语义信息的那一层)。

挑选出不同尺寸的特征图之后,将相邻的两层结合起来,主要是通过对于低维度的特征图进行上采样,将维度调整至于高纬度一致,而对于高维度的特征图通过1x1卷积的形式来降低特征图的数量。(例如原本是10x10x256的特征图,加入一个1x1x256x128的卷积核就可以得到128通道10x10的特征图,最后加上上采样得到的例如128通道,这样得到的依旧是256个通道)。

最后将2层特征图相加,这样融合了两层信息既包含了高级的语义信息,也对于小尺寸目标会更敏感。

得到不同尺度的特征图之后,构造出一个新的特征金字塔。

FPN的网络结构整体依然是在Faster RCNN的基础上进行的改进,因此算法也十分相近。

首先是对于原始图像进行卷积网络,经过一系列运算挑选出其中不同维度的特征图,通过7.2.1的方法构造一个特征金字塔,接着对于特征金字塔每一个尺度的特征图上通过RPN提取不同大小候选区域,之后通过ROI池化输出固定维度的特征向量,分别通过分类和回归两条分支进行目标类别的判定以及候选框位置的修正。

通过多尺度的特征金字塔的结构,使得目标检测的网络对于小物体的检测的准确率也有了明显的提高,检测的速度也进一步的加快,对于实时的检测也成为了可能。

 

不断更新资源

深度学习、机器学习、数据分析、python

 搜索公众号添加: datayx  

视频讲解(RCNN,FasterRCNN,FPN,MaskRCNN)_深度学习_07


机器学习算法资源社群

不断上传电子版PDF资料

技术问题求解

 QQ群号: 333972581  

 

长按图片,识别二维码