點擊上方「CVer」,選擇加"星標"置頂
重磅乾貨,第一時間送達
本文作者:陳愷
https://zhuanlan.zhihu.com/p/145084667
本文已由原作者授權,不得擅自二次轉載
MMDetection V1.0 版本發布以來,我們收到了很多用戶的反饋,其中有不少有價值的建議,同時也有很多開發者貢獻代碼,和我們一起不斷完善。經過 2 個月的醞釀,再經過 3 個月的開發和打磨(也就說了五六次「下周發版」吧,這裡十分感謝主要開發的小夥伴們:文蔚,嘉瑞和鈺杭),終於,在 2020 年 5 月 6 日,我們低調地發布了MMDetection V2.0。今天我們打算介紹一下。
https://github.com/open-mmlab/mmdetection
太長不看版:經過對模型各個組件的重構和優化,我們全面提升了 MMDetection 的速度和精度,達到了現有檢測框架中的最優水平。通過更細粒度的模塊化設計,MMDetection 的任務拓展性大大增強,成為了檢測相關項目的基礎平臺。同時對文檔和教程進行了完善,增強用戶體驗。
下面簡單介紹下 MMDetection V2.0 的各項改進,更具體的細節見文檔。
最大最全的模型庫截至 2020 年 5 月底,MMDetection 官方模型庫已經支持了35篇論文中的算法,提供了超過 250 個預訓練模型,是目標檢測領域最大規模的模型庫。除此之外,還有 16 篇論文在 Github 上開源了基於 MMDetection 的代碼。目前官方支持的方法如圖所示:
從 V1.0 到 V2.0,我們新支持了 Res2Net,RegNet(獨家放送)等 backbone,也支持了CARAFE,PISA,FSAF,NASFCOS 等方法。對新方法的及時支持使得 MMDetection 既可以用作學術研究的標準 benchmark,也可以用作各種 idea 實現的助力,以及各種比賽的刷(pai)分(lie)利(zu)器(he)。
靈活的設計,全新的體驗模塊化設計是 MMDetection 自誕生之初就遵循的原則,使得它能保持強大的生命力,得到社區的廣泛支持。
從設計上看,MMDetection V2.0 的模塊化設計比之前的版本更加細粒度,使得更多的模塊可以被更靈活地替換或調整,讓 MMDetection 從單純的目標檢測框架向檢測類任務的框架平臺轉變。新的模塊設計如下圖所示。
在進行代碼重構的過程中,我們針對之前的反饋,在用戶體驗上著重進行了改進,這裡舉幾個例子。
痛點 2:配置文件非常長,修改起來容易出錯,而且改動的點不夠清晰。
V2.0改進:我們設計了新的 config 系統,支持了多重繼承機制。將常用的數據集配置、基礎模型以及訓練策略放到了 _base_ 文件夾中,每個新的 config 只需要繼承一個或者多個已有的 config,然後對其中需要修改的欄位進行重載即可。下圖是 Mask R-CNN R-101 的配置文件在 1.0 和 2.0 版本的對比。V2.0 版本 只需要 2 行,而且所有的改動一目了然,如下圖所示。
除此之外,我們在 V2.0 中增加了不少實用的小功能和改進,使得 MMDetection 簡直是各位開發者的貼心小棉襖。(還有什麼需求都可以提,我們慢慢加,當然能直接提 PR 就最好不過了。。。)
飛一般的速度在進行代碼重構的時候,我們也針對各個模塊進行了優化, 實現了30%以上的訓練加速和60%以上的測試加速。
它變強了,但沒有禿MMDetection V2.0 的基準模型精度相比於 V1.x 有了顯著的提升。我們雖然在 V1.0 的技術報告中對各種參數做了 ablation study,但是代碼庫中的默認配置選用了最樸實無華的版本。在 V2.0 中,在不增加訓練和測試代價的前提下,通過對默認超參的調節和實現的優化,例如使用 L1 Loss 而非 SmoothL1 Loss 等,獲得了不小的精度提升。Detectron2 在這方面也有不少可圈可點的地方,和 MMDetection V2.0 的主要區別在於默認採用了 multi-scale 訓練,而我們仍然選擇以 single-scale 作為默認配置。不過在採用相同參數的情況下,精度幾乎一致。
總結其實大多數研究員和開發者在寫代碼的過程中都會逐漸感受到,代碼的工程質量會顯著影響研發效率。對於整個社區而言,目標檢測的代碼框架不僅需要工程上穩定高效的實現,還需要保持靈活性來支持新方法。而 MMDetection 正是在朝著這個方向不斷努力。也歡迎各位提 PR 和Issue,讓我們一起把它變得更好。
https://github.com/open-mmlab/mmdetection
最後,還是要給商湯我們的團隊打個小廣告,目前有許多坑等待優秀的同學們一起來填,歡迎大家推薦和轉發,簡歷投遞請聯繫 chenkai@sensetime.com
郵件主題/簡曆命名格式:崗位+姓名+CVer推薦
1. 見習算法研究員(多名)
負責開源框架(各種方向,不限於檢測)的開發和維護,例如定期實現新的 SOTA 算法,添加新功能把輪子打磨得更順手等。base 香港,長期實習優先。保證這段經歷能讓你在算法和工程能力上都能有不小的收穫。
2. 見習算法研究員(檢測方向,1 名)
負責檢測算法的算法研究和業務落地。
3. 全職算法研究員(分割方向,1 名)
負責語義分割方向的算法研究和業務落地。社招優先。
4. 全職開源社區運營(1 名)
負責開源社區運營,提升社區開發者活躍度,連接核心開發團隊和開源社區,負責用戶需求的挖掘和整理。負責中英文平臺的宣傳。
5. 項目經理(全職/實習,1 名)
負責設計、細化和實施開源項目開發計劃,把控項目風險,協調核心開發團隊以及社區開發者的開發任務。
同時,也給 MMLab 打個廣告,實驗室長期招收有志於在 CV 和 NLP領域有所突破,做出有影響力工作的同學,有CUHK,NTU、HKU、USYD、SIAT 等多個base可以申請,歡迎大家直接聯繫對應的老師。
CVer-目標檢測 交流群已成立
掃碼添加CVer助手,可申請加入CVer-目標檢測 微信交流群,目前已匯集4000人!涵蓋2D/3D目標檢測、小目標檢測、遙感目標檢測等。互相交流,一起進步!
同時也可申請加入CVer大群和細分方向技術群,細分方向已涵蓋:目標檢測、圖像分割、目標跟蹤、人臉檢測&識別、OCR、姿態估計、超解析度、SLAM、醫療影像、Re-ID、GAN、NAS、深度估計、自動駕駛、強化學習、車道線檢測、模型剪枝&壓縮、去噪、去霧、去雨、風格遷移、遙感圖像、行為識別、視頻理解、圖像融合、圖像檢索、論文投稿&交流、PyTorch和TensorFlow等群。
一定要備註:研究方向+地點+學校/公司+暱稱(如目標檢測+上海+上交+卡卡),根據格式備註,可更快被通過且邀請進群
▲長按加群
▲長按關注我們
請給CVer一個在看!