天天看点

浅析CornerNetcornernet简介

cornernet简介

cornernet构成

cornernet是一种不同于之前的检测网络的一种新的网络,大部分思路源于stacked hourglass network。网络本身属于一步网络,在预测过程中不再需要进行anchor的设置,取而代之的是预测目标的左上角坐标和右上角坐标,每一组角点将代表一个目标。在网络前向传递的过程中,网络将输出两组heatmap:对应每个预测位置是一个角点的概率;heatmap通常比原图小一些,因此需要进行位置的进一步修正,与之对应的就是网络的offset输出;最终多个角点之间还需要进行匹配,这是网络的第三个输出embedding vector,代表一个抽象的空间中每一个heatmap对应点所在的位置,同一目标的两组角点之间的距离将尽可能的近,而不同目标之间的角点距离要尽可能的小,而距离本身无实际物理意义。

浅析CornerNetcornernet简介

hourglass network

hourglass network是cornernet的基网络,网络结构与残差网络近似,先将输出的分辨率逐渐降低,在向上采样并进行融合,最后每个hourglass network的输入和输出是同分辨率的。hourglass network的输出是作为后续corner pooling的输入。

浅析CornerNetcornernet简介

corner pooling

此处只对左上角的池化进行解释:对于输出分为两次池化并将二者相加,对于top pooling从下至上逐列进行max pooling,同进行left pooling逐行进行从右至左的max pooling。在最终的测试中,corner pooling将结果提升2左右。

浅析CornerNetcornernet简介

embedding vector

corner pooling的输出将用作heatmap、embedding vector和offset的输入。embedding vector的工作机制主要源于损失函数的计算,pull loss减小同类角点的距离,push loss增大不同组角点的距离,使得角点可以进行有效的匹配。

offset

offset的存在是因为heatmap与原图大小不一,存在舍入误差,需要进行修正,进一步使得角点更加接近目标的最小外接矩形。对于预测和真实的offset将采用smooth l1 loss进行损失函数的计算。

loss

最后将介绍网络的损失函数计算,损失函数由四个部分构成:

Detect loss:角点损失

Offset loss:角点坐标修正

Pull loss:统计统一目标

Push loss:区分不同目标

浅析CornerNetcornernet简介
浅析CornerNetcornernet简介

不同的损失函数存在不同的作用,其中pull loss使用于同类目标的聚集,而push loss则是对不同目标的角点进行区分

效果展示

浅析CornerNetcornernet简介

继续阅读