前言:20年的一篇文章,是关于非结构化道路VP检测中第一篇基于深度学习的解决方案。之前读过,这里再读一下,顺便再跑一下程序。
原文链接:
https://arxiv.org/abs/2006.04691
源代码:
https://github.com/qd213618/URVP
引用信息:
@article{liu2020unstructured,
title={Unstructured Road Vanishing Point Detection Using the Convolutional Neural Network and Heatmap Regression},
author={Liu, Yin-Bo and Zeng, Ming and Meng, Qing-Hao},
journal={arXiv preprint arXiv:2006.04691},
year={2020}
}
消失点定义:在三维场景中,一组平行线的透视投影在图像平面上的交点。
自动驾驶车辆可根据消失点辨别可行驶区域。
heatmap regression:可用于估计图像中像素级关键点的位置,然而传统的heatmap regression只在输入图像的1/4或1/2单一的粗尺度上估计关键点,无法满足高精度的要求。而HRNet无法满足高实时性要求,因此本文对HRNet进行了修正,同时采用三个tricks:(multi-scale supervised learning + heatmap super-resolution + coordinate regression)
同时,本文也贡献了含有5355张带有标注的数据集(unstructured road vanishing point ,URVP)
关于道路消失点检测的传统方法中,基于边缘和基于区域用于结构化道路,基于纹理的方法可用于非结构化道路,但存在两个问题:
多尺度监督学习:在关键点检测中混合两个或以上热力图。
1/4尺度热力图:在原图中会造成4倍的误差放大。所以采用基于反投影的超分辨率技术(the back-projection-based super-resolution technique)从1/4尺度得到1/2尺度的超分辨率热力图。
图2显示了上采样方法。
从1/4→1/2尺度有下图所示三种方法。本文采用第二种:up-projection unit (UPU)方法。
upsample模块的输入是feature map和预测的1/4比例尺热图的拼接(concatenation)
从热力图中获取关键点坐标的两个传统方法:提取热图中最大点的坐标或通过高斯分布估计关键点的位置;缺点如下:
本文的一些设置如下:
lcoord:VP点的坐标损失。logistic regression
lh1:1/4尺度热力图损失。MSE
lh2:1/2尺度热力图损失。MSE
lconf:置信度(confidence)损失。logistic regression
λconf=0.5:不含VP的cells
λconf=1:含VP的cells
λcoord=2和λh=1:用于平衡热力图和和坐标回归的平衡。
Pytorch 1.3
dual RTX 2080 Ti
CUDA 10
[email protected]
URVP作为训练集;Kong作为测试集
输入图像尺寸:320x320
给所有ground truth热力图添加上std=3的Gaussian kernel
SGD
backbone:开始时lr=0.001
网络其他部分:开始时lr=0.01
每20个epoch将lr除10,momentum=0.9
数据增强:随机翻转和图像旋转
目前用于非结构化道路VP检测的数据集只有两个:Kong-1003张;Moghadam-500张
URVP:利用Flickr和谷歌Image工具构建的一个新的训练数据集
标准化欧氏距离来测量预测的VP点和ground truth VP点之间的距离。
Pg:ground truth
Pv:预测的
Diag(I):输入图片的对角线长度
NormDist>=0.1的置为0.1,认为预测失败。
图3显示了关于热力图尺度对比效果。
(从左到右依次是:输入,1/4尺度VP估计,1/2尺度VP估计,本文方法估计)
(白点是ground truth,红点是本文方法预测点。)
图4显示了不同方法对比效果。
图5显示了用NormDist度量的效果对比。
Hourglass (Stack = 4) (Hg4)
HRNet (W = 48)(HRNet-48)
下一步:多任务学习