SqueezeDet:一種應用於自動駕駛實時目標檢測中的標準、小型、低功耗的全卷積神經網絡(三)

論文原文:SqueezeDet: Unified, Small, Low Power Fully Convolutional Neural Networks for Real-Time Object Detection for Autonomous Driving
源代碼:https://github.com/BichenWuUCB/squeezeDet
論文翻譯:XJTU_Ironboy
時間:2017年8月

4. 實驗設計

  我們在KITTI目標檢測數據集(專門爲自動駕駛而設計的)中對我們的模型進行了測評。我們通過測量平均精度(AP:average precision)、recall、速度和模型大小分析我們的模型,然後比較 KITTI 排行榜的其他排名方法。接下來, 我們通過調整幾個關鍵參數的大小,浮點運算(FLOPS)和激活大小,分析了準確性和成本在模式方面的權衡。我們用 Tensorflow 實現了模型的訓練、評價、誤差分析和可視化,並用 cuDNN 計算內核編譯。有關模型的能效實驗將在補充材料中詳細描述。

4.1 KITTI 目標檢測

  Experimental setup:在這個實驗中,除非另有要求,我們將輸入圖片大小固定爲1242 x 375。我們隨機將7381訓練圖像分成了訓練集和一個驗證集。平均精度(AP:average precision)結果在驗證集上得到,我們使用隨機梯度下降的方法(Stochastic Gradient Descent with momentum)來優化損失函數,並將初始學習率設置爲 0.01, 學習速率衰減因子爲 0.5, 衰變步長爲10000。我們不是使用固定數量的步驟, 而是一直訓練該模型, 直到平均精度 (mAP) 的訓練集收斂,然後在驗證集上評估模型。除非另有要求,我們將batch size設置爲20。我們採用了數據擴充技術, 如隨機裁剪和翻轉來減少過擬合。我們訓練我們的模型來檢測三種對象——汽車、行人和騎行者,並在模型中爲每個網格使用了9個anchor,在訓練階段, 我們只保留前64個具有最高置信評分的檢測結果,並且使用NMS(非最大值抑制)來過濾這些邊界框。我們實驗的硬件設備是NVIDIA TITAN X GPUs
  Average Precision:通過平均精度(AP:average precision)測量出的檢測精度結果在表2中。我們提出的SqueezeDet +模型在KITTI 排行榜所有三個難度級別騎行者檢測中取得了最好的AP。它在三類(汽車、行人和騎行者)所有3個難度級別的平均精度結果優於之前公佈的方法。爲了評估是否ConvDet可以應用到其他重要的CNN結構中,我們將ConvDet層添加到了 VGG16ResNet50模型的卷積層中。在表2中,觀察到這些模型都取得了具有很強競爭力的AP,尤其對汽車和自行車的檢測。對於不同類型的錯誤檢測的例子可以在圖4中看出。
這裏寫圖片描述

這裏寫圖片描述

  Recall: recall對於自動駕駛的安全是至關重要的,所以現在我們需要分析一下模型的recall。對於每張1242 x 375的圖片,SqueezeDet生成15048個邊界框的預測結果。由於 NMS(非最大值抑制) 的二次時間複雜度與邊界框的數量有關, 因此在這許多邊界框上執行非抑制是非常棘手的,於是我們只保留了前64預測結果, 以滿足 NMS。有一個關鍵的問題是,如何確定邊界框的數量來影響recall。我們用以下的實驗來測試這個:首先蒐集所有的邊界框並將它們按照置信評分排序;接下來,對於每張圖片,我們保留前Nbox 個邊界框預測結果,並且將這個Nbox 值從8逐漸增加到15048;然後, 我們評估所有類別的所有難度級別的總體recall情況,Recall-Nbox 的關係曲線在圖5中繪製出來了。

這裏寫圖片描述
  正如我們可以看出,對於SqueezeDet和它的加強版(SqueezeDet+),前64個邊界框的整體召回已經大於80%,如果使用所有的邊界框, SqueezeDet 模型可以達到91% 和92% 的整體召回率。將輸入圖片增加到原圖的1.5倍大時,邊界框的總數量增加到了35190,並且使用所有邊界框的最大召回率爲95%
  Speed: 我們的模型是第一個在KITTI數據集上達到實時運行速度的。爲了更好地理解場景,我們收集了40份 KITTI 數據集的騎行者檢測報告的統計, 在圖 6 (a)繪製了他們的推斷速度 vs 騎行者類下三個難度水平的平均精度的關係。在撰寫本論文時, KITTI 排行榜上最快的是匿名提交的命名爲 PNET的模型, 它具有10FPS 的運行速度。而我們提出的SqueezeDet模型能到達57.2幀,而且相比PNET來說準確度更高。而加強版SqueezeDet+仍然能得到32.1FPS。對於VGG16ResNet50模型,運行速度仍然很慢,但是正如表2、圖6(a)可以看出,它仍然比KITTI上所有已經提交的模型還要快。
  Model size:因爲模型的大小在KITTI排行榜上是不予公佈的,所以我把我們的模型與Faster R-CNN比較,我們在圖6(b)中繪製了模型大小與汽車類下三個難度水平的平均精度的關係,並將結果總結到了表2中。正如我們在表2可以看出, 我們的SqueezeDet模型比 Faster R-CNN + VGG16模型小61倍,比Faster R-CNN + AlexNet模型小30倍。實際上VGG模型80%的參數量都來自於全連接層。因此,當我們用ConvDet層來代替全連接層和RPN層後,模型大小隻有57.4MB。相比於YOLO,這樣一個由24個卷積層和2個全連接層,參數大小是753MB的結構,SqueezeDet模型在沒有任何壓縮的情況下仍然比它小95倍。
這裏寫圖片描述
這裏寫圖片描述

4.2 設計空間探索(Design space exploration)

  我們進行了設計空間探索, 以評估一些關鍵的超參數對我們模型的整體檢測精度的影響 (用 mAP 來進行測量)。同時, 我們還研究了這些變量的 “cost“, 從FLOPS, 運行速度, 模型大小和內存消耗,結果總結在表3中,其中第一行是我們的SqueezeDet結構,後續行是對 SqueezeDet 的修改,最後一行是SqueezeDet的加強版SqueezeDet +模型。
  Image resolution:對於目標檢測來說,增加圖像分辨率是提高檢測準確度的一個非常有效的方法。但是更大的圖像會導致更大的激活、更多的浮點運算、更長的訓練時間等等。我們現在評估這些指標的權衡。在我們的實驗中,我們通過1.5X0.75X 分別縮放圖像分辨率。隨着圖像越大,訓練變得越緩慢。所以我們將batch size降低到10。正如我們在表3可以看出,放大輸入圖像實際會減小mAP,並且導致更多的浮點運算、更慢的運行速度和更大的內存消耗。我們也在縮小的輸入圖像中做一個實驗。縮小圖像會導致驚人的92.5 FPS的運行速度和更小的內存佔用,儘管它的mAP只下降3個百分點。

這裏寫圖片描述

  Number of anchors:要調整的另一個超參數是定位點(anchor)的數量。直觀地說, 使用更多的anchor, 生成更多的邊界框應該會導致一個更好的準確性。但是在我們的實驗中(如表3所示),使用更多的anchor會導致更低的精度。但是它也顯示了,使用了ConvDet層、增加了anchor數量的模型只適度地增加l模型大小、浮點運算量和內存佔用。
  Model architecture:正如我們之前討論過的, 使用一個更強大的核心模型, 更多的參數大大提高了精確度 (見表3),但是這種修改在浮點運算、模型大小和內存佔用方面的消耗也大大增加。

5. 結論

  我們提出了SqueezeDet,一種用於實時目標檢測的全卷積結構。我們將region proposition和分類器集成到了ConvDet層上,它包含參數的數量級小於全連接層結構。考慮到自主駕駛的限制,我們提出的SqueezeDetSqueezeDet+模型被設計成爲規模小運行速度快能量高效並且檢測準確度高。在所有這些指標中,我們的模型更先進(the state-of-the-art)。

翻譯完,原論文後三頁還附有補充材料(主要是對能量利用效率的討論與實驗),感興趣的同學可以自行看原論文,原論文下載鏈接在文章開頭給出!

由於本論文較長,中文翻譯分爲三個部分連載:
SqueezeDet:一種應用於自動駕駛實時目標檢測中的標準、小型、低功耗的全卷積神經網絡(一)
SqueezeDet:一種應用於自動駕駛實時目標檢測中的標準、小型、低功耗的全卷積神經網絡(二)

注:第一次寫博客,且水平有限,有些地方翻譯的很不到位,望諒解!
如有問題需要討論,可發送問題到我的郵箱:[email protected]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章