深度学习中的检测任务(Detection)是指检测出图片中的物体位置,一般需要进行画框。比如下图中把人、羊,还有狗都框出来了,具体来说,网络需要输出框的坐标。
检测网络有哪些?
常用的检测可以大致可以分为两类:two stage和one stage. Two stage是说在检测网络分两步,第一步是框出物体,第二步是确定这个物体的分类。One stage就是根据提取的特征,直接使用回归网络得出其分类和检测框。其中,Faster R-CNN属于two stage,SSD和YOLO属于one stage.
One stage的好处是快,Two stage的好处是准确,在得到检测框后,再去分类这个任务要比直接回归网络得到分类好容易很多。
下图是Faster RCNN的结构:
主要分为四个步骤:
- 卷积层。原始图片先经过conv-relu-pooling的多层卷积神经网络,提取出特征图(feature map)。
- RPN层,region proposal networks。RPN层用于生成候选框,并利用softmax判断候选框是前景还是背景,从中选取前景候选框(因为物体一般在前景中),并回归调整候选框的位置,获得框内的物体的feature map
- ROI层,它将大小尺寸不同物体的feature map池化成相同的大小,然后送入后续的全连接层进行物体分类
- 分类层。利用ROI层输出的特征图进行分类,同时再次对检测框bounding box进行回归从而得到更精确的形状和位置。
SSD和YOLO可以放在一起对比,因为都是属于one stage的网络,在获取feature map后,检测和分类一起在一起进行。SSD和YOLO的区别在于SSD能够进行多尺度特征提取,可以看到上面的SSD结构有6个箭头指向Detections,每一个箭头代表一个尺度的feature map,卷积层越往后越能看到全局的特征。YOLO则没有这方面的设计,只有一个特征输出到Detections网络中。
因为SSD网络的这种设计,检测精度比YOLO高,同时速度比Faster RCNN快,因此也是当前应用最广泛的检测网络之一。另外,在SSD原始论文中用到的是VGG骨架来提取特征,现在很多更好的特征提取网络,例如ResNet,mobilenet也在大量应用,进一步提高精度或者加快速度。
检测网络有很多,各有优劣,综合来说,SSD是个折中的选择,如果时间有限,建议试试SSD网络。