0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

我們最新的一個開源項目:SimpleDet

nlfO_thejiangme ? 來源:lq ? 2019-02-13 14:04 ? 次閱讀

今天很開心給大家介紹我們最新的一個開源項目:SimpleDet。

SimpleDet是一套簡單通用的目標檢測與物體識別的框架。整套框架基于MXNet的原生API完成。這篇文章不僅僅想介紹一下這樣一個新的框架有什么與眾不同的feature,更想去介紹一下我們?yōu)槭裁礇Q定做這么一件事情以及我們的初衷是什么。

為什么還要再造一次錘子?

這個問題其實也是我們在開始這個項目之前自問了很多次的問題。如果大家有心留意下的話,Ross在產(chǎn)出RCNN和Fast RCNN的那兩三年,每年都會去參加一下ImageNet比賽。其實當初很不解,為什么要去這么做,尤其是基本都是很裸的方法,一定不可能拿到好的名次。后來有機會去抓住Kaiming問了一下這個問題,Kaiming給我的答案是,Ross其實并不關系這個名次,Ross關心的是借這個機會宣傳他更好用的錘子給大家。

其實不同于很多人認為的那樣,模型fancy,結果好才是一個好工作的體現(xiàn)。恰恰相反,簡單可靠,越多的paper愿意以這個方法作為baseline,就越說明這個方法的經(jīng)典。其實對我自己而言,我從讀PhD開始就一直愿意去做這樣的baseline和這樣的錘子。從當年用HOG+LR超越絕大多數(shù)paper的Tracking到參與MXNet項目再到后來用5行代碼做domain adaptation的AdaBN。雖然開始的時候都遭受了很多人包括reviewer的質疑,但是時間都證明了這些工作的價值。

對于目標檢測和識別領域,今天我們發(fā)現(xiàn)了同樣的問題。雖有很多開源的代碼和框架,但是目前看下來仍有很大進步的空間。一方面現(xiàn)有的開源框架雖有各種冠軍頭銜加持,但因為各種各樣的原因,復現(xiàn)出真正SOTA的結果仍然不是一件輕松的事情;另一方面,一些性能還不錯的開源代碼(如SNIP和SNIPER)卻難以拓展和維護。所導致的結果就是目前仍然有很多論文仍然在一個很低的baseline上進行改進,就算取得了性能的提升也很難說明方法的有效性。我們建立SimpleDet就是為了對于Instance Recognition這一系列問題提供一個更好的baseline和更好的錘子。

如果去問一個同學你需要一個什么樣的目標檢測和識別框架,我相信性能好,速度快,好用這三個關鍵詞可以覆蓋99%的需求,下面我們一一展開來看看SimpleDet在這些方面的優(yōu)勢和與其他開源框架的區(qū)別。

什么叫性能好?

在SimpleDet中,最值得關注的一個算法是我們的TridentNet(不知道TridentNet的同學歡迎猛戳:https://zhuanlan.zhihu.com/p/54334986)。我們公布了在各個setting下的模型和訓練代碼。這也是目前已知的COCO上單模型最高的算法。除了一個干凈的模型(testdev mAP=42.7)之外,我們還提供了一個加上了全部大禮包的setting(testdev mAP=48.4),包括Sync BN,multi-scale training/testing,deformable conv和softer NMS。雖然這些都是在很多paper和比賽中大家已經(jīng)常用的技術了,但是仍然很難把所有的方法都直接正確打開。我們在SimpleDet中提供了一套開箱即用的方案,希望借此降低復現(xiàn)SOTA的門檻,從而提升下整個領域中baseline的水平。除此之外,為了方便大家進一步拓展,我們還提供了一些經(jīng)典模型和算法,例如Mask(Faster) RCNN,F(xiàn)PN,RetinaNet,CascadeRCNN等。這個算法的結果都已經(jīng)經(jīng)過驗證,能達到論文中和已有開源代碼的結果。我們后續(xù)還會進一步補充一些經(jīng)典和重要的工作,也歡迎大家積極貢獻。

什么叫速度快?

首先針對速度這個問題,我們一個獨特的feature是FP16 training,F(xiàn)P16不僅可以節(jié)省一半的顯存,在最新支持TensorCore的Volta和Turing系列GPU上還可以有一倍甚至更多的速度提升。如下左圖,從1080Ti的30img/s可以提升到75img/s,展現(xiàn)了非常顯著的提升。其次,對有不同資源的同學來說,對于速度的需求也是不同的。我們著重考慮了三種典型的用戶:

1. 入門用戶:這類用戶可能由于實驗室資源限制,或者單純是因為個人興趣,只能負擔起小于4塊GPU。針對這類用戶,能夠盡量復現(xiàn)出更多資源下的結果是第一優(yōu)先級。核心的問題在于使用大的batchsize和BN batchsize。在這樣的setting下,SimpleDet提供了Inplace ABN[1] (To be announced),結合上MXNet本身提供的memonger功能,再加上FP16,極限狀態(tài)下訓練的單卡batchsize可以達到8到16。雖然損失了一定的速度,但是在兩到四卡上就能達到正常八卡訓練的batchsize。

2.普通用戶:這類用戶應該占據(jù)絕大多數(shù),可以獨占一臺8卡機器進行訓練。這類用戶對于速度會有著更高的需求,可以在入門用戶的基礎上關掉memonger這種對速度有一些影響的組件,以得到更好的訓練速度。

3.土豪用戶:手里有多臺8卡機器,希望充分利用機器快速迭代模型。針對這部分用戶,依托于MXNet優(yōu)秀的分布式設計以及阿里云更進一步優(yōu)化的Perseus通信框架,如下右圖所示,我們在4機32卡的情況下可以做到線性加速(沒有資源進行更大的測試了,更強大的土豪可以贊助點機器。。。)。這對于打比賽或者對模型迭代速度有很高要求的應用來說,無疑是個福音。

我們希望每一類用戶都能各取所需,在SimpleDet中找到最適合自己資源的setting,極大化產(chǎn)出。

什么叫做好用?

雖然每個用戶心里都會有一個好用的定義(心疼產(chǎn)品經(jīng)理1s...),除了前面的性能和速度之外,我們認為是否容易拓展和方便清晰調(diào)參也會是兩個重要的因素。我們針對一些常見需求,進行了高度模塊化的設計,一個核心思想便是盡量抽象和隔離核心操作,使各種不同算法盡量復用,在這些核心操作之上拓展而無需修改。例如,我們抽象出了一整套干凈通用的配置系統(tǒng),除了可以配置所有常見參數(shù)之外,還將常用的預處理和數(shù)據(jù)擴充操作也都抽象出來。針對這些常見的變更,用戶不需要修改核心代碼即可完成調(diào)優(yōu)。再比如,修改一個detection算法可能會遇到最復雜的邏輯就是在于data loader和pre-process,但是往往一個欠佳的實現(xiàn)會導致loader的效率大幅度下降,從而成為整個訓練中的瓶頸,使得GPU利用率降低。在SimpleDet中,我們提取出了一個通用的多線程loader框架,并抽象出了在預處理中常見的操作。后續(xù)新算法的拓展可以很容易在這些通用工具的基礎上同時保持簡潔性和效率。更多的設計歡迎大家直接閱讀源碼,我們也給出了一個簡單的對Faster RCNN和TridentNet代碼結構的分析供大家參考。

以上便是SimpleDet的一個簡要介紹,歡迎大家積極試用,提出寶貴意見。也歡迎大家一起來捉bug,貢獻新的算法和feature,共同把SimpleDet打造成一套目標檢測與物體識別的前沿試驗平臺。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 框架
    +關注

    關注

    0

    文章

    396

    瀏覽量

    17269
  • 機器
    +關注

    關注

    0

    文章

    772

    瀏覽量

    40637
  • 開源框架
    +關注

    關注

    0

    文章

    32

    瀏覽量

    9402

原文標題:SimpleDet: 一套簡單通用的目標檢測與物體識別框架

文章出處:【微信號:thejiangmen,微信公眾號:將門創(chuàng)投】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    一個DIY開源項目——帶收音功能的插卡式移動小音箱制作

    一個DIY開源項目——帶收音功能的插卡式移動小音箱制作 (1)小弟剛入行,菜鳥,為了準備鍛煉自己的毅力和提高單片機技術水平,準備動
    發(fā)表于 01-12 22:37

    2013 年最不可思議的 10 硬件開源項目

    頒發(fā)的最激動人心的開源項目,它讓我們相信開源硬件不只是另一個硬件開發(fā)的項目,而是
    發(fā)表于 03-14 11:13

    C語言開源項目

    值得學習的C語言開源項目- 1. WebbenchWebbench是在linux下使用的非常簡單的網(wǎng)站壓測工具。它使用fork()模擬多個客戶端同時訪問
    發(fā)表于 08-20 06:15

    分享些高星開源項目

    關于GitHub,可能很多人都誤以為這是互聯(lián)網(wǎng)人的專屬,其實并不是,那上面嵌入式相關的開源項目是有很多的?,F(xiàn)分享些高星開源項目(像RT-T
    發(fā)表于 02-28 08:13

    開源匯總】精選開源硬件項目匯總

    XR32項目簡介:本項目使用全志官方支持的FreeRTOS系統(tǒng),適配自己做的開發(fā)板,代碼全部開源。項目計劃
    發(fā)表于 04-29 18:45

    11機器學習開源項目

    隨著機器學習越來越受到開發(fā)者關注,出現(xiàn)了很多機器學習的開源項目,在本文列舉的11機器學習開源項目中,無論你是Java愛好者還是Python
    發(fā)表于 02-14 14:25 ?2768次閱讀

    騰訊10大開源項目有哪些?

    騰訊開源了許多非常有價值的項目,下面我們起來看看騰訊10大開源項目有哪些?
    的頭像 發(fā)表于 03-29 10:16 ?1.1w次閱讀
    騰訊10大<b class='flag-5'>開源</b><b class='flag-5'>項目</b>有哪些?

    精選10Python開源項目

    過去一個月里,我們對近 250 Python 開源項目進行了排名,并挑選出熱度前 10 的項目
    的頭像 發(fā)表于 11-12 09:47 ?6236次閱讀

    名為“LeetCodeAnimation”的開源項目

    ?今天,營長要特別為大家介紹名為“LeetCodeAnimation”的開源項目。在這個項目中,文字解讀并不是主要的,作者把
    的頭像 發(fā)表于 12-17 09:09 ?4484次閱讀

    優(yōu)秀的 Verilog/FPGA開源項目介紹(

    優(yōu)秀的 Verilog/FPGA開源項目介紹()-PCIe通信 今天開始會陸續(xù)介紹些優(yōu)秀的開源項目
    的頭像 發(fā)表于 10-11 15:31 ?8972次閱讀
    優(yōu)秀的 Verilog/FPGA<b class='flag-5'>開源</b><b class='flag-5'>項目</b>介紹(<b class='flag-5'>一</b>)

    超棒的stm32的開源usb-can項目,canable及PCAN固件

    超棒的stm32的開源usb-can項目,canable及PCAN固件
    發(fā)表于 12-20 18:55 ?35次下載
    扒<b class='flag-5'>一</b><b class='flag-5'>個</b>超棒的stm32的<b class='flag-5'>開源</b>usb-can<b class='flag-5'>項目</b>,canable及PCAN固件

    簡單的反射游戲開源項目

    電子發(fā)燒友網(wǎng)站提供《簡單的反射游戲開源項目.zip》資料免費下載
    發(fā)表于 11-02 10:52 ?0次下載
    <b class='flag-5'>一</b><b class='flag-5'>個</b>簡單的反射游戲<b class='flag-5'>開源</b><b class='flag-5'>項目</b>

    ChatGPT了的七開源項目

    就推出了很多。估計,現(xiàn)在還有不少同學苦于不知道該如何體驗chatGPT。   chatGPT火了,圍繞chatGPT盡心二次擴展的開源項目最近也涌現(xiàn)出很多,今天就來給大家介紹幾個最近發(fā)現(xiàn)的不錯的開源
    發(fā)表于 02-15 09:26 ?3次下載
    ChatGPT了的七<b class='flag-5'>個</b><b class='flag-5'>開源</b><b class='flag-5'>項目</b>

    開放原子開源基金會與20開源項目舉行捐贈簽約儀式

    開放原子開源基金會“立足中國、面向世界”,堅持科技、公益、普惠屬性,廣泛匯聚開發(fā)者,培育開源項目。6月11日,在2023開放原子全球開源峰會上,開放原子
    的頭像 發(fā)表于 06-11 18:35 ?1387次閱讀

    介紹使用FPGA做的開源示波器

    其實用FPGA做的示波器有很多,開源的相對較少,我們今天就簡單介紹使用FPGA做的開源示波器:
    發(fā)表于 08-14 09:03 ?1119次閱讀