文章14
标签9
分类1

FCOS:全卷积一阶段目标检测模型

论文名称:FCOS: Fully Convolutional One-Stage Object Detection
论文地址:传送门

Introduction

目前主流的目标检测模型如Faster R-CNN,SSD,YOLO都需要预设一些anchor。
虽然他们的效果都不错,但是它们有一些缺点:

  1. 检测效果对参数敏感,如anchor的sizes,ratios,numbers
  2. 因为其anchor的设计是固定的,对于有较大差异的图像,尤其是小目标的检测效果并不好。
  3. 为了达到检测效果,anchor boxes过多,如短边800的图像在FPN中将产生180K anchor boxes。
  4. IoU计算耗时。

基于FCN的方法在语义分割等任务上取得了很好的效果。由于anchor的使用,目标检测到目前还没有从FCN中受益。

之前采用FCN进行检测的工作主要集中在特定的领域,如Face detection,Text Detection,主要是FCN在Generic Object Detection上效果并不好。主要原因是:以FCN方式检测时很难处理物体的重叠问题。

在本文中,作者采用FPN,很大程度上解决了重叠所造成的ambiguity。
同时由于本文的方法产生了很多远离目标中心的低质量的点,因此作者提出了“centerness”的概念,来衡量点接近目标中心的程度。通过“centerness”,越靠近中心的点,权重越高,远离中心的点,则权重降低。

Implement Details

FCOS模型示意图

如上图模型,可以看出FCOS的结构确实十分的优雅,输入一张影像,输出三个branch:classification,centerness,regression,且每个branch的大小都是对应featmap的尺寸$H \times W$.

Fully Convolutional One-Stage Object Detector

首先有一些定义:
$F_i \in R^{H \times W \times C}$: CNN产生的第i个featmap
$B_i = (x_0^i,y_0^i,x_1^i,y_1^i,c^i) \in R^4 \times {1,2 \dots C}$: 图像的ground-truth bounding box。
$s$: 当前featmap与输入图像间总共的strides。

对于$F_i$上的一个点$(x,y)$,我们可以直接映射到原图像的$([\frac{s}{2}]+xs,[\frac{s}{2}]+ys)$。
相较于传统基于anchor的检测方法,FCOS直接将每一个点当作训练样本。换句话说,在基于anchor的检测方法中,每一个anchor box从featmap上抠出来,然后通过cls和reg,得到类别和坐标;而FCOS直接将每个点当作样本,featmap上的每个点都能产生一个类别和预测一个box,也就是所谓的semantic segmentation style。

具体来说,对于classification任务,如果一个点落在了一个ground-truth box内,那么它就是正样本,类别$c^*$为ground-truth box的类别;如果其落在box外,那么$c^*=0$。

同时还有regression任务。每个点都定义一个4D向量,$t^*=(l^*,t^*,r^*,b^*)$,其中$l^*,t^*,r^*,b^*$分别为此点到它所在gt_box的四边的距离。

如果一个点落在了多个gt_box内,则其被称为ambiguous sample,则选择最小面积的哪个gt_box作为回归的目标。在下一部分我们会看到FCOS使用FPN来解决这个问题。

即如果一个点$(x,y)$落在了$B_i$中,那么回归目标可以定义为:
$$l^*=x-x_0^i,t^*=y-y_0^i,r^*=x_1^*-x,b^*=y_1^*-y$$

Network Outputs. 如上图模型示意图,模型最后输出一个80D的classification vector,一个4D的coordinates vector。

Loss Function.
$$L({p_{x,y}},{t_{x,y}})= \frac{1}{N_{pos}} \sum_{x,y} L_{cls}(p_{x,y},c_{x,y}^*) + \frac{\lambda}{N_{pos}} \sum_{x,y} 1_{c_{x,y}^*>0} L_{reg}(t_{x,y},t_{x,y}^*)$$

其中$L_{cls}$为Focal Loss,$L_{reg}$为IOU Loss。

inference. 对于一张输入影像,直接输出每个featmap的$p_{x,y}$和$t_{x,y}$,然后选择出$p_{x,y}>0.05$的样本作为正样本,接着从$t$中反解出bounding box。

Multi-level Prediction with FPN for FCOS

FCOS采用FPN来解决FCN目标检测中存在的重叠问题。

在构建FPN时,FCOS共定义了5个level,${P_3,P_4,P_5,P_6,P_7}$. 其中${P_3,P_4,P_5}$是有CNN的${C_3,C_4,C_5}$产生的。${P_6,P_7}$是分别在${P_5,P_6}$上添加一个步长为2的卷积层产生的。至此,${P_3,P_4,P_5,P_6,P_7}$的步长分别为8,16,32,64,128.
作者之所以不采用原FPN中的$P_2$,可能是$P_2$特征较浅,效果不好,且参与运算的样本更多。

我们知道FPN与Fast R-CNN结合时,是将RPN的anchor根据大小分配到不同level的featmap上,而在FCOS中,作者也将点分配到不同的level上,同时又解决了重叠的问题。

首先,点在不同level分配的原则时:根据回归距离的大小。也就是回归距离小的点分配到底层如$P_3$,而回归距离较大的层则分配到顶层如$P_7$。具体来说,如果:
$$max(l^*,t^*,r^*,b^*)>m_i$$
或者
$$max(l^*,t^*,r^*,b^*)< m_{i-1}$$
那么这个样本被定义为负样本,不参与box回归。其中$m_2,m_3,m_4m_5m_6$被设置为0,64,128,256,512和∞。

由于小目标被分配在了不同的层,因此重叠问题很大程度降低了。如果此时还有多个box重叠,那么取最小面积的哪个作为回归目标。

Center-ness for FCOS

尽管使用了FPN,但是FCOS和anchor-based detector之间仍存在精度差异。作者认为其是由于FCOS产生了大量的低质量的远离目标中心的点导致的。因此作者定义了一个centerness,根据目标与回归中心的距离,为不同的点赋予不同的权重。其定义如下:

$$centerness^* = \sqrt(\frac{min(l^*,r^*)}{max(l^*,r^*)},\frac{min(t^*,b^*)}{max(t^*,b^*)})$$

使用sqrt主要是为了降低centerness的decay。centerness的范围为$[0-1]$,使用BCE Loss。
在训练时,$L_{center}$和$L_{cls}$,$L_{reg}$一起训练;在测试时,centerness_score与cls_score相乘,然后在排序筛选出得分较高的box。

Summary

总的来说FCOS还是十分的work的,与Faster R-CNN相比,模型的结构也十分的优雅。
刚接触Detection时我也在想为什么不用Segmentation的方式进行检测,主要原因是物体的重叠问题,而FCOS使用FPN很大程度解决了这个问题。
同时作者提出的Centerness可以减少low-level的点,在预测时可以较少错误检测。

但是相比于其他模型的输入300300,FCOS直接使用8001024的图像,精度自然会高许多,然后还有GN等tricks。
同时每次训练时得到target也挺耗时的,不过知乎有大佬指出可以把这部分放在data_loader里。

如果想要改进的话,感觉还可以从FCN导致的重叠做起,找到一种较为完美的解决重叠的方法。
看到Github已经有issue问是否要做instance segmentation,作者说已经在做了。去arxiv找了下,商汤已经有人做了PolarMask

CornetNet && CenterNet && RepPoints 模型总结

CornerNet

论文名称:CornerNet: Detecting Objects as Paired Keypoints
论文地址:传送门

Introduction

CornerNet最大的创新在于其突破了anchor的限制,使用两个点来表示物体的bounding box,并提出了corner pooling,且取得了不错的效果。

其指出基于anchor的one-stage detectors通常需要大量的anchor,但最终只提取极少数的box,且导致参数多,计算量大,而其仅通过一个物体的top-left和bottom-right 两个点来确定物体的位置,且不需要各种scale(但事实上其训练速度、测试速度也非常慢)。

在COCO数据集上其达到了42.2%的mAP。

Network

CornerNet采用的backbone为hourglass network(HN),HN的主要特点是重复的bottom-up、top-down操作,使得不同层之间的信息相互融合。
Hourglass Module

如图所示,在一张图片经过ConvNet之后,其分别进入两个分支的网络,其分别预测物体的左上角和右下角,然后通过group corner将同一个物体的corner连接起来,接着还设置了一个offset 网络,对预测点进行offset。

CornerNet

在进行角点检测的过程中,每一个分支都将产生$C$个heatmaps,其中$C$代表物体的类别数,每个heatmap的大小都是$H \times W$。
对于每一个角,其都只有一个ground truth,但靠近此点的prediction也能产生一个近似的预测,因此不能简单地将其归为negtive。为此本文对每个ground truth点设置了一个半径,半径内的即被认为是positive。而半径设置时需要满足半径内的点组成的box与gt box之间的IoU达到某个阈值(本文为0.3)。

由于heatmap较小,在映射回去之后会产生较大的误差,因此本文对每个点都设计了一个offset,使得映射回去的点进行一个修正。如下式中,$o_k$即为offset。
$$o_k = (\frac{x_k}{n}-[\frac{x_k}{n}],\frac{y_k}{n}-[\frac{y_k}{n}])$$
为此本文采用Smooth L1 Loss来定义offset loss。
$$L_{off}=\frac{1}{N} \sum_{k=1}^N SmoothL1Loss(o_k,\hat{o}_k)$$

由于作者在前面采用两张heatmap分别预测两个角点,因此需要将两者进行配对(Grouping Corners),在这里作者主要采用了Associative Embedding的思想。在AE中,作者定义了group loss,即$L_g$,其前半部分是将同一个人体的点pull在一起,后半部分是将不同的人的点push出去,从而使得同一个人的点具有相同的tag,不同人的点具有不同的tag,即同时实现了检测和分组,而不像传统的方法分两个阶段来解决。
Associative Embedding

本文中作者指出,对于同一个box的顶点距离也比较近,也可以采用Associative Embedding来实现点的分组。因此定义了$L_{pull}$和$L_{push}$,分别用来将top-left corner和bottom-right corner pull在一起、push awy。其中$e_k$是两个点的平均值,$\Delta$设置为1。
$$L_{pull} = \frac{1}{N} [(e_{tk}-e_k)^2+(e_{bk}-e_k)^2]$$
$$L_{push}=\frac{1}{N(N-1)} \sum_{k=1}^N \sum_{j=1,j \neq k}^N max(0, \Delta-|e_k-e_j|)$$

其实就是在训练时为每个corner分配一个embeddding vector,然后使用Associative Embedding,根据点之间的距离进行grouping。

Corner Pooling

Corner Pooling

一般情况下,物体的角点不会在物体上,我们在寻找物体的角点时,如左上角,一般会先向右看,找到最靠左的点,然后向下看,找到最靠上的点,那么这两个值组成的点便是左上角点;右下角同理。
具体来说,对于点$(i,j)$,我们对$(i,j)$到$(i,H)$之间所有的点进行maxpool,将结果赋予$t_{ij}$,同理对水平方向也这样进行。

Corner Pool

其示意图如下所示。

Detection Module

即经过backbone之后有三个分支,一个类似于residual connection,另外两个负责预测top-left corner,接着进行corner pooling,接着对pool之后的特征图连接,然后分为三个部分,分别预测heatmaps、Embeddings、Offsets,最后以一个multi-task loss进行优化。
$$L = L_{det}+ \alpha L_{pull} + \beta L_{push} + \gamma L_{off}$$

CenterNet

论文名称:Objects as Points
论文地址:传送门

Introduction

目标检测当中通常使用bounding box来定位object,目前流行的detector也是基于这种方法:产生大量的可能存在目标的box,这显然是wasteful,inefficient。而本文使用一个中心点来表示物体,使用keypoint estimation对尺寸、3D location、orientation、pose等进行点回归。在COCO数据集上达到28.1% AP时有142 FPS,37.4%时有52 FPS,45.1%时有1.4FPS。

本文模型的流程十分简单:将影像送入全卷积网络当中,产生一个heatmap,heatmap中的peaks即为目标的中心点。

在测试时并不需要NMS,因为CenterNet并不需要阈值来区分正样本和负样本,只需要根据heatmap的peaks来确定正样本即可:一个目标仅有一个positive,并不需要选出若干anchor。

同时CenterNet使用了一个较大的output(反卷积实现的),因此并不需要多尺度anchor。

事实上CornerNet和ExtremeNet都是对点进行检测,但他们都需要对点进行配对,而CenterNet并不需要这个过程。

Preliminary

输入:$I \in R^{W \times H \times 3}$
输出:$\hat{Y} \in [0,1]^{\frac{W}{H} \times \frac{W}{H} \times C}$
其中$C$代表关键点的类型,如人体姿态检测$C=17$,COCO目标检测类别$C=80$

Ground Truth: 使用高斯分布将keypoints展开成heatmap。

Keypoints Loss:Focal Loss

Offset Loss: $\hat{O} \in R^{\frac{W}{H} \times \frac{W}{H} \times 2}$

Size Loss: $s_k = (x_2^{(k)}-x_1^{(k)},y_2^{(k)}-y_1^{(k)})$,$\hat{S} \in R^{\frac{W}{H} \times \frac{W}{H} \times 2}$

则总的Loss: $L_{det}=L_k+\lambda_{size}L_{size}+\lambda_{off}L_{off}$

网络在每个位置输出$C+4$个值,其中$C$为关键点类型数,4表示2个size,2个offset,而每个点的location是根据heatmap的peaks得出的。

在网络经过不同的backbone(Resnet、Hourglass、DLA)之后,经过一个$3 \times 3$卷积、Relu、$1 \times 1$卷积。
不同的backbone

从点到bounding box:
$$(\hat{x}_i+\delta \hat{x}_i - \hat{w}_i/2,\hat{y}_i+\delta \hat{y}_i - \hat{h}_i/2,\hat{x}_i+\delta \hat{x}_i + \hat{w}_i/2,\hat{y}_i+\delta \hat{y}_i + \hat{h}_i/2)$$
其中$(\delta \hat{x}_i,\delta \hat{y}_i)$为offset

Summary

虽然CornerNet在论文里argue物体的中心点并不好找,但CenterNet并不需要Associate Embedding的过程,因此效率会更高。我觉得其最具创新的是:将每个物体定义为一个点,接着对于不同的任务,将中心点向不同的方向regression。

Mask R-CNN模型总结

论文名称:Mask R-CNN
论文地址:传送门

Introduction

本以为这篇文章是众多R-CNN系列的一个,然而看到作者是kaiming和Ross Girshick,再看知乎上各种“劝退目标检测”,足以见得这篇文章的重要性。事实上,Mask R-CNN确实成为这几年来的baseline。

我们知道目标检测的基本任务是localization和classification,而instance segmentation不仅需要detection,同时也要segmentation,也就是要完成localization、classification、segmentation三项任务。由于其任务复杂,以往的instance segmentation系统也趋向于复杂化。而Mask R-CNN则通过向Faster R-CNN添加一个branch,实现了在detection的同时,完成segmentation的任务。作者指出,在没有使用任何trick的情况下,Mask R-CNN在检测和分割都达到了较好的效果。

同时作者还提出了ROIAlign,用来解决ROIPooling在运算时存在的定位误差。

ROIAlign

本文较为重要的一个概念就是ROIAlign了,但文中并没有清晰的介绍ROIAlign是怎么来的。
ROIPooling存在的问题:两次量化的误差。

  1. 首先Region Proposal中的坐标是通过回归得到的,一般都是浮点数,如$(cx,cy,w,h)$均是相对于图像长宽的值(范围均是$[0,1]$),同时此时的特征图一般都是较小的(如$[\frac{1}{16}w,\frac{1}{16}h]$),此时若在特征图上取ROI的话,得到的相对坐标也是浮点值,必须进行取整,从而产生误差。
  2. 其次ROIPooling将一个不同尺寸的Proposal变换到固定的尺寸(如$7 \times 7$),那么此时对Proposal进行划分时所产生的浮点数坐标也要进行取整,因此又产生一个误差。

这些误差在特征图上看似无关紧要,但如果将一个$[\frac{1}{16}w,\frac{1}{16}h]$的特征图映射回去,那么误差将放大16倍,这对小目标的检测是十分重要的。

那么ROIAlign做了什么事呢?其实就是将这些取整的操作用双线性插值代替,从而减小误差。

  1. 在通过回归或者RPN得到坐标后,并不进行取值,保留浮点坐标
  2. 将Region Proposal划分为$k \times k$个bin,对于每个bin,计算若干中心点的的像素值,取均值或最大值,得到大小为$k \times k$的特征图。
    其中对于每个bin,若只计算1个像素值,则对这个bin的中心点坐标进行双线性插值,得到其像素值;若计算4个像素值,则对这个bin划分为4个区域,取各区域的中心,并通过插值计算其像素值,然后取Mean或者Max。
    ROIAlign

对于ROIPooling,有公式:
$$y_{rj}=x_{i^(r,j)}$$
即$y_{rj}$是从$x_{i^
(r,j)}$中的最大值中得到的(MaxPool)

其梯度传播如下:
$$\frac{\partial{L}}{\partial{x_i}}=\sum_r \sum_j[i=i^(r,j)]\frac{\partial L}{\partial y_{rj}}$$
即L对x的梯度仅取决于其取到的那个像素值$x_{i^
(r,j)}$

对于ROIAlign,其梯度公式如下:
$$\frac{\partial L}{\partial x_i}\sum_r \sum_j [d(i,i^*(r,j))<1](1-\Delta h)(1- \Delta w)\frac{\partial L}{\partial y_{rj}}$$
即在ROIPooling的基础上,在半径为1的范围内,考虑参与插值的多个点贡献的梯度值,并以距离作为梯度传回大小的衡量。

Mask R-CNN

Mask R-CNN

Mask R-CNN基本上就是在box regression和classification上添加了一个并行的segmentation。segmentation部分已经比较常见,通过对特征图反卷积,产生更大的特征图,即本文中的Mask。

但重要的是,Mask R-CNN将detecction和segmentation结合起来,且实现方式十分的简单。在计算$L_{mask}$时,仅计算第$K$个mask产生的Loss,其中$K$为此box所包含物体的类别;在预测的时候,$K$为分类网络预测出的类别。

基于此,作者设计了两中结构,左侧为一般的Faster R-CNN,右侧为加入FPN的Faster R-CNN。

Summary

Mask R-CNN在detection领域并不算的多么重大的突破,但在实践过程中发现其收敛速度快,训练效果好,被工业界推崇。其提出的RIOAlign也算是对ROIPooling的一个改进,会逐渐的被采用。将Detection和Segmentation结合 起来进行Instance Segementaion,对IS来说是一个很大啊的突破。

GHM总结

论文名称:Gradient Harmonized Single-stage Detector
论文地址:传送门

Introduction

single-stage detector虽然面临着训练时的不协调,如正样本和负样本、易分类目标和难分类目标之间质量的巨大差异,但其不失为一种优雅且有效的方法。
在本文中,作者将这种不协调性归结到梯度问题,并提出了一种梯度协调机制(Gradient Harmonizing Mechanism,GHM)来解决这种不协调。GHM可以与分类和回归Loss function相结合,如Cross Entropy、Smooth L1 Loss。

我们知道在one-stage方法的训练过程中,最大的挑战就是正样本和负样本、易分类目标和难分类目标之间的不平衡性,大量易分类的背景样本使得模型并不能学习到目标的真正特征。如果一个目标很容易区分,那么模型并不能从中受益。

梯度范数等效于梯度的大小,范数越大,则梯度就较大。作者通过对梯度范数的分析,发现梯度范数较小时聚集了大量的样本,而这些样本即代表易分类的样本,它们对模型的训练并没有太大的帮助;同时我们还发现有许多梯度范数及其大的样本,他们对目标的分类也没有太大的作用。

因此如果能够对梯度范数十分小的样本和十分大的样本(异常值,outliers)down-weight,那么每个样本的贡献都是均衡的。

Gradient Harmonizing Mechanism

对于二分类问题的Loss函数:Cross Entropy
$$L_{CE}(p,p^)=\begin{cases}
-log§ && if \quad p^
=1 \
-log(1-p) && if \quad p^*=0
\end{cases}$$

假设$p=sigmoid(x)$,那么:
$$\frac{\partial L_{CE}}{\partial x}=\begin{cases}
p-1 && if \quad p^=1 \
p && if \quad p^
=0
\end{cases}
=p-p^*
$$

接着我们定义$g$:
$$g = |p-p^|=\begin{cases}
1-p && if \quad p^
=1 \
p && if \quad p^*=0
\end{cases}$$

Gradient Dentisy

$$GD(g)=\frac{1}{l_{\epsilon}(g)}=\sum_{k=1}^N\delta_{\epsilon}(g_k,g)$$
$$\delta(x,y)=\begin{cases}
1 && if \quad y-\frac{\epsilon}{2} <= x < y+ \frac{\epsilon}{2} \
0 && otherwise
\end{cases}$$
$$
l_{\epsilon}(g)=min(g+\frac{\epsilon}{2},1)-max(g-\frac{\epsilon}{2},0)
$$
接着定义梯度密度协调参数$\beta_i=\frac{N}{GD(g_i)}$,其中N是样本总数。

GHM-C Loss

将GHM加入到分类Loss当中:
$$L_{GHM-C}=\frac{1}{N} \sum_{i=1}^{N}\beta_i L_{CE}(p_i,p^)
\= \sum_{i=1}^N \frac{L_{CE}(p_i,p^
)}{GD(g_i)}
$$
GHM-C Loss

GHM-R Loss

在回归当中使用的L1 Loss:
$$L_{reg}=\sum_{i \in {x,y,w,h}}SL_1(t_i-t_i^*)$$

Experiments

RetinaNet模型总结

论文名称:Focal Loss for Dense Object Detection
论文地址:传送门

Introduction

目前在目标检测领域,two-stage detector(如R-CNN系列)通常能取得较好的精度,但速度较慢;而one-stage detector(如SSD、YOLO)通常速度比较快,但精度会较低。如何保持检测速度的同时,能够提高one-stage检测精度,作者指出类别不平衡性是主要原因,因此作者提出了Focal Loss来解决类别不平衡问题,使本文提出的RetinaNet也能实现较高的精度。
类别不平衡性通常会导致两个问题:

  1. 许多易分类的负样本对训练没有什么贡献,导致训练较为低效。
  2. 这些Negetive的样本影响模型的训练,导致模型整体学习方向偏离。

而在two-stage detector中,通常有两种解决方案:

  1. 使用两个阶段进行递归(cascade)。在多阶段cascade时,可以逐渐筛去easy negetives,使得样本之间平衡。
  2. 选择mnibatch时,有针对的选择正负样本。如正:负=1:3。

Focal Loss

为了解决正负样本间的极度不平衡性,作者提出了Focal Loss。

通常情况下,对于两分类问题我们使用Cross Entropy Loss,即:
$$CE(p,y)=\begin{cases}
-log§, & \mbox{if } \quad y = 1 \
-log(1-p), & otherwise.
\end{cases}$$
其中y为Ground truth label,$p \in [0,1]$为预测结果,为了方便描述,CE也可以表示为:
$$p_t=\begin{cases}
p & \mbox{if} \quad y=1\
1-p & otherwise
\end{cases}
$$
此时有$CE(p,y)=CE(p_t)=-log(p_t)$,对应下图曲线上的蓝色曲线。可以看到,即使$p \ge 0.8$,仍有很大的loss。
这种损失的一个显着特征是,即使很容易分类(pt≫ .5)的例子,其损失也具有不小的幅度。 如果将大量简单的例子相加,这些小的损耗值可能会导致错误的类别。

为了解决这个问题,作者提出了Balanced Cross Entropy,即:
$$CE(p_t)=- \alpha_t log(p_t)$$

为了降低易分类目标(easy examples)的权重,使模型在训练时更加专注于难分类样本(hard exmaples),作者提出了Focal Loss,不同$\gamma$对应的图像如上图所示。
$$FL(p_t)=-(1-p_t)^{\gamma}log(p_t)$$

使用Focal Loss之后,大量易分的negtives的loss就减小了,从而使模型更加专注于难以区分的目标。

Focal Loss还有另一种形式:
$$FL(p_t)=-\alpha_t(1-p_t)^{\gamma}log(p_t)$$
本文实验采用的即时此种形式。

RetinaNet Detector

RetinaNet

  1. ReNet作为backbone
  2. 采用FPN(Feature Pyramid Network)进行不同scale的采样。
  3. 对于每个scale level,都有一个class net和box net。
  4. 将最终预测的anchor进行merge,使用NMS进行筛选。

其中,FPN使用的的是$P_3$到$P_7$,$P_3 \dots P_5 \rightarrow C_3 \dots C_5$,而$P_6$是对$C_5$进行卷积得到的,$P_7$是通过对$C_6$卷积得到的。

对于每个level,不仅仅是从$32^2$到$512^2$的大小,还有${2^0,2^{1/3},2^{2/3}}$三个尺寸,每个尺寸都有三个ratio:${1:2,1:1,2:1}$,即每个level都有9个anchor box。对于每个anchor box,都单独预测K个class,即总共需要$KA$个值。

对于box net,则简单的预测$4A$个值,对应着A个anchor box的坐标。