乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      YOLO內(nèi)卷時期該如何選模型?

       mynotebook 2022-09-25 發(fā)布于湖南

      前兩天看到了美團微信公眾號上的宣傳,更新發(fā)布了新版YOLOv6,還放出了arxiv論文。更新了之前的N/T/S小模型,也放出了M和L版本的大模型,論文實驗表格多達十幾個,看打出來是很用心的做了,個人覺得也算對得起這個名字了(官方認不認暫且不說)。

      之前本人寫了一個YOLO合集的文章《迪迦奧特曼:從百度飛槳YOLOSeries庫看各個YOLO模型 》,對YOLOv6介紹的不多,畢竟那時候YOLOv6還是第一版被全網(wǎng)黑的時候,現(xiàn)在還是先重新來具體具體分析下這個全新版YOLOv6。此外想聊聊關(guān)于怎么選YOLO模型去訓業(yè)務(wù)數(shù)據(jù)集的一些感想。

            01      

      YOLOv6模塊分析

      YOLOv6結(jié)構(gòu)圖鎮(zhèn)樓:

      圖片

      Backbone:

      • 對于N/T/S版本的小模型,采用EfficientRep,也就是第一版v6的結(jié)構(gòu);
      • 對于M/L版本的大模型,采用CSPBepBackbone,是借鑒CSP思想這次新加的;
      • 圖片

      圖雖然直觀但是不全,具體還是看代碼好理解??梢钥闯鰞蓚€backbone差別只在于基礎(chǔ)模塊block用的不同,一個 是RepBlock一個是BepC3,此外還有一個通道劃分因子csp_e區(qū)別。

      • https://github.com/meituan/YOLOv6/blob/main/yolov6/models/efficientrep.py#L37
      • https://github.com/meituan/YOLOv6/blob/main/yolov6/models/efficientrep.py#L142

      核心模塊還是RepVGG,今年的yoloe、yolov6、yolov7都相繼使用了,只是使用范圍幅度不一。

      圖片

      有意思的是v6做了實驗對比RepBlock和CSPStackRepBlock,CSP形式確實大大的減少了參數(shù)量FLOPs。也難怪要新設(shè)計CSPStackRep,v6-M上看原先RepBlock結(jié)構(gòu)參數(shù)量計算量簡直大到爆炸。CSP形式在小模型上表現(xiàn)不太行,但是v6-M的2/3設(shè)置又有點詭異。

      圖片

      Neck:

      圖片

      基于YOLOv5 YOLOX的PAFPN結(jié)構(gòu)也進行了改進:

      • 對于N/T/S版本的小模型,采用RepBlock替換CSPBlock;
      • 對于M/L版本的大模型,采用CSPStackRepBlock進行替換;

      同樣也是一個是RepBlock一個是BepC3,此外還有一個通道劃分因子csp_e區(qū)別。

      • https://github.com/meituan/YOLOv6/blob/main/yolov6/models/reppan.py#L23

      • https://github.com/meituan/YOLOv6/blob/main/yolov6/models/reppan.py#L148

      Head和loss:

      新版使用的是像TDDO Head那樣的形式,使用ATSS assign作為warmup,后期使用TAL assign,相比第一版幾乎就YOLOX的head算好的了。然而之前瞄到了 [yoloseries](https://github.com/nemonameless/PaddleDetection_YOLOSeries) 庫里的paddle yolov6的復(fù)現(xiàn),簡直和PPYOLOE head是一模一樣,包括assign過程和loss過程甚至還有各種命名。懷疑yoloseries作者就是復(fù)制PPYOLOE head過來再改成v6 head的哈哈哈。

      本來看v6原版代碼的時候就感覺很像yoloe,不過v6 head區(qū)別在于沒有用到PPYOLOE里的ESEAttn注意力,分類回歸v6也有公用stem,而PPYOLOE里是分離的stem。估計各家為什么這么設(shè)計也是實驗證明過的吧,都有自己的道理。此外v6 head還有distill的部分loss,算是自己的特色trick刷點來看還是很有用的。

      • 原版v6 head:https://github.com/meituan/YOLOv6/blob/main/yolov6/models/effidehead.py

      • 庫里的v6 head的實現(xiàn),包括loss:https://github.com/nemonameless/PaddleDetection_YOLOSeries/blob/release/2.5/ppdet/modeling/heads/effide_head.pyyoloseries

      • PaddleDetection的ppyoloe head的實現(xiàn),包括loss:https://github.com/PaddlePaddle/PaddleDetection/blob/develop/ppdet/modeling/heads/ppyoloe_head.py

      • 原版v6 head loss:https://github.com/meituan/YOLOv6/blob/main/yolov6/models/loss.py


            02      

      YOLOv6總體設(shè)計


      看總體設(shè)計還是看代碼配置文件。但其實v6的配置很不統(tǒng)一,包括之前v7也是不統(tǒng)一,都像是每個模型單獨調(diào)優(yōu)??吹統(tǒng)oloseries庫的作者的總結(jié):

      • YOLOv6 n t s 模型使用EfficientRep和RepPAN,YOLOv6 m l 模型使用CSPBepBackbone和CSPRepPAN,Params(M)和FLOPs(G)均為訓練時所測;

      • YOLOv6 m l 模型訓練默認使用蒸餾自監(jiān)督輔助訓練,且使用dfl_loss和設(shè)置reg_max=16,其余n t s 模型則未使用;

      • YOLOv6 l 模型原文默認激活函數(shù)為silu,其余n t s m模型則默認為relu;

      • YOLOv6 n t 模型原文訓練默認會使用到siou loss,其余s m l模型則默認使用到giou loss;

      此外還有優(yōu)化器一些參數(shù)的不同吧太瑣碎了。以前用習慣了yolov5 yolox的配置,大模型和小模型差別就改個width depth參數(shù),yoloe也是這樣,就很方便和統(tǒng)一。雖然有實驗證明大模型小模型用哪個好,但是這樣的設(shè)置每個模型單獨調(diào)優(yōu)就只為了爭0.幾的mAP也位面太麻煩了,而且只是COCO數(shù)據(jù)集的mAP,模型原模原樣重訓兩遍0.3以內(nèi)的mAP波動都還算正常的。

      自監(jiān)督蒸餾是一個v6的特色,漲點很多如下表,之前yolov7的1280 P6大尺度模型也使用了輔助頭蒸餾,是個不錯的trick。總的來看,自監(jiān)督至少有1.0+ mAP的增益。


      圖片

      指標分析:

      精度上看,v6確實足夠高了,但這其中也包含一些貓膩。比如L版本默認換成了silu,不和N/T/S/M的relu統(tǒng)一了,雖然單列了一個L-relu,估計是速度夠快了為了再加強些精度再訓的silu版本,乍一看Model Zoo還以為所有模型都是silu只是L單獨訓了一個relu的。。速度上看relu真的測速度會更快的多!在第一版發(fā)布的時候早有大佬說過,論文中也證明了。

      圖片

      此外還有很多表格對比實驗驗證,這也是各個模型配置文件不統(tǒng)一的主要原因。小模型可能siou更適合,tiny第一版是depth=0.25 width=0.50,現(xiàn)在改成了depth=0.33 width=0.375正常配置,掉了點精度換的了參數(shù)量更小速度更快。

      此外大模型M和L的自監(jiān)督蒸餾提了不少點,其中M的depth是0.6而不是常用的0.67,而最詭異的是調(diào)個通道劃分因子csp_e就能漲0.8之多。最后沒有像v7 v5那樣有大模型X版本和1280尺度有點遺憾,可能參數(shù)量flops過大,精度性價比不高了。

      圖片

      根據(jù)上述表格,本人抽空整理了下的最常用的S和L版本的幾個YOLO模型的數(shù)據(jù),按發(fā)布時間順序,供大家參考:

      圖片
      圖片

      注意:速度由于各個YOLO的平臺環(huán)境不同,甚至版本和框架不同都會有影響,實際還是得自己實測,也要注意幾次測波動不同也是正常的。

      怎么選模型:

      今年堪稱YOLO內(nèi)卷元年,先是yolov5 yolox yoloe神仙打架,各大用戶用的正歡,一看美團v6出來了哇新yolo馬上就換v6,再一看v7出來了立馬再換v7,再一看v6又更新了精度更高再重新?lián)Qv6,很多時候就是在來回折騰,數(shù)據(jù)量少重訓一遍還好,數(shù)據(jù)量大簡直就像扛著炸藥包折返跑,訓完了新的精度搞不好還低了。

      所以在這樣的內(nèi)卷期,作為普通用戶我們應(yīng)該怎么選擇模型呢?個人發(fā)表一點拙見。首先需要明確自己項目的要求和標準,精度和速度一般是最重要的兩個指標,另外還有模型參數(shù)量、計算量等等,注意這些還都必須在自己項目的設(shè)備上為前提。

      1.首先是精度,一看各家YOLO首頁的折線圖就知道了,都是恨不得自己一條最高全面壓住所有對手,當然這也是各家的主要賣點。這個復(fù)現(xiàn)也是最有保證的。但是我想說的是,雖然各家都會刷權(quán)威的COCO精度,但真到業(yè)務(wù)數(shù)據(jù)集上的時候,效果哪個高就不一定了,尤其是COCO精度差距在1.0以內(nèi)的模型,其實選哪個都行,再說也不能純看mAP,還有ap50 ap75 recall等指標呢。

      訓業(yè)務(wù)數(shù)據(jù)要高精度,最重要是一點是加載超強的pretrain權(quán)重!??!這個恐怕還是很多新手不知道的。COCO預(yù)訓練可以極快收斂并達到比imagenet-pretrain訓更高的精度,一個超強pretrain頂過絕大多數(shù)小修小改的tricks。之前yoloe也更新了一版yoloe plus也叫yoloe+,放出了objects 365預(yù)訓練,這個簡直是超級外掛,全量coco只訓80epoch刷的超高,我用了之后自己數(shù)據(jù)集相比加載原先coco預(yù)訓練漲了5個點mAP!還是縮短一半訓練epoch的情況下。

      之后還要訓一個20萬張圖的數(shù)據(jù)集,比coco量級還大的時候coco預(yù)訓練就不夠用了,訓300epoch甚至80epoch都和蝸牛一樣慢,而obj365預(yù)訓練正好派上用場估計訓30epoch就行。此外自監(jiān)督半監(jiān)督等策略,確實是可以提精度,作為大廠自己PR還是可以的,但是就用戶使用而言可能會有點雞肋麻煩,有點耗時耗資源。

      2.其次是第二賣點速度,這個不像精度很快就能跑復(fù)現(xiàn)證明的,鑒于各大YOLO發(fā)布的測速環(huán)境也不同,還是得自己實測過才知道。另外各大YOLO發(fā)布的速度只是去NMS去預(yù)處理的純模型速度,真正使用還是需要加上NMS和預(yù)處理的,NMS的參數(shù)對速度影響極大,尤其是score threshold還有top k keep k。

      score threshold一般為了拉高recall都會設(shè)置0.001 0.01之類的,這種范圍的低分框其實沒什么用,NMS階段會極大的浪費時間。但是調(diào)成0.1 0.2速度就飆升了,不過代價是掉一些mAP。而調(diào)top k keep k也會影響速度,尤其top k,但是都對mAP影響較小,具體可以自己實踐??傊畬嶋H應(yīng)用需要自己實踐不能只看論文速度,并且是算上NMS的耗時的,而NMS耗時又是自己可控的。

      3.然后是計算量參數(shù)量,這個一般不會著重考慮,但也不能太離譜畢竟有些設(shè)備還是有限制,堆模塊改成原版兩倍3倍級別換來一點點mAP的提升是AI競賽常用的套路,而且一般會犧牲些速度,意義不大。另外還有些特殊模塊,比如ConvNeXt 參數(shù)量極大但是FLOPs很小,會掉速度,可以刷點但也意義不大。csp形式的設(shè)計極大的降低了參數(shù)量FLOPs,也許以后新模塊都可以設(shè)計個csp_xxx去使用哈哈

      總之,YOLO內(nèi)卷時期要保持平常心,針對自己的需求,選準適合自己的模型。


        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多