主頁 >  其他 > 目標檢測 | YOLO系列超全講解v1,v2,v3

目標檢測 | YOLO系列超全講解v1,v2,v3

2022-03-06 07:21:14 其他

    • 前言
    • 一、YOLOv1
      • 1. 網路結構
      • 2. 實作方法
      • 3. 損失函式
      • 4. 缺點
    • 二、YOLOv2
      • 1. 網路結構
      • 2. 改進方法
      • 3. YOLO9000
      • 4. 網路訓練細節
    • 三、YOLOv3
      • 1. 網路結構
      • 2. 改進方法
      • 3. 損失函式
      • 4. 性能比較

資料匯總選自
B站大佬:霹靂吧啦Wz
csdn大佬:AI菌 和 AI小白一枚 和 小小將 和 木卯_THU
注:本文為學習記錄筆記,以學習積累為主,如表述錯誤或侵權,煩請提示指出;如有不能理解的部分,可以前往以上博主的文章中查看更詳細的說明講解,


前言

從Two Stage到One Stage:

Two stage(先選取候選框,再進行回歸調整候選框和分類):RCNN,SPP-Net,Fast-RCNN,Faster-RCNN,Mask-RCNN等
One stage(直接回歸調整候選框及分類):SSD,YOLO系列,RetinaNet,RefineDet等

  • 有關RCNN系列的詳細程序,可查看《目標檢測 | RCNN演算法系列匯總+詳解(包括Fast, Faster)》
  • YOLO官網:作者Joseph Redmon的個人網站
  • YOLOv1論文地址:https://arxiv.org/abs/1506.02640
  • YOLOv2論文地址:https://pjreddie.com/darknet/yolo/
  • YOLOv3論文地址:https://arxiv.org/pdf/1804.02767
  • YOLOv4論文地址:https://arxiv.org/abs/2004.10934
  • YOLOv5的Github原始碼:https://github.com/ultralytics/yolov5

一、YOLOv1

2016年,Joseph Redmon等人提出了一種單階段(one-stage)的目標檢測網路,在 PASCAL VOC2007 的測驗集上達到了 63.4 mAP,在 448 × 448 的輸入影像上的二推理能達到 45 FPS,作者將其取名為:You Only Look Once,

  • 利用整張圖作為網路的輸入,直接在輸出層回歸bounding box的位置和bounding box所屬的類別
  • 雖然Faster RCNN中也直接用整張圖作為輸入,但是Faster-RCNN整體還是采用了RCNN那種 proposal+classifier的思想,而YOLOv1直接回歸,

1. 網路結構

在這里插入圖片描述
符合一階段的卷積神經網路,由整張圖片直接到檢測目標位置和概率值,網路結構圖中沒有標s意味著默認步距stride為1,

  • 網路輸入:448×448×3的彩色圖片,
  • 中間層:由若干卷積層和最大池化層組成,用于提取圖片的抽象特征,
  • 全連接層:由兩個全連接層組成,用來預測目標的位置和類別概率值,
  • 網路輸出:7×7×30的預測結果,

2. 實作方法

在YOLOv1中,它將整張圖片輸入后平均分為S×S個網格(grid cell),當某個目標的中心落在這個網格中,那么這個網格就負責預測它,對于Faster-RCNN需要訓練一個RPN網路獲得目標候選框區域,然后再映射到特征圖上得到特征矩陣,這消耗了大量時間空間,
在這里插入圖片描述
具體步驟

  1. 輸入影像分為S×S個網格,如果某個object的中心落在這個網格中,則這個網格就負責預測這個object
  2. 每個網格要預測 B 個bounding box,每個 bounding box 除了要回歸自身的位置和一個值,即 (x, y, w, h) 和 confidence 共5個值,
  3. 每個網格還要預測一個類別資訊,記為C類,則SxS個網格,每個網格要預測B個bounding box還要預測C個categories,總的輸出就是S × S × (5×B+C)的張量,如下圖輸出結果的網路結構所示,
    在這里插入圖片描述

實際操作:

在YOLOv1的CVPR 2016論文中,圖片輸入為448×448的像素,S圖片劃分網格量=7,B每個網格預測邊框量=2,C類別個數=20,于是,網格輸出=7×7×(5×2+20)

在test的時候,每個網格預測的class資訊和bounding box預測的confidence資訊相乘,根據上一步可以預測出S×S×B個目標視窗,然后根據閾值去除可能性比較低的目標視窗,最后用NMS非極大值抑制去除冗余視窗即可得到最終的檢測結果,

在這里插入圖片描述

該運算式含義:
等式左邊第一項就是每個網格預測的類別資訊
第二三項就是每個bounding box預測的confidence,代表了所預測的box中含有object的置信度和這個box預測準確率;其中,第二項表示如果有object落在一個grid cell里,則第一項取1,否則取0;第三項是預測的bounding box和實際的groundtruth之間的IoU值,
整體上,這個乘積即encode了預測的box屬于某一類的概率,也有該box準確度的資訊

3. 損失函式

YOLOv1損失分為三類,1.目標 bounding box坐標預測的損失,2. confidence置信度預測的損失,3.classes分類預測的損失,原論文中都是使用sum-squared error loss誤差平方和進行計算,

在這里插入圖片描述

3.1 bounding box坐標檢測損失

對于x和y的向量都是用預測值減去真實標簽值的平方就是誤差平方和;對于w和h,先進行開根處理,再做誤差平方,這樣可以提升小目標的損失,消除大尺寸框和小尺寸框之間的差異,

開根處理原因:
下圖右側為兩個目標bbox候選框,當平移相同的寬和高后,對于小目標的IoU是明顯小于大目標的IoU的,所以不適合于IoU與x的線性關系(即類似x和y的處理),于是下圖左側的根號下的關系能夠滿足小目標IoU小,大目標IoU大的特征,
在這里插入圖片描述

3.2 confidence和classes的損失

confidence分為含有object和不含object的損失,即正樣本負樣本,在正樣本中,真實值為1;負樣本真實值為0,于是,confidence 損失需要計算正負樣本,而 bounding box 以及 class 損失都只計算正樣本的,正樣本的 confidence 真實值應該為預測框與真實物體框的 IoU 數值;負樣本的 confidence 真實值應該為 0,

3.3 處理目標不均衡

目標檢測問題是一個典型的類別數目不均衡的問題,在7×7的grid cell格點中,含有物體的格點一般比較少,所以需要讓含有物體的格點在損失函式中的權重更大,讓模型更加重視含有物體的格點所造成的損失,于是在bbox坐標誤差損失中代入λ_coord取值5;對于不含目標的置信度預測損失代入λ_noobj=0.5,

4. 缺點

  1. 對群體性的相互靠近的小目標檢測效果差,由于YOLOv1對于每個grid cell值設定預測兩個bounding box,且設定的classes類別相同,所以當群體目標聚集在一起時,檢測會出現問題,
  2. 當目標比例出現不一致時,即新的長寬比,預測能力很差,
  3. 主要的錯誤都是定位不準確,由于直接預測坐標資訊,對不常見的目標泛華能力差,

二、YOLOv2

YOLOv2作者命名為(Better, Faster, Stronger),基于YOLOv1的不足,提出了很多改進方法,主要是保持檢測速度,改善recall,提升定位的準確度,同時保持分類的準確性,

1. 網路結構

YOLOv2使用Global Average Pooling,使用Batch Normilazation來讓訓練更穩定,加速收斂,使model規范化,v2采用 Darknet-19(有19個卷積層和5個maxpooling層)作為特征提取網路,即backbone,Darknet-19整體結構如下:
默認步距和padding都為1
Darknet-19 與 YOLOv1、VGG16網路對比:

VGG-16: 大多數檢測網路框架都是以VGG-16作為基礎特征提取器,它功能強大,準確率高,但是計算復雜度較大,所以速度會相對較慢,因此YOLOv2的網路結構將從這方面進行改進,
YOLOv1: 基于GoogLeNet的自定義網路(具體看上周報告),比VGG-16的速度快,但是精度稍不如VGG-16,
Darknet-19: 速度方面,處理一張圖片僅需要55.8億次運算,相比于VGG306.9億次,速度快了近6倍,精度方面,在ImageNet上的測驗精度為:top1準確率為72.9%,top5準確率為91.2%,

YOLOv2模型框架如下:

  • Convolutional卷積層(右上側)由conv2d+BN+LeakyReLU組成;
  • 基于Darknet19,移除了最后的卷積層,保留卷積大小3×3卷積核為1024的卷積層(輸出13x13x1024);
  • 添加三個3×3的1024卷積核的卷積層;
  • 最后輸出了一個1×1的Predictor卷積層,輸出的個數為我們的檢測,
  • 并且在最后一個3x3x512層添加了一個Pass Through Layer,使得連接在最后一個卷積層之前做了特征融合,
    在這里插入圖片描述

更多具體的訓練程序,跳轉《目標檢測|YOLOv2原理與實作(附YOLOv3)》以及《深度學習之目標檢測(七)–YOLO v2理論介紹》

2. 改進方法

2.1 Batch Normalization

簡稱BN層,即批量標準化,在每一層卷積后,都增加了批量標準化(Batch Normalization)進行預處理,
BN層能夠對資料進行預處理,完成影像均衡化,解決反向傳播的梯度消失/爆炸,去噪等功能,提升訓練速度,并且起到一些正則化效果,達到了 2% mAP 的提升,可以移除 Dropout 層,
使用Batch Normalization對網路進行優化,讓網路提高了收斂性,同時還消除了對其他形式的正則化(regularization)的依賴,

關于Batch Normalization的更多資料,可以閱讀《Batch Normalization原理與實戰》 以及 《深度學習筆記(三):BatchNorm(BN)層》

2.2 High resolution classifier

YOLOv1使用ImageNet的影像分類樣本采用 224×224 作為輸入,來訓練CNN卷積層,然后在訓練目標檢測時,檢測用的影像樣本采用更高解析度的 448×448 像素影像作為輸入,但這樣不一致的輸入解析度肯定會對模型性能有一定影響,

而YOLOv2采用更高解析度的分類器,在采用 224224 影像進行分類模型預訓練后,再采用 448448 高解析度樣本對分類模型進行微調(10個epoch),帶來了4%的mAP提升,

2.3 Convolution with anchor boxes

YOLOv1中,作者通過全連接層直接預測邊界框的位置并且做回歸;而在Faster RCNN演算法只用卷積層與Region Proposal Network來預測Anchor Box的偏移值與置信度,而不是直接預測坐標值,于是,通過預測偏移量而不是坐標值能夠簡化問題,讓神經網路學習起來更容易,對于卷積層有以下變化:

  • 為了使檢測所用的特征圖解析度更高,移除其中的一個 pool 層,
  • 借鑒Faster RCNN的做法,YOLOv2 移除了 YOLOv1 中的全連接層直接預測,而采用了卷積和 anchor boxes 來確定邊界框,
  • 在檢測模型中,保證特征圖有奇數個位置,即YOLOv2 不是采用 448×448大小的圖片輸入,而是采用416×416大小,由于YOLOv2下采樣的步長為32,對于416×416大小,通過5個pooling后最終的特征圖大小為13×13,其特征圖的只有一個center cell中心位置,
  • YOLOv2 使用了 Anchor boxes 之后,每個位置的各個 anchor box 都單獨預測一套分類概率值,這和 SSD 比較類似(但 SSD 沒有預測置信度,而是把 background 作為一個類別來處理),YOLOv1 只能預測 7 × 7 × 2 = 98 個 bounding box,而 YOLOv2 則使用 Anchor boxes 之后能預測上千個邊界框(13 × 13× num_anchors),提升召回率,
    在這里插入圖片描述

2.4 Dimension Clusters

在Faster R-CNN 以及 SSD 中,作者并沒有明確地給出采用那些作者給定的 Anchor 或者 Default Box的尺寸,基本上為工程經驗得到,于是,YOLOv2嘗試統計出更符合樣本中物件尺寸的先驗框,這樣就可以減少網路微調先驗框到實際位置的難度,

YOLOv2的做法是對訓練集中標注的Anchor Box邊框進行K-means聚類分析,以尋找盡可能匹配樣本的邊框尺寸,如果我們用標準的歐式距離的k-means,會導致尺寸大的框比小框產生更多的錯誤,

聚類的目的是使 Anchor boxes 和臨近的 ground truth boxes有更大的IOU值,因此自定義的距離度量公式為 :在這里插入圖片描述

centroid是聚類時被選作中心的邊框,box就是其它邊框,d就是兩者間的“距離”,IOU越大,“距離”越近,到聚類中心的距離越小越好,但IOU值是越大越好,所以使用 1 - IOU;這樣就保證距離越小,IOU值越大,

從下表可以看出,YOLOv2采用5種 Cluster(61.0) 比 Faster R-CNN 采用9種 Anchor(60.9) 得到的平均 IoU 還略高,并且當 YOLOv2 采用9種時,平均 IOU 有顯著提高(67.2),說明 K-means 方法的生成的Anchor boxes 更具有代表性,為了權衡精確度和速度的開銷,最終選擇K=5,
在這里插入圖片描述

下圖黑藍圖形為在 VOC 和 COCO 資料集上的聚類分析結果,隨著聚類中心數目的增加,平均 IoU 值(各個邊界框與聚類中心的IoU的平均值)是增加的,綜合考慮模型復雜度和召回率,作者最終選取 5 個聚類中心作為先驗框,其相對于圖片的大小如右邊圖所示,
在這里插入圖片描述
2.5 Direct location prediction

在 Faster R-CNN 演算法中,是通過預測 bounding box 與 ground truth 的位置偏移值,間接得到bounding box的位置,公式如下:在這里插入圖片描述

這個公式是無約束的,預測的邊界框很容易向任何方向偏移,因此,每個位置預測的邊界框可以落在圖片任何位置,這會導致模型的不穩定性,

為了讓網路的結果能落在這一范圍內,網路使用一個 Logistic Activation來對于網路預測結果進行限制,讓結果介于0到1之間, 網路在每一個網格單元中預測出5個Bounding Boxes,每個Bounding Boxes有五個坐標值tx,ty,tw,th,t0,他們的關系見下圖(藍色的是要預測的bounding box,黑色虛線框是Anchor box):
在這里插入圖片描述
2.6 Fine-Grained Features

細粒度特征,可以理解成對不同層的物體預測的精細研究,YOLOv2 提出了一種 Pass Through Layer層來利用更精細的特征圖,把高解析度的淺層特征連接到低解析度的深層特征(把特征堆積在不同Channel中)而后進行融合和檢測,

具體操作是:先獲取前層的26×26的特征圖,將其同最后輸出的13×13的特征圖進行連接,而后輸入檢測器進行檢測(而在YOLOv1中網路的FC層起到了全域特征融合的作用),以此來提高對小目標的檢測能力,
在這里插入圖片描述
Passthrough層與ResNet網路的shortcut類似,以前面更高解析度的特征圖為輸入,然后將其連接到后面的低解析度特征圖上,前面的特征圖維度是后面的特征圖的2倍,passthrough層抽取前面層的每個2×2的區域區域,然后將其轉化為channel維度,對于26×26×512的特征圖,經Passthrough層處理之后就變成了13×13×2048的新特征圖(特征圖大小降低4倍,而channles增加4倍),這樣就可以與后面的13×13×1024特征圖連接在一起形成13×13×3072的特征圖,然后在此特征圖基礎上卷積做預測,示意圖如下:
在這里插入圖片描述

2.7 Multi-Scale Training

采用多尺度訓練,替換固定尺寸訓練,作者希望YOLOv2能健壯的運行于不同尺寸的圖片之上,所以把這一想法用于訓練model中,區別于之前的補全圖片的尺寸的方法,YOLOv2每迭代幾次都會改變網路引數,每10個Batch,網路會隨機地選擇一個新的圖片尺寸,由于使用了下采樣引數是32,所以不同的尺寸大小也選擇為32的倍數{320,352……608},最小320×320,最大608×608,網路會自動改變尺寸,并繼續訓練的程序,

在測驗時,YOLOv2 可以采用不同大小的圖片作為輸入,在 VOC 2007 資料集上的效果如下圖所示,
在這里插入圖片描述

可以看到采用較小解析度時,YOLOv2 的 mAP 值略低,但是速度更快,而采用高分辨輸入時,mAP 值更高,但是速度略有下降,對于 544 × 544 的輸入圖,mAP 高達 78.6%,值得注意的是,這只是測驗時輸入圖片大小不同,而實際上用的是同一個采用Multi-Scale Training訓練得到的模型,

3. YOLO9000

YOLO9000 是在 YOLOv2 的基礎上提出的一種可以檢測超過 9000 個類別的模型,其主要貢獻點在于提出了一種分類和檢測的聯合訓練策略,

一般來說,檢測資料集的標注要比分類資料集打標簽繁瑣的多,所以 ImageNet 分類資料集比 VOC 等檢測資料集高出幾個數量級,在 YOLO 中,邊界框的預測其實并不依賴于物體的標簽,所以YOLO可以實作在分類和檢測資料集上的聯合訓練,

對于檢測資料集,可以用來學習預測物體的邊界框、置信度以及為物體分類,而對于分類資料集可以僅用來學習分類,但是其可以大大擴充模型所能檢測的物體種類,在訓練時,如果是檢測樣本,按照 YOLOv2 的 loss 計算誤差,而對于分類樣本,只計算分類誤差,

通過聯合訓練策略,YOLO9000 可以快速檢測出超過 9000 個類別的物體,總體 mAP 值為 19.7%,從某方面說,YOLOv2的改進策略亮點并不是很突出,但是YOLO9000算是開創之舉,

4. 網路訓練細節

由于作者在論文中沒有體現誤差,損失函式等內容,對于相關細節可跳轉《目標檢測|YOLOv2原理與實作(附YOLOv3)》 以及《YOLO v2 損失函式原始碼分析》


三、YOLOv3

2018年,作者Redmon在YOLOv2的基礎上做了一系列的改進,但是正如作者所說,這僅僅是他們近一年的一個作業報告(TECH REPORT),不算是一個完整的paper,因為他們實際上是把其它論文的一些作業在YOLO上嘗試了一下,其核心在于做大做強,再創輝煌,可跳轉視頻霹靂吧啦Wz《yolo系列理論合集》查看詳細講解,

小小將 認為,YOLOv3 最大的變化為backbone中的殘差模型以及采用FPN特征金字塔結構

其中,在YOLOv3中保留的步驟有:

  • 通過劃分grid cell單元格來做檢測,只是每次劃分的數量尺寸不一樣,
  • 采用 Leaky ReLU 作為激活函式
  • 進行端到端的訓練,用一個loss function損失函式完成訓練
  • 保留YOLOv2中的batch normalization批量標準化處理作為正則化、加速收斂和避免過擬合的方法,
  • 保留YOLOv2中的多尺度訓練,替換固定尺寸訓練,即通過采用不同解析度的影像,在速度和準確率之間選擇,

1. 網路結構

YOLOv3 的第一個改進之處就是將 backbone 替換為 Darknet-53,而在 YOLOv2 中采用的是 Darknet-19 這樣一個網路,Darknet-53 的top-1準確率相較于 Darknet-19 有比較大的提升,與 ResNet 性能相當,但是FPS即檢測速度比 ResNet 要好很多,Darknet-53 如下圖所示,YOLOv3最大的變化為使用殘差模型和采用FPN(feature pyramid networks)架構,
在這里插入圖片描述
注:top-1和top-5準確率

模型在 ImageNet 資料集上進行推理,按照置信度排序總共生成 5 個標簽,按照第一個標簽預測計算正確率,即為 Top-1 正確率;前五個標簽中只要有一個是正確的標簽,則視為正確預測,稱為 Top-5 正確率,

Darknet-53網路結構有如下特點,如下圖所示,

  • 這個網路主要是由一系列的1x1和3x3的卷積層組成;
  • convolution卷積層升級為卷積層+BN層+激活層,即每個卷積層后都會跟一個BN層和一個LeakyReLU層;
  • 沒有采用最大池化層,轉而采用步長為2的卷積層進行下采樣,即左圖框下面的那個卷積,使得輸出影像減小為原來的一半;
  • 左圖中的每個方框框柱的就是一個residual殘差結構,將兩層卷積層后與主分支的輸出進行相加,即右下圖;
  • 作者說因為網路中有53個convolutional layers,所以叫做Darknet-53(最后的Connected是全連接層也算卷積層),
    在這里插入圖片描述

整個v3結構里面,是沒有池化層和全連接層的,前向傳播程序中,張量的尺寸變換是通過改變卷積核的步長來實作的,比如stride=(2, 2),這就等于將影像邊長縮小了一半(即面積縮小到原來的1/4),

YOLOv3的416模型網路結構,即輸入影像尺寸為416×416,預測的三個特征層大小分別為52,16,13,結構如下圖所示:

  • 其中的convolution set卷積集合由五層卷積層組成
  • 通過up sample上采樣擴大尺寸為原來的兩倍
  • concatenate完成了通過上采樣與來自backbone中的卷積匹配拼接
  • 預測器 Conv 1×1 就是一個卷積層,三個分別輸出不同shape尺寸的feature map
    在這里插入圖片描述

2. 改進方法

2.1 多尺度預測

為了能夠預測多尺度的目標,當輸入圖片為416×416時,YOLOv3基于k-means方法對不同size的目標進行檢測(越精細的grid cell就可以檢測出越精細的物體),得到的九組預設邊界框尺寸,并將其劃分到3個尺度特征圖上,尺度更大的特征圖使用更小的anchor先驗框,和SSD類似,這些預設的框被稱為 bounding box priors,這個和 Anchor 以及 Default box 其實是一個概念,

在COCO資料集上選擇的9種Anchors的尺寸如下所示:
在這里插入圖片描述

YOLOv3 借鑒了==FPN (feature pyramid networks)==特征金字塔的思路,Concatenate層與來自backbone里的相同特征圖大小的殘差層拼接,可參考YOLOv3網路結構,在COCO資料集(有80個分類)上進行預測時,每一個預測特征層上會張量為 N × N × [ 3 ? ( 4 + 1 + 80 ) ] ,N為特征圖大小,
在這里插入圖片描述
由下采樣次數不同,得到的N不同,最終三個Predict(從上到下)的shape分別為:[13, 13, 255]、[26, 26, 255]、[52, 52, 255],

2.2 目標邊界框預測

下圖中虛線矩形框為先驗框,即預設邊界框,實線矩形框為通過網路預測的偏移量計算得到的預測邊界框,通過右下角的式子可以計算得出實際預測框 b 的尺寸,

注:虛線框 Anchor 的中心畫到了 cell 的左上角,它的中心坐標就是 ( c x , c y ) (c_x,c_y) (cx?,cy?),寬度和高度分別是 p w p_w pw? p h p_h ph?,σ是sigmoid函式,sigmoid函式目的是將預測偏移量縮放到0到1之間,能夠將預設邊界框的中心坐標固定在一個cell ( c x , c y ) (c_x,c_y) (cx?,cy?)當中,作者說這樣能加快網路收斂,

在這里插入圖片描述
2.3 正負樣本的匹配

  • positive正樣本:對每一個 ground box 會分配一個 bounding box prior,一張圖片中有幾個 GT 目標,就有幾個正樣本,并且將與 GT box 重合度最高(IoU 分數最大)的 bounding box prior 作為正樣本,可產生confidence置信度 loss、檢測框 loss、類別 loss,其中置信度標簽為 1 (亦可選擇預測邊界框與 GT box 的 ioU 分數);類別標簽對應類別為1,其余為 0,
  • ignore忽略樣例:對于那些與某個 GT box 重合度超過一定閾值(論文中使用 0.5),但是又不是最大的,則它既不是正樣本也不是負樣本,直接將其進行丟棄不用于計算損失,
  • negative負樣本:對于剩下的樣本(與所有 GT box 的 IoU 分數都小于 0.5)則認為是負樣本,負樣本僅僅用于計算置信度損失,置信度標簽為 0,

3. 損失函式

在這里插入圖片描述
對于神經網路來說,損失函式的設計也非常重要,YOLOv3文中并沒有直接給出損失函式的運算式,YOLOv3的損失函式主要分為三個部分:目標置信度損失目標分類損失目標定位偏移量損失;其中 λ 1 , λ 2 , λ 3 λ_1,λ_2,λ_3 λ1?λ2?λ3?為平衡系數,表示三種loss之間的比例,

3.1 目標置信度損失

目標置信度可以理解為預測目標矩形框記憶體在目標的概率,采用二值交叉熵損失(Binary Cross Entropy) 方法; o i o_i oi?∈{0, 1} 表示預測目標邊界框i中是否真實存在目標,0表示不存在,1表示存在,
在這里插入圖片描述

假設上圖右邊藍色的部分是 bounding box prior,綠色邊界框是 GT box,黃色就是預測的 4 個邊界框回歸引數作用于藍色的 bounding box prior 得到預測目標邊界框,黃色和綠色的邊界框的 IoU 就是 o i o_i oi?了,可以直接取 0 和 1,

3.2 目標分類損失

目標分類損失同樣采用的是二值交叉熵損失,同一目標可同時歸為多類,比如貓可歸為貓類以及動物類,這樣能夠應對更加復雜的場景,

在這里插入圖片描述

需要注意的是,COCO 資料集有 80 個類別,所以類別數在 85 維輸出中占了 80 維,每一維獨立代表一個類別的置信度,作者使用 Sigmoid 激活函式替代了 YOLOv2 中的 softmax,取消了類別之間的互斥,可以使網路更加靈活,但是經過 Sigmoid 處理可能出現認為目標既是貓又是狗的情況(兩個概率都大于 0.5),所以 80 個概率之和并不是等于 1 的,

3.3 目標定位損失

采用的是真實偏差值與預測偏差值差的平方和,通過左下角的式子能夠得到目標定位損失值,
在這里插入圖片描述
目標定位xywh也是由均方差來計算loss的,其中預測的xy進行sigmoid來與lable xy求差,label xy是grid cell中心點坐標,其值在0-1之間,所以predict出的xy要sigmoid,

4. 性能比較

通過在 COCO 資料集上正確率的對比我們可以看出,相比于其他網路而言,YOLOv3 速度非常的快,但是正確率并沒有那么高,而在滿足檢測精度差不都的情況下,YOLOv3具有更快的推理速度!
在這里插入圖片描述
當 IoU=0.5 時候的 AP 對應的是 PASCAL VOC 的評價指標了,可見其檢測效果對于其他網路而言還是有競爭力的,且速度奇快無比,
在這里插入圖片描述

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

標籤:AI

上一篇:二叉樹的前序、中序、后序、層次遍歷的原理及C++代碼實作

下一篇:人臉識別----face_recognition安裝與應用(附代碼)

標籤雲
其他(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