㈠ 本地顯卡掛載到雲伺服器上去
將本地顯卡掛載到雲伺服器扒襲上需要使用GPU虛擬化技術,這通常需要在雲服務提供商的平台上進行設置和配置。以下是一些可能的步驟:
1. 選擇支持GPU虛擬化的雲伺服器:首先要確保您選擇了支持GPU虛擬化的雲伺服器,例如AWS EC2、Azure VM等。
2. 安裝驅動程序:安裝與您本地顯卡相對應版本的驅動程序,並確保其能夠正常工作。
3. 配置虛擬機:創建一個新的虛擬機實例,並啟用GPU加速選項。根據不同平台和操作系統,具體配置方法會有所不同,請參考相關文檔或聯系雲服務提供商獲取幫助。
4. 測試並調整性能:完成以上步驟後,可以測試並調整性能春戚兄以達到最佳效果。如果遇到問題或無法仔遲解決,請咨詢相關技術人員尋求幫助。
需要注意的是,在使用GPU加速時要注意資源分配和管理,以免影響其他任務或造成額外費用。
㈡ yolov4-masaic數據增強方法
yolov4-masaic數據增強方法
原文鏈接: Mosaic數據增強_Alex-CSDN博客_mosaic數據增強
原理:Mosaic數據增強方式簡單來說就是把4張圖片,通過隨機縮放、隨機裁減、隨機排布的方式進行握態拼接。根據論文的說法,優點是豐富了檢源檔測物體的背景和小目標,並且在計算Batch Normalization的時候一次會計算四張圖片的數據,使得mini-batch大小不需要很大,一個GPU就可以達到比較好的效果。
流程圖:
優點:
豐富數據集:隨機使用4張圖片,隨機縮放,再隨機分布進行拼接,大大豐富了檢測數據集,特別是隨機縮放增加了很多小目標,讓網路的魯棒性更好
減少GPU:直接計算4張圖片的數據,使得Mini-batch大小並不需要很大,一個GPU就可以達到雹皮亂比較好的效果
缺點:
如果我們的數據集本身就有很多的小目標,那麼Mosaic數據增強會導致本來較小的目標變得更小,導致模型的泛化能力變差
㈢ 沒有顯卡能用虛擬顯卡嗎
啟用Docker虛擬機GPU,加速深度學習_AndyCheng_hgcc的博客
Docker虛擬機首先說一下Docker虛擬機。為什麼需要虛擬機?不知道你是否有過這樣的經歷,在github上看到一個有趣的開源項目,把代碼下載下來,按照項目上的說明編譯運行,結果發現怎麼也不能成功。
繼續訪問
linux怎麼訓練神經網路,神經網路訓練在Linux虛擬機的速度快過...
checkbias:float64checkdata:float64==>floattype:float32Datasetisloaded...train60000andtest10000Epoch1:5542/10000,Cost(ontrain):1.9846122093061607,roundtime(s):20.16...
繼續訪問
深度學習訓練吃顯卡_深度學習為什麼需要顯卡計算?
先解釋一點,深度學習為什麼需要顯卡計算?GPU是為大規模的並行運算而優化;GPU上則更多的是運算單元(整數、浮點的乘加單元,特殊運算單元等等);GPU往往擁有更大帶寬的顯存,因此在大吞吐量的應用中也會有很好的性能。這里有一個很有趣的解釋視頻,解釋了GPU和CPU的計算區別。所以顯卡選擇最重要,因為准備基於CUDA計算(CUDA(ComputeUnifiedDevice...
繼續訪問
深度學習沒有GPU怎麼辦?
方案內容缺點方案一廳戚買礦卡P106-100,閑魚上不寫運費的都是默認順豐到付,我試了下,已經起糾紛了.礦卡損耗極大,買這個基本接盤,現在還在和賣家磨嘴皮子退貨方案二嘗試kagglenotebook訓練中途把模型傳到gitlfs,因為是大型文件,所以不能github,只能是gitlfsgit的機制是會記錄歷史數據,然後gitlfs...
繼續訪問
實驗室一塊GPU都沒有怎麼做深度學習?
鏈接:https://pan..com/s/1ncREw6Na9ycZptdxiVMApw
繼續訪問
在Windows11平台上使用Hyper-V、WSL與虛擬機工具——調用NVIDIA-GPU進行深度學習訓練
1、目的是出於在window上安裝虛擬機穿透nvidia-gpu進行gpu調用加速。2、英偉達正式啟用GPU虛擬機顯卡直通功能:英偉達宣布,完全支持GeForceGPU直通技術,該技術允許虛擬機從主機上訪問GPU。
繼續訪問
熱門推薦虛擬機上不能使用CUDA
虛擬機的顯卡是虛擬的,不能中拆使用CUDA(至少很難),搞了一天才晃過神來:
繼續訪問
無GPU咋做深度學習、AI?恆源雲使用指南
搞深度學習沒有GPU可咋辦,老師不給買,colab又不穩定,難道自己配一台深度學習工作站嗎?由於之前的礦潮和晶元荒,且不說買的顯卡是否夠用,現在顯卡價格還處於高位,現在買一塊顯卡還是挺虧的!經過本人不斷探索,終於找到了一家便宜、好用的GPU雲伺服器平台,恆源雲(賣伏棗gpushare.com)。對於學生黨,第一要位就是價格,各位看官看下圖,3090隻要3r/h,2080ti也只要2r/h,這個價格夠公道了吧!平常跑跑模型用不了幾個錢,而且新手或者學生的代金券領完也100多r,這合計40多小時的3090免費
繼續訪問
最新發布深度學習訓練模型時,GPU顯存不夠怎麼辦?
作者丨遊客26024@知乎(已授權)編輯丨極市平台來源丨https://www.hu.com/question/461811359/answer/2492822726題外話,我為什麼要寫這篇博客,就是因為我窮!沒錢!租的伺服器使用多GPU時一會錢就燒沒了(gpu內存不用),急需要一種trick,來降低內存加速。回到正題,如果我們使用的數據集較大,且網路較深,則會造成訓練較慢,此時我們要想加...
繼續訪問
gcp試用gpu_如何在GCP上創建啟用GPU的VM來訓練您的神經網路
gcp試用,.(s)...
繼續訪問
安裝虛擬機之後怎麼配置虛擬環境、深度學習、深度強化學習環境安裝
一、配置虛擬機VMware安裝包&Ubuntu的光碟映像文件:在下面鏈接中選擇自己想要下載的Linux系統光碟映像文件和VMware安裝包。下載鏈接:下載Ubuntu&VMware的網盤鏈接.VMware安裝安裝鏈接:VMware安裝的CSDN鏈接.Ubuntu安裝打開VMware,點擊創建新的虛擬機選擇典型(推薦),並進入下一步瀏覽我們下載的iso文件目錄安裝程序光碟映像文件輸入自己的信息選擇一個適合的磁碟,新建一個文件夾作為安裝虛擬機的位置之後按照
繼續訪問
顯卡給2個虛擬機_虛擬化下的顯卡
5G時代的到來讓PC/圖形工作站有了更大的突破。不受帶寬和網路的限制,圖形計算以及重載應用的「雲」需求將爆發式增長,圖形雲將成為未來的趨勢。圖形處理引擎——顯卡所有電腦都有一個重要的硬體——顯卡(GPU)。GPU是圖形處理的核心部件,對圖形處理起到加速作用。顯卡採用立方環境的材質貼圖、硬體T&L、頂點混合、凹凸的映射貼圖和紋理壓縮、雙重紋理四像素256位的渲染引擎等重要技術,在...
繼續訪問
沒有顯卡怎麼使用anaconda配置tensorflow深度學習環境
深度學習環境配置——windows下的tensorflow-cpu=2.2.0環境配置環境內容tensorflow-cpu:2.2.0無需裝keras,tensorflow因為自帶了。環境配置一、Anaconda安裝Anaconda的安裝主要是為了方便環境管理,可以同時在一個電腦上安裝多種環境,不同環境放置不同框架:pytorch、tensorflow、keras可以在不同的環境下安裝,只需要使用condacreate–n創建新環境即可。1、Anaconda的下載——————..
繼續訪問
實驗室沒有顯卡怎麼深度學習
最近顯卡奇缺,遍歷了網上各種平台薅GPU羊毛,這里給大家介紹以下這個平台的福利!!!先附上鏈接:恆源雲_GPUSHARE-恆源智享雲恆源智享雲gpushare.com是一個專注AI行業的共享算力平台,旨在為用戶提供高性比價的GPU雲主機和存儲服務,讓用戶擁有高效的雲端編程和訓練體驗,不再擔憂硬體迭代/環境搭建/數據存儲等一系列問題。https://gpushare.com/auth/register?user=18*****7729&fromId=ce701711122&sou
繼續訪問
【深度學習CPU(番外篇)——虛擬內存】
㈣ YOLO(一) 演算法的原理及演變
第一次接觸到yolo這個演算法是通過吳恩達的教學視頻了解到的,當時其實也算是第一次接觸到目標檢測演算法。這里我們主要介紹下YOLO(You Only Look Once)。現在已經進化到了V3版本了。它不同於Faster RCNN這個分支走的兩部策略先進行前景識別在進行目標檢測,它是直接一步到位進行目標檢測。因此在識別的速度物掘上優於Faster RCNN(5 FPS), 而 YOLO_v1基礎版在Titan X GPU上可以達到45幀/s; 快速版可以達到150幀/s。但是在准確率上YOLO是稍差與Faster RCNN這個在之後會詳細介紹。順便提下如果想了解Faster RCNN原理可以參考 Faster-RCNN的原理及演變 。
我們知道YOLO其實就是 You Only Look Once, 意思是只需要看一眼就知道位置及對象,個人覺得蠻形象的。他不需要Faster RCNN的RPN結構,他其實選取anchor是預訂了候選框,將圖片劃分為7x7的網格,每個網格允許有2個不同的bounding box. 這樣一開始我們就有7x7x2個候選框(bounding box), 大致粗略覆蓋了圖像的整個區域。他的思想就是Faster RCNN在第一階段就算有了回歸框,在第二階段還是需要進行精調,那還不如就先生成大致回歸框就ok了。
下面我們就來好好介紹一下這個模型。
一、模型結構
其實將這個模型簡單話為:
那30又是如何形成的通道大小的呢?
a. 2個bounding box的位置(8個通道)
每個bounding box需要4個數值來表示其位置,(Center_x,Center_y,width,height),即(bounding box的中心點的x坐標,y坐標,bounding box的寬度,高度),2個bounding box共需要彎螞亮8個數值來表示其位置。
b. 2個bounding box 置信度(2個通道)
c. 20分類概率(20個通道)
下面我們來說一下剩下20維度的分類通道。每一個通道代表一個類別的分類概率。因為YOLO支持識別20種不同的對象(人、鳥、貓、汽車、椅子等),所以這里有20個值表示該網格位置存在任一種對象的概率。 但是我們一組圖片只能預測49個對象,可以理解為一個grid2個achor只能有一個預測準的對象(即計算IOU比例最大的那個anchor),所以7x7個對象 。
圖中將自行車的位置放在bounding box1,但實際上是在訓練過程中等網路輸出以後,比較兩個bounding box與自行車實際位置的IOU,自行車的位置(實際bounding box)放置在IOU比較大的那個bounding box(圖中假設是bounding box1),且該bounding box的置信度設為1
二、 損失函數
總的來說,就是用網路輸出與樣本標簽的各項內容的誤差平埋寬方和作為一個樣本的整體誤差。
損失函數中的幾個項是與輸出的30維向量中的內容相對應的。
三、 YOLO v1 缺陷
注意:
細節:
YOLO的最後一層採用線性激活函數,其它層都是Leaky ReLU。訓練中採用了drop out和數據增強(data augmentation)來防止過擬合。更多細節請參考原論文
在67 FPS,YOLOv2在PASCAL VOC 2007上獲得76.8%的mAP。在40 FPS時,YOLOv2獲得78.6%mAP,這比使用ResNet和SSD 更快的R-CNN更好。憑借如此優異的成績,YOLOv2於2017年CVPR發布並獲得超過1000次引用。YOLO有兩個缺點:一個缺點在於定位不準確,另一個缺點在於和基於region proposal的方法相比召回率較低。因此YOLOv2主要是要在這兩方面做提升。另外YOLOv2並不是通過加深或加寬網路達到效果提升,反而是簡化了網路。
下面主要從兩點來介紹下YOLO v2的提升之處。分別是Better以及Faster.
1、Darknet-19
在YOLO v1中,作者採用的訓練網路是基於GooleNet,這里作者將GooleNet和VGG16做了簡單的對比,GooleNet在計算復雜度上要優於VGG16(8.25 billion operation VS 30.69 billion operation),但是前者在ImageNet上的top-5准確率要稍低於後者(88% VS 90%)。而在YOLO v2中,作者採用了新的分類模型作為基礎網路,那就是Darknet-19。Table6是最後的網路結構:Darknet-19隻需要5.58 billion operation。這個網路包含19個卷積層和5個max pooling層,而在YOLO v1中採用的GooleNet,包含24個卷積層和2個全連接層,因此Darknet-19整體上卷積卷積操作比YOLO v1中用的GoogleNet要少,這是計算量減少的關鍵。最後用average pooling層代替全連接層進行預測。這個網路在ImageNet上取得了top-5的91.2%的准確率。
2、Training for Classification
這里的2和3部分在前面有提到,就是訓練處理的小trick。這里的training for classification都是在ImageNet上進行預訓練,主要分兩步:1、從頭開始訓練Darknet-19,數據集是ImageNet,訓練160個epoch,輸入圖像的大小是224 224,初始學習率為0.1。另外在訓練的時候採用了標準的數據增加方式比如隨機裁剪,旋轉以及色度,亮度的調整等。2、再fine-tuning 網路,這時候採用448 448的輸入,參數的除了epoch和learning rate改變外,其他都沒變,這里learning rate改為0.001,並訓練10個epoch。結果表明fine-tuning後的top-1准確率為76.5%,top-5准確率為93.3%,而如果按照原來的訓練方式,Darknet-19的top-1准確率是72.9%,top-5准確率為91.2%。因此可以看出第1,2兩步分別從網路結構和訓練方式兩方面入手提高了主網路的分類准確率。
3、Training for Detection
在前面第2步之後,就開始把網路移植到detection,並開始基於檢測的數據再進行fine-tuning。首先把最後一個卷積層去掉,然後添加3個3 3的卷積層,每個卷積層有1024個filter,而且每個後面都連接一個1 1的卷積層,1 1卷積的filter個數根據需要檢測的類來定。比如對於VOC數據,由於每個grid cell我們需要預測5個box,每個box有5個坐標值和20個類別值,所以每個grid cell有125個filter(與YOLOv1不同,在YOLOv1中每個grid cell有30個filter,還記得那個7 7 30的矩陣嗎,而且在YOLOv1中,類別概率是由grid cell來預測的,也就是說一個grid cell對應的兩個box的類別概率是一樣的,但是在YOLOv2中,類別概率是屬於box的,每個box對應一個類別概率,而不是由grid cell決定,因此這邊每個box對應25個預測值(5個坐標加20個類別值),而在YOLOv1中一個grid cell的兩個box的20個類別值是一樣的)。另外作者還提到將最後一個3 3*512的卷積層和倒數第二個卷積層相連。最後作者在檢測數據集上fine tune這個預訓練模型160個epoch,學習率採用0.001,並且在第60和90epoch的時候將學習率除以10,weight decay採用0.0005。
這里yolo v3相對於yolo v2有三點:1. 利用多尺度特徵進行對象檢測 2. 調整基礎網路結構
㈤ 【目標檢測】YOLO論文詳解(You Only Look Once: Unified, Real-Time Object Detection)
論文原文: https://arxiv.org/abs/1506.02640
YOLO(you only look once)是繼RCNN、faster-RCNN之後,又一里程碑式的目標檢測演算法。yolo在保持不錯的准確度的情況下,解決了當時基於深度學習的檢測中的痛點---速度問題。下圖是各目標檢測系統的檢測性能對比:
如果說faster-RCNN是真正實現了完全基於深度學習的端到端的檢測,那麼yolo則是更進一步,將 目標區域預測 與 目標類別判斷 整合到單個神經網路模型中。各檢測演算法結構見下圖:
每個網格要預測B個bounding box,每個bounding box除了要回歸自身的位置之外,還要附帶預測一個confidence值。這個confidence代表了所預測的box中含有object的置信度和這個box預測的有多准兩重信息,其值是這樣計算的:
其中如果有object落在一個grid cell里,第一項取1,否則取0。第二項是預測的bounding box和實際的groundtruth之間的IoU值。
每個bounding box要預測(x, y, w, h)和confidence共5個值,每個網格還要預測一個類別信息,記為C類。即SxS個網格,每個網格除了要預測B個bounding box外,還要預測C個categories。輸出就是S x S x (5*B+C)的一個tensor。(注意:class信息是針對每個網格的,即一個網格只預測一組類別而不管裡面有多少個bounding box,而confidence信息是針對每個bounding box的。)
舉例說明: 在PASCAL VOC中,圖像輸入為448x448,取S=7,B=2,一共有20個類別(C=20)。則輸出就是7x7x30的一個tensor。整個網路結構如下圖所示:
在test的時候,每個網格預測的class信息和bounding box預測的confidence信息相乘,就得到每個bounding box的class-specific confidence score:
等式左邊第一項就是每個網格預測的類別信息,第二三項就是每個bounding box預測的confidence。這個乘積即encode了預測的box屬於某一類的概率,也有該box准確度的信息。
得到每個box的class-specific confidence score以後,設置閾值,濾掉得分低的boxes,對保留的boxes進行NMS(非極大值抑制non-maximum suppresssion)處理,就得到最終的檢測結果。
1、每個grid因為預測兩個bounding box有30維(30=2*5+20),這30維中,8維是回歸box的坐標,2維是box的confidence,還有20維是類別。其中坐標的x,y用bounding box相對grid的offset歸一化到0-1之間,w,h除以圖像的width和height也歸一化到0-1之間。
2、對不同大小的box預測中,相比於大box預測偏一點,小box預測偏一點肯定更不能被忍受的。而sum-square error loss中對同樣的偏移loss是一樣。為了緩和這個問題,作者用了一個比較取巧的辦法,就是將box的width和height取平方根代替原本的height和width。這個參考下面的圖很容易理解,小box的橫軸值較小,發生偏移時,反應到y軸上相比大box要大。其實就是讓演算法對小box預測的偏移更加敏感。
3、一個網格預測多個box,希望的是每個box predictor專門負責預測某個object。具體做法就是看當前預測的box與ground truth box中哪個IoU大,就負責哪個。這種做法稱作box predictor的specialization。
4、損失函數公式見下圖:
在實現中,最主要的就是怎麼設計損失函數,坐標(x,y,w,h),confidence,classification 讓這個三個方面得到很好的平衡。簡單的全部採用sum-squared error loss來做這件事會有以下不足:
解決方法:
只有當某個網格中有object的時候才對classification error進行懲罰。只有當某個box predictor對某個ground truth box負責的時候,才會對box的coordinate error進行懲罰,而對哪個ground truth box負責就看其預測值和ground truth box的IoU是不是在那個cell的所有box中最大。
作者採用ImageNet 1000-class 數據集來預訓練卷積層。預訓練階段,採用網路中的前20卷積層,外加average-pooling層和全連接層。模型訓練了一周,獲得了top-5 accuracy為0.88(ImageNet2012 validation set),與GoogleNet模型准確率相當。
然後,將模型轉換為檢測模型。作者向預訓練模型中加入了4個卷積層和兩層全連接層,提高了模型輸入解析度(224×224->448×448)。頂層預測類別概率和bounding box協調值。bounding box的寬和高通過輸入圖像寬和高歸一化到0-1區間。頂層採用linear activation,其它層使用 leaky rectified linear。
作者採用sum-squared error為目標函數來優化,增加bounding box loss權重,減少置信度權重,實驗中,設定為lambda _{coord} =5 andlambda _{noobj}=0.5 。
作者在PASCAL VOC2007和PASCAL VOC2012數據集上進行了訓練和測試。訓練135輪,batch size為64,動量為0.9,學習速率延遲為0.0005。Learning schele為:第一輪,學習速率從0.001緩慢增加到0.01(因為如果初始為高學習速率,會導致模型發散);保持0.01速率到75輪;然後在後30輪中,下降到0.001;最後30輪,學習速率為0.0001。
作者還採用了dropout和 data augmentation來預防過擬合。dropout值為0.5;data augmentation包括:random scaling,translation,adjust exposure和saturation。
YOLO模型相對於之前的物體檢測方法有多個優點:
1、 YOLO檢測物體非常快
因為沒有復雜的檢測流程,只需要將圖像輸入到神經網路就可以得到檢測結果,YOLO可以非常快的完成物體檢測任務。標准版本的YOLO在Titan X 的 GPU 上能達到45 FPS。更快的Fast YOLO檢測速度可以達到155 FPS。而且,YOLO的mAP是之前其他實時物體檢測系統的兩倍以上。
2、 YOLO可以很好的避免背景錯誤,產生false positives
不像其他物體檢測系統使用了滑窗或region proposal,分類器只能得到圖像的局部信息。YOLO在訓練和測試時都能夠看到一整張圖像的信息,因此YOLO在檢測物體時能很好的利用上下文信息,從而不容易在背景上預測出錯誤的物體信息。和Fast-R-CNN相比,YOLO的背景錯誤不到Fast-R-CNN的一半。
3、 YOLO可以學到物體的泛化特徵
當YOLO在自然圖像上做訓練,在藝術作品上做測試時,YOLO表現的性能比DPM、R-CNN等之前的物體檢測系統要好很多。因為YOLO可以學習到高度泛化的特徵,從而遷移到其他領域。
盡管YOLO有這些優點,它也有一些缺點:
1、YOLO的物體檢測精度低於其他state-of-the-art的物體檢測系統。
2、YOLO容易產生物體的定位錯誤。
3、YOLO對小物體的檢測效果不好(尤其是密集的小物體,因為一個柵格只能預測2個物體)。
㈥ yolo可以用amd顯卡跑嗎
可以。
yolo它對顯早明卡的要求並不是特別高,現在用amd顯卡是完陸伏告全可以支持廳配的。
3、支持AMDEyefinity寬屏等等。
㈦ 沒有gpu如何運行深度神經網路
沒有gpu用雲伺服器運行深度神經網路。深肢襪悉度學習可以理解為深度神經網路進行機械學習,這種情況必須得用GPU,還得好幾塊,同時還得搭歷乎配好缺容量更大的內存,如果沒有GPU,用雲伺服器跑深度學習也可以。
㈧ gpu雲伺服器試用
題主是否想詢問「gpu雲伺服器怎麼使用」?
1、選擇一個合適游指掘的GPU雲伺服器提供商,如阿里雲、騰訊雲等。登錄雲伺服器控制台,在控制台中創建一個GPU雲伺服器實例。需要選擇合適的配置,包括CPU、GPU、內存、存儲等。
2、在實例創建完成後,登錄到伺服器系統中,安裝相應的GPU驅動和運行所需的軟體和工具。
3、開始使用GPU雲伺服器進逗悄行計算、模型訓練等任務。可以使用SSH連接到伺服器,或通過遠程桌面等方式進神核行操作。
㈨ 什麼是GPU雲伺服器
GPU 雲伺服器(GPU Cloud Computing,簡稱 GPU)是基於 GPU 應用的計算服務,具有實時高速的並行計算和浮點計算能力,一般適用於 3D 圖形應用程序、視頻解碼、深度學習、科學計算等應用場景。
通常,GPU雲伺服器廠商提供和標准雲伺服器租用一致的管理方式,可以有效解放用戶的計算壓力,提升產品的計算處理效率與競爭力。
gpu雲伺服器的適用場景
適用於深度學習訓練和推理,圖像識別、語音識別等;計算金融學、地震分析、分子建模、基因組學、計算流體動力學等;高清視頻轉碼、安防視頻監控、大型視頻會議等;三維設計與渲染、影音動畫製作、工程建模與模擬(CAD/CAE)、醫學成像、游戲測試等等。
gpu雲伺服器的使用性能
GPU雲主機突破了傳統GPU,能發揮極致性能,具有高並行、高吞吐、低時延等特點,在科學計算表現中,性能比傳統架構提高幾十倍。用戶無需預先採購、准備硬體資源,可一次性購買,免除硬體更新帶來的額外費用,能有效降低基礎設施建設投入。
以上是關於GPU 雲伺服器的相關介紹。
㈩ YOLO 目標檢測實戰項目『原理篇』
在目標檢測中,IoU 為預測框 (Prediction) 和真實框 (Ground truth) 的交並比。如下圖所示,在關於小貓的目標檢測中,紫線邊框為預測框 (Prediction),紅線邊框為真實框 (Ground truth)。
在目標檢測任務中,通常取 IoU≥0.5,認為召回。如果 IoU 閾值設置更高,召回率將會降低,但定位框則更加精確。
理想的情況,當然是預測框與真實框重疊越多越好,如果兩者完全重疊,則交集與並集面積相同,此時 IoU 等於 1。
之前的目標檢測方法需要先產生候選區再檢測的方法雖然有相對較高的檢測准確率,但運行速度較慢。
YOLO 將識別與定位合二為一,結構簡便,檢測速度快,更快的 Fast YOLO 可以達到 155FPS。
YOLO 網路借鑒了 GoogLeNet 分類網路結構,不同的是 YOLO 使用 1x1 卷積層和 3x3 卷積層替代 inception mole。如下圖所示,整個檢測網路包括 24 個卷積層和 2 個全連接層。其中,卷積層用來提取圖像特徵,全連接層用來預測圖像位置和類別概率值。
如上圖所示,損失函數分為坐標預測(藍色框)、含有物體的邊界框的 confidence 預測(紅色框)、不含有物體的邊界框的 confidence 預測(黃色框)、分類預測(紫色框)四個部分。
由於不同大小的邊界框對預測偏差的敏感度不同,小的邊界框對預測偏差的敏感度更大。為了均衡不同尺寸邊界框對預測偏差的敏感度的差異。作者巧妙的對邊界框的 w,h 取均值再求 L2 loss. YOLO 中更重視坐標預測,賦予坐標損失更大的權重,記為 coord,在 pascal voc 訓練中 coodd=5 ,classification error 部分的權重取 1。
某邊界框的置信度定義為:某邊界框的 confidence = 該邊界框存在某類對象的概率 pr (object)* 該邊界框與該對象的 ground truth 的 IOU 值 ,若該邊界框存在某個對象 pr (object)=1 ,否則 pr (object)=0 。由於一幅圖中大部分網格中是沒有物體的,這些網格中的邊界框的 confidence 置為 0,相比於有物體的網格,這些不包含物體的網格更多,對梯度更新的貢獻更大,會導致網路不穩定。為了平衡上述問題,YOLO 損失函數中對沒有物體的邊界框的 confidence error 賦予較小的權重,記為 noobj,對有物體的邊界框的 confidence error 賦予較大的權重。在 pascal VOC 訓練中 noobj=0.5 ,有物體的邊界框的 confidence error 的權重設為 1.
YOLOv1 雖然檢測速度快,但在定位方面不夠准確,並且召回率較低。為了提升定位準確度,改善召回率,YOLOv2 在 YOLOv1 的基礎上提出了幾種改進策略
YOLOv2 中在每個卷積層後加 Batch Normalization (BN) 層,去掉 dropout. BN 層可以起到一定的正則化效果,能提升模型收斂速度,防止模型過擬合。YOLOv2 通過使用 BN 層使得 mAP 提高了 2%。
目前的大部分檢測模型都會使用主流分類網路(如 vgg、resnet)在 ImageNet 上的預訓練模型作為特徵提取器,而這些分類網路大部分都是以小於 256x256 的圖片作為輸入進行訓練的,低解析度會影響模型檢測能力。YOLOv2 將輸入圖片的解析度提升至 448x448,為了使網路適應新的解析度,YOLOv2 先在 ImageNet 上以 448x448 的解析度對網路進行 10 個 epoch 的微調,讓網路適應高解析度的輸入。通過使用高解析度的輸入,YOLOv2 的 mAP 提升了約 4%。
YOLOv1 利用全連接層直接對邊界框進行預測,導致丟失較多空間信息,定位不準。YOLOv2 去掉了 YOLOv1 中的全連接層,使用 Anchor Boxes 預測邊界框,同時為了得到更高解析度的特徵圖,YOLOv2 還去掉了一個池化層。由於圖片中的物體都傾向於出現在圖片的中心位置,若特徵圖恰好有一個中心位置,利用這個中心位置預測中心點落入該位置的物體,對這些物體的檢測會更容易。所以總希望得到的特徵圖的寬高都為奇數。YOLOv2 通過縮減網路,使用 416x416 的輸入,模型下采樣的總步長為 32,最後得到 13x13 的特徵圖, 然後對 13x13 的特徵圖的每個 cell 預測 5 個 anchor boxes ,對每個 anchor box 預測邊界框的位置信息、置信度和一套分類概率值。使用 anchor boxes 之後,YOLOv2 可以預測 13x13x5=845 個邊界框,模型的召回率由原來的 81% 提升到 88%,mAP 由原來的 69.5% 降低到 69.2%. 召回率提升了 7%,准確率下降了 0.3%。
YOLOv2 採用 Darknet-19,其網路結構如下圖所示,包括 19 個卷積層和 5 個 max pooling 層,主要採用 3x3 卷積和 1x1 卷積, 這里 1x1 卷積可以壓縮特徵圖通道數以降低模型計算量和參數 ,每個卷積層後使用 BN 層 以加快模型收斂同時防止過擬合。最終採用 global avg pool 做預測。採用 YOLOv2,模型的 mAP 值沒有顯著提升,但計算量減少了。
在 Faster R-CNN 和 SSD 中,先驗框都是手動設定的,帶有一定的主觀性。YOLOv2 採用 k-means 聚類演算法對訓練集中的邊界框做了聚類分析,選用 boxes 之間的 IOU 值作為聚類指標。綜合考慮模型復雜度和召回率,最終選擇 5 個聚類中心,得到 5 個先驗框,發現其中中扁長的框較少,而瘦高的框更多,更符合行人特徵。通過對比實驗,發現用聚類分析得到的先驗框比手動選擇的先驗框有更高的平均 IOU 值,這使得模型更容易訓練學習。
Faster R-CNN 使用 anchor boxes 預測邊界框相對先驗框的偏移量,由於沒有對偏移量進行約束,每個位置預測的邊界框可以落在圖片任何位置,會導致模型不穩定,加長訓練時間。YOLOv2 沿用 YOLOv1 的方法,根據所在網格單元的位置來預測坐標,則 Ground Truth 的值介於 0 到 1 之間。網路中將得到的網路預測結果再輸入 sigmoid 函數中,讓輸出結果介於 0 到 1 之間。設一個網格相對於圖片左上角的偏移量是 cx,cy。先驗框的寬度和高度分別是 pw 和 ph,則預測的邊界框相對於特徵圖的中心坐標 (bx,by) 和寬高 bw、bh 的計算公式如下圖所示。
YOLOv2 結合 Dimention Clusters, 通過對邊界框的位置預測進行約束,使模型更容易穩定訓練,這種方式使得模型的 mAP 值提升了約 5%。
YOLOv2 借鑒 SSD 使用多尺度的特徵圖做檢測,提出 pass through 層將高解析度的特徵圖與低解析度的特徵圖聯系在一起,從而實現多尺度檢測。YOLOv2 提取 Darknet-19 最後一個 max pool 層的輸入,得到 26x26x512 的特徵圖。經過 1x1x64 的卷積以降低特徵圖的維度,得到 26x26x64 的特徵圖,然後經過 pass through 層的處理變成 13x13x256 的特徵圖(抽取原特徵圖每個 2x2 的局部區域組成新的 channel,即原特徵圖大小降低 4 倍,channel 增加 4 倍),再與 13x13x1024 大小的特徵圖連接,變成 13x13x1280 的特徵圖,最後在這些特徵圖上做預測。使用 Fine-Grained Features,YOLOv2 的性能提升了 1%.
YOLOv2 中使用的 Darknet-19 網路結構中只有卷積層和池化層,所以其對輸入圖片的大小沒有限制。YOLOv2 採用多尺度輸入的方式訓練,在訓練過程中每隔 10 個 batches , 重新隨機選擇輸入圖片的尺寸,由於 Darknet-19 下采樣總步長為 32,輸入圖片的尺寸一般選擇 32 的倍數 {320,352,…,608}。採用 Multi-Scale Training, 可以適應不同大小的圖片輸入,** 當採用低解析度的圖片輸入時,mAP 值略有下降,但速度更快,當採用高解析度的圖片輸入時,能得到較高 mAP 值,但速度有所下降。**
YOLOv2 借鑒了很多其它目標檢測方法的一些技巧,如 Faster R-CNN 的 anchor boxes, SSD 中的多尺度檢測。除此之外,YOLOv2 在網路設計上做了很多 tricks, 使它能在保證速度的同時提高檢測准確率,Multi-Scale Training 更使得同一個模型適應不同大小的輸入,從而可以在速度和精度上進行自由權衡。
YOLO v2 對 YOLO v1 的缺陷進行優化,大幅度高了檢測的性能,但仍存在一定的問題, 如無法解決重疊問題的分類等 。
將 256x256 的圖片分別輸入以 Darknet-19,ResNet-101,ResNet-152 和 Darknet-53 為基礎網路的分類模型中,實驗得到的結果如下圖所示。可以看到 Darknet-53 比 ResNet-101 的性能更好,而且速度是其 1.5 倍,Darknet-53 與 ResNet-152 性能相似但速度幾乎是其 2 倍。注意到,Darknet-53 相比於其它網路結構實現了每秒最高的浮點計算量,說明其網路結構能更好的利用 GPU。
YOLOv3 借鑒了 FPN 的思想,從不同尺度提取特徵。相比 YOLOv2,YOLOv3 提取最後 3 層特徵圖,不僅在每個特徵圖上分別獨立做預測,同時通過將小特徵圖上采樣到與大的特徵圖相同大小,然後與大的特徵圖拼接做進一步預測。用維度聚類的思想聚類出 9 種尺度的 anchor box,將 9 種尺度的 anchor box 均勻的分配給 3 種尺度的特徵圖 .
在實際應用場合中,一個物體有可能輸入多個類別,單純的單標簽分類在實際場景中存在一定的限制。舉例來說,一輛車它既可以屬於 car(小汽車)類別,也可以屬於 vehicle(交通工具),用單標簽分類只能得到一個類別。因此在 YOLO v3 在網路結構中把原先的 softmax 層換成了邏輯回歸層,從而實現把單標簽分類改成多標簽分類。用多個 logistic 分類器代替 softmax 並不會降低准確率,可以維持 YOLO 的檢測精度不下降。
對於對象檢測,不僅要考慮精度,還要考慮實時運行的性能,雖然現在算力大幅度上升,但是普通的設備跑起來還是有點吃力。提高精度和加快速率仍是目標檢測的重大課題,道阻且長!
參考:
YOLOv1 參考
YOLOv2 參考
YOLOv3 參考
https://mp.weixin.qq.com/s/yccBloK5pOVxDIFkmoY7xg :非極大抑制