论文:SPFCN: Select and Prune the Fully Convolutional Networks for Real-time Parking Slot Detection
Github:https://github.com/tjiiv-cprg/SPFCN-ParkingSlotDetection
1 Abstract
摘要:对于配备自动停车系统的车辆,车位检测的准确性和速度是至关重要的。本文提出了一个基于FCN的检测器,在保证准确性的同时实现更快的速度和更小的模型尺寸。作者制定了一个策略来选择最佳感受野的卷积核,并在每次训练epoch结束后自动删除冗余通道。该模型能够联合检测停车位的角和线特征,并能在常规的处理器上有效地实时运行。该模型在2.3 GHz的CPU上能达到 30 FPS,车位角定位误差1.51±2.14 cm (std. err),车位检测精度98%,总体满足车载移动终端速度和精度要求。
2 Method
该模型使用Stacked Hourglass Network作为基本结构,同时输出标志点、入口线、边界线的heatmap。此处原理和CenterNet类似。
该模型的主要特点在于其SP模块(Select-Prune Module),SP模块分为Select模块和Prune模块两部分:
Select Module:Select模块主要用于选择拥有更合适的感受野的卷积核。考虑到移动端使用类Inception结构对算力要求过大,不能满足实时性。Select模块使用贡献评估网络(Contribution Evaluation Networks, CEN)对不同感受野的卷积核进行评估,选择贡献度最高的的卷积核。CEN只是一个简单的MLP模块,接收不同卷积核的输出作为输入,并输出一个贡献值,最终只留下平均贡献值最高的卷积核。即训练阶段结束后,整个模块最终会退化成一个卷积核。
Prune Module:Prune模块负责修剪卷积核中的通道。网络交替进行训练和修剪,在修剪阶段会自动评估每个卷积通道的贡献度,并剔除贡献度低于定值的通道。其贡献度由通道的权重计算得出。如果某个卷积核没有低于定值的通道,则会自动剔除贡献值最低的通道。
最后对鸟瞰图(bird eye view, BEV)进行输入网络进行分割,输出BEV的heatmap。
3 Experiments
数据集使用的是DeepPS数据集,该数据集中包含 9527(training)+2138(validating) 张BEV图像。作者将训练样本转化为224×224的灰度图作为网络的输入,点线标记作为labels。
整个训练过程分为三个阶段,分别为预训练阶段、选择阶段和修剪阶段,不同阶段使用不同的损失函数。
预训练阶段的前5个epoch只用heatmaps的FocalLoss用来预热(warm-up),随后10个epoch使用完整的损失函数;在选择阶段,从第一层到最后一层逐层进行选择,每层选择结束后微调2-3个epoch;在修剪阶段,损失函数再次恢复到只有heatmap的FocalLoss,训练100个epoch的同时进行修剪;最后再去掉两个正则化操作,微调15个epoch。