YOLOv4重磅发布,五大改进,二十多项技巧实验,堪称最强目标检测万花筒
今年2月22日,知名的 DarkNet 和 YOLO 系列作者?Joseph Redmon 宣布退出 CV 界面,這也就意味著 YOLOv3 不會再有官方更新了。但是,CV 領(lǐng)域進(jìn)步的浪潮仍在滾滾向前,仍然有人在繼續(xù)優(yōu)化 YOLOv3。今日,著名的AlexeyAB版本發(fā)布了 YOLOv4的論文。該論文提出了五大改進(jìn),二十多個技巧的實驗,可以說 YOLOv4是一項非常solid的工作。
論文題目:YOLOv4: Optimal Speed and Accuracy of Object Detection
論文鏈接:https://arxiv.org/pdf/2004.10934.pdf
開源代碼:https://github.com/AlexeyAB/darknet
首先,看一下作者論文上的效果圖,可以說在平均精度(mAP)和速度上,遠(yuǎn)超 YOLOv3版本(文中提到 mAP 提升 10個點,速度提升12%)。
筆者仔細(xì)閱讀了該論文,可以說 YOLOv4 是做了很多扎實的(solid)的工作。下面我們首先簡單介紹一下該論文,然后詳細(xì)介紹論文提到的五大改進(jìn)和二十多項最新目標(biāo)檢測技巧的實驗。
1
如何看待YOLOv4
目前,工業(yè)界常用的目標(biāo)檢測算法,SSD 是 2015年發(fā)表的,RetinaNet、 Mask R-CNN、Cascade R-CNN 是 2017 年發(fā)表的,YOLOv3 是2018年發(fā)表的。時光荏苒,過去的五年,深度學(xué)習(xí)也在不斷更新,從激活函數(shù)上,到數(shù)據(jù)增強,到網(wǎng)絡(luò)結(jié)構(gòu),都有大量的創(chuàng)新。而YOLOv4這項工作,?可以說是既往開來。
如果用一個詞來評論這篇論文,那就是“良心”。這篇文章試驗對比了大量的近幾年來最新的深度學(xué)習(xí)技巧,例如? Swish、Mish激活函數(shù),CutOut和CutMix數(shù)據(jù)增強方法,DropPath和DropBlock正則化方法,也提出了自己的創(chuàng)新,例如?Mosaic (馬賽克) 和?自對抗訓(xùn)練數(shù)據(jù)增強方法,提出了修改版本的 SAM 和 PAN,跨Batch的批歸一化(BN),共五大改進(jìn)。所以說該文章工作非常扎實,也極具創(chuàng)新。
而且作者也在文中多次強調(diào),這是一個平衡精度和速度的算法,大的模型,例如Mask-RCNN和Cascade R-CNN在比賽中可以霸榜,但速度太慢;小的模型速度快,但精度又不高。另外,當(dāng)今的不少模型因為太大,需要很多GPU 進(jìn)行并行訓(xùn)練,而 YOLOv4 可以在一塊普通的GPU(1080Ti)上完成訓(xùn)練,同時能夠達(dá)到實時性,從而能夠在生產(chǎn)環(huán)境中部署。
2
YOLOv4作者的思考
作者總結(jié)的 YOLOv4 三大貢獻(xiàn):
設(shè)計了強大而高效的檢測模型,任何人都可以用 1080 Ti 和? 2080 Ti訓(xùn)練這個超快而精準(zhǔn)的模型。
驗證了很多近幾年 SOTA 的深度學(xué)習(xí)目標(biāo)檢測訓(xùn)練技巧。
修改了很多 SOTA 的方法, 讓它們對單GPU訓(xùn)練更加高效,例如 CBN,PAN,SAM等。
作者總結(jié)了近幾年的單階段和雙階段的目標(biāo)檢測算法以及技巧,并?用一個圖概括了單階段和雙階段目標(biāo)檢測網(wǎng)絡(luò)的差別,two stage的檢測網(wǎng)絡(luò),相當(dāng)于在one stage的密集檢測上增加了一個稀疏的預(yù)測器,或者說one stage網(wǎng)絡(luò)是 two stage的 RPN部分,是它的一個特例或子集。
作者將那些增加模型性能,只在訓(xùn)練階段耗時增多,但不影響推理耗時的技巧稱為?—— 贈品(bag of freebies),也就是白給的提高精度的方法。而那些微微提高了推理耗時,卻顯著提升性能的,叫做——特價(bag of specials),就是那些不免費,但很實惠的技巧。
bag of freebies
以數(shù)據(jù)增強方法為例,雖然增加了訓(xùn)練時間,但可以讓模型泛化性能和魯棒性更好。例如下面的常見增強方法:
圖像擾動,
改變亮度、對比對、飽和度、色調(diào)
加噪聲
隨機縮放
隨機裁剪(random crop)
翻轉(zhuǎn)
旋轉(zhuǎn)
隨機擦除(random erase)
Cutout
MixUp
CutMix
下圖是作者在訓(xùn)練模型時用的圖像增強方法:
另外,還有常見的正則化方法:
DropOut
DropConnect
DropBlock
平衡正負(fù)樣本的方法:
Focal loss
OHEM(在線難分樣本挖掘)
此外,還有回歸 loss的改進(jìn):
GIOU
DIOU
CIoU
凡此種種,都是訓(xùn)練時候的改進(jìn)技巧,不影響推理速度,都可以稱為贈送品。
bag of specials
特價品是指稍微增加推理的耗時,但是顯著提升性能的技巧。
例如增大感受野技巧:
SPP
ASPP
RFB
注意力機制:
Squeeze-and-Excitation (SE), 增加2%計算量(但推理時有10%的速度),可以提升1%的ImageNet top-1精度。
Spatial Attention Module (SAM),增加0.1%計算量,提升0.5%的top-1準(zhǔn)確率。
特征融合集成:
FPN
SFAM
ASFF
BiFPN (也就是大名鼎鼎的EfficientDet)
更好的激活函數(shù):
ReLU
LReLU
PReLU
ReLU6
SELU
Swish
hard-Swish
后處理非最大值抑制算法:
soft-NMS
DIoU NMS
3
YOLOv3模型設(shè)計
作者針對 GPU和 VPU 分別使用不同的組卷積策略,GPU 使用 1~8 組卷積,?對VPU則使用完全的組卷積。網(wǎng)絡(luò)結(jié)構(gòu)采用的CSPResNeX50和CSPDarknet53。
作者提到,CSPResNeX50分類精度比CSPDarknet,但是檢測性能卻不如后者。
為了讓模型可以在單個GPU上訓(xùn)練的的更快,作者使用了以下幾個技巧:
獨創(chuàng)的數(shù)據(jù)增強方法 Mosaic (馬賽克) 和?自對抗訓(xùn)練(Self Adversarial Training, SAT)
使用遺傳算法選擇最優(yōu)超參數(shù)
修改版本的 SAM,修改版本的PAN和跨批量歸一化(Cross mini-Batch Normalization)
這個Mosaic,就是把四張圖片拼接為一張圖片,這等于變相的增大了一次訓(xùn)練的圖片數(shù)量,可以讓最小批數(shù)量進(jìn)一步降低,讓在單GPU上訓(xùn)練更為輕松。
這里的CmBN,是對CBN的改進(jìn),收集一個batch內(nèi)多個mini-batch內(nèi)的統(tǒng)計數(shù)據(jù)。BN, CBN, CmBN的區(qū)別如下圖所示:
此外,作者還將 SAM的空間注意力改為逐點注意力,并將 PAN的快捷連接的相加改為拼接(concatenation)。
一個完整的YOLOv4 由以下三部分組成:CSPDarknet53 (backbone) +?SPP+PAN (Neck,也就是特征增強模塊)+ YoloV3組成。
另外,YOLOv4使用了“贈送”技巧有CutMix、Mosaic 數(shù)據(jù)增強, DropBlock正則化,標(biāo)簽平滑,CIoU-loss,CmBN,自對抗訓(xùn)練,每個目標(biāo)分配給多個anchor,(這點和v3有差別,v3版本每個目標(biāo)只有一個正樣本)。
使用的“特價”技巧:Mish activation、跨階段空間連接 (CSP),多輸入權(quán)重殘差連接,SPP-block、SAM-block,PAN,DIoU-NMS。
4
試驗結(jié)果
作者做了大量的對比消融試驗,在分類任務(wù)上,在CSPResNeXt50和CSPDarknet53上,使用不同配置的結(jié)果對比如下:
作者使用的多個技巧,在檢測任務(wù)上的對比結(jié)果如下(這里需要讀論文對照一下每個符號的含義):
最后,是在Maxwell、Pascal、Volta三個不同系列的GPU,在COCO 數(shù)據(jù)集上的結(jié)果對比:
總的來說,YOLOv4是在速度和精度上trade off做的非常好的一項工作。
5
總結(jié)
筆者本來想詳盡的介紹一下本論文,但發(fā)現(xiàn)這篇paper信息量太大,難以在一篇博文描述完。可以看出作者是實打?qū)嵉淖隽撕芏嘟鼛啄甑母鞣N技巧的對比實驗,也做了不少方法的創(chuàng)新改進(jìn)。可以說這是一篇花了很多功夫和精力的論文。推薦大家讀一下論文,文章寫的真的非常通俗易懂,總結(jié)了大量的技巧,甚至可以做為目標(biāo)檢測面試寶典。
往期精彩回顧適合初學(xué)者入門人工智能的路線及資料下載機器學(xué)習(xí)在線手冊深度學(xué)習(xí)在線手冊AI基礎(chǔ)下載(pdf更新到25集)本站qq群1003271085,加入微信群請回復(fù)“加群”獲取一折本站知識星球優(yōu)惠券,復(fù)制鏈接直接打開:https://t.zsxq.com/yFQV7am喜歡文章,點個在看
總結(jié)
以上是生活随笔為你收集整理的YOLOv4重磅发布,五大改进,二十多项技巧实验,堪称最强目标检测万花筒的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【深度总结】聊聊为什么技术要先广后精,对
- 下一篇: PyTorch 1.5 发布,与 AWS