CornerNet-Lite,基於關鍵點的實時且精度高的目標檢測演算法已開源
本文要介紹一篇實時性好,準確率又高的論文: CornerNet-Lite。該論文是由 普林斯頓大學的幾位學者提出。截止目前,據Amusi所瞭解,CornerNet-Lite應該是目標檢測(Object Detection)中FPS和mAP trade-off最佳演算法。
注:標題註明"吊打YOLOv3",這個不是標題黨。 因為CornerNet-Lite 在FPS和mAP上都超過了YOLOv3,具體詳見下文介紹。
簡介
arXiv:
github:
作者團隊:普林斯頓大學
注:2019年04月19日剛出爐的paper
Abstract:基於關鍵點的方法是目標檢測中相對較新的範例,消除了對anchor boxes的需求並提供了簡化的檢測框架。基於Keypoint的CornerNet在單級(single-stage)檢測器中實現了最先進的精度。然而,這種準確性來自高處理代價。在這項工作中,我們解決了基於關鍵點的高效目標檢測問題,並引入了 CornerNet-Lite。CornerNet-Lite是CornerNet的兩種有效變體的組合:CornerNet-Saccade,它使用注意機制消除了對影像的所有畫素進行徹底處理的需要,以及引入新的緊湊骨幹架構的 CornerNet-Squeeze。這兩種變體共同解決了有效目標檢測中的兩個關鍵用例:在不犧牲精度的情況下提高效率,以及提高實時效率的準確性。 CornerNet-Saccade適用於離線處理,將CornerNet的效率提高6.0倍,將COCO的效率提高1.0%。CornerNet-Squeeze適用於實時檢測,提高了流行的實時檢測器YOLOv3的效率和準確性(在COCO資料集上, CornerNet-Squeeze為34ms / 34.4 mAP,而YOLOv3為39ms / 33mAP)。這些貢獻首次共同揭示了基於關鍵點的檢測對於需要處理效率的應用的潛力。
背景
CornetNet 在 ECCV 2018 (oral)上橫空出世,引領一波基於關鍵點的目標檢測狂潮(最近anchor-free盛行),但這類演算法(很多one-stage)也有缺點。雖然mAP有很大提升,但速度上都遠不能達到實時(有些論文就避而不談FPS了)。這其實可以看成學術階段的成果,但距離落地應用還有一點距離。
而 本文CornetNet-Lite是對CornetNet進行最佳化,提出了兩種演算法:
- CornerNet-Saccade
- CornerNet-Squeeze
在Amusi看來:
CornerNet-Saccade是追求高準確率(mAP)的同時,儘可能提高速度(FPS),即準確率優先,其對標於CornerNet等演算法。創新點:引入Saccade思想
CornerNet-Squeeze是追求高實時性(FPS)的同時,儘可能提高準確率(mAP),即速度優先,其對標於YOLOv3等演算法。創新點:引入SqueezeNet最佳化思想
正文
1 CornerNet-Saccade
什麼是Saccades?
人類視覺中的Saccades(掃視運動)是指用於固定不同影像區域的一系列快速眼動。在目標檢測演算法中,我們廣義地使用該術語來表示在推理期間選擇性地 裁剪(crop)和處理影像區域(順序地或並行地,畫素或特徵)。
CornerNet-Saccade中的saccades是 single type and multi-object。CornerNet-Saccade檢測影像中可能的目標位置周圍的小區域內的目標。它使用縮小後的完整影像來預測注意力圖和粗邊界框;兩者都提出可能的物件位置,然後,CornerNet-Saccade透過檢查以高解析度為中心的區域來檢測目標。它還可以透過控制每個影像處理的最大目標位置數來提高效率。具體流程如下圖所示。
CornerNet-Saccade設計了一種新的backbone:Hourglass-54(含3個hourglass模組,深度為54)。原CornerNet中使用的是Hourglass-104(含2個hourglass模組,深度為54)。
注: crop在CornerNet-Saccade中作用非常大
2 CornerNet-Squeeze
與專注於subset of the pixels以減少處理量的 CornerNet-Saccade相比,而CornerNet-Squeeze探索了一種減少每畫素處理量的替代方法。在CornerNet中,大部分計算資源都花在了Hourglass-104上。Hourglass-104由殘差塊構成,其由兩個3×3卷積層和跳連線(skip connection)組成。儘管Hourglass-104實現了很強的效能,但在引數數量和推理時間方面卻很耗時。為了降低Hourglass-104的複雜性,本文將來自 SqueezeNet和MobileNets的想法融入到lightweight hourglass架構中。
主要操作是:
- 受SqueezeNet啟發,CornerNet-Squeeze將residual block替換為SqueezeNet中的Fire module
- 受MobileNet啟發,CornerNet-Squeeze將第二層的3x3標準卷積替換為3x3深度可分離卷積(depth-wise separable convolution)
具體如下表所示:
3 實驗結果
開原始碼是基於PyToch1.0.0,在COCO資料集上進行測試。測試硬體環境為:1080ti GPU + Intel Core i7-7700k CPU。
One-stage演算法效能比較
CornerNet-Saccade演算法效能比較
可見Hourglass-54要強於Hourglass-104,另外gt attention對漲點幫助很大
CornerNet-Squeeze演算法效能比較
見證奇蹟的時候來了!CornerNet-Squeeze吊打YOLOv3,因為即使是C語言版本的YOLOv3,都已被全方位(mAP+FPS)超過。
注:日常期待一下YOLOv4,畢竟YOLOv3已經是去年3月的"老人"了。
程式碼已開源,快快下載嘗試一波:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29829936/viewspace-2654424/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 使用關鍵點進行小目標檢測
- 基於混合高斯模型的運動目標檢測演算法模型演算法
- 從錨點到關鍵點,最新的目標檢測方法發展到哪了
- 目標檢測演算法盤點(最全)演算法
- 關鍵點檢測專案程式碼開源了!
- 首個實時單目3D目標檢測演算法:RTM3D,程式碼將開源3D演算法
- TF專案實戰(基於SSD目標檢測)——人臉檢測1
- FAIR開源Detectron:整合全部頂尖目標檢測演算法AI演算法
- PFLD:簡單高效的實用人臉關鍵點檢測演算法演算法
- 使用 YOLO 進行實時目標檢測YOLO
- 運動目標檢測演算法相關概念演算法
- 0-目標檢測模型的基礎模型
- 基於Flutter實現的 IT換換(已開源)Flutter
- 一個基於PyTorch的目標檢測工具箱,商湯聯合港中文開源mmdetectionPyTorch
- 基於時間序列檢測演算法的智慧報警實現演算法
- opencv關鍵點檢測OpenCV
- 基於OpenCV和YOLOv3深度學習的目標檢測OpenCVYOLO深度學習
- 基於MeanShift的目標跟蹤演算法、實現演算法
- 目標檢測演算法學習演算法
- 目標檢測相關論文
- 使用SlimYOLOv3框架實現實時目標檢測YOLO框架
- 【目標檢測】Fast R-CNN演算法實現ASTCNN演算法
- 目標檢測
- 基於YOLOv4的目標檢測系統(附MATLAB程式碼+GUI實現)YOLOMatlabGUI
- 《基於深度學習的目標檢測綜述》論文獲發表深度學習
- 基於深度學習的計算機視覺應用之目標檢測深度學習計算機視覺
- 目標檢測---教你利用yolov5訓練自己的目標檢測模型YOLO模型
- 飛槳Tracking目標跟蹤庫開源!涵蓋業界主流的VOT演算法,精準檢測動態目標軌跡演算法
- 目標檢測三大開源神器:Detectron2/mmDetection/SimpleDet
- 港中文開源影片動作分析庫MMAction,目標檢測庫演算法大更新Mac演算法
- 谷歌AI良心開源:一部手機就能完成3D目標檢測,還是實時的那種谷歌AI3D
- iOS 人臉關鍵點檢測iOS
- 九、目標檢測
- 目標檢測實用中可以改進的方向
- 增加檢測類別?這是一份目標檢測的基礎指南
- [AI開發]目標檢測之素材標註AI
- 港中文開源視訊動作分析庫MMAction,目標檢測庫演算法大更新Mac演算法
- faced:基於深度學習的CPU實時人臉檢測深度學習