车道线检测-GANet-CVPR2022论文学习笔记

  • 论文:《A Keypoint-based Global Association Network for Lane Detection》
  • 代码:https://github.com/Wolfwjs/GANet
  • 地址:http://arxiv.org/pdf/2204.07335
  • 内容:使用 CNN,基于关键点检测车道线

整体结构

车道线检测-GANet-CVPR2022论文学习笔记_第1张图片

模型还有一个补充分支(Compensation Map δ ^ y x \hat{\delta}_{yx} δ^yx)没有在上图中画出来。该分支的任务是减小被 stride r 带来的量化误差,其损失函数为:
L q u a n t = 1 H ′ × W ′ Σ y x ∣ δ ^ y x − δ y x ∣ \mathcal{L}_{quant}=\frac{1}{H'\times W'}\Sigma_{yx}|\hat{\delta}_{yx}-\delta_{yx}| Lquant=H×W1Σyxδ^yxδyx

其中, δ y x = ( x i j r − ⌊ x i j r ⌋ , y i j r − ⌊ y i j r ⌋ ) \delta_{yx}=(\frac{x^j_i}{r}-\lfloor \frac{x^j_i}{r}\rfloor, \frac{y^j_i}{r}-\lfloor \frac{y^j_i}{r}\rfloor) δyx=(rxijrxij,ryijryij⌋) H ′ = H r H'=\frac{H}{r} H=rH W ′ = W r W'=\frac{W}{r} W=rW

文中,每条车道线用 K 个关键点表示,这些关键点是经过采样得到的,假设每张图片中的车道线数目是 N:
l i = { p i 1 , p i 2 , ⋯   , p i K } i = 1 N l_i=\{p^1_i,p^2_i,\cdots,p^K_i\}^N_{i=1} li={pi1,pi2,,piK}i=1N

模型输出的东西:

对每条车道线,模型预测其每个关键点。

各个模块:

1. 关键点预测模块

用一个 H r × W r \frac{H}{r}\times \frac{W}{r} rH×rW 的 Confidence Map 描述某一点是车道线关键点的概率。

构建对应的GT:使用非归一化的高斯核生成GT,在两个高斯Map的重叠处取两者在该处的最大值。
Y y x = exp ⁡ ( − ( x − x ~ ) 2 + ( y − y ~ ) 2 2 σ 2 ) Y_{yx}=\exp(-\frac{(x-\tilde{x})^2+(y-\tilde{y})^2}{2\sigma^2}) Yyx=exp(2σ2(xx~)2+(yy~)2)

其中, ( x ~ , y ~ ) (\tilde{x},\tilde{y}) (x~,y~) 是关键点的位置。

该模块的 损失函数
L p o i n t = − 1 H ′ × W ′ Σ y x { ( 1 − Y ^ y x ) α log ⁡ Y ^ y x                          Y y x = 1 ( 1 − Y y x ) β Y ^ y x α log ⁡ ( 1 − Y ^ y x )            o t h e r w i s e \mathcal{L}_{point}=\frac{-1}{H'\times W'}\Sigma_{yx}\begin{cases} (1-\hat{Y}_{yx})^\alpha\log\hat{Y}_{yx}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Y_{yx}=1 \\ (1-Y_{yx})^\beta\hat{Y}^\alpha_{yx}\log (1-\hat{Y}_{yx}) \ \ \ \ \ \ \ \ \ \ otherwise\end{cases} Lpoint=H×W1Σyx{(1Y^yx)αlogY^yx                        Yyx=1(1Yyx)βY^yxαlog(1Y^yx)          otherwise

2. 起始点回归

用一个 H r × W r × C \frac{H}{r}\times \frac{W}{r} \times C rH×rW×C 的 Offsets Map,其每个像素上的值是该点到起始点的偏移量(仅考虑关键点)。

记第 i 条车道线起始点为 ( s x i , s y i ) (sx_i, sy_i) (sxi,syi),其第 j 个关键点为 ( x i j , y i j ) (x^j_i, y^j_i) (xij,yij),则偏移量为:
( Δ x i j , Δ y i j ) = ( s x i , s y i ) − ( x i j , y i j ) (\Delta x^j_i,\Delta y^j_i)=(sx_i, sy_i)-(x^j_i, y^j_i) (Δxij,Δyij)=(sxi,syi)(xij,yij)

该模块的 损失函数
L o f f s e t = 1 H ′ × W ′ Σ y x ∣ O ^ y x − O y x ∣ \mathcal{L}_{offset}=\frac{1}{H'\times W'}\Sigma_{yx}|\hat{O}_{yx}-O_{yx}| Loffset=H×W1ΣyxO^yxOyx

3. 构建车道线的方式

经前面处理之后,可以根据预测的关键点及其相对起始点的偏移,求得车道线的起始点。对于具有 K 个关键点的车道线,将得到 K 个起始点,且这些起始点在距离上会比较接近。

车道线检测-GANet-CVPR2022论文学习笔记_第2张图片

关键点中包含了起始点 ( s x i , s y i ) (sx_i,sy_i) (sxi,syi),该点在 Offset Map 上的值 小于 1;
通过设置距离阈值 θ d i s \theta_{dis} θdis,可以对 ( s x ’ i , s y ‘ i ) = ( x , y ) + ( δ x + δ y ) (sx’_i,sy‘_i)=(x,y)+(\delta x+\delta y) (sxi,syi)=(x,y)+(δx+δy) 得到的起始点进行分组,每组就代表一条车道线。

Lane-aware Feature Aggregator(LFA)模块

车道线检测-GANet-CVPR2022论文学习笔记_第3张图片

  1. 用卷积层预测第 i i i 个关键点在同一条车道线上的 M M M 个相邻点到其自身的偏移量
    Δ P i = { Δ p i m ∣ m = 1 , ⋯   , M } ∈ R 2 M \Delta P_i=\{\Delta p^m_i|m=1,\cdots,M\}\in \mathbb{R}^{2M} ΔPi={Δpimm=1,,M}R2M
  2. 将这些相邻点处的特征集成到第 i i i 个点上去:
    F ^ ( p i ) = Σ m = 1 M w m ⋅ F ( p i + Δ p i m ) \hat{\mathcal{F}}(p_i)=\Sigma^M_{m=1}w_m\cdot\mathcal{F}(p_i+\Delta p^m_i) F^(pi)=Σm=1MwmF(pi+Δpim)

车道线检测-GANet-CVPR2022论文学习笔记_第4张图片

需要用预测出的相邻点偏移量集合与偏移量真值集合
Δ G i = { Δ g i k ∣ Δ g i k = g i k − p i ,    k = 1 , ⋯   , K } \Delta G_i=\{\Delta g^k_i|\Delta g^k_i=g^k_i-p_i,\ \ k=1,\cdots,K\} ΔGi={Δgik∣Δgik=gikpi,  k=1,,K}
之间进行二部匹配,即寻找最佳匹配:
σ ^ = arg ⁡ min ⁡ σ Σ m M L 2 ( Δ p i m , Δ g i σ ( m ) ) \hat{\sigma}=\mathop{\arg\min}_\sigma \Sigma^M_m L_2(\Delta p^m_i,\Delta g^{\sigma(m)}_i) σ^=argminσΣmML2(Δpim,Δgiσ(m))

该模块的 损失函数

L a u x = 1 K N M Σ i K N Σ m M S m o o t h L 1 ( Δ p i m , Δ g i σ ^ ( m ) ) \mathcal{L}_{aux}=\frac{1}{KNM}\Sigma^{KN}_i \Sigma^M_m SmoothL1(\Delta p^m_i,\Delta g^{\hat{\sigma}(m)}_i) Laux=KNM1ΣiKNΣmMSmoothL1(Δpim,Δgiσ^(m))

4. 整体损失函数:

L t o t a l = λ p o i n t L p o i n t + λ q u a n t L q u a n t + λ o f f s e t L o f f s e t + λ a u x L a u x \mathcal{L}_{total}=\lambda_{point}\mathcal{L}_{point}+\lambda_{quant}\mathcal{L}_{quant}+\lambda_{offset}\mathcal{L}_{offset}+\lambda_{aux}\mathcal{L}_{aux} Ltotal=λpointLpoint+λquantLquant+λoffsetLoffset+λauxLaux

你可能感兴趣的:(CV,目标检测,学习,深度学习,人工智能,车道线检测)