【論文詳解】F-ConvNet (2019)

前言

關於本論文的問題導入,總體思路以及實驗效果請見本人另一篇博客【論文概述】F-ConvNet (2019),本文將深究這項工作的理論依據以及實驗細節,最後提出幾點自己的思考,有待實驗研究。

論文信息

題目:Frustum ConvNet: Sliding Frustums to Aggregate Local Point-Wise Features for Amodal 3D Object Detection

論文鏈接

代碼鏈接

方法論

1 視錐體級特徵提取

如何利用 2D 檢測器信息以及點雲信息是本文 3D 檢測的關鍵,本文采用級聯方式,利用 2D 的區域建議沿着相機光軸在近平面與遠平面之間生成視錐體序列,如下圖所示。
在這裏插入圖片描述
怎麼生成視錐體序列呢?本文設定了 T 個視錐體,每個高度爲 u,都通過沿相機光軸滑動固定步長 s 生成,每個視錐體包含 M 個點,如下圖所示。
在這裏插入圖片描述
生成這些視錐體目的何在? 將點雲的逐點特徵轉爲視錐體級特徵向量以供後期網絡提取特徵,進而回歸 3D 框,這樣避免大範圍遍歷點雲,提升了效率。
如何從這些視錐體提取特徵呢? 本文采用了 PointNet 的三個 FC 層以及 Max Pooling 層,對所有視錐體並行處理,權值共享;其中,對視錐體內的每個點座標進行了正則化,xi=xic\overline{\mathbf{x}}_{i}=\mathbf{x}_{i}-\mathbf{c} ,如下圖所示。
在這裏插入圖片描述

2 FCN

上一步得到 LxdxT 特徵圖,如何生成 3D 框呢 這類似於 2D 檢測器,本文采用 FCN,先採用步長爲 2 的卷積下采樣,再採用反捲積層上採樣,恢復到高分辨率特徵圖,然後把這些特徵向量級聯在一起,如下圖所示。
在這裏插入圖片描述
用於 KITTI benchmark 的 FCN 具體結構如下表所示。
在這裏插入圖片描述

3 多分辨率視錐體特徵融合

這是對視錐體生成過程的改進,類似於 2D 檢測器常用的多尺度策略,提升小目標的檢測效果。本文在視錐體生成時採用兩倍步長和兩倍高度生成 T/2 個視錐體,另一半仍以原方式產生,在 FCN 中,將兩個特徵向量級聯在一起,再用卷積操作轉變爲 L/2xd 大小的特徵圖,如下圖所示。
在這裏插入圖片描述

4 檢測器的訓練

分類任務:輸出 Lx(K+1) 向量,K 是類別數,加一是背景;採用 RetinaNet 的 focal loss 解決類別不平衡問題。
3D 框迴歸任務:3D GT 框參數爲 {xcg,ycg,zcg,lg,wb,hg,θg}\left\{x_{c}^{g}, y_{c}^{g}, z_{c}^{g}, l^{g}, w^{b}, h^{g}, \theta^{g}\right\},依次是中心點座標,框的長寬高以及偏航角;本文在 [π,π)[-\pi, \pi) 範圍內爲每個視錐體設置了 KN 個錨框,這些錨框的參數爲 {xsa,yca,zca,la,wa,ha,θa}\left\{x_{s}^{a}, y_{c}^{a}, z_{c}^{a}, l^{a}, w^{a}, h^{a}, \theta^{a}\right\},且進行了正則化,公式如下。(原文中的第二行公式下標應該爲上標)
Δx=xcgxca,Δy=ycgyca,Δz=zcgzcaΔl=lglala,Δw=wgwawa,Δh=hghahaΔθ=θgθa\begin{aligned} &\Delta x=x_{c}^{g}-x_{c}^{a}, \Delta y=y_{c}^{g}-y_{c}^{a}, \Delta z=z_{c}^{g}-z_{c}^{a}\\ &\begin{array}{l} \Delta l=\frac{l^{g}-l^{a}}{l^{a}}, \Delta w=\frac{w^{g}-w^{a}}{w^{a}}, \Delta h=\frac{h^{g}-h^{a}}{h^{a}} \\ \Delta \theta=\theta^{g}-\theta^{a} \end{array} \end{aligned}
這裏採用 Smooth L1 正則化和 F-PointNet 的 corner loss。

5 重識別

本文級聯方式融合 RGB 與點雲,最大的弊病就是 2D 檢測器失效時,該方案將宣告破產。所以如何儘可能地避免 2D 檢測器失效的前提下,此方案仍能有一定的工作能力是本節研究目的。
本文把預測框都擴大了 1.2 倍,將放大框內的點進行正則化用作第二次 F-ConvNet 的輸入,如下圖所示。
在這裏插入圖片描述

實驗

1 KITTI benchmark

將原有訓練集分爲 3712 訓練和 3769 驗證;汽車,行人,騎行者的 3D IOU 分別取 0.7,0.5和0.5。

2 訓練細節

2D 區域建議驗證集採用 F-PoinntNet 提供的,測試集採用 RRC 和 MSCNN 提供的;
每個區域建議的點雲隨機採樣,第一次和第二次分別是 1024 和 512 個,且對這些點進行數據增強操作;
正負樣本設置時,縮小 GT 框到一半,錨框中心落在縮小框內的是正樣本,其餘爲負樣本;
超參數設置中,mini-batch 大小爲 32,採用 ADAM 優化器,權重衰減係數爲 0.0001,學習率從 0.001 開始,每 20 個週期減少 10 倍,共 50 個週期,檢測範圍是 0-70 米;
視錐體參數設置中,如下表

參數 car pedestrain & cyclist
u [0.5,1.0,2.0,4.0] [0.2,0.4,0.8,1.6]
s [0.25,0.5,1.0,2.0] [0.1,0.2,0.4,0.8]
d [128,128,256,512] [128,128,256,512]
L 280,140 700,350

非極大值抑制時,3D IOU 閾值設置爲 0.1

3 消融研究

2D 區域建議是前提,論證不同 2D 檢測精度對 3D 檢測精度的影響,如下表。
在這裏插入圖片描述
對視錐體級特徵的提取也很關鍵,本文采用 PointNet 提取特徵,如果採用其他網絡呢,如下表對比了 PointNet 與 PointCNN
在這裏插入圖片描述
下表論證了多尺度視錐體特徵融合的影響,分別是步長與高度。
在這裏插入圖片描述
下表論證了角點損失與重識別的影響
在這裏插入圖片描述

4 與 SOTA 對比

在這裏插入圖片描述

幾點思考

  • RGB 與點雲的融合方式方面,只借助了 2D 檢測器的區域建議,進而大大提高了點雲處理效率,是否能對 2D 檢測器的其他方面加以利用呢,比如 2D 框及類別信息,是否可以對稀疏點雲進行深度補全;
  • 點雲由近及遠時會越來越稀疏,生成視錐體序列步長和高度是否可以是線性變化的,而非固定的;進而可以改變採用多個 PointNet 並行處理視錐體,遠一點的視錐體提取特徵時網絡設計是否可以有所變化,形成多尺度信息;
  • 點雲轉爲視錐體級特徵時,本文對點雲隨機採樣,第一次 1024,第二次 512,是否可以改進一下采樣策略,比如均勻採樣,幾何採樣,格點採樣等;
  • PointNet 這個 backbone 可以嘗試一些其他的,比如 PointNet++, VoteNet等;
  • FCN 網絡設計中,反捲積需要在卷積前對輸入添加 0 再上採樣,效率較低,是否可以採用膨脹卷積;
  • 網絡訓練過程中,損失函數可以試試其他的;
  • 關於重識別策略,這是事後補救,是否可以在事前預防,比如對 2D 的區域建議進行增強操作;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章