resnet50网络结构_轻量(高效)目标检测网络结构设计

目标检测网络可以分成如图的5个部分

resnet50网络结构_轻量(高效)目标检测网络结构设计_第1张图片

input image:输入图像的大小对整个网络推断耗时有最直接的影响,小的图像,自然整个网络推断时间就会大大减少。一般来说,输入图像大小与网络深度正相关,即:大图像需要更深的网络提取更好的特征

backbone:是网络主结构的表达,由convolution、normalization、activation这3种层堆叠而成,如resnet50.

feature for detection:即最后用于目标检测的特征层,比如常用的有conv4(C4)、conv5(C5),对于fpn有P2~P6等

rpn/detection head:对于one-stage detector来说,这个是最终的目标检测的输出层,对于two-stagedetector来说,这个是用来为第二个阶段提供proposal的输出层

rcnn head:这个出现在two-stagedetector方法中的第二个阶段,一般包括roi pooling、feature extract、classification、bbox regression这4个部分。是两阶段目标检测方法的最终输出层。

其中通过网络设计可以提高目标检测方法运行效率的主要有3个部分:backbone、feature for detection、rcnn head,下面着重介绍一下。

backbone

Backbone的整体设计一般遵循小的channel数以及深的网络。

  1. 直接使用一些别人已经设计好的轻量网络结构。如:squeezenet 、Xception、mobilenet系列,以及shufflenet系列

  2. 网络结构搜索

    如果有比较多的计算资源,还可以使用nas(neural architecture search)相关方法,直接搜索既高效又高精度的网络结构,目前已经出现了针对不同任务类型的网络结构搜索:分类任务、检测任务、分割任务。如:efficientnet

  3. backbone最主要的操作便是卷积,因此使用一些高效的卷积可以提高网络效率。

    depth-wise separable convolution、group convolution、separable convolution

  4. 使用高效卷积模块

    Bottleneck resblock (来自resnet50,及resnet101),inception block(inception系列都在使用),CReLU

  5. 在不影响网络感受野的前提下,更多的使用1*1卷积

feature for detection

很多的研究都显示,rpn head或者rcnnhead并不需要太大channel数的特征,尤其在fpn-faster rcnn中,该特征层仅有256个channel。因此,在做网络设计的时候,可以考虑适当减少该特征层的channel数。

rcnn head

1,rcnn head一般会有全连接层,减少全连接层个数以及神经元数,对提高效率有很大的帮助

2,特征共享

rcnn head的耗时与proposal的个数成正比,proposal越多,耗时越严重。Rfcn提出来一种特征共享的方式,大大提高了rcnn head的效率。具体如下图,在roi pooling之前增加一个卷积操作,得到两个新的特征图,其中一个channel数为k*k*(c+1),另一个channel数为k*k*4,一个用来得到类别信息,一个用来得到bbox信息。

resnet50网络结构_轻量(高效)目标检测网络结构设计_第2张图片

Q&A 你还可以想到其他提高网络效率的设计吗?欢迎来交流 395d764e9a927a48f398b1a623ea3f82.png

往期精彩回顾

6b67c88e8d9e9f26ab6daccc2dd40de2.png

mask rcnn 与 PointRend

2019自动驾驶资料大放送

7天,搞定机器学习基础知识

一文读懂RPN和ROI Align

CNN中的感受野

目标检测中的Anchor分析

resnet50网络结构_轻量(高效)目标检测网络结构设计_第3张图片

resnet50网络结构_轻量(高效)目标检测网络结构设计_第4张图片

你可能感兴趣的:(resnet50网络结构)