Precise Detection in Densely Packed Scenes论文详解

《Precise Detection in Densely Packed Scenes》是发表在2019cvpr上的文章并且有源码。

代码地址:https://github.com/eg4000/SKU110K_CVPR19

这篇文章的目的是对于一些人为的密集场景的物体进行检测定位。如下图所示,在一些商店的货架上待售商品摆放密集。使用一些SOTA的方法如RetinaNet,会出现检测框重叠的问题,如图中a所示。使用文章方法可以减少这种问题,如图中b所示。其中c和d是对a和b的局部区域放大的结果。


1.png

文章方法分为四步,图片输入,网络提取特征,EM-Merger推断,NMS,不完全对应但基本可以用下图表示。


2.png

一、网络结构

如上图中的b所示,文章采用resnet50作为主干网络,网络采用FPN框架,网络有三个输出分支都采用了RPN结果,其中有两个和RetinaNet一样。

一个是detection head,是用来回归定位物体的,输出为(x,y,h,w)坐标,用来表示网络检测的物体坐标。
第二个是classification,是用来说明是什么物体的,输出的值取值在0-1之间。
第三个是新提出来的,取名为soft-iou layer。

1.1 Soft-IoU Layer

先说明一下为什么要提出这个网络层。在一般的物体检测算法中,检测出来的框要经过一个叫NMS的后处理,这个后处理是根据预测框的类别、分数和框的IOU来计算的。预测框的分数一般是对于框内物体进行预测的,它并不能代表预测框和真实框之间的iou,所以可能存在预测框分数很高,但是该预测框并没有很好的定位出物体的情况。这里提出Soft-IoU就是为了估计框的定位是否准确,该层的输出就是预测框与真实框的IoU值。

对于IoU的计算,假设预测出的是N个检测框,每个预测框b_i,i\in \{1...N\}的IoU计算如下
IoU_i=\frac{Intersection(\hat{b}_j,b_i)}{Union(\hat{b}_j,b_i)}
其中\hat{b}_j表示离预测框b_i最近的标定框(文章写的是\hat{b}_i,我觉得不合理,这里如果有问题,欢迎指出)

1.2 loss函数

先说一下新提出的Soft-IoU Layer的loss函数,采用的是交叉熵,如下所示:
L_{sIoU}=-\frac{1}{n}\sum^{n}_{i=1}[IoU_ilog(c^{iou}_i)+(1-IoU_i)log(1-c^{iou}_i)]
其中n表示每个batch的标定框数,IoU_i表示预测框与真实框的iou,c^{iou}_i表示预测的iou分数,说白了这一层就是一个简单的二分类。

对于整个网络的loss,如下式所示:
L=L_{Classification}+L_{Regression}+L_{sIoU}
L_{sIoU}已经介绍过了,其他两个损失函数同FasterRCNN。

二、EM-Merger单元(推断过程使用)

对于网络的输出,有N个预测框的位置、置信度、预测的iou分数c^{iou}_i。为了处理密集场景,文章提出EM-Merger单元来过滤重叠的预测框。

2.1 Detections as Gaussians

名字取得有点迷,这部分说白了就是将检测出的框看出是高斯分布,一个框对应一个高斯分布,对于N个预测框使用下式表示:
F=\{f_i\}^N_{i=1}=\{\mathcal{N}(p;\mu_i,\Sigma_i) \}^N_{i=1}
p\in R^2,是个二维的。\mu_{i}=(x_i,y_i),说明高斯分布的均值是使用预测框的中心点来表示的。对角协方差\Sigma_i=[(h_i/4)^2,0;0,(w_i/4)^2],(h_i,w_i)表示预测框的长和框。(这里代码中有些值不同,不影响理解)

对于所有预测的框的分布就可以使用混合高斯(MoG)表示,如下式所示
f(p)=\sum^N_{i=1}\alpha_if_i(p)
其中f_i\in F\alpha_i=\frac{c^{iou}_{i}}{\sum^N_{k=1}c^{iou}_k}

2.2 Selecting predictions: formal definition

这步是在2.1的基础上,过滤一部分的预测框,假设这步输入的预测框有N个,输出的有K个,其中K<<N。也就是从N个高斯分布中找到K个高斯分布,这K个高斯分布表示方法同2.1,如下所示。
G=\{g_j\}^K_{j=1}=\{\mathcal{N}(p;\mu'_j,\Sigma'_j) \}^K_{j=1}

并且希望这K个高斯分布的组合能够和使用上面N个高斯分布组合出的分布很相似,K个高斯分布的组合如下所示
g(p)=\sum^K_{j=1}\beta_jg_j(p)

策略f和g的相似度,我们使用KL-divergence,如下式所示
d(f,g)=\sum^N_{i=1}\alpha_imin^K_{j=1}KL(f_i||g_j)

2.3 An EM-approach for selecting detections

这步是为了解决如何从N个高斯分布中找到K个近似的高斯分布表示,从标题可以看出,这步采用的是基于EM的算法。

EM算法分为两步,一个叫E-step,另一个叫M-step。下面来详细讲解一下。

在这里E-step的任务是根据f_i和g的分布对f_i进行聚类,表达式如下所示
\pi(i)=argmin^K_iKL(f_i||g_j)
上式想表达的就是将f_i通过KL-divergence将其分到K个类中。

M-step是通过新的聚类样本更新聚类参数,更新方式如下
\beta_j=\sum_{i\in \pi^{-1}(j)}\alpha_i
\mu'_j=\frac{1}{\beta_j}\sum_{i\in \pi^{-1}(j)}\alpha_i\mu_i
\Sigma'_j=\frac{1}{\beta_j}\sum_{i\in \pi^{-1}(j)}\alpha_i(\Sigma_i+(\mu_i-\mu'_j)(\mu_i-\mu'_j)^T)

文章说明,当迭代的误差小于1e-10或者达到一定的迭代次数时,认为迭代收敛。

2.4 Gaussians as detections

通过2.3中的操作,一旦EM算法收敛,我们可以得到K个估计出的高斯分布。其中K的取值为K=size(I)/(\mu_w\mu_h),符号文章没有解释。看完代码发现解释起来相对不是很方便。

先讲一下N个高斯分布怎么来的吧,对于一个检测图像,预测出了x个框,将所有框缩小一定的比例(比如代码中的0.3)然后将x个框用高斯分布表示,这样就能在图像上画出一个个的二维高斯分布图,将对画完的高斯分布图求轮廓,每个轮廓包含的预测框就定为N个。上面K的求解,就是在这个轮廓中N个预测框的K个估计框分布,I为当前轮廓的区域面积,(\mu_w\mu_h)指的是N个预测框缩小0.3倍后面积取中位数的值。

得到的K个高斯分布(也可以理解为K)并不是最终的检测结果,还要经过一些过滤规则,比如预测框中心点在K个高斯分布内的内的框,分数(这里的分数值得是)达到一定值,NMS等等,这些具体细节文章没有写出来,可以看代码。

经过一系列操作后等到的最终结果就是最终的预测框了,这里一系列操作包括EM,以及EM后的过滤操作,这些都可以理解为过滤很多不必要的冗余检测框。

这里原理基本讲完了,后处理还是蛮复杂的,具体可以看看代码https://github.com/liuheng92/SKU110K_CVPR19
我原代码没有改动,加了一些注释

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,458评论 6 513
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,030评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,879评论 0 358
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,278评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,296评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,019评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,633评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,541评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,068评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,181评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,318评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,991评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,670评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,183评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,302评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,655评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,327评论 2 358

推荐阅读更多精彩内容