最近做项目看到了Towards perspective-free object counting with deep learning这篇论文,详细读了一下,这篇博文主要是个人对文章的理解。
作者采用了两个网络一个是Counting CNN(CCNN)和Hydra CNN.CCNN产生目标的密度图(density maps),Hydra CNN使用图像多尺度特征得到最后的密度预测值。
人车密度估计的方法可以分为三类:counting by detection, counting by clustering ,counting by regression.本文的方法属于counting by regression,这种策略运算速度快,也比较精确。
1.Counting object model
本文需要对图像进行标注,车或人需要标注中心点。一幅图像对应的密度图,可以定义为每个标注点的和函数
其中是图像的标注点,表示归一化的二维高斯函数,表示均值,表示计算协方差。目标数量通过整个图像的密度图计算得到,公式如下:
所以最关键的是计算出密度图。
2.The Counting CNN
模型如下图所示:
网络是怎样工作的呢?作者在文章中给出了一个例子,给一个测试图片,首先需要对图像进行分块处理,如上图所示,CCNN的固定尺寸是72*72,所以需要把图片分割为72*72的小块,通过CCNN网络会生成密度估计图,由于两个max-pooling层,最后输出的尺寸是原来的1/4,18*18。因此所有的密度图的尺寸要重新调整为了和输入图像的尺寸一致。为了得到输入图像的密度图,需要对所有的快进行整合。由于块预测位置有重叠,所以每个密度图的最后位置必须通过块的数量进行归一化。
3. The Hydra CNN
Hydra CNN模型是为了增强模型的鲁棒性,使其能够适应更多的应用场景。该模型采用多尺度图像进行输入计算特征。
最后作者用三个数据集对模型进行了测试,感兴趣的可以看一下论文,本文就不对结果进行展示了。