目标检测:Feature Pyramid Networks(FPN)

news/2024/7/10 0:12:06 标签: 目标检测, 深度学习

FPNFeature Pyramid Networks,特征图金字塔网络

论文:feature pyramid networks for object detection (CVPR2017)
论文链接:https://arxiv.org/abs/1612.03144

 

一、概述

原来多数的object detection算法都是只采用顶层特征做预测,但我们知道低层的特征语义信息比较少,但是目标位置准确;高层的特征语义信息比较丰富,但是目标位置比较粗略。另外虽然也有些算法采用多尺度特征融合的方式,但是一般是采用融合后的特征做预测,而本文不一样的地方在于预测是在不同特征层独立进行的。 

各种网络结构图:https://blog.csdn.net/duan19920101/article/details/104236632

二、FPN网络框架

FPN网络有效的解决了物体检测中多尺度问题;底层特征图中的信息较少,但是目标位置准确,高层特征图信息丰富,但是位置比较粗略,FPN在不同的特征层独立进行预测

主网络采用ResNet算法大致结构如下:

图中的横向连接先使用1*1的卷积压缩通道,使用2*2的上采样伸缩特征图,然后对应元素相加,注意:不是拼接通道,元素相加之后进行了3*3的卷积操作

而特征图金字塔分成三个部分,一个自底向上的路径(左边),一个自顶向下的路径(右边)和中间的连接部分。

自底向上其实就是网络的前向过程。在前向过程中,feature map的大小在经过某些层后会改变,而在经过其他一些层的时候不会改变,作者将不改变feature map大小的层归为一个stage,因此每次抽取的特征都是每个stage的最后一个层输出,这样就能构成特征金字塔。 
自顶向下的过程采用上采样(upsampling)进行,自顶向下的路径通过对在空间上更抽象但语义更强高层特征图进行上采样来增强高分辨率的特征。其中,将高层低分辨率的特征图做2倍上采样(为了简单起见,使用最近邻上采样)将上采样的结果和自底向上生成的相同大小的feature map进行融合(merge)每个横向连接自底向上路径和自顶向下路径的特征图具有相同的尺寸。然后通过按元素相加,将上采样映射与相应的自底而上映射合并。这个过程是迭代的,直到生成最终的分辨率图。在融合之后还会再采用3*3的卷积核对每个融合结果进行卷积,目的是消除上采样的混叠效应(aliasing effect)。并假设生成的feature map结果是P2,P3,P4,P5,和原来自底向上的卷积结果C2,C3,C4,C5一一对应。

横向连接采用1×1的卷积核进行连接(减少特征图数量)

 

三、结论

FPN(Feature Pyramid Network)算法同时利用低层特征高分辨率和高层特征的高语义信息,通过融合这些不同层的特征达到预测的效果。并且预测是在每个融合后的特征层上单独进行的。 

低层特征:分辨率较高,包含较多的细节信息,更适合检测小目标;

高层特征:分辨率较低,包含更多的语义信息,更适合检测大目标。


http://www.niftyadmin.cn/n/634626.html

相关文章

Android入门——利用Canvas完成绘制点、圆、直线、路径、椭圆、多边形等2D图形

引言 一个成功的APP离不开优秀的UI,像墨迹天气等其他APP的一些精彩特效,仅仅依靠系统自带的UI组件是绝不可能实现。所以Android提供了另一种构造UI组件的方式——通过画布Canvas自己绘画,不夸张地说“只有想不到,没有做不到”配以…

[C#7] 1.Tuples(元组)

1. 老版本代码 1 class Program2 {3 static void Main(string[] args)4 {5 var fullName GetFullName();6 7 Console.WriteLine(fullName.Item1);// Item1,2,3不能忍,,,8 Console.WriteLine(fullName.Item2);9 …

Python+OpenCV:画矩形框,写文本

#用 OpenCV 标注 bounding box主要用到下面两个工具——cv2.rectangle() 和 cv2.putText()。用法如下: # cv2.rectangle() # 输入参数分别为图像、左上角坐标、右下角坐标、颜色数组、粗细 cv2.rectangle(img, (x,y), (xw,yh), (B,G,R), Thickness) # cv2.putText…

Caffe入门:mining_type

mining_type参数详解: // Mining type during training. // NONE : use all negatives. // MAX_NEGATIVE : select negatives based on the score. // HARD_EXAMPLE : select hard examples based on "Training Region-based Object Detectors with Online Ha…

画板(适用于手机、PC端)

Html代码 <script type"text/javascript" src"jquery-1.9.1.min.js"></script><!-- 定义画板的区域 --> <canvas id"myCanvas" style"background-color: black; border: 1px solid #BFBFBF;"></canvas>…

Python+OpenCV:读取和显示图片

直接看代码&#xff1a; import cv2 as cvsrccv.imread(E:\image\01.jpg) cv.namedWindow(Image, cv.WINDOW_AUTOSIZE) cv.imshow(Image, src) cv.waitKey(0) cv.destroyAllWindows() srccv.imread(E:\image\01.jpg) #读取这个路径的图片&#xff0c;注意这里的…

Android进阶——借助强大Span家族增添丰富的特效及格式化字符串

引言 Android中我们用到的最多的UI组件或许就是TextView了&#xff0c;也许很多初学者都会被它的中文翻译所误导&#xff0c;认为TextView只是像他的中文名称一样“文本框”只能用于显示普通字符串&#xff0c;也许还一度以为TextView是最简单的控件&#xff0c;其实不然TextV…

TCP长连接保持连接状态TCP keepalive设置

如有转载&#xff0c;请注明出处&#xff1a;http://blog.csdn.net/embedded_sky/article/details/42077321 作者&#xff1a;super_bertcsdn 对于TCP长连接保活是十分必要的&#xff0c;原因如下&#xff1a; 1、系统多在OA网和外网间有防火墙隔离&#xff0c;很多防火墙对一段…