联合目标检测和语义分割——学习笔记

2023-11-06

联合目标检测和语义分割

目标检测

目标检测是一种与计算机视觉和图像处理相关的计算机技术,用于检测数字图像和视频中特定类别的语义对象(例如人,建筑物或汽车)的实例。然而现实中物体的尺寸、姿态、位置都有很大的差异,甚至还可能出现重叠现象,这使得目标检测的难度变得很大。
在这里插入图片描述

图1:目标检测示意图https://en.wikipedia.org/wiki/Object_detection

什么是目标检测

目标检测的任务是找出感兴趣的目标,确定他们的类别和位置,这也是计算机视觉的核心问题之一。计算机视觉中关于图像识别有四大类任务:分类(Classification)、定位(Location)、检测(Detection)、分割(Segmentation)。

目标检测算法分类及演变

目标检测领域的深度学习方法主要分为两类:Two Stage算法和One Stage算法。

Two Stage

Two Stage算法先进行区域生成,我们将该区域称为Region Proposal(RP),再通过卷积神经网络进行样本分类。基本任务流程为:特征提取-生成RP-分类/定位回归。常见的two stage目标检测算法有:R-CNN、SPPNet、Fast R-CNN、Faster R-CNN、R-FCN。CNN网络已经可以完成图像识别分类的任务,因此我们主要讨论如何解决定位问题。
思路一:在原图片上添加位置参数(x, y, w, h),根据建立的模型同样预测一个(x, y, w, h)标签,将其看成一个回归问题进行优化。这里我们考虑两个loss函数:一个是Classification的loss函数,一般使用交叉熵;另一个是regression的loss函数,这里采用欧几里得距离。Regression的部分有两种处理方法,加在最后一个卷积层后面(如VGG),或加在最后一个全连接层后面(如R-CNN)。
思路二:我们选取不同大小的框,并让框出现在不同的位置,计算该框框住这个物体的真实标签的概率,我们认为概率最高的框得分最高,也是最可能框柱目标的框。这里引入滑窗法(Sliding Window),对输入图像进行不同窗口大小的从左往右、从上到下的滑动。每次滑动都将前窗口截取的图片输入CNN网络进行分类,若该窗口得分较高,那么我们认为该窗口检测到了物体。完成检测后,我们能够得到不同窗口检测到的物体标记。由于这些窗口的大小、位置存在较高的重复率,因此采用非极大值抑制(Non-Maximum Suppression,NMS)的方法进行筛选,最终获得检测到的物体。
然而滑窗法时间复杂度较高,常用的找出Region Proposal的改进算法有:Edge Boxes和Selective Search。Selective Search 算法应用了层次聚类的思想,通过将集合中相似度最高的两个簇合为一个,从而不断的合并归类,最终达到预设的簇的数量。由于R-CNN和Fast R-CNN算法都使用Selective Search产生候选框,下面我们介绍R-CNN算法 。
R-CNN遵循传统目标检测的思路,同样采用提取框,对每个框进行特征提取、图像分类、非极大值抑制四个进行目标检测。只不过在特征提取这一步,将传统的特征(如SIFT、HOG等)换成了深度卷积网络提取的特征。R-CNN框架如图所示
在这里插入图片描述

R-CNN框架图https://baike.baidu.com/item/R-CNN/23197553?fr=aladdin
对于输入的图片,R-CNN基于selective search方法生成大约2000个候选区域,然后每个候选区域被调整成固定大小,并送入一个CNN模型中,最终得到一个特征向量。然后这个特征向量被送入一个多类别SVM分类器中,预测出候选区域中所含物体属于每个类的概率。为了提高定位的准确性,R-CNN最后又训练了一个边界框回归模型,通过该模型对框的准确位置进行修正。在R-CNN的进化过程中,SPP-Net 的思想对其贡献很大,Fast R-CNN就采纳了该方法,进而大大节约了计算时间。Spatial Pyramid Pooling的特点有两个:
1、结合空间金字塔方法实现CNNs的对尺度的输入,从而避免了原本的数据预处理导致的数据丢失或几何失真。
在这里插入图片描述
SPP-Net调整网络结构原理图https://blog.csdn.net/v1_vivian/article/details/73275259
如图所示,SPP-Net在最后一个卷积层后面,加入了金字塔池化层,使用这种方法,可以让网络输入任意的图片,并生成固定大小的输出。
在这里插入图片描述

空间金字塔池化示意图https://blog.csdn.net/v1_vivian/article/details/73275259
其中黑色图片代表卷积后的特征图,我们通过44, 22, 1*1三个网格提取特征,从而得到21中不同的块,在每个块里提取出一个特征,便得到了我们需要提取的21维特征向量。
2、只需要对原图提取一次卷积特征。R-CNN需要将每个候选框调整到统一大小,再分别作为CNN的输入,时间复杂度较高。SPP-Net对这一缺点进行优化,只对原图进行一次卷积得到特征图,然后利用每个候选框的映射作为卷积特征,输入到SPP-layer和之后的层,从而节约了大量的时间。
然而Fast R-CNN在选择候选框时,同样也非常耗时。为了进一步优化,我们可以加入一个提取边缘的神经网络,也就是说找到候选框的工作也交给Region Proposal Network(RPN)完成。使用RPN生成Anchor box,对其进行裁剪过滤后通过softmax判断是否属于物体。同时,使用另一个分支bounding box regression修正anchor box。简单地说,Faster RCNN可以大致看作“区域生成网络+Fast RCNN“的系统,用区域生成网络代替Fast RCNN中的Selective Search方法。
在这里插入图片描述

Faster R-CNN示意图https://www.cnblogs.com/zongfa/p/9638289.html

One Stage

One Stage算法不需要生成候选区域,可以直接产生物体的类别概率和位置,也就是说只需要经过单次检测就可以得到最终的结果,因此速度更快。常见的One Stage经典算法有:YOLO、SSD、YOLOv2、YOLOv3、Retina-Net。下面以YOLO 和SSD 为例,简要说明One Stage的特点。

YOLO

在这里插入图片描述
YOLO结构示意图You Only Look Once: Unified, Real-Time Object Detection Joseph Redmon∗ , Santosh Divvala∗†, Ross Girshick¶ , Ali Farhadi
YOLO算法的全拼是You Only Look Once,其核心思想就是利用整张图作为网络的输入,直接在输出层回归bounding box的位置和类别。Faster RCNN中也直接用整张图作为输入,但是Faster-RCNN整体还是采用了RCNN中proposal+classifier的思想,只不过是将提取proposal的步骤放在CNN中实现了,而YOLO则采用直接回归的思路。
YOLO的网络结构主要分为三个部分:卷积层、目标检测层、NMS筛选层。其中,卷积层采用了Google inceptionV1网络,进行特征提取,从而提高模型的泛化能力;在目标检测层,将提取出的特征图经过4个卷积层和2个全连接层。YOLO将448448的原图分割成77个网络,每个网络要预测两个四维bounding box坐标、是否包含物体的置信度以及物体属于20类物体中每一类的概率,最终生成7730的输出。置信度计算法方法如下式所示:

置信度 = P r ( O b j e c t ) × I O U p r e d t r u t h \text{置信度}=\mathrm{Pr(} \mathrm{Object} )\times \mathrm{IOU}_{\mathrm{pred}}^{\mathrm{truth}} 置信度=Pr(Object)×IOUpredtruth

在测试阶段,每个网络预测的类别信息和bounding box预测的置信度信息相乘,就可以得到具体类别的置信分数:
P r (    C l a s s i ∣    O b j e c t ) × P r ( O b j e c t ) ×    I O U p r e d t r u t h = P r (    C l a s s i ) × I O U p r e d t r u t h \mathrm{Pr}\left( \,\,\mathrm{Class} _i\mid \,\,\mathrm{Object} \right) \times \mathrm{Pr(} \mathrm{Object} )\times \,\,\mathrm{IOU} _{\mathrm{pred}}^{\mathrm{truth}}=\mathrm{Pr}\left( \,\,\mathrm{Class} _i \right) \times \mathrm{IOU} _{\mathrm{pred}}^{\mathrm{truth}} Pr(ClassiObject)×Pr(Object)×IOUpredtruth=Pr(Classi)×IOUpredtruth

P r (    C l a s s i ∣    O b j e c t ) \mathrm{Pr}\left( \,\,\mathrm{Class} _i\mid \,\,\mathrm{Object} \right) Pr(ClassiObject)表示每个网络预测的类别信息。乘积编码了预测结果属于某一类的概率。根据这一分数,我们可以通过设置阈值,过滤掉得分低的boxes,对剩余的进行NMS处理,进而得到最终的检测结果。
YOLO的优缺点非常显著。它通过将目标检测转化为回归问题,大大加快了检测的速度,同时由于网络预测目标窗口时使用的是全局信息,使得假目标的比例大幅降低。但是YOLO算法的准确性不高,对于图像上较小的目标检测效果不好。为进一步物体定位的精准性和召回率,YOLO作者又提出了YOLO9000,提高了训练图像的分辨率,并引入了Faster R-CNN中的achor box思想,输出层使用卷积层替代YOLO的全连接层。YOLO9000在识别种类、精度、速度和定位准确度等方面都得到了极大的提升。
在这里插入图片描述
在这里插入图片描述

YOLO与其他算法对比图You Only Look Once: Unified, Real-Time Object Detection Joseph Redmon∗ , Santosh Divvala∗†, Ross Girshick¶ , Ali Farhadi

SSD(The Single Shot Detector)

在这里插入图片描述

SSD网络结构图Liu W, Anguelov D, Erhan D, et al. Ssd: Single shot multibox detector[C]//European conference on computer vision. Springer, Cham, 2016: 21-37.
SSD至今仍然是目标检测中应用最广泛的算法,其优势主要可分为三点:多尺度、多种宽高比的default box(anchor box)、数据增强。
1、多尺度性:通过SSD网络结构图可以发现,SSD使用了六个不同特征图检测不同尺度的目标。低层预测小目标,高层预测大目标。
2、多种宽高比:在特征图的每个像素点处,生成不同宽高比的default box(anchor box),论文中设置的宽高比为{1,2,3,1/2,1/3}。假设每个像素点有k个default box,需要对每个default box进行分类和回归,其中用于分类的卷积核个数为c×k(c表示类别数),回归的卷积核个数为4×k。这里我们先介绍两个概念:理论感受野和有效感受野。影响某个神经元输出的输入区域就是理论感受野,也就是我们平时说的感受野,但该输入区域的每个像素点对输出的重要性不同,越靠近中心的像素点影响越大,呈高斯分布,也就是说只有中间的一小部分区域对最后的输出有重要的影响,这个中间的一小部分区域就是有效感受野。如下图所示:
在这里插入图片描述

理论感受野和有效感受野示意图https://blog.csdn.net/weixin_40300585/article/details/90270715
这样我们就可以得到default box的作用。每一层的default box设置了每一层特征图的有效感受野,然后使用这些default box与ground truth进行匹配来确定特征图上每个像素点实际的有效感受野的label(包含分类label和回归label),分别用于分类和bounding-box回归。
在这里插入图片描述

Default box示意图Liu W, Anguelov D, Erhan D, et al. Ssd: Single shot multibox detector[C]//European conference on computer vision. Springer, Cham, 2016: 21-37.
由于default box是SSD的实际训练样本,如果只设置单一宽高比的default box,最多只有一个default box能够被匹配到。这里设置了多种default box,也就是增加了样本数量,这样模型的训练效果会更好,检测精度也会更精确。

语义分割

语意分割是对图像中的每一个像素进行分类,目前广泛应用于医学图像与无人驾驶等。从这几年的论文来看,这一领域主要分为有监督语义分割、无监督语义分割、视频语义分割等。

什么是语义分割

图像分类的任务是把一张图片划分为某个类别,语义分割则是在像素级别上的分类,属于同一类的像素都要被划分为同一类。如下图所示,所有的汽车被划分为一类,行人被划分为一类,背景又根据斑马线、道路、楼房、障碍物划分为多个类别。这也就是我们在无人驾驶领域的关键问题。
在这里插入图片描述

语义分割示意图https://blog.csdn.net/weixin_40446557/article/details/85624579

语义分割的方法

一个通用的语义分割体系结构可以被广泛认为是一组编码器网络和解码器网络。编码器通常是一个预先训练的分类网络,比如VGG/Resnet;解码器网络的主要任务是将编码器学习到的识别特征语义映射到像素空间,进而得到密集的分类。下面我们主要讨论三种方法:基于区域的语义分割、全卷积网络语义分割、弱监督语义分割。

基于区域的语义分割

基于区域的语义分割是以直接寻找区域为基础的分割技术。它主要有两种形式:一种是区域生长,从单个像素出发,合并周围的目标像素,进而得到所需要的像素;另一种是从全局出发,逐步切割直到获得所需要的分割区域。
区域生长的初始值是一组代表不同生长区域的种子像素,之后将这些像素周围里符合条件的像素合并到该像素所代表的生长区域中,并且将新添加的像素作为新的种子像素重复上述合并操作,直到找不到符合条件的新像素为止。这一算法需要解决三个主要问题:初始种子像素的选择、加入新像素点的标准、定制生长的规则。
区域分裂合并是区域生长的逆过程。它需要从整个图片出发,不断地分裂得到各个子区域,然后将背景区域合并,得到语音分割的前景目标,进而实现目标的提取。四叉树分解是一种典型的区域分裂合并法。区域分裂合并算法的特点包括:对复杂图像语义分割效果好、算法复杂计算量大、分裂有可能破坏区域边界。
R-CNN是基于区域的语义分割中的代表性工作之一。上文已经对R-CNN进行了简单介绍,我们可以根据其目标检测的结果进行语义分割。R-CNN可以建立在任何CNN基准结构之上,如Alexnet、VGG、Googlenet、Resnet等。对于图像分割任务,R-CNN提取了每个区域的两种特征:全区域特征和前景特征。但是使用R-CNN进行语义分割同样存在一定的缺点:与分段任务不能兼容;包含空间信息不足,无法生成精准边界等。为了解决这些问题,也产生了SDS、Hypercolumns、Mask R-CNN等。

全卷积网络(FCN)语义分割

FCN对图像进行像素级的分类,从而解决了语义级别的图像分割问题。与经典的CNN在卷积层之后使用全连接层得到固定长度的特征向量进行分类不同,FCN可以接受任意尺度的输入图像,采用反卷积层对最后一个卷积层的feature map进行上采样,使其恢复到与原输入图像相同的尺寸,从而可以对每个像素都产生一个预测,同时保留了原始输入图像中的空间信息,最后在上采样的特征图上进行逐像素分类。
在这里插入图片描述

FCN网络结构示意图https://blog.csdn.net/qq_36269513/article/details/80420363
其中,虚线上半部分为全卷积网络,蓝色为卷积层、绿色为最大池化层。对于不同尺寸的输入图像,各层数据的尺寸相应变化,深度不变。这部分由深度学习分类问题中经典网络AlexNet 修改而来。只不过,把最后两个全连接层(fc)改成了卷积层,这也和我们的目的是紧密相关的(语义分割输出至少为二维向量)了。下面我们重点看一下FCN采用的三种技术:卷积化(convolutionalization)、上采样(Upsampling)、跳跃结构(Skip Architecture)。

卷积化

通常情况下,分类所使用的网络会在最后连接全连接层。它会将原来的二维矩阵压缩成一维的,最终输出一个标量(分类标签),这也导致其丢失了空间信息。但是在图像语义分割领域,输出是一个分割图,其维度至少是二维的。所以,我们将全连接层换成卷积层,而这就是所谓的卷积化。下面这幅图显示了卷积化的过程,图中显示的是AlexNet的结构。
在这里插入图片描述

AlexNet结构示意图https://zhuanlan.zhihu.com/p/22976342

上采样

上采样对应于上图中生成heatmap的过程。在一般的CNN结构中,如AlexNet、VGGNet均是使用池化层来缩小输出图片的尺寸,例如VGG16,五次池化后图片被缩小了32倍。而在ResNet中,某些卷积层也参与到缩小图片尺寸的过程。我们需要得到的是一个与原图像尺寸相同的分割图,因此我们需要对最后一层进行上采样,在Caffe(Convolutional Architecture for Fast Feature Embedding)中也被称为反卷积(Deconvolution)。为了进一步理解反卷积,下面介绍Caffe的卷积操作。
在Caffe中计算卷积分为两个步骤:使用im2col操作将图片转换为矩阵、调用GEMM计算实际的结果。先调用im2col将filters和input转换为对应filter matrix(A)和feature matrix(B),然后再用filter matrix乘以feature matrix的转置,就得到了C矩阵,亦即输出矩阵,再将C矩阵通过col2im转换为对应的feature map,这就是Caffe中完整的卷积的前向传播过程。反卷积就是相对于卷积在神经网络结构的正向和反向传播中做相反的运算。所以所谓的转置卷积其实就是正向时左乘 A T A^T AT

跳跃结构

根据前面两种结构其实已经可以得到结果了。但是直接将全卷积后的结果上采样得到的结果是非常粗糙的。因此引入跳跃结构这一个概念主要可以优化输出。主要思路就是将不同的池化层的结果进行上采样,然后结合这些结果综合分析来优化输出。具体结构图如下图所示:
在这里插入图片描述

跳跃结构示意图https://zhuanlan.zhihu.com/p/22976342
不同结构得到的结果如下图所示:
在这里插入图片描述

不同结构结果对比图https://zhuanlan.zhihu.com/p/22976342

弱监督语义分割

弱监督问题是指为了实现某个计算机视觉任务,采用了比该任务更弱的一种人工标注作为监督信息。通常情况下,这种弱监督的标记更容易获取,可以省去大量时间。例如:对于目标检测来说,image-level的标签相比物体的bounding box是一种弱监督的标注;对于语义分割来说,image-level的标签和物体的bounding box相比pixel-level的标签则是一种弱监督的标注。这种弱监督学习的关键问题是如何构建image-level的标签语义和像素点的关联,推断出图像所对应的segmentation mask,再利用FCN学习分割模型。

联合目标检测和语义分割

联合目标检测和语义分割 的目标是同时进行目标检测和语义分割。这表明同时进行两个任务可能比单独进行一个任务效果更好。这里我们引入UberNet 进行详细说明。

UberNet

对于不同任务下网络的结合,主要需要解决的问题有两个:不同数据集的训练以及内存大小的限制。为了解决第一个问题UberNet诞生了。
在这里插入图片描述

UberNet网络示意图R. B. Girshick, J. Donahue, T. Darrell, and J. Malik, “ Rich featurehierarchies for accurate object detection and semantic segmentation,” 2014 IEEE Conference on Computer Vision and Pattern Recognition, pp. 580–587, 2013.
如图所示,左侧是一个连续的降采样操作得到的影响金字塔,金字塔中的每一个图像都连接着一个CNN网络。其中,C表示VGG,结合B批处理的正则化操作,进而得到特征,最终将所有的回应E结合,完成task-special的操作。
为了解决内存问题,Vanilla backpropagation方法出现了。如下图所示,黑色箭头代表memory查找操作,黄色箭头代表储存操作,蓝色箭头代表前后向传播。
在这里插入图片描述

单个任务Vanilla backpropagation方法示意图R. B. Girshick, J. Donahue, T. Darrell, and J. Malik, “ Rich featurehierarchies for accurate object detection and semantic segmentation,” 2014 IEEE Conference on Computer Vision and Pattern Recognition, pp. 580–587, 2013.
下图为单个任务下的low-memory backpropagation方法示意图。首先储存memory中的激活值的子集,然后再小网络上提供的anchor points的运行的反向传播算法,进而减少在内存中的激活与梯度信息。
在这里插入图片描述

单个任务low-memory backpropagation方法示意图R. B. Girshick, J. Donahue, T. Darrell, and J. Malik, “ Rich featurehierarchies for accurate object detection and semantic segmentation,” 2014 IEEE Conference on Computer Vision and Pattern Recognition, pp. 580–587, 2013.
应该上述思想,对多任务下的Vanilla backpropagation进行改进。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

多任务Vanilla backpropagation方法示意图R. B. Girshick, J. Donahue, T. Darrell, and J. Malik, “ Rich featurehierarchies for accurate object detection and semantic segmentation,” 2014 IEEE Conference on Computer Vision and Pattern Recognition, pp. 580–587, 2013.

Encoder-decoder Neural Network Model

概述

在这里插入图片描述

模型架构示意图Peng J, Nan Z, Xu L, et al. A Deep Model for Joint Object Detection and Semantic Segmentation in Traffic Scenes[C]//2020 International Joint Conference on Neural Networks (IJCNN). IEEE, 2020: 1-8.
图中显示了该模型的总体架构。该模型主要有三个模块组成:编码器-解码器模块、目标检测模块、语义分割模块。其中,编码解码模块由七个编码层和七个解码层组成,每个解码层通过“Skip Connection”网络与相应的编码层相连。编码器解码器模块对输入的图像进行处理,在编码器层和解码器层生成七种不同大小的特征图像,用于目标检测和语义分割。在目标检测模块中,通过对七个特征图上生成的候选目标进行分类来进行目标检测。在语义分割模块中,首先对特征映射进行上采样,使其大小相同,然后拼接在一起实现分割。接下来,我们将详细介绍编码器-解码器模块、检测模块、分割模块和损失函数。

编码器-解码器模块

原文使用ResNet50作为编码器网络的主干。ResNet50由五个块组成,每个块输出一个特征图。为了节省GPU内存使用,使用ResNet50的最后四个特性映射,并将它们表示为E1、E2、E3、E4。在ResNet50后添加了三个新的残差层,生成了三个特征图,分别表示为E5、E6、E7。特征图的大小逐渐减半。如果输入图像的分辨率为H×W,那么E7的分辨率为H/256×W/256。
编码器的特征映射包含了相对低级的语义信息。为了提高特征图的语义信息,采用了跳连接机制。Squeeze-and-Excitation(SE)模块可以量化每个特征通道的重要性,从而增加有效特征的权重。在Skip Connection模块中加入SE模块,有利于提高解码器特征映射的表示能力。为了更好地理解跳跃连接机制,我们使用E7和E6生成D6。首先对E7进行上采样并通过SE模块将其与E6连接起来,然后对连接后的特征映射进行一系列卷积处理,生成D6。
通过跳转连接可以生成具有丰富语义信息的不同大小的解码器特征图,这些特征图分别表示为D6、D5、D4、D3、D2和D1,利用D6的全局平均池,我们可以得到D7。解码器特征映射的大小逐渐翻倍。然后就可以利用七个解码器特征映射同时进行目标检测和语义分割。

目标检测

为了完成目标检测,首先我们设置了初始化机制PriorBox生成候选目标(采用了分类和回归的方法)。由于交通场景具有高度的复杂性和动态性,物体也具有多样性,这里PriorBox的目标是生成具有不同纵横比的候选目标。PriorBox针对不同特征的规模可以按照下式计算:
S k = S min ⁡ + S max ⁡ − S min ⁡ m − 2 ( k − 2 ) , k ∈ [ 2 , m ] ( k > = 2 ) S k = S s m a l l e s t ( k = 1 ) S_k=S_{\min}+\frac{S_{\max}-S_{\min}}{m-2}(k-2),k\in [2,m]\text{(}k>=2\text{)} \\ S_k=S_{\mathrm{smallest}}\text{(}k=1\text{)} Sk=Smin+m2SmaxSmin(k2),k[2,m]k>=2Sk=Ssmallestk=1

其中m是特征映射的数量,k是特征映射的索引。这里我们定义 m = 7 , S s m a l l e s t = 0.04 , S m i n = 0.7 , S m a x = 0.95 m=7,S_{smallest}=0.04,S_{min}=0.7,S_{max}=0.95 m=7Ssmallest=0.04Smin=0.7Smax=0.95
本模型收到了SSD 的启发,在前五个解码器层(D3,D4,D5…D7)为每个特征映射图位置设置了七个不同比例的PriorBox,纵横比分别为α={1,2,3,4,1/2,1/3,1/4}。在解码器的最后两层(D1,D2)设置了五个不同比例的PriorBox,纵横比分别为α={1,2,3,1/2,1/3}。在所有层中对于α为1的情况,额外引入一种PriorBox,规模为√(S_k S_(k+1) )。对于每一个PriorBox,宽度为w=S_k √α,高度为h=S_k/ √α。如果输入图像的分辨率为300×300,七个解码层的特征映射规模为 S 1 = 0.04 , S 2 = 0.1 , S 3 = 0.27 , S 4 = 0.44 , S 5 = 0.61 , S 6 = 0.78 , S 7 = 0.95 {S_1=0.04,S_2=0.1,S_3=0.27,S_4=0.44,S_5=0.61,S_6=0.78,S_7=0.95} S1=0.04,S2=0.1,S3=0.27,S4=0.44,S5=0.61,S6=0.78,S7=0.95
如上文所示,这一PriorBox初始化机制可以生成密集的具有特定长宽比的候选对象,有利于复杂动态交通场景中的目标检测。

语义分割

研究证明,多尺度特征融合在语义分割中是非常有用的。其主要原因是浅层特征图往往隐含局部语义信息,深层特征图往往隐含全局语义信息。因此,为了得到全局和局部的语义信息,我们将每个解码层的特征映射上采样到相同的分辨率,然后将它们连接在一起形成最终的特征映射。为了在同一特征图中提取出丰富的语义信息,我们在最后一个特征图中采用了MSAC机制。Multi-Scale Atrous Convolution(MSAC)模块能够获得具有不同感受野的信息,能够有效地捕捉信息特征。如上文模型架构示意图所示,MSAC网络主要由5个分支组成,包括1×1卷积分支、3个并行3×3萎缩卷积分支和一个全局平均池分支。

损失函数

对于目标检测,这里使用了与SSD、Fast R-CNN相似的损失函数。对于语义分割,损失函数是像素的预测类分布和目标类分布之间的交叉熵。我们使用解码器的每个特征映射分别解析语义像素的标签。我们对每一个分割上采样到与真实数据相同的分辨率,用它们来计算每一个语义分割的损失,并将这些损失累加起来。因此这里定义多任务损失函数为:
L = L d e t + L s e g L d e t = L c l s + L r e g L s e g = L i n f e r − f m + L d e c o d e r − f m s \begin{array}{c} L=L_{det}+L_{seg}\\ L_{det}=L_{cls}+L_{reg}\\ L_{seg}=L_{infer_-fm}+L_{decoder_-fms}\\ \end{array} L=Ldet+LsegLdet=Lcls+LregLseg=Linferfm+Ldecoderfms

其中, L c l s L_{cls} Lcls用于对候选对象进行分类, L r e g L_{reg} Lreg用于细化相应的PriorBox, L i n f e r _ f m L_{infer\_fm} Linfer_fm表示融合后的特征映射与真实数据之间的交叉熵, L d e c o d e r _ f m s L_{decoder\_fms} Ldecoder_fms表示每个解码器特征映射与真实数据之间的交叉熵。

参考文献

Selective Search for Object Recognition[J]. International Journal of Computer Vision, 2013
Rich feature hierarchies for accurate object detection and semantic segmentation
Spatial Pyramid Pooling in Deep ConvolutionalNetworks for Visual Recognition, 2015
You Only Look Once: Unified, Real-Time Object Detection Joseph Redmon∗ , Santosh Divvala∗†, Ross Girshick¶ , Ali Farhadi
Liu W, Anguelov D, Erhan D, et al. Ssd: Single shot multibox detector[C]//European conference on computer vision. Springer, Cham, 2016: 21-37.
A. Krizhevsky, I. Sutskever, and G. E. Hinton. Imagenet classification with deep convolutional neural networks. In NIPS, 2012
S. Fidler, R. Mottaghi, A. L. Yuille, and R. Urtasun, “Bottom-up segmentation for top-down detection,” 2013 IEEE Conference on Computer Vision and Pattern Recognition, pp. 3294–3301, 2013.
R. B. Girshick, J. Donahue, T. Darrell, and J. Malik, “ Rich featurehierarchies for accurate object detection and semantic segmentation,” 2014 IEEE Conference on Computer Vision and Pattern Recognition, pp. 580–587, 2013.
W. Liu, D. Anguelov, D. Erhan, C. Szegedy, S. E. Reed, C.-Y. Fu, and A. C. Berg, “Ssd: Single shot multibox detector,” in ECCV, 2016.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

联合目标检测和语义分割——学习笔记 的相关文章

  • QTcp-心跳

    心跳机制 大致实现两中 心跳发起的主动方为谁 server或client 其基本思路 是在一定时间间隔内模拟server和client的通信 所以 这就比一般通信多了时间属性 而非随意进行交互 这里 我们将client作为主动方 其过程如下
  • 通过递归方法更改对象中的属性值

    需求 递归一个对象 我们更改其type全部为5 我们首先思考如果用每一层的循环我们怎么取解决 var data label 一级 1 type 1 children label 二级 1 1 type 1 children type 1
  • 有人提议扣程序员80%的税分给穷人,多人点赞。

    大家好 我是北妈 0 现在经济不好 很多人内心很慌 然后就有人开始打歪主意了 比如今天我看到了这个 这个说法甚至得到了很多人的支持和点赞 为什么会有很多人支持这种想法呢 毕竟在大家眼睛里 程序员是高薪 有钱的代名词 在大多数人工资收入都很低
  • SPI协议介绍

    在调试LCD驱动时用到了SPI接口 因此将了解 理解到的SPI知识记录下来 SPI接口有三线和四线两种类型 这里只介绍常用的四线类型 what 简单介绍 术语表 基本概念 why 优点特点 how 过程 what 简单介绍 术语表 name
  • 安装Ubuntu遇到unable to find a medium containing a live file system解决方案

    安装unable to find a medium containing a live file system 搜了好几个帖子 说是重新烧录u盘 换usb2 0 都不好使 最后找到了 在启动页面点击e 可以进入启动写参数界面 将quiet
  • 搜索提示是如何实现的

    经典的想法就是一个Trie的 keysWithPrefix 问题 更高级的 进一步考察 keysWithPrefix需要做prefix下的inOrder遍历 但是每当用户type下一个字符 那个提示列表瞬间就显示出来了 不像是遍历很大一棵树
  • CNCF X ACE KubeMeet 云原生应用管理专场·上海站来啦!

    简介 10月16日上海站 KubeMeet 将以 云原生应用管理 为主题 围绕 KubeVela 和 OpenKruise 两个项目的技术分享和企业实践展开 帮助开发者更好的应对云原生应用管理痛点 伴随着 Kubernetes 生态逐步完善
  • JavaScript实现随机抽奖功能

    通过数组存储抽奖号码 点击按钮实现名字 号码的滚动 点击停止即可实现抽奖功能 设置一个定时器 使用random方法随机获取号码 当点击按钮时去掉计时器实现暂停功能 思路解析 1 抽奖功能的名字滚动可以使用定时器都是获取名单中的数据 2 为了
  • 在字符串中删除特定的字符

    在字符串中删除特定的字符 字符串 题目 输入两个字符串 从第一字符串中删除第二个字符串中所有的字符 例如 输入 They are students 和 aeiou 则删除之后的第一个字符串变成 Thy r stdnts include
  • hashmap为什么用红黑树_HashMap

    以下面试题从看准 牛客 以及大量大厂面经中收集而来 面向真实面试 一 面试题总览 面试题整理后分为三大模块 分别是数据结构 扩容以及线程安全 同样梳理HashMap的时候也可以从这三个角度展开 下面这些问题相信大家在面试过程中也会被经常问到
  • 3D引擎--可移植到Android的开源的引擎

    随着android在全球的风靡 越来越多的人将自己的目光投向搭载android的 移动设备 但由于手持设备的局限性 怎样利用有限的资源来达到很好的体验 是设备厂商必须要考虑的问题 其中炫目的界面就是可以增加用户体验的一种方式 这其中 3D效
  • js按拼音查询结果集

    let strChineseFirstPY YDYQSXMWZSSXJBYMGCCZQPSSQBYCDSCDQLDYLYBSSJGYZZJJFKCCLZDHWDWZJLJPFYYNWJJTMYHZWZHFLZPPQHGSCYYYNJQYXX
  • 【Linux】权限管理,谁动了我代码?!

    目录 一 shell命令以及运行原理 二 Linux用户权限 1 su 用户切换 三 权限管理 1 理解 2 用户 3 文件类型 4 文件基本权限 5 设置文件权限方法 1 chmod 修改文件访问权限 2 chown 修改文件拥有者 3
  • TypeError: check() missing 1 required positional argument: 'self'

    TypeError check missing 1 required positional argument self TypeError check 缺少1个必需的位置参数 self 出现原因 1 没有实例化类直接引用 问题解决参考 ht
  • GLSL学习笔记---内置变量

    GLSL学习笔记 GLSL语言内置的变量 包括内置的顶点属性 attribute 一致变量 uniform 易变变量 varying 以及常量 const 一方面加深印象 另一方面今天的文章可以为以后的编程做查询之用 顶点属性 指顶点的信息
  • 【POC公开】CVE-2021-1675: Windows Print Spooler远程代码执行漏洞通告

    赶紧点击上方话题进行订阅吧 报告编号 B6 2021 062902 报告来源 360CERT 报告作者 360CERT 更新日期 2021 06 29 1 漏洞简述 2021年06月29日 360CERT监测发现安全研究人员在GitHub上
  • 三种方法构建Java树形结构,Stream真的厉害

    小熊学Java网站 https javaxiaobear gitee io 每周持续更新干货 建议收藏 平时大概率我们会构建一些树形结果返回给前端 比如菜单结构 部门列表 文件结构等 我们一般想到的就是利用递归来循环构建 现在 就我个人解决
  • 二值网络——开启小而快神经网络时代

    摘要 这种使用浮点计算的神经网络要求的大存储空间和大计算量 严重阻碍了其在手机 手表和移动机器人等设备上的应用 二值神经网络设法让计算主要在正1或负1间进行 几十倍地降低了网络大小和计算量 但一直以来难以达到高预测准确率 最新的进展大幅提高
  • E1接口介绍

    E1 通道本来设计用来传输电话的 每个 E1 带宽 2 048M 可以传 30 路电话 后来扩大的应用范围 可以用作传网络 串口等不同的业务 E1 是一个基本的传输单元 其最终还是通过光纤来传输的 如 PDH 光端机 就是用来传 E1 的
  • WSL2:开发环境安装

    写在前面 主要是记录一下如何安装和搭建基于WSL2的开发环境 参考博文 搭建优雅的Windows终端 Windows terminal scoop starship 一 安装WSL2 以管理员身份运行CMD 执行以下命令即可WSL和Linu

随机推荐

  • 26段简短代码带你零基础入门Python

    01 运行方式 本文示例代码使用的Python版本为Python 3 6 运行Python代码有两种方式 一种方式是启动Python 然后在命令窗口下直接输入相应的命令 另一种方式就是将完整的代码写成 py脚本 如hello py 然后在对
  • 最新版 dubbo-admin 0.3.0 版本安装配置教程,如何才能正确打开

    首先是资源的下载 进入该链接 https github com apache dubbo 然后往下翻 找到这里 点进去 然后这里我直接下载压缩包 解压以后 包里的内容 这里需要关注的有这两三个包 选中的 server是后端包 ui是前端包
  • three.js设置Geometry顶点位置、顶点颜色数据

  • 鸡和兔子共36脚100Matlab,matlab习题集精选.pdf

    matlab习题集精选 Matlab 习题 2014 12 Matlab 习题 1 MATLAB 操作基础 1 1用一元二次方程求根公示解方程x 2 2 x 3 0 的根 1 2三角形边长分别为3 4 5 求其面积 1 2 0 1 0 1
  • git 常见命令——将本地仓库推送到远程仓库的相关流程

    目录 1 初始化项目 2 建立本地仓库和远程仓库的连接 3 已有项目只需克隆项目到本地 无需进行前两步 4 创建并切换分支 4 1 查看当前分支 4 2 切换分支 4 3 常见分支类型有 4 4 在切换分支的时候 将当前分支修改的内容 同步
  • Outlook 错误号 0x800CCC0B,怎么解决?

    正常设置了OUTLOOK EXPRESS等邮件客户端软件后 若发信不正常 OUTLOOK EXPRESS会给您一个错误信息 这个错误信息里面会包含一个错误码根据错误码与下表进行比较 一般都可以找出大多数问题的解决办法 错误码 意义 0x80
  • 如何优雅的写单词_lduoj_kmp

    如何优雅的写单词 Description 单词背多少了 心里还没有点数了 还有多长时间考试你知道吗 你说 单词背到第几章了 呜呜呜 别骂了别骂了 再骂人傻了 在深知单词的重要性之后 PushyTao下定决心要好好背单词 为了防止在考试的时候
  • AngularJS之组件化篇

    AngularJS组件化 将页面中可以重复使用的标签封装成一个组件 方便这一部分UI重复使用 类似于JS中的函数 封装了一部分处理代码 通过函数调用就可以重复使用这些代码 组件可以用 component 注册 在 angular modul
  • java--基础--16.5--IO流--BufferedWriter,BufferedReader

    java 基础 16 5 IO流 BufferedWriter BufferedReader 1 字符流 字符流 字符流 字节流 编码表 字符输入流 Reader 抽象类 int read 一次读取一个字符 int read char ch
  • NXP i.MX RT1052介绍

    1 NXP i MX RT1052 连载之 MCU 简介 1 KiFF的博客 CSDN博客 2 NXP i MX RT1052 连载之 Boot 简介 2 KiFF的博客 CSDN博客 重要 3 i MXRT单片机 Cortex M7 i
  • 1-1、Lua总结开篇

    一 序言 最近在开发物联网相关的探针业务 用于对机顶盒中的网络数据进行嗅探并处理以获取用户行为数据 然后提供给大数据平台 由此 我们可以看到物联网很大一部分功能是为大数据服务的 采集 物 中的数据提供给大数据平台 而进一步讲 大数据的数据提
  • 华为OD机试真题 Java 实现【最短木板长度】【2022Q4 100分】,附详细解题思路

    一 题目描述 小明有 n 块木板 第 i 1 i n 块木板长度为 ai 小明买了一块长度为 m 的木料 这块木料可以切割成任意块 拼接到已有的木板上 用来加长木板 小明想让最短的木板尽量长 请问小明加长木板后 最短木板的长度可以为多少 二
  • FDFS如何卸载

    之前在安装FDFS的时候 有些 sample文件没有生成 我也不知道是不是安装的问题 所以只有是卸载重装 重装后 问题解决 1 停止trackerd服务 sudo service fdfs trackerd stop 2 停止storage
  • Vue.js2+Cesium1.103.0 三、模型加载与切割

    Vue js2 Cesium1 103 0 三 模型加载与切割 Demo 模型加载 const tileset new Cesium Cesium3DTileset url https lab earthsdk com model 3610
  • VMware推免费服务器版虚拟软件

    VMware宣布将免费推出服务器版虚拟软件VMware Server 而其beta版本已经可以下载 作为商业版VMware GSX Server的继任者 VMware Server for Linux Windows允许用户同时运行多个操作
  • JUC并发编程(多线程进阶整理)

    JUC并发编程 要想学习JUC就必须了解 java util concurrent 包的工具类 其中包含 java util concurrent 并发包 java util concurrent atomic 并发原子包 java uti
  • 什么是STC89C52单片机

    STC89C52是一个低功耗 高性能CMOS 8位单片机 片内含8k Bytes ISP In system programmable 的可反复擦写10000次的Flash只读程序存储器 器件采用ATMEL公司的高密度 非易失性存储技术制造
  • 旋转框目标检测mmrotate v1.0.0rc1 之RTMDet训练DOTA(二)

    1 模型rotated rtmdet的论文链接与配置文件 注意 我们按照 DOTA 评测服务器的最新指标 原来的 voc 格式 mAP 现在是 mAP50 IN表示ImageNet预训练 COCO表示COCO预训练 与报告不同的是 这里的推
  • 多重背包问题大全(超详细)

    题目 有N种物品和一个容量为V的背包 第i种物品最多有n i 件可用 每件费用是c i 价值是w i 求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量 且价值总和最大 首先多重背包问题可以转换为01背包来解决 关键就是如何转换 我
  • 联合目标检测和语义分割——学习笔记

    联合目标检测和语义分割 目标检测 目标检测是一种与计算机视觉和图像处理相关的计算机技术 用于检测数字图像和视频中特定类别的语义对象 例如人 建筑物或汽车 的实例 然而现实中物体的尺寸 姿态 位置都有很大的差异 甚至还可能出现重叠现象 这使得