主頁 >  其他 > 目標檢測之YOLOv4

目標檢測之YOLOv4

2022-01-02 07:32:46 其他

目標檢測之YOLOv4

  • 框架
  • 技巧Trick/優化
    • 1.BoF
    • 2.BoS
  • YOLO V4

論文地址:YOLOv4: Optimal Speed and Accuracy of Object Detection
源代碼:https://github.com/AlexeyAB/darknet,原作者YOLO V4的代碼是基于C++的
pytorch實作:
https://github.com/GZQ0723/YoloV4
https://github.com/Tianxiaomo/pytorch-YOLOv4

禁止任何形式的轉載!!!

YOLOV4兼顧了速度和精度(文中也說了設計的初心還是保證大家用單張顯卡就能完成實驗),所以這里先對YOLO V4簡單總結一下,后續有時間會把一些內容展開(可以點進藍色字體的鏈接get相應的知識),
在這里插入圖片描述

框架

文中將檢測的框架進行了劃分:
在這里插入圖片描述
先不講YOLO V4的具體結構,先把這個框架講完,YOLO V4無非就是從這個框架里選取出來的,

? Input:Image, Patches, Image Pyramid
? Backbones(提取特征):VGG, ResNet, DenseNet,ResNeXt,CSPResNeXt50,CSPDarknet53(手工設計的適合在GPU上用);SqueezeNet,MobileNet,ShuffleNet,GhostNet,MixNet(輕量級網路,CPU上比較友好);此外還有通過自動搜索得到的網路結構SpineNet, EfficientNet-B0/B7 , EfficientNet V2
? Neck(收集提取到的特征):

  1. Additional blocks:通常為注意力模塊(SE,SAM );多尺度模塊(SPP, ASPP,DCN,RFB)
  2. Path-aggregation blocks:聚合不同的特征FPN, PAN,NAS-FPN, Fully-connected FPN, BiFPN, ASFF, SFAM

? Heads(輸出檢測結果):單階段是在整個特征圖上進行預測,最侄訓輸出很多檢測結果,所以是Dense Prediction;兩階段是在候選框的基礎上再預測,結果就相對較少,Sparse Prediction,

  1. Dense Prediction (one-stage):
    ? RPN, SSD, YOLO, RetinaNet(anchor based)
    ? CornerNet, CenterNet, MatrixNet, FCOS(anchor free)
  2. Sparse Prediction (two-stage):
    ? Faster R-CNN, R-FCN, Mask RCNN(anchor based)
    ? RepPoints(anchor free)

技巧Trick/優化

BoF與BoS可以理解為一些漲點的Trick,BoF不影響測驗的時間,會影響訓練的時間;BoS會犧牲一部分的測驗時間,

1.BoF

一般來說都是在輸入,輸出和訓練方式做文章,而不是對網路做更改,只有這樣才不會影響推理時間,
資料增強
基本的一些請看【資料增強綜述】(這個人講得超棒);沒有涉及到的這里單列一下
Random erasing,隨機擦除隨機選擇影像中的一個矩形區域,并用隨機值擦除其像素,
Cutout,原論文有兩種方法,簡單方式選擇一個固定大小的正方形區域,然后將該區域填充為0即可;有針對性的方法,專門從影像的輸入中洗掉影像的重要特征,具體是:在訓練的epoch程序中,保存每張圖片輸出的最大特征激活點,在下一回合,對最大激活圖上采樣到和原圖一樣大,使用閾值劃分為二值圖,蓋在原圖上再輸入cnn中訓練,
hide-and-seek ,不再通過隨機位置確定patch的位置,而是將原圖劃分為若干份,然后對劃分的每一份依概率進行隱藏,如果簡單的將像素值替換為0,暴力填黑,會造成訓練和測驗資料分布不一致問題,因此,作者采用整個資料集的均值來處理【不是單張影像的均值】
GridMask:
在這里插入圖片描述

正則化:Dropout、Dropconnect、Dropblock,對于全連接,DropOut是將神經元激活輸出隨機置0,而DropConnect是作用于輸入神經元的權重,以一定概率將與其相連的輸入權重清0,對于卷積,卷積層的特征是空間強相關的,即使有DropOut,資訊仍能傳送到下一層,DropBlock的本質其實就是將Cutout方法應用于CNN的每一個特征圖,
在這里插入圖片描述

Spatial Dropout常用于NLP中,是對特征層的整個通道drop,
DropPath是將深度學習模型中的多分支結構隨機失活的一種正則化策略,
在這里插入圖片描述

語意分布偏差(如:資料樣本類別不平衡;類別間有關聯):

  1. 資料樣本類別不平衡:難例挖掘hard negative example mining(通常用于兩階段方法,因為RPN之后的有些負樣本很容易被分對);OHEM(正負樣本都挖掘,根據損失排序選出難樣本,并作為ROI網路的輸入);Focal Loss(單階段網路不像雙階段,雙階段會先選取候選框,把正負樣本控制在一定比例);GHM梯度均衡機制(梯度越大,越不好分);IoU bbalance loss(針對正樣本的,強化分類和回歸的關系,高IoU低socre,低IoU高socre)

  2. 類別間有關聯:Label Smoothing;基于知識蒸餾的soft label

邊框回歸:IoU GIoU DIoU CIoU Loss

2.BoS

  1. 往網路里加入一些漲點的模塊
    增強感受野的多尺度模塊:SPP, ASPP,DCN,RFB
    注意力機制:SE,SAM
    特征聚合:skip connection,hyper-column,FPN, PAN,NAS-FPN, Fully-connected FPN, BiFPN, ASFF, SFAM
    激活函式
    在這里插入圖片描述

  2. 后處理方法
    NMS:是直接刪去周圍非最大分數的框,將IoU大于閾值的視窗的得分全部置為0,
    Soft NMS:核心是降低置信度,而非直接洗掉,這樣可以保留下一些靠得比較密集的目標,只抑制同一物體上重復的框,不過這是理想狀況,實際還需要調參,
    在這里插入圖片描述
    上面這個線性加權公式是不連續的,導致box集合中的score出現斷層,因此就有了下面這個式子(大部分實驗中采用的式子),高斯函式是連續的,而且離得越近函式越高聳,衰減越大,滿足在沒有重疊時應該沒有懲罰,在高重疊時應該有很高的懲罰,
    DIoU NMS: DIoU替代IoU 作為NMS的評判準則
    在這里插入圖片描述
    引數β用于控制中心距離所代表的重要性
    在這里插入圖片描述
    為什么不用CIOU_nms?因為CIOU,是在DIOU基礎上添加形狀,包含groundtruth標注框的資訊,在訓練時用于回歸,但在測驗程序中,并沒有groundtruth的形狀資訊,除非我們之前事先知道待檢測的目標的長寬形狀比例,這個時候我們可以事先規定后計算CIOU,

YOLO V4

上面提到那么多的方法,我再來看看究竟如何在“選單”里面點菜,
先是來一份"硬菜"——主干網路:對分類最優的參考模型并不總是對檢測器最優的,與分類器相比,檢測器需要滿足以下要求:

①更大的網路輸入解析度——用于檢測小目標
②更深的網路層——能夠覆寫更大面積的感受野
③更多的引數——更好的檢測同一影像內不同size的目標

這里選擇了CSPDarknet53

再來一些陪襯的"小菜"——一些漲點的模塊SAMSPP additional module、PANet path-aggregation neck、YOLOv3 head

在這里插入圖片描述
網路結構解讀
CSP:Cross Stage Partial,可以增強CNN的學習能力,能夠在輕量化的同時保持準確性、降低計算瓶頸、降低記憶體成本,顧名思義就是將特征分成兩部分,一部分的特征直接送到下一階段,另一部分的特征經過多層Conv,
在這里插入圖片描述

PAN:Neck部分主要用來融合不同尺寸特征圖的特征資訊,
在這里插入圖片描述
這YOLOv4里進行過改動:相加改為拼接
在這里插入圖片描述

SAM改進:將SAM從空間上的attention修改為點上的attention
在這里插入圖片描述
激活函式: 由于PRELU和SELU的訓練難度較大,而ReLU6是專門的量化網路的設計,最后主干網路選擇了Mish,在后面輸出的部分是用的leaky-ReLU,

結構完成之后,無非就是一些提升性能的方法了:
邊界框回歸損失: CIoU Loss
類別損失:Class label smoothing
資料增強:CutOut, CutMix
正化方法:DropBlock
后處理:DIoU-NMS
訓練策略:余弦退火學習率(Cosine Annealing LR),遺傳演算法選擇超引數,隨機多尺寸訓練,

自我對抗訓練(SAT):在第一階段,神經網路會更改原始影像,而不是網路權重,這樣,神經網路通過改變原始影像,從而創造了一種影像上沒有想要目標的假象,對其自身執行了對抗攻擊,在第二階段,訓練神經網路以正常方式檢測此修改影像上的目標,

CmBN:CBN解決BN批次太小的問題,batch不想調大,但是有希望能達到batch很大的效果,就采用統計前幾個迭代的均值和方差,CBN屬于利用不同的iter資料來變相擴大batchsize從而改進模型的效果,而CmBN做的改動是僅收集單個batch中的mini-batches之間的統計資訊,具體可以看這里,講得比較清晰,CmBN是CBN的簡化版本,其唯一差別就是在計算第t時刻的BN統計量時候,CBN會考慮前一個mini batch內部的統計量,而CmBN版本,所有計算都是在mini batch內部,
在這里插入圖片描述

Multiple anchors for a single ground truth:如果IoU(ground truth, anchor) > 閾值,為一個ground truth使用多個anchor,(需要考證)

消除網路敏感性:之前使用sigmoid來偏移,需要tx為極端的值才能使得sigmoid(tx)為0或者1,所以在前面乘一個大于1的數,讓他不需要輸出極端大或者小的值就能達到網格端點,
在這里插入圖片描述

MS COCO目標檢測實驗中,默認的超引數為:

  • 訓練步驟為500500;
  • 采用初始學習速率0.01的步長衰減學習速率策略,在400000步和450000步分別乘以因子0.1;
  • momentum衰減為0.9,weight衰減為0.0005,
  • 所有的架構都使用一個GPU來執行批處理大小為64的多尺度訓練,而小批處理大小為8或4取決于架構和GPU記憶體限制,

除了使用遺傳演算法進行超引數搜索實驗外,其他實驗均使用默認設定,
遺傳演算法利用YOLOv3-SPP進行帶GIoU損失的訓練,搜索300個epoch的min-val5k集,

  • 遺傳演算法實驗采用搜索學習率0.00261、momentum0.949、IoU閾值分配ground truth
    0.213、損失歸一化器0.07,

遺傳演算法這里講得很簡單易懂:

  1. 就是很多組引數分別進行訓練;
  2. 淘汰里面評價指標很差的引陣列合,留下表現最好的部分超引陣列合;
  3. 將保留下來的引陣列合,選擇出的兩個超引陣列合進行交叉形成新的超引陣列合進入下一個環節(類比于優良基因的交配),父母”超引陣列合并不是使用均勻的隨機采樣,而是基于輪盤賭的演算法(按評價指標來進行采樣,評價指標越好被采樣的概率越大);
  4. 交叉得到的新的“孩子”超引陣列合也需要發生變異,交叉生成新的超引陣列合之后,需要在新超引陣列合上隨機選擇若干個超引數,隨機修改超引數的值,這樣能突破了當前搜索的限制,更有利于演算法尋找到更優的解;
  5. 最后不斷的迭代,優勝劣汰,交配繁衍,變異進化,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/400400.html

標籤:其他

上一篇:OpenCV-Python教程:霍夫變換~圓形(HoughCircles)

下一篇:cyw前端相關作品

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more