当前位置:首页 > 天道酬勤 > 正文内容

目标检测和识别(ai检测是什么)

张世龙2021年12月21日 18:59天道酬勤1120

编辑者:

在目标检测的发展过程中,有一种在保持精度的同时提高网络速度的重要方法。 那就是共享卷积。 另一方面,SPP-Net提出了共享卷积的方式,之后的大部分目标检测模型都使用该方法。 Faster R-CNN也一样,但RoI-Pooling后的权重不共享。 让我们来考虑一下是否可以共享所有的卷积层。

文章作者: teddy张掖

责任编辑: teddy检查

看完

1目标检测:Region-based Fully Convolutional Networks(R-FCN)

Faster-CNN,我以为这个算法的速度达到了极限。 但是,大佬团队又很快改进了这个方法。 虽然不如以往的提高,但总体来说还不错。 比Faster-CNN快2.5-20倍,约每张0.17s秒。 看看大佬是怎么想的。 其实,这个观点就像我刚才说的,是共享卷积层。 但是,由于前面已经共享了很多,作者开始考虑RoI后面的所有连接部分是否都变成了卷积层,放在RoI前面。 变成全卷积网络!

论文地址:

https://arxiv.org/abs/1605.06409

代码地址:

359 Github.com/Purediors/py torch _ rfcn

算法概述

R-FCN框架的由来是,Fast R-CNN共享卷积层(RPN和Fast R-CNN ),但经过ROI轮询后,没有共享。 如果一张图像有500个region proposal,就必须分别进行500次卷积,很浪费时间。 通过上图的比较可以看出,R-FCN具有更深的共享卷积网络,是真正全卷积的结构。 但是,与Faster R-CNN一样,最后的输出是object的分类和BB回归。

其次,详细介绍了R-FCN的算法。

在加载了预训练权重的分类网络中输入图像。 本文使用的是ResNet-101的Conv4之前的网络。 经过预训练网络后,最后的卷积层存在三个分支,第一个分支是在feature map上建立RPN网络,得到相应的RoI,第二个分支是得到该feature map上的一个,即9502.163.com

维的位置-敏感性得分图。 用于分类。 用同样的方法,第三个分支变成一个

维度的位置-敏感性指标图。 用于bb回归。

在两个score map上分别执行定位敏感性轮询,以获取最终的类别和位置信息。

Translation Invariance Variance

(分类)位置不敏感性)简单来说,作为分类问题之一,位移不变性,即小狗被强调。 无论在图像中如何移动、变换,网络都最好能够准确地区分其类别。 实验也证明,像Resnet-101和GoogLeNets这样深层的全卷网络具有这样的性质

(检测)位置敏感性)对检测任务来说,我希望我的网络能够检测物体的微小运动,准确输入其位置坐标,因此这样的网络对位置敏感,但显然深层网络不具有这样的性质,而是微小的运动

基于ResNet的发现网络通常使用RoI层将网络分为共享卷积层和RoI-wise层。 第一部分用共享卷积层提取图像的特征,第二部分通常是全连接层,对各自的RoI进行分类和回归。 此时,第2部分的计算并不是共享的。 这也是R-FCN需要改善的地方!

Position-sensitiv

e score map & RoI pooling

由于我们现在的检测网络既要分类,又要定位,这样就会很矛盾,那么如何解决上面说的问题呢?而ResNet的论文中为了解决这个问题,将RoI pooling放置在了卷积层的中间,而不是最后一层,这样就使得RoI pooling后面的卷积层有了位置敏感性,从而使检测精度提高,但缺点很明显,由于RoI pooling并不是共享计算的,而是针对每个RoI,所以速度很慢。

而R-FCN提出了Position-sensitive score map,将RoI-wise层提到了前面,并实现了共享特征计算,从而实现了速度和准确率上的折中。其重要思想是:如果一个RoI中有一个目标,假设为人,我们将这个RoI划分为k*k个子区域,文中k=3,那我们很容易知道top-center区域是人头的位置,所以我们就完成了物体的各个部位与RoI的子区域之间的“一一对应”。

这样的话我们就可以判断出RoI是属于物体还是背景了!这就是position-sensitive的含义,而对于score map其实质就是一个feature map,其宽和高都与最后一个feature map一样,只是维度我们设为

,而同时要产生

个score map,这是由于我们每个子区域的响应要到不同的score map上去寻找,也就是说每个score map都只关心某个子区域,即第k个子区域响应在第k个score map的第k个子区域相对应的位置。这样就可以准确的进行类别的分类,同时对位置信息很敏感。具体是如何找到的?

这就是Position-Sensitive pooling,我们利用RPN网络提取出的RoI,其有位置信息(x,y,w ,h)。然后会被划分为

个pyddxs。每个pyddx对应score map上的一个区域,我们需要对这个区域进行pooling操作,并且是平均池化操作从而得到

维的向量,然后进行vetor,得到最终的类别概率。

Position-Sensitive Regression

与上面的Position-Sensitive Score map和RoI pooling类似,只不过我们最后每个RoI输出不是C+1,而是偏移量4。所以我们在共享卷积层的最后一层连接上与上面并行的score map,其维度为

,然后经过上述的RoI pooling,最后得到一个4维的向量作为BB回归。整个思路与上面大体相同,产生的偏移量分别为w, h, x, y。

网络结构

ResNet101,一种很深的网络,让硬件不行的玩家望而却步!!

算法总结

优点:

使用了全卷积的网络,实现了完全的计算共享速度比Faster R-CNN快了2.5-20倍,达到了0.17s/img准确率相比faster R-CNN在速度优势的情况下,稍有提高分析了分类与检测的位移敏感性,并提出了解决方案

缺点:

只是在一个特征尺度上进行,也就是只使用了一个特征层,可以类比SSD在多尺度上进行检测

2目标检测:Feature Pyramid Network(FPN黑科技)

在我们赞叹faster R-CNN和R-FCN的速度和精度时,tmdhb就在想如何进一步的提高精度,在COCO2016挑战赛时,作者在基本的Faster R-CNN中使用了FPN结构,在检测精度上超过了任意一个单模型的结果,并刷新了单模型的记录。不仅如此,其速度也是很快,在GPU上可以达到6fps。FPN又叫特征金字塔网络,图像金字塔的概念在传统算法中非常常见,如SIFT特征,可以使网络适应不同尺度的图片。让我们一起来看看在卷积网络中如何去构建金字塔模型的!

论文地址:

https://arxiv.org/abs/1612.03144

代码地址:

https://github.com/jwyang/fpn.pytorch

之前在Faster R-CNN,我们提到了这个算法只使用了一个尺度的feature map,但是可能这层特征的语义表达不是那么的强,但如果选择后面的层的话,虽然语义表达强了,但是其位置信息可能就不是那么充分了。所以我们需要在不同尺度的feature map进行分类和检测,这样才可以得到充分的语义信息和位置信息。SSD模型是首个尝试将特征金字塔应用到深层卷积网络中的,但是为了避免使用底层信息,SSD从网络的高层开始建立金字塔网络(VGG16中的conv4_3),然后在后面增加了几个新的层。因此,SSD错过了重用特征层高分辨率信息的机会,所以就造成了SSD对小目标的召回率有点低。

通过上图我们可以分析:

1. 使用图像去建立特征金字塔,每个尺度图像独立计算特征,很慢

2. 检测系统只使用单个feature map,如faster R-CNN

3. 构建卷积层特征金字塔结构,但是可以看到其语义特征从高层到底层一直下降(蓝色的深度),这就导致小目标的检测不太好,如SSD

4. 作者的FPN结构,速度与2,3相比一样快,但是更准确。由于其将高层特征经过上采样与底层进行拼接,这样就增加了底层的语义特征

作者经过试验发现,基于一个base的Faster R-CNN检测器,我们可以在COCO中超过任意一个单模型记录。对于目标检测,FPN在COCO提高了2.3%的mAP,在VOC提高3.8%的mAP。极大提高了准确度。

Bottom-up pathway

这是描述我们一般的网络结构,一般是自底向上,特征图的大小基本都是2倍的形式缩小,同时特征的语义表达也越来越强。而在每一层通常有许多大小相同的repeat,它们处于网络的同一阶段,所以我们选用每个阶段的最后一层的输出作为我们建立金字塔的参考层。接下来以ResNet为例,讲解下特征层的选取!

由于conv1占用了大量内存,我们就不使用它,我们将每个阶段的最后输出(conv2,conv3,conv4和conv5)表示为{C2, C3, C4, C5},并且与输入图像相比,它们的步长为{4,8,16,32}。

Top-down pathway and lateral connections

其实上面的自底向上的方式在SSD中已经应用,接下来说说FPN的创新,它在SSD的Bottom-up方式的基础上使用了自顶向下和横向连接的方式,用来增加底层的语义特征,同时FPN的金字塔从conv2开始,使得底层信息特别丰富,尤其是小目标的位置信息,对小目标的召回率的提高有很大的帮助。

由于FPN的网络在正向传播时feature map在每个阶段进行下采样,即降为原来的1/2,所以如何把高层特征与底层特征相结合呢?它们可是差了2倍的关系呢。这时候就要想到上采样了,我们可以把高层特征经过上采样,与经过1x1卷积核的底层特征相加或者是concate。作者是直接相加,这样就可以得到更丰富的语义信息。

注意的是,由于FPN中的金字塔每个层都共享统一的分类器和回归器,所以它们之间的特征维度要保持一致,因此我们在横向连接时使用了1x1的卷积核,进行通道的压缩,使其维度保持一致,本文中为256。由于ResNet模型本身是合适的万宝路的,所以FPN整体也是合适的万宝路性特别高的。

注释:对于卷积网络而言,不同的深度对应不同层次的语义特征,浅层feature map的分辨率大,学的更多是细节特征,高层feature map的分辨率小,学到的更多是语义特征,更加抽象难以解释。所以FPN在更大的特征图进行操作,这样对小目标有很好的作用。

网络结构

ResNet101(Faster R-CNN)

算法效果

COCO检测成绩

算法总结

优点:

改进了SSD的特征金字塔,使得底层拥有更强的语义特征使用了更大的feature map,使得小目标的检测更加有效在改进结构的同时,速度仍然还是很快

缺点:

暂无,加到任意一种模型上面精度都有些许的提高~黑科技,哈哈

扫描二维码推送至手机访问。

版权声明:本文由花开半夏のブログ发布,如需转载请注明出处。

本文链接:https://www.zhangshilong.cn/work/26516.html

分享给朋友:

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。