文章目錄
前言
關於本論文的問題導入,總體思路以及實驗效果請見本人另一篇博客【論文概述】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 層,對所有視錐體並行處理,權值共享;其中,對視錐體內的每個點座標進行了正則化, ,如下圖所示。
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 框參數爲 ,依次是中心點座標,框的長寬高以及偏航角;本文在 範圍內爲每個視錐體設置了 KN 個錨框,這些錨框的參數爲 ,且進行了正則化,公式如下。(原文中的第二行公式下標應該爲上標)
這裏採用 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 的區域建議進行增強操作;