您的位置:首页 > 产品设计 > UI/UE

[论文解读] SqueezeDet

2017-09-18 11:40 1056 查看

基本介绍

《SqueezeDet: Unified, Small, Low Power Fully Convolutional Neural Networks for Real-Time Object Detection for Autonomous Driving》是一篇相当惊艳的文章,其主要想法是基于SqueezeNet以及YOLO进行改进,来在保证速度的情况之下提升精度来做目标检测。

通过实验室师兄训练了8天之后,发现其效果确实不错,后续可能会继续相关的工作。

问题引入

当前2D目标检测领域可谓是百家争鸣,个人将其大体分为三类:

RCNNs(Faster RCNN et al.)

Regression(YOLO, SSD)

Others(A-Fast RCNN, RL to OD)

这篇文章就是基于YOLO这一回归模型的改进。

文章作者认为一个高效有实用价值的目标检测方法应该具备以下特点:

Accuracy(高精度)

Speed(实时性)

Small Model Size(小模型)

Energy Efficiency(低能耗)

关于精度方面作者改进了YOLO的模型,引入了ConvNet(细节内容会在后面具体分析), 实时性方面基于回归的方法就保证了其精度,小模型方面该论文是基于SqueezeNet的改进(提升了精度), 低能耗方面本人不太care,因此也没看支撑材料。

整体架构



宏观上来看的话,SqueezeDet的总体流程是将输入图像通过略加修改的SqueezeNet网络得到low resolution, high channels 的feature map, 然后将该feature map交给ConvDet这个网络同时进行类别判断与提取bounding-box(实际上就是将bounding-box Regression的过程放在了这一部分实现,同时是通过全卷积的方式实现),ConvDet的输出就是一系列IoU较为可观的proposals, 然后选取proposal中最大的N个进行NMS(非极大抑制),得到最后的bounding box。

关于特征提取网络以及一些过于细节方面的修改,由于作者在论文中并没有指出,因此待阅读相关源代码之后进行详细的分析。接下来仅仅分析文章的最大亮点部分,也就是ConvDet的设计。

ConvDet

总体思路

ConvDet是文章的核心,同时也是文章的亮点。其主要实现的是,通过该网络既实现分类又实现bounding-box Regression微调的过程。同时其是通过全卷积网络来实现的,因此保证了其计算速度。

ConvDet的输入是由改进后的SqueezeNet得到的Feature Map, 然后作者按照YOLO的基本思路,将原始图片划分为W × H 个网格, Feature Map的每一个位置点都对于与原始图片网格中的Center。对于特征图中的每个位置,将其表示为K × (4 + 1 + C)。 其中K表示anchor的数量,4表示的每一个anchor的四个坐标(中心点+宽高), 1表示的是该网格中心含有目标的置信度,C表示的是每个类别的置信度。

从Anchor得到Predicted Bounding Box

由上文可知,对于特征图上的每个位置,我们可以得到K个Anchor,每个Anchor是一个4维标量,可以表示为如下形式:


。 其中x,y对应于原图grid的中心,w和h分别表示长和宽,k表示的是对于grid的第几个anchor。

接着,仿照bounding-box Regression的基本思想,我们可以得到预测的bounding-box。 其转换的方程为:



直观的图形表示为:



关于其参数的学习细节将在模型训练部分进行详细说明。

RPN, FcNet与 ConvDet的比较

由于ConvDet实际上是一层卷积层,因此相对于RPN来说优势在于同事可以进行回归(将回归过程及其训练函数嵌入进去了),同时针对做了分类与回归的YOLO全连接层而言,RPN参数更少。

比较的表格如图:



关于其具体的比对,文中使用了很直观的一种方式:







这张图相对而言十分清晰,因此不进行赘述。

训练

SqueezeDet由于是基于YOLO的改进,因此其训练也是采取One-stage的方式。其将检测,分类等任务表示为multi-task 损失函数,其数学表达形式为:



由此可见,训练的多任务损失函数由三部分构成,分别为bounding-box regression loss function, confidence score regression 以及cross-entropy loss for classification。

相对而言,三部分的构成相对直接,也是当前一般的目标检测中常用的多任务检测方式。

实验测试

实验设置

关于实验设置的内容直接引用原文:

In our experiments, unless speci-fied otherwise, we scaled all the input images to 1242x375. We randomly split the 7381 training images in half into a training set and a validation set. Our average precision (AP) results are on the validation set. We used Stochas- tic Gradient Descent with momentum to optimize the loss function. We set the initial learning rate to 0.01, learn- ing rate decay factor to 0.5 and decay step size to 10000. Instead of using a fixed number of steps, we trained our model all the way until the mean average precision (mAP)5 on the training set converges, and then evaluate the model on the validation set. Unless specifically specified, we used batch size of 20. We adopted data augmentation techniques such as random cropping and flipping to reduce overfitting. We trained our model to detect 3 categories of object, car, cyclist, pedestrian and used 9 anchors for each grid in our model. At the inference stage, we only kept the top 64 de- tections with highest confidence, and use NMS to filter the bounding boxes. We used NVIDIA TITAN X GPUs for our experiments.

mAP and FPS





总结

总的来说,SqueezeDet的效果相对较好,比较有应用前景,不仅mAP可以与Faster RCNN系列的方法相媲美,同时其模型较小,推理速度更快。

参考文献

SqueezeDet: Unified, Small, Low Power Fully Convolutional Neural Networks for Real-Time Object Detection for Autonomous Driving

Source code of SqueezeNet

Source code of SqueezeDet
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息