最近一直在看论文,感觉一直看也不是个办法,不如写写看心得体会。如果能遇到志同道合的朋友,那就更棒啦!话不多说,就来讲讲今天看的这篇论文好了:《Deep Neural Networks for Object Detection》。
之所以会选择这一篇论文是在知乎上推荐的126篇殿堂级深度学习论文分类整理 从入门到应用,这个排在了第一位,觉得可以看一下。同样是在逛知乎,看到有好心的大佬整理出来物体检测的几篇论文,还十分贴心的把顺序也标出来了,在此对大佬表示感谢。如何评价rcnn、fast-rcnn和faster-rcnn这一系列方法?。
这篇论文算得上是比较早期的一篇论文了,在2013年的时候发表的。文章提出物体检测问题的概念:不仅仅要关注图片分类,而且还要进行准确的评估图像中出现物品的种类以及位置。文章中有给出基于DNN回归的对象检测的示意图:
主要流程如下:
- 基于DNN回归的方法输出对象边界框的二进制掩码。这里要指出,不仅是可以对整个对象边界框输出二进制掩码,同样对边界框的一部分也可以输出二进制掩码,这一部分在后面会提到。
- 接下来利用一个简单的bounding box来提取mask中的检测对象。
- 最后为了提升精度,做了一个refinement。后文中会有具体讲解。
网络结构参考:
主要是由七层,前五层是卷积层,后两层为全连接层。在五个卷积层中有三个具有最大池化层。在图中最后一层没有使用常规的softmax classifier,而是用到了mask regression layer来生成处理流程中第一步的产物–object binary mask DNN(x; Θ) ∈ 。
参数解释:
- Θ:网络参数
- N:总像素数
- d:固定的mask大小(神经网络的输出维度是固定的,考虑固定mask大小d,N=d*d)
文中计算ground truth mask m的公式为:
网络训练的目标在于减少L2错误。
对于大小不一的图像,网络首先需要对图片进行一个resize操作,将图片resize到统一大小之后进行处理,可能流程1完成后,生成的binary mask 不止一个,为了有所区分:将位于给定类别的对象 bounding box 内部的像素数值设定为1,否则为0。
DNN-generated Masks存在的不足:
- 单一的一个mask可能不足以对某些物体进行处理,比如说那种跟其他物体挨的很近的。大概类似于你与一只猫挨的很近,可能一个mask中同时出现了人手,但是也有猫脸。这样的话是无法进行一个准确分类的。
- 网络对于图像的输入大小是固定的(如果不固定的话,先要做resize操作),对于400*400的图像而言,其中d=24,最终的输出cell大小是16*16,相较于输入而言,输出实在是太小了。对于一个很小的物体,可能没有办法定位的准确。
- 网络中使用到的是full-image,如果是一个很小的物体可以影响到的神经元实在是很少,这一部分的辨别是有困难的。
解决方案:
Multiple Masks for Robust Localization(为了定位的鲁棒性使用多个mask)
对于多个有接触的物体,可以不只是生成一个mask