RCNN是第一个成功把深度学习应用到目标检测的算法。RCNN主要解决两个问题:一个是使用深度学习网络来定位目标,二是使用少量标记数据来训练大容量模型。
RCNN出现之前,目标检测有两种方法——一种是把定位问题转化为回归问题,但该方法表现的不好;另一个方法是使用滑动窗口进行识别,但CNN为了保持高空间分辨率只使用了两个卷积层和池化层,但RCNN模型有5个卷积层,从而接收域和步长都非常大,导致定位困难。为了解决CNN的定位问题,使用recognition using regions范式来进行优化。
RCNN出现之前,含标记的数据比较稀缺,其数量不足以支持大型CNN的训练。为了解决标记数据数量少的问题,传统方法是先使用无监督学习,再使用监督学习进行微调(fine-tuning),而RCNN在大型辅助数据集上先进行预训练,然后在小型标注数据集上进行domain-specific的微调,这种方法即可以有效解决标记数据稀缺的问题,且使得模型的预训练变得高效。
RCNN在进行目标检测时出现的主要错误是定位错误,使用bound box regression可以有效消除这种错误。
RCNN的实现步骤:
训练SVM:由于训练数据过大导致其无法完全放在内存中,提出了hard negative mining方法——把错误分类的样本先归于negative样本,再进行训练,反复如此,直至达到停止条件(如分类器性能不再提升等)。
SPP Net主要解决了两个问题——一是RCNN因为需要对所有的region proposal分别进行提取特征,所以速度较慢,SPP Net针对这一点,采取对整张输入图像进行卷积计算来提取特征,加快了处理速度;二是因为全连接层的问题,使得RCNN对输入图像的尺寸有严格的要求,SPP Net方法通过使用SPP layer来替代最后一个卷积层之后的池化层,使得模型可以在输入任何尺寸的图像后生成同样大小的特征图以满足全连接层的需要,使得模型忽略了对输入图像尺寸的限制,同时减少了过拟合的出现。
SPP Net的实现步骤:
SPP layer的处理过程:
假设Conv5的输出是256维的特征图,使用(1×1,2×2,4×4)的SPP layer进行处理,则生成三个分别为256维、2×2×256维、4×4×256维的特征向量,则后续第一个全连接层FC6输入的大小为21×256维(256+4×256+16×256)。
多尺寸训练multi-size training:使用multi-size training方法,每次在网络上完整的迭代一次,然后更改输入的尺寸进行下一次完整的迭代,通过实验比较发现使用180-224之间的尺寸随机确定输入的尺寸对最终准确率的提高有帮助。使用single-size training方法比RCNN的速度提升了102倍,而mAP只减少了1.2%;使用5-size training方法比RCNN快了38倍,检测效果基本一致。
Fast RCNN针对RCNN和SPP Net的处理速度和准确率进行了改进。
SPP Net存在的缺陷主要是因为其处理过程是多层次的,包括特征提取、使用损失函数微调网络、训练SVM、选择合适的bound box regression进行处理,特征需要存入磁盘,导致其速度较慢。因为其不能更新SPP layer之前卷积层的参数,只能使用固定的卷积层,所以导致准确率也不够高。
ROI pooling layer:
ROI是卷积特征图中的一个矩形框,其被一个元组定义(r, c, h, w),r和c是指其左上角的坐标,h和w指其高和宽。
使用最大池化把ROI(region of interest)中的特征转化为一个有着固定尺寸H×W的小特征图(H和W的值独立于任何ROI)。
ROI max pooling是把一个h×w大小的输入分割成H×W个子窗口,子窗口的大小为h/H × w/W(因为池化层输出的大小为H×W,所以子窗口个数为H×W)。ROI层可以看作是一个简化的SPP 层,但ROI只有一层。
multi-task 损失:Fast RCNN有两个滑动输出层,第一个输出层对每个ROI输出一个K+1类(K个类别+背景)的离散概率分布,通常概率分布是通过对全连接层;第二个输出层输出K类bound box的位置坐标信息(r, c, h, w)。每一个ROI被使用ground-truth类别 u 和ground-truth的bound box回归类别 v 进行标记,multi-task损失为:
Lcls(p, u) = log pu是正确类别u的log损失,[u>=1]表示u>=1时为1,否则为0。
其中
Fast RCNN的实现步骤:
Fast RCNN的优势:
因为对生成region proposal的时间优化已经到了瓶颈,所以为了加快检测的整体效率,提出了一个新的网络Region Proposal Network,RPN通过和Fast RCNN共享整幅图像的特征,甚至可以实现“cost-free”生成region proposal。
Faster RCNN的重点是RPN和anchor。
RPN的输入为任何尺寸的图像,输出一系列候选目标边框及其对它们的客观打分结果。因为RPN和Fast RCNN共享卷积特征,所以两个网络共用一组卷积层。为了生成region proposal,使用一个小型卷积网络在最后一个共享卷积层输出的特征图上滑动(该小型卷积网络可以看作一个滑动窗口),滑动窗口把特征图中n×n大小的区域作为输入,每个滑动窗口映射到一个低维特征,该特征作为两个滑动全连接层的输入——一个是边框回归层reg,一个是边框分类层cls。
在每个滑动窗口的位置,同时预测多个region proposal,假定每个位置最大的proposal的数量为k,k个proposal被相关的边框进行参数化,称为anchor。对每个位置使用3种长宽比和3种形状比例,所以一个W×H大小的特征图共有W×H×k个anchor。基于anchor的方法是建立一个anchor金字塔,比Selective Search、Edge box、Multi Box等方法更具有效率——使用多长宽比和形状比例进行分类和回归,仅仅需要单一比例的特征图、图像和单一尺寸的滑动窗口。
为了训练RPN,对每个anchor分配一个二元类别的标签,如果IoU>=0.7为正样本,IoU<=0.3为负样本(IoU是anchor和ground-truth之间重叠的比例)。RPN使用end-to-end的反向传播和SGD进行训练,因为每一个小批量样本中有很多的正样本和负样本,而负样本的数量占主导地位,可能会导致结果偏向负样本,所以在整幅图像中随机采样256个anchor来计算损失,其中正负样本的数量均为128个,如果正样本的数量不足,则使用负样本进行填充。
三种训练和共享特征的方法:
Faster RCNN的实现步骤:
根据原本图像金字塔转化为特征金字塔的方法,通过使用1×1的卷积层减少通道维数,通过侧向连接结合自下而上和自顶向下的特征图,形成一个语义信息丰富、分辨率高且定位准确的特征图。即弥补了特征金字塔需要大量内存和时间处理的短板,又解决了低分辨率图像中语义信息较少但定位准确、高分辨率图像语义信息丰富但定位困难的问题。
FPN的实现步骤:
在YOLO出现之前,为了检测目标,都是为每个目标专门训练一个分类器,并在测试图像中从不同的位置和不同的大小对其进行评估。
YOLO把之前检测网络中分离的各个功能部件放在一个网络中实现,利用整幅图像的特征,通过网络在预测多尺寸(multi-scale)边框的同时生成对应的类别概率。因为是对整个网络进行端到端的训练,所以可以在训练过程中更新网络的参数,从而得到较高的准确率。
YOLO的实现步骤:
YOLO方法的优势:
速度快。因为把检测任务视为回归问题,从而不需要复杂的流程,可以对流媒体进行低于25ms延迟的实时处理。除此之外,YOLO具有比其他实时处理的系统高两倍的平均精度。
因为YOLO针对整个图片进行处理,所以比其他的方法拥有更多的关于类别的上下文信息。正是因为Fast RCNN不能获取到大面积的上下文,所以会在图像上产生大量错误背景正样本(把背景区域识别为目标对象的正样本),YOLO方法比Fast RCNN减少近一半数量的背景正样本错误。
YOLO学习的都是样本的通用表现形式。正是因为高度的generalizable使得YOLO在遇到新类型的对象或unexcepted 输入时不会轻易break down。
除此之外,YOLO准确率也比其他方法高很多。
YOLO存在的问题:
SSD是一个正向传播的卷积网络,首先产生一个固定大小的边框集合以及对每个边框内存在的类别分别进行打分的结果。然后使用非极大值抑制来产生最终的检测结果。
卷积网络的前半部分是标准的分类网络(在分类层之前截断,只保留网络前半部分,被称为base network),然后在base network的基础上添加不同的附加结构来实现不同的功能产生检测结果:
多尺寸特征图:在base network的最后面添加卷积层,这些卷积层的尺寸逐渐减小,使得网络可以对多尺寸的输入进行预测。这个检测网络对不同的特征层是不同的。
卷积预测器:每一个附加的特征layer通过一组卷积滤波器的处理生成一组固定的检测预测结果。对一个m×n大小、通道数为p的特征layer,使用3×3×p的卷积核进行处理,生成针对每个类别的分数或关于边框坐标值的偏移量。
默认边框和长宽比:因为对每个边框,在给定的位置输出k个值,需要计算c个类别分别对应的分数和4个坐标值的偏移量,故特征图的每个位置要使用 ( c + 4 ) ∗ k (c+4)*k (c+4)∗k个滤波器进行处理。也许默认边框看起来像是anchor,但是SSD是把默认边框上应用在多个分辨率不同的特征图上,正是因为默认边框含有不同的尺寸,所以才可以对边框形状进行有效的离散化。
因为是对每个尺寸大小的特征图的每个位置使用 ( c + 4 ) ∗ k (c+4)*k (c+4)∗k个滤波器进行计算,故对每个类别,有 38 ∗ 38 ∗ 4 + 19 ∗ 19 ∗ 6 + 10 ∗ 10 ∗ 6 + 5 ∗ 5 ∗ 6 + 3 ∗ 3 ∗ 4 + 1 ∗ 1 ∗ 4 = 5776 + 2166 + 600 + 150 + 36 + 4 = 8732 38*38*4+19*19*6+10*10*6+5*5*6+3*3*4+1*1*4=5776+2166+600+150+36+4=8732 38∗38∗4+19∗19∗6+10∗10∗6+5∗5∗6+3∗3∗4+1∗1∗4=5776+2166+600+150+36+4=8732个检测结果,然后使用非极大值抑制处理得到最终的检测结果。
SSD的特点:
R-FCN方法是基于区域的检测器,是一个全卷积网络且大部分的计算在整个图像上共享。使用位置敏感分数图(positive-sensitive score map)来解决图像分类中的平移不变性(transform-invariance)和目标检测中的平移变换(transform-variance)这两个问题。
R-FCN是通过位置敏感分数图来把平移变换加入FCN中,每个分数图都对 相对空间位置的位置信息进行编码。在FCN的最后面,添加一个位置敏感的ROI池化层处理来自分数图的信息。整个结构进行端到端的训练,所有的可学习层都是卷积层,且共享整幅图像的参数。
R-FCN的实现步骤(R-FCN的结构可以看作ResNet-101卷积部分+一个1024维的卷积层+一个位置敏感的ROI池化层,不过需要一个额外的RPN进行辅助):
R-FCN实现的一些细节
ROI池化操作的实现:
r c ( i , j ) r_c(i,j) rc(i,j)是位置 ( i , j ) (i,j) (i,j)对应的分数图对第c个类别池化的结果, z i , j , c z_{i,j,c} zi,j,c是不属于 k 2 k^2 k2(c+1)分数图的一个分数图, ( x 0 , y 0 ) (x_0,y_0) (x0,y0)是一个ROI的左上角, Θ \Theta Θ代表网络中的所有学习参数。
vote操作:平均所有的分数,对每个ROI产生一个 ( C + 1 ) (C+1) (C+1)维的向量 r c ( Θ ) = ∑ i , j C r c ( i , j ∣ Θ ) r_c(\Theta)= \sum^C_{i,j}r_c(i,j| \Theta) rc(Θ)=∑i,jCrc(i,j∣Θ),然后使用softmax( s c ( Θ ) = e r c ( Θ ) / ∑ c ′ = 0 C e r c ′ ( Θ ) s_c(\Theta)=e^{r_c(\Theta)}/ \sum^C_{c^{\prime}=0}e^{r_c^{\prime}(\Theta)} sc(Θ)=erc(Θ)/∑c′=0Cerc′(Θ))进行处理得到最终的检测结果。
关于模型的训练:损失函数为
其中 c ∗ c^* c∗是ground_truth的类别, L c l s ( s c ∗ ) = − l o g ( s c ∗ ) L_{cls}(s_{c^*}) = -log(s_{c^*}) Lcls(sc∗)=−log(sc∗), L r e g ( t , t ∗ ) = R ( t , t ∗ ) L_{reg}(t,t^*) = R(t,t^*) Lreg(t,t∗)=R(t,t∗)(其中R(·)是L1正则函数)是边框回归损失, t ∗ t^* t∗是ground_truth的边框。平衡权重 λ = 1 \lambda=1 λ=1。
R-FCN的特点:
利用位置敏感分数图把平移变换引入了目标检测过程,使得检测速度和准确率都有一定程度的提升,但中间仍涉及大量的卷积计算,所以速度上还有提升的空间。
因为在基于CNN的检测方法中,骨干网络(backbone network)对特征的提取非常重要,且检测器的性能主要依赖于骨干网络,而突出新的、具有更高性能优势的骨干网络需要大量的设备且耗费大量的时间,所以提出一个链接现有骨干网络来增强性能的方法——CBNet。
CBNet把前面步骤中骨干网络(Assistant Backbone)生成的特征进行迭代,作为后续骨干网络输入的一部分,最后一个骨干网络(Leap Backbone)输出的特征图用于进行检测。
Adjacent Higher-Level Composition(AHLC):使用Assistant Backbone来增强Lead Backbone的特征(迭代K-1个Assistant Backbone的输出结果来作为Lead Backbone输入的一部分)。Lead Backbone第L步的输入融入了Lead Backbone前L-1的输出结果(XL-1K)和相邻的Assistant Backbone(BK-1)的输出结果(XLK-1):
其中g(·)表示复合连接——由1×1的卷积层和批量正则化层组成,用于减少通道数和上采样操作;
Same Level Composition(SLC):一个简单直接的组合方式就是把不同骨干网络同一步骤的输出特征图进行组合;
Adjacent Lower-level Composition(ALLS):与AHLC方法相反,把相邻的低层次步骤的输出作为后续骨干网络的输入(如下Bk的输入为Bk第l-1步的输出加上相邻骨干网络Bk-1的复合输出):
Dense Higher-Level Composition(DHLC):DenseNet网络中每一层与后续的网络都会建立链接,以便在某一部建立密集的链接。根据该方法,本文在CBNet结构中使用了密集组合连接:
几种方法的结果对比:
其中,第一行的baseline是FPN ResNet101的结果,DB是Dual-Backbone,ADLC是Adjacent Dense Level Composition。
CBNet是一个复合链接多个骨干网络的方法,与单骨干网络的方法相比可以获取更多有代表性的特征,从而弥补了为静态图像目标检测而设计的方法移植到视频检测所产生的问题,对现有的FPN、Mask RCNN、Cascade RCNN等方法均可以增强其mAP值。
在TCNN提出之前,视频目标检测使用的方法都是之前为静态图像目标检测而设计的,因而对视频中出现的运动模糊、视频虚焦、目标遮挡等检测准确率不够高,且可能导致跟踪框偏移到非目标对象上。
因此把目标检测和目标跟踪功能进行合并,提出了TCNN。TCNN包含两个模块,一个是tubelet(tubelet是指目标移动的大致路径)目标物体建议模块,合并了目标检测和跟踪方法;另一个是tubelet分类和re-scoring模块,使用空间最大池化进行处理,并对边框进行打分,利用时间卷积网络来结合视频帧的时间一致性。
TCNN的实现步骤:
image object proposal:使用类似Selective Search等方法生成2000个左右候选边框,因为2000个边框中大部分都是负样本边框,所以使用在ImageNet预训练的AlexNet网络对ImageNet中包含的200个类别分别设置一个特定的阈值,来消除易于分辨的负样本。
object proposal scoring:因为VID数据集包含的30个大类别内涵盖了DET数据集包含的200个小类别,所以可以直接使用为DET数据集设计的检测方法——使用一个在ImageNet上预训练并为DET数据集微调的GoogleNet网络,与RCNN类似,对每个类别需要一个使用conv5生成的特征图应用困难负样本挖掘方法(hard negative mining method)训练出的SVM,所以对VID来说需要30个SVM来区分是目标是背景还是30个类别之一,对一个边框来说,其SVM得分越高,则其置信度分数越高。
high-confidence tracking:使用文章《Visual tracking with fully convolutional networks》中的跟踪器,把置信度最高的边框作为跟踪的起点,反向跟踪到视频第一帧,正向跟踪到最后一帧,然后把两个轨迹合并为一个(因为跟踪是把最高置信度的边框作为起点,所以可能会导致结果偏移到背景或其他对象上,所以设置一个阈值,当当前跟踪的边框的置信度低于阈值则停止跟踪)。在得到一个跟踪轨迹后,在剩余的边框中找到置信度最高的边框对新的对象进行跟踪(但是因为高置信度边框一般聚集在一起,聚集在同一物体上,所以使用类似NMS的方法——当某边框和之前已处理的边框的重复率高于某一阈值,则该边框不会被再次选择),跟踪方法反复进行迭代,直至剩余边框的置信度均低于某一阈值(测试得该阈值0)。
tubelet box perturbation and maxpooling:该步骤的主要目的是使用高置信度的边框替代tubelet边框。首先在现有的tubelet边框周围,使用随机扰动(random perturbation)方法生成新的边框(具体方法是针对坐标进行随机采样,得到新边框的左上角和右下角坐标);然后使用与tubelet边框重复率高于某一阈值的原始检测结果替代tubelet边框(重复率越高置信度越高),同时进行传统的NMS处理,消除有着低分数的正边框;最后使用步骤2中的检测器对剩余的边框(增强后的边框和原始的tubelet边框)进行打分,通过最大池化方法只保留最大检测分数的边框,
temporal convolution and re-scoring:因为检测分数的波动,所以会导致性能的损失。TCNN使用时间卷积网络TCN(4层的一维全卷积网络,对每个tubelet边框生成时间密集预测)——把一维连续特征(检测分数、跟踪分数、anchor offset)作为输入,输出0或1(判断标准是与ground-truth的重复率高于0.5则为1),测试时使用连续的分类分数替代二元预测值。
TCNN通过对静态图像的目标检测和目标跟踪方法进行合并,使用时间卷积网络TCN将时间信息纳入卷积计算,实现了对视频目标的检测功能,在一定程度上消除了视频中出现的稀奇古怪姿势、视频虚焦、部分被遮挡、运动模糊等产生的影响,但效果不够好。
DFF是把正向反馈卷积网络分解为两个连续子网络——第一个是特征网络(feature network),是一个全卷积网络,输出大量中间特征图(intermediate feature map);第二个是任务网络(task network),主要负责在特征图上进行目标识别和语义分割。
使用随机梯度下降(SGD)进行训练,在每个小批量中,一组邻近帧(关键帧Ik,非关键帧Ii)被随机采样(0<= i - k <=9);
在前向传播中,在关键帧Ik使用特征网络进行处理得到特征fk;
使用flow网络处理关键帧Ik、非关键帧Ii,通过估计得到flow field和scale field。当i>k时,fk被传到fi(关键帧的特征传播到非关键帧的特征中);
任务网络处理fi得到结果yi及其导致的损失,该损失的误差梯度被反向传播以更新全部组件。
值得注意的是,当i=k时,只使用per-frame network进行训练。
DFF因为只需要对稀疏帧进行标记,所以训练速度很快。per-frame 网络只能使用被标记的数据,而DFF可以在帧Ii被标记的情况下使用所有的数据。
关键帧的选取——在固定间隔l个连续帧内必有一个关键帧。
一些细节部分:
DFF的优势:
DFF存在的不足之处:
现有的视频目标检测方法都是使用box-level的时间信息进行检测,没有进行端到端的训练(box-level方法:在单帧中应用检测器得到候选边框,在后续步骤中利用时间信息把检测得到的边界框进行合并。一般是依赖现成的光流、手动描述的边框关联信息实现,整体的检测质量的无法进行提升)。
FGFA是利用时间信息聚合邻近帧的特征从而增强当前帧特征的代表性,属于feature-level方法。
对单独的帧提取特征,生成每帧的特征图;
使用光流网络估计当前帧及其邻近帧之间的动作;
邻近帧的特征根据动作流warp到当前帧;
把邻近帧的特征图和当前帧的特征图使用自适应权重网络进行聚合;
聚合的特征图输入到检测网络生成检测结果。
FGFA利用视频中短暂时间内对同一物体有多个快照这一特点,对快速移动的物体有较好的检测效果,但在目标对象的外观发生剧烈变化,如被遮挡时检测效果就不那么理想,不准确的流估计会导致错误的结果。
因为FGFA方法提出的主要目的是增强特征和提升识别的准确率,所以把box-level方法作为后处理方法可以大幅提升输出结果的准确率。
当前的主流方法都是通过聚合邻近帧的特征来增强当前帧的特征,但因为相机和物体的运动,导致物体的特征通常不能被空间校准(spatial calibration)。
(实例级的方法为:
首先使用ROI池化操作生成第i个proposal在(xit,yit,hit,wit)位置的特征mit-r:
其中ROI池化是使用最大池化把特征转化到一个拥有固定空间范围的小型特征图内。
然后使用回归网络R(·),通过mit-r估计帧t-r和帧t的第i个proposal的movement:
左侧的为相关的movement,且R(·)在全连接层实现。
值得注意的是,只有正proposal才能在连续帧内学习到回归movement。
一旦获得了相关的movement,则可进行特征的校准来增强当前帧的特征。帧It-r的proposal为:
FMAN网络同时在像素级pixel-level和实例级instance-level对目标对象进行校准(像素级的校准对细微的运动、柔性运动进行建模操作非常灵活,实例级的校准通过获得更多的全局运动路径从而对被遮挡物体检测具有较高的鲁棒性),从而提升了检测的准确率。
STMN是一个RNN结构的网络,同时学习如何对目标的长期外观(long-term appearance)运动动力学进行建模和对齐。核心是STMM——一个卷积循环计算单元,包含在静态图像中学习到的权重。因为是使用静态图像数据库的权重,所以对视频数据集缺少标记信息的情况不敏感。
为了说明二维空间的视觉数据的本质,STMM在内存中存储每帧的空间信息;为了实现像素级准确的空间对齐,使用MatchTrans模块来显式地模拟跨帧运动引起的位移(详细过程见下方——时空存储对齐)。
因为每帧的卷积特征在空间存储中被对齐和聚合,且存储中包含多帧的信息,所以任何目标对象的特征都易于定位。除此之外,每个区域的特征都可以通过存储中的ROI池化操作而轻易的获取到。
STMN的实现步骤:
STMM的实现细节:
每一个时间点,STMM都是把Ft和Mt-1作为输入并进行计算:
其中 ⨀ \bigodot ⨀表示对应元素相乘, ∗ * ∗表示卷积计算, U , W , U r , W r , U z , W z U,W,U_r,W_r,U_z,W_z U,W,Ur,Wr,Uz,Wz都是二维卷积核,门(gate) r t r_t rt掩膜 M t − 1 M_{t-1} Mt−1的元素(即允许其忘记之前的状态)来生成后续存储器 M ~ t \tilde{M}_t M~t,门 z t z_t zt指出如何对 M t − 1 M_{t-1} Mt−1和 M ~ t \tilde{M}_t M~t进行加权和合并;
为了生成 r t r_t rt和 z t z_t zt,STMM对Ft和Mt-1进行仿射变换,然后使用ReLU进行处理得到最终结果。因为 r t r_t rt和 z t z_t zt是gate,其值只能为0或1,所以需要进行BatchNorm,这里使用零均值和单位标准偏差来替代传统的BatchNorm方法;
和标准ConvGRU的两点区别:①.为了更好的利用权重,需要确保循环单元的输出和预训练的权重相互兼容,因为标准ConvGRU的输出值位于[-1,1],与输入范围不匹配。为了解决这个问题,把标准ConvGRU内的Sigmoid和Tanh替换为ReLU;②使用卷积层的权重对 W z W_z Wz, W r W_r Wr和 W W W进行初始化,而不是随机初始化。从概念上讲,这可以看作是一种使用预先训练的静态卷积特征映射初始化内存的方法。
时空存储对齐(spatial-temporal memory align)的实现细节:
不使用空间对齐的话,存储会在目标移动后缺无法忘记它之前的位置,导致原来的位置会与后续的memory map叠加在一起,参数错误的结果产生多个识别框,产生假阳性检测结果(false positive detection)和不准确的定位,如下图:
为了缓和这种情况,提出了MatchTrans模块来对齐帧间的时空存储。
因为 F t F_t Ft中的(x,y)对应 F t − 1 F_{t-1} Ft−1中(x,y)附近的一块区域,所以利用这个对应关系可以实现存储的对齐,来消除没对齐时产生的错误检测边框。
为了将时空存储 M t − 1 M_{t-1} Mt−1进行转换来与帧t对齐,使用MatchTrans计算特征 F t F_t Ft内位置(x,y)的特征块 F t ( x , y ) F_t(x,y) Ft(x,y)和其邻近帧 F t − 1 F_{t-1} Ft−1相同位置特征块 F t − 1 ( x , y ) F_{t-1}(x,y) Ft−1(x,y)的亲和性(affinity),转换系数 Γ \Gamma Γ:
然后使用 Γ \Gamma Γ将未对齐的空间存储 M t − 1 M_{t-1} Mt−1转换为对齐的 M t − 1 ′ M^{\prime}_{t-1} Mt−1′:
MatchTrans与之前的对齐方法相比,因为不需要计算和存储光流所以更加高效,而转换系数的获取过程与之前的方法相比,没有使用转换系数去跟踪和链接检测结果,而是用来随时间对齐存储以在每个候选区域产生个呢个好的特征。
最后使用Seq_NMS来确保邻近帧检测结果的空间平滑性。
STMN的特点:
基于CNN的视频目标检测方法都是使用图像识别网络提取特征,然后通过特征聚合或边框分数来利用时间一致性。尽管这些方法最终提升了检测效果,但是都伴随着大量的计算,这在视频长度越来越长的现在变得不再适用。
为了减少计算量,后续的方法如DFF,只在稀疏的关键帧进行特征提取,把关键帧的特征warp操作后传播到邻近的非关键帧。这类方法的关键是使用FlowNet进行像素间的位移,但是这类方法花费了额外的时间在FlowNet,因为FlowNet由卷积层组成(卷积计算需要消耗大量时间)。
以上的方法都是把视频看作是由连续图像组成,却忽略了视频通常是由压缩格式存储和传输的。把视频看作一系列连续的静态图像并使用不同的方法来恢复运动轨迹是非常耗时且冗余的。
MMNet(motion aided memory network )——对视频中的一组连续图像(GOP),在参考帧上应用使用特征提取器生成金字塔型特征(pyramidal feature);MMNet把上述的特征作为输入,利用运动向量和残差错误生成后续帧的特征。与之前方法只能传播高级特征不同,因为memory network由金字塔特征组成,所以可以处理不同尺寸大小(multi-scale)的对象。虽然伴随微量的准确度下降,但MMNet比R-FCN快3倍,比MANet快10倍。
MMNet直接可以在压缩视频上使用,在视频流中使用运动信息存储和传播而不是建立其他的模型来恢复运动路径,所以速度比之前的方法速度要快。
MMNet的优势:利用了编码解码器处理过程中存在的运动信号和残差错误,无需额外计算;因为特征金字塔的原因,所以memory network可以处理不同大小的对象;明显的提升了处理速度,但伴随少量准确率下降。
总体来说,视频目标检测方法的发展为——首先移植静态图像目标检测方法到视频目标检测领域进行检测,但是对视频中独有的运动模糊、视频虚焦、稀奇古怪的姿势等非常敏感,导致其检测效果并不理想;然后专为视频目标检测设计了新的算法,如TCNN、DFF、MMNet等,虽然它们的检测效果比原本的静态图像目标检测方法好很多,但也都存在自己的缺陷,如准确率还不够高或计算量大、速度慢等。当前的视频目标检测算法的准确率已经很高了,但是准确率和速度之间的权衡做的还不够(速度快的准确率不够高,准确率高的速度不够快,或者是模型的训练十分耗时),在我看来,视频目标检测领域接下来的研究方向应该是在保持准确率的前提下,再对模型的处理速度进行提升,或对模型的训练速度进行提升——找到新的办法来减少卷积计算、提取更具代表性的特征等。