国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

3天內不再提示

YOLO的另一選擇,手機端97FPS的Anchor-Free目標檢測模型NanoDet

電子設計 ? 來源:電子設計 ? 作者:電子設計 ? 2020-12-08 22:42 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

文章轉載于:知乎
作者:RangiLyu

上來先貼一下性能對比:

華為P30上用NCNN移植跑benchmark,每幀僅需10.23毫秒,比yolov4-tiny快3倍,參數量小6倍,COCO mAP(0.5:0.95)能夠達到20.6 。而且模型權重文件只有1.8mb,對比動輒數十兆的模型,可以說是相當友好了~

Android Demo

項目地址(提供訓練代碼到安卓部署一站式解決方案):

RangiLyu/nanodet: ?Super fast and lightweight anchor-free object detection model. Only 1.8mb and run 97FPS on cellphone (github.com)?github.com

前言

深度學習目標檢測已經發展了許多年,從Two-stage到One-stage,從Anchor-base到Anchor-free,再到今年的用Transformer做目標檢測,各種方法百花齊放,但是在移動端目標檢測算法上,yolo系列和SSD等Anchor-base的模型一直占據著主導地位。這個項目的主要目的是希望能夠開源一個移動端實時的Anchor-free檢測模型,能夠提供不亞于yolo系列的性能,而且同樣方便訓練和移植。
其實從去年大量anchor-free的論文發表之后,我就一直想把anchor free的模型移植到移動端或者是嵌入式設備上。當時嘗試過把FCOS輕量化的實驗,奈何效果并不如mobilenet+yolov3,也就暫時擱置了。分析下來,主要還是因為FCOS的centerness分支在輕量級的模型上很難收斂,之后發表的一些在FCOS上面進行改進的論文也都沒有解決這一問題。

直到今年年中的時候刷arxiv突然刷到了

@李翔

老師的論文Generalized Focal Loss: Learning Qualified and Distributed Bounding Boxes for Dense Object Detection,論文中提出的GFocalLoss完美去掉了FCOS系列的Centerness分支,而且在coco數據集上漲點顯著,這么好的文章怎么能不點贊呢?GFL的出現不僅去掉了難以訓練的Centerness,而且還省去了這一分支上的大量卷積,減少了檢測頭的計算開銷,非常適合移動端的輕量化部署。
貼一下李翔老師關于GFocal Loss的解讀:

李翔:大白話 Generalized Focal Loss?zhuanlan.zhihu.com

檢測頭輕量化

在找到了合適的損失函數之后,接下來的關鍵就是如何使其在輕量化模型上發揮作用了。首先需要對移動端進行優化的就是檢測頭:FCOS系列使用了共享權重的檢測頭,即對FPN出來的多尺度Feature Map使用同一組卷積預測檢測框,然后每一層使用一個可學習的Scale值作為系數,對預測出來的框進行縮放。

FCOS模型架構

這么做的好處是能夠將檢測頭的參數量降低為不共享權重狀態下的1/5。這對于光是檢測頭就擁有數百通道的卷積的大模型來說非常有用,但是對于輕量化模型來說,共享權重檢測頭并沒有很大的意義。由于移動端模型推理由CPU進行計算,共享權重并不會對推理過程進行加速,而且在檢測頭非常輕量的情況下,共享權重使得其檢測能力進一步下降,因此還是選擇每一層特征使用一組卷積比較合適。
同時,FCOS系列在檢測頭上使用了Group Normalization作為歸一化的方式,GN對比BN有很多好處,但是卻有一個缺點:BN在推理時能夠將其歸一化的參數直接融合進卷積中,可以省去這一步計算,而GN則不行。為了能夠節省下歸一化操作的時間,我選擇將GN替換為BN。
FCOS的檢測頭使用了4個256通道的卷積作為一個分支,也就是說在邊框回歸和分類兩個分支上一共有8個c=256的卷積,計算量非常大。為了將其輕量化,我首先選擇使用深度可分離卷積替換普通卷積,并且將卷積堆疊的數量從4個減少為2組。在通道數上,將256維壓縮至96維,之所以選擇96,是因為需要將通道數保持為8或16的倍數,這樣能夠享受到大部分推理框架的并行加速。最后,借鑒了yolo系列的做法,將邊框回歸和分類使用同一組卷積進行計算,然后split成兩份。下圖就是最終得到的輕量化檢測頭的結構,非常的小巧:

NanoDet檢測頭

FPN層改進

目前針對FPN的改進有許多,如EfficientDet使用了BiFPN,yolo v4和yolo v5使用了PAN,除此之外還有BalancedFPN等等。BiFPN雖然性能強大,但是堆疊的特征融合操作勢必會帶來運行速度的降低,而PAN只有自上而下和自下而上兩條通路,非常的簡潔,是輕量級模型特征融合的好選擇。
原版的PAN和yolo中的PAN,都使用了stride=2的卷積進行大尺度Feature Map到小尺度的縮放。我為了輕量化的原則,選擇完全去掉PAN中的所有卷積,只保留從骨干網絡特征提取后的1x1卷積來進行特征通道維度的對齊,上采樣和下采樣均使用插值來完成。與yolo使用的concatenate操作不同,我選擇將多尺度的Feature Map直接相加,使得整個特征融合模塊的計算量變得非常非常小。
最終的極小版PAN的結構也是非常簡單:

超輕量的PAN

Backbone的選擇

原本有考慮過自己魔改一個輕量級的backbone出來,但是最后評估了一下感覺工作量太大了(在家訓練模型電費太貴),就打算選擇使用現有的一些輕量級骨干網絡。最開始的選擇有MobileNet系列,GhostNet,ShuffleNet,還有最近的EfficientNet。在評估了參數量、計算量以及權重大小之后,還是選擇了ShuffleNetV2作為骨干網絡,因為它是這些模型里面在相似精度下體積最小的,而且對移動端CPU推理也比較友好。
最終我選擇使用ShuffleNetV2 1.0x作為backbone,去掉了最后一層卷積,并且抽取8、16、32倍下采樣的特征輸入進PAN做多尺度的特征融合。整個骨干模型使用了Torchvision提供的代碼,能夠直接加載Torchvision上提供的imagenet預訓練權重,對加快模型收斂有很大的幫助。順便一提,最近有些論文指出使用分類的預訓練權重初始化模型對檢測任務的效果不如隨機初始化的好,不過這要付出訓練更多步數的代價,我還沒有測試過,歡迎大家嘗試~

NanoDet整體模型結構

模型性能

在經過對one-stage檢測模型三大模塊(Head、Neck、Backbone)都進行輕量化之后,得到了目前開源的NanoDet-m模型,在320x320輸入分辨率的情況下,整個模型的Flops只有0.72B,而yolov4-tiny則有6.96B,小了將近十倍!模型的參數量也只有0.95M,權重文件在使用ncnn optimize進行16位存儲之后,只有1.8mb,非常適合在移動端部署,能夠有效減少APP體積,同時也對更低端的嵌入式設備更加友好。
盡管模型非常的輕量,但是性能卻依舊強勁。對于小模型,往往選擇使用AP50這種比較寬容的評價指標進行對比,這里我選擇用更嚴格一點的COCO mAP(0.5:0.95)作為評估指標,同時兼顧檢測和定位的精度。在COCO val 5000張圖片上測試,并沒有使用Testing-Time-Augmentation的情況下,320分辨率輸入能夠達到20.6的mAP,比tiny-yolov3高4分,只比yolov4-tiny低1個百分點,而將輸入分辨率與yolo保持一致,都使用416輸入的情況下,得分持平。
最后用ncnn部署到手機上之后跑了一下benchmark,模型前向計算時間只要10毫秒左右,對比yolov3和v4 tiny,均在30毫秒的量級。在安卓攝像頭demo app上,算上圖片預處理,檢測框后處理以及繪制檢測框的時間,也能輕松跑到40+FPS~。(關于模型從pytorch到安卓的部署,以及如何用C++實現GFL檢測框的后處理,我會再專門發一遍文章詳細介紹)

ncnn 安卓benchmark對比

總結

NanoDet總體而言沒有特別多的創新點,是一個純工程化的項目,主要的工作就是將目前學術界的一些優秀論文,落地到移動端的輕量級模型上。最后通過這些論文的組合,得到了一個兼顧精度、速度和體積的檢測模型。
為了讓大家能夠快速使用NanoDet,方便訓練和部署,我已經把Pytorch的訓練代碼、基于NCNN的Linux和windowsC++部署代碼以及Android攝像頭Demo全部開源,同時在Readme中也包含了非常詳細的教程,歡迎大家使用,歡迎提issue~
順便提一句,NanoDet訓練并沒有用到很多數據增強的技巧,模型結構也非常簡單,也就是說mAP應該還有很大的提升空間,如果有小伙伴愿意魔改一下再漲幾個點那就再好不過了(嘻嘻)。
最后的最后,Github求Star啊!!

RangiLyu/nanodet: ?Super fast and lightweight anchor-free object detection model. Only 1.8mb and run 97FPS on cellphone (github.com)?github.com

/=======================================================

11月25日更新:

大家都太熱情了!NanoDet僅開源三天Github就已經突破900star,并且登上了Github趨勢榜!

感謝各位大佬的支持,特別感謝李翔老師的論文給NanoDet模型的啟發,以及ncnn作者nihui在項目初期的推廣~大家快去給ncnn和GFocalLoss點star啊!

Tencent/ncnn: ncnn is a high-performance neural network inference framework optimized for the mobile platform (github.com)?github.comimplus/GFocal: Generalized Focal Loss: Learning Qualified and Distributed Bounding Boxes for Dense Object Detection (github.com)?github.com

之前一直在ncnn群里面討論NanoDet,感覺不太合適,所以專門建了一個討論群:908606542 (進群答案:煉丹) 歡迎大家來討論~

推薦閱讀

更多Tengine相關內容請關注Tengine-邊緣AI推理框架專欄。

審核編輯:符乾江
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 人工智能
    +關注

    關注

    1817

    文章

    50098

    瀏覽量

    265372
  • 深度學習
    +關注

    關注

    73

    文章

    5599

    瀏覽量

    124398
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    YOLO5目標檢測方案-基于米爾RK3576開發板

    實時性:完成從攝像頭采集→NPU推理→屏幕顯示的完整流程,耗時不超過攝像頭幀的時間。 輸入/輸出:盡可能提高攝像頭采集幀率,并在顯示支持更高的輸出分辨率。 功能:實現YOLO5s目標
    發表于 01-22 19:21

    基于iTOP-3568核心板的YOLO目標檢測全棧解決方案

    在智能制造、智慧安防、智能交通等領域,實時、精準的目標檢測技術正成為行業智能化轉型的核心需求。然而,傳統方案面臨云端延遲高、網絡依賴強、成本居高不下等挑戰?,F在,基于瑞芯微RK3568處理器的iTOP-3568開發板,為您帶來實時響應、高性價比的
    的頭像 發表于 01-21 16:44 ?977次閱讀
    基于iTOP-3568核心板的<b class='flag-5'>YOLO</b><b class='flag-5'>目標</b><b class='flag-5'>檢測</b>全棧解決方案

    部署輕量化YOLO模型

    YOLO物聯網聆思CSK6
    的頭像 發表于 12-14 07:47 ?1485次閱讀

    Termux手機攝像頭采集圖像/視頻流 部署 YOLO 模型推理

    Termux手機攝像頭采集圖像/視頻流 部署 YOLO 模型推理
    的頭像 發表于 12-14 07:26 ?2857次閱讀

    廣和通發布目標檢測模型FiboDet

    為提升側設備視覺感知與決策能力,廣和通全自研目標檢測模型FiboDet應運而生。該模型基于
    的頭像 發表于 09-26 13:39 ?1606次閱讀

    單板挑戰4路YOLOv8!米爾瑞芯微RK3576開發板性能實測

    運算。使用YOLOv8模型時也是手到擒來,接下來隨著步伐看看它表現如何。YOLO簡介YOLO(You Only Look Once)是當前業界領先的實時目標
    發表于 09-12 17:52

    如何進行YOLO模型轉換?

    我目前使用的轉模型代碼如下 from ultralytics import YOLOimport cv2import timeimport nncaseimport# 加載預訓練的YOLO模型
    發表于 08-14 06:03

    RK3576 yolo11-seg訓練部署教程

    和分割頭設計,實現了像素級的精確目標檢測與分割,適用于自動駕駛、醫學影像、工業檢測等對精度和速度要求苛刻的場景。本教程針對目標分割算法yolov11seg的訓練和部
    的頭像 發表于 07-25 15:21 ?1815次閱讀
    RK3576 <b class='flag-5'>yolo</b>11-seg訓練部署教程

    基于RK3576開發板的yolov11-track多目標跟蹤部署教程

    的顯著進步基礎上,YOLO11在架構和訓練方法上引入了重大改進,使其成為廣泛計算機視覺任務的靈活選擇。Bytetrack多目標跟蹤是種tracking-by-det
    的頭像 發表于 07-25 15:21 ?1913次閱讀
    基于RK3576開發板的yolov11-track多<b class='flag-5'>目標</b>跟蹤部署教程

    【Sipeed MaixCAM Pro開發板試用體驗】 + 04 + 機器學習YOLO體驗

    滿意,不僅是從 平臺的技術支持 ,還是 開發板的體驗效果 ,都遠超我的預期。特別是 AI方面的應用 , YOLO模型識別 ,人臉情緒檢測,手勢檢測等,如果你對這方面很感興趣的話,我認為
    發表于 07-24 21:35

    如何在樹莓派 AI HAT+上進行YOLO姿態估計?

    YOLO目標檢測?如何在樹莓派AIHAT+上進行YOLO姿態估計?今天是第四部分:如何在樹莓派AIHAT+上進行YOLO姿態估計?如果大家
    的頭像 發表于 07-20 20:34 ?1011次閱讀
    如何在樹莓派 AI HAT+上進行<b class='flag-5'>YOLO</b>姿態估計?

    如何在樹莓派 AI HAT+上進行YOLO目標檢測?

    YOLO目標檢測?如何在樹莓派AIHAT+上進行YOLO姿態估計?今天是第三部分:如何在樹莓派AIHAT+上進行YOLO
    的頭像 發表于 07-19 08:34 ?1727次閱讀
    如何在樹莓派 AI HAT+上進行<b class='flag-5'>YOLO</b><b class='flag-5'>目標</b><b class='flag-5'>檢測</b>?

    usb攝像頭輸入的圖像,哪種格式才能讓yolo正常檢測

    = yolo.run(img)這步會導致系統卡死,應該是圖片格式不符合 yolo用的自訓練yolov11模型,使用默認的板載攝像頭沒有問題。 軟硬件版本信息 立創廬山派CANMV
    發表于 06-13 07:55

    基于LockAI視覺識別模塊:C++目標檢測

    是基于百度飛槳深度學習框架開發的個高效的目標檢測庫,支持多種先進的目標檢測模型,如
    發表于 06-06 14:43

    labview調用yolo目標檢測、分割、分類、obb

    labview調用yolo目標檢測、分割、分類、obb、pose深度學習,支持CPU和GPU推理,32/64位labview均可使用。 (yolov5~yolov12)
    發表于 03-31 16:28