国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【AI面試】目標(biāo)檢測中one-stage、two-stage算法的內(nèi)容和優(yōu)缺點對比匯總

這篇具有很好參考價值的文章主要介紹了【AI面試】目標(biāo)檢測中one-stage、two-stage算法的內(nèi)容和優(yōu)缺點對比匯總。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

在深度學(xué)習(xí)領(lǐng)域中,圖像分類,目標(biāo)檢測和目標(biāo)分割是三個相對來說較為基礎(chǔ)的任務(wù)了。再加上圖像生成(GAN,VAE,擴散模型),keypoints關(guān)鍵點檢測等等,基本上涵蓋了圖像領(lǐng)域大部分場景了。

尤其是在目標(biāo)檢測,一直是各大比賽(Pascal VOC, COCO, ImageNet)的主要任務(wù)。與此同時,檢測任務(wù)中的兩大流派:one-stage、two-stage一直是熱議的話題。同時,也是面試官最喜歡問的話題。

早期的物體檢測多使用滑動窗口與分類器配合行動。在兩步方案中,R-CNN首先在第二階段使用卷積神經(jīng)網(wǎng)絡(luò)極大的提升了準(zhǔn)確率,開啟了物體檢測的新紀(jì)元。RPN的出現(xiàn)則將兩步方案統(tǒng)一在一個神經(jīng)網(wǎng)絡(luò)中,得名Faster R-CNN。單步檢測器的出現(xiàn)極大的提升了檢測速度,但是卻以準(zhǔn)確率下降為代價。

單步檢測器面臨的最大問題:在于訓(xùn)練過程中正負(fù)(positive and negative)樣本的極端不均衡。每張圖像成千上萬個待檢對象中,只有數(shù)個包含了有效物體(positive)。這造成兩個不利后果:

  1. 訓(xùn)練的效率下降。大部分位置極易被歸為負(fù)樣本,對有效的學(xué)習(xí)沒有幫助。
  2. 大量的容易負(fù)樣本主導(dǎo)了訓(xùn)練過程,造成模型退化。

穩(wěn)健的損失函數(shù)一直是研究的熱點之一。例如Huber loss降低異常樣本(困難樣本)的權(quán)重。而Focal loss則注重降低常規(guī)樣本(簡單樣本)的權(quán)重,集中精力在困難樣本上。

針對本文的這個問題,我也幫你們提前問了chatGPT,也給出了一個較為總結(jié)性的回答,如下所示。你們覺得它回答的如何呢?

【AI面試】目標(biāo)檢測中one-stage、two-stage算法的內(nèi)容和優(yōu)缺點對比匯總,7天快速通過AI/CV面試,人工智能,目標(biāo)檢測,算法,計算機視覺
chatGPT已經(jīng)對本節(jié)的內(nèi)容,給出了一個大體的概括,總結(jié)下,包括

算法模型呢:

  1. one stage的算法包括SSD、yolo、Retina Net等等
  2. two stage的算法包括fast RCNN系列,和用于分割的Mask RCNN系列

優(yōu)點呢:

1. one stage的算法速度非??欤m合做實時檢測的任務(wù),比如視頻;
2. two stage的算法速度慢,但是檢測效果更佳;

缺點呢?

  1. one stage的算法通常相比于two stage的算法,效果不太好
  2. two stage的算法經(jīng)過了一步初篩,通常效果會更好,更準(zhǔn)確

目標(biāo)檢測算法綜述截圖,展示了隨時間發(fā)展,one- stagetwo- stage的發(fā)展分枝。從2014年RCNN開始,再到后來SSD和YOLO的橫空出世,基本上奠定了兩條路的主基調(diào)。

【AI面試】目標(biāo)檢測中one-stage、two-stage算法的內(nèi)容和優(yōu)缺點對比匯總,7天快速通過AI/CV面試,人工智能,目標(biāo)檢測,算法,計算機視覺

一、two stage

two stage的代表faster RCNN的模型結(jié)構(gòu)圖。稍微簡述下:

  1. 特征提取模塊backbone,主要用于對輸入圖像進行特征抽取,輸出特征圖Feature Map,一般會采用resnet、VGG,GoogLeNet的主干部分(去掉全連接層)作為backbone.
  2. 第一階段的RPN(region proposal network)區(qū)域推薦網(wǎng)絡(luò),主要就是基于backbone輸出的Feature Map,篩選目標(biāo)候選框,給出進一步判斷的Proposal
  3. RPN完成后,得到的候選框還只是區(qū)分出它是前景positive和背景negative,還不能區(qū)分是貓,還是狗
  4. 于是,就有了第二階段,對第一階段提議的陽性positive候選框Proposal,與backbone輸出的Feature Map,裁剪出區(qū)域,經(jīng)過ROI Pooling,統(tǒng)一到一致的尺寸,進入到ROI Head階段。
  5. 經(jīng)過卷積和全連接層,區(qū)分出具體的類別cls和bbox coor(cx, cy, pw, ph)的偏移量(tx, ty, tw, th),進一步修正目標(biāo)框,得到最終的位置(bx=σ(tx)+cx, by=σ(ty)+cy, bw=pw*tw, bh=ph*th)

如下圖所示,這樣看,是不是真的把預(yù)測目標(biāo)檢測的任務(wù),給拆分成兩個階段分段的來進行預(yù)測的呢?更多內(nèi)容推薦閱讀這里:一文讀懂Faster RCNN
【AI面試】目標(biāo)檢測中one-stage、two-stage算法的內(nèi)容和優(yōu)缺點對比匯總,7天快速通過AI/CV面試,人工智能,目標(biāo)檢測,算法,計算機視覺

1.1、訓(xùn)練和驗證階段

其實,要理解faster RCNN的整理工作方式,需要區(qū)分成訓(xùn)練階段train 推理階段inference,區(qū)別對待。

先說簡單的推理階段inference。

推理階段與訓(xùn)練階段最大的不同,就是推理階段沒有金標(biāo)準(zhǔn)target, 也就沒有計算損失,更沒有辦法更新網(wǎng)絡(luò)模型:

  1. backbone的特征提取階段,接觸不到target,所以這個階段沒有損失值,兩個階段都是一樣的,就是負(fù)責(zé)把輸入圖像,轉(zhuǎn)成特征圖;
  2. RPN階段就不同了,因為這個階段是要為最后的分類,提供proposal的。這個proposal需要引入anchor box,所有的proposal都會被傳入ROI Pooling層進行分類和回歸;
  3. ROI Head階段,RPN推薦的proposal會經(jīng)過ROI Pooling層,調(diào)整到統(tǒng)一大小,例如7x7。經(jīng)過兩個fc層,輸出具體的類別+背景,和坐標(biāo)框。
  4. RPN階段返回的proposal相互之間是高度重疊的,采用了NMS降低數(shù)量。

然后是訓(xùn)練階段train。

訓(xùn)練階段就要計算損失了,就要更新模型了,這塊都是與推理階段不一樣的:

  1. backbone的特征提取階段,一樣;
  2. RPN階段就不同了,因為這個階段,需要區(qū)分positive還是negative。咋知道這個anchor是陽性,還是陰性呢?那就需要使用標(biāo)記target進行區(qū)分。在這個階段,有了IOU,就是PD與GT計算IOU。如何區(qū)分陽性還是陰性呢?
  • IOU值大于0.7的是陽性,
  • IOU值小于0.3的是陰性,
  • 其他丟棄掉;

we randomly sample 256 anchors in an image to compute the loss function of a mini-batch, where the sampled positive and negative anchors have a ratio of up to 1:1. If there are fewer than 128 positive samples in an image, we pad the mini-batch with negative ones.

上段部分來自于論文:Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks 的Training RPNs部分。

翻譯過來的意思就是:在RPN階段計算一個mini batch的loss function時候,我們隨機的在一張圖片中選擇256個anchor,陽性和陰性的樣本比例1:1。如果一種圖片中的陽性anchor少于128個,就用negative補上。

  1. 此時,RPN階段的損失,也是由2分之一(0.5)的positive和2分之1的negative組成的,參與損失計算,包括陽性or陰性類別損失和位置偏移損失;
  2. 最后,在ROI Head階段,輸出具體的類別,和坐標(biāo)框,這兩塊都要參與到損失的計算,比較的好理解。
  3. NMS在訓(xùn)練階段,不參與。(我理解是因為在訓(xùn)練階段,NMS會去除掉很多的正樣本,使得正負(fù)樣本就更加的不均衡了)

:在訓(xùn)練train階段,會有哪些損失值?(面試中常被提及的問題

  1. RPN 損失函數(shù):在 RPN 階段,會使用 RPN 模型生成一系列 anchor,并根據(jù)這些 anchor 來進行目標(biāo)檢測。RPN 損失函數(shù)一般包括兩個部分:

    • 分類損失(交叉熵?fù)p失):分類損失用于判斷 anchor 是否為前景(即是否包含目標(biāo))
    • 回歸損失(Smooth L1 ):回歸損失用于計算anchor和gt bounding box的誤差。
  2. Fast R-CNN (ROI Head)損失函數(shù):在 Fast R-CNN 階段,會使用 RoI Pooling 對 RPN 生成的 proposal 進行特征提取,并對提取的特征進行分類和回歸。Fast R-CNN 損失函數(shù)同樣包括分類損失和回歸損失:

    • 分類損失(交叉熵?fù)p失):經(jīng)過softmax后,各個類別對應(yīng)的損失;
    • 回歸損失(Smooth L1 ):回歸損失用于計算roi和gt bounding box的誤差。
  3. 總損失函數(shù):在訓(xùn)練過程中,RPN 和 Fast R-CNN 的損失函數(shù)需要同時進行優(yōu)化。因此,一般會將 RPN 和 Fast R-CNN 的損失函數(shù)合并為一個總損失函數(shù)(當(dāng)然,也可以分別進行回歸調(diào)整),并使用反向傳播算法來進行優(yōu)化。

損失圖;

兩個階段的位置損失都是 Smooth L1,同樣一個位置,為啥需要計算兩次損失呢?然后回歸兩次位置呢?

  • RPN 階段和 Fast R-CNN 階段中的位置都是反映在原圖上的同一塊像素區(qū)域,都是表示物體的位置偏移量。

  • 對于RPN階段,先對anchor進行一次位置回歸,得到一組粗略的預(yù)測框,再利用這些預(yù)測框去RoI pooling得到RoI,最后對RoI進行第二次位置回歸,得到最終的目標(biāo)框位置。

  • 在 RPN 階段中,每個 anchor 與其對應(yīng)的 ground-truth bbox 之間的位置偏移量會被計算,并通過 Smooth L1 損失函數(shù)來度量它們之間的差異。這個損失函數(shù)的計算僅涉及到對 anchor 的位置回歸。

  • 在 Fast R-CNN 階段中,由于每個 RoI 的形狀都是不同的,所以每個 RoI 與其對應(yīng)的 ground-truth bbox 之間的位置偏移量也需要被計算,并通過 Smooth L1 損失函數(shù)來度量它們之間的差異。這個損失函數(shù)的計算涉及到對 RoI 的位置回歸。

  • 因此,F(xiàn)aster R-CNN 中需要計算兩次位置損失,是因為兩個階段都需要對物體的位置進行回歸。需要注意的是,這兩個階段的位置回歸所針對的對象是不同的

    • RPN 階段中的位置回歸是針對 anchor 的;
    • 而 Fast R-CNN 階段中的位置回歸是針對 RoI 的。
  • 兩次位置回歸的目的都是為了使目標(biāo)框的位置預(yù)測更加準(zhǔn)確。

1.2、RCNN、fast RCNN、faster RCNN橫評

【AI面試】目標(biāo)檢測中one-stage、two-stage算法的內(nèi)容和優(yōu)缺點對比匯總,7天快速通過AI/CV面試,人工智能,目標(biāo)檢測,算法,計算機視覺

1.2.1、RCNN(Region-based Convolutional Neutal Network)

  • 目標(biāo)框的獲取方式:select search(選擇性搜索算法)來生成候選區(qū)域,從原圖裁剪出ROIs
  • 分類方式:SVM
  • 目標(biāo)位置:bounding-box regressor

缺點:

  • 訓(xùn)練是多階段的:先fine tunes目標(biāo)proposal;再訓(xùn)練SVM分類器;再訓(xùn)練bounding box回歸器
  • 訓(xùn)練再內(nèi)存空間和時間上開銷大:分階段訓(xùn)練,不同階段的輸出需要寫入內(nèi)存
  • 目標(biāo)檢測很慢

1.2.2、 fast RCNN

  • 目標(biāo)框的獲取方式:input image和region of interest(ROIs)在特征層階段相遇、裁剪,經(jīng)過RoI max pooling,調(diào)整成一致尺寸(學(xué)習(xí)了SPP Net,例如7x7大?。?,送入fully convolutional network.
  • 分類方式:分類分支,經(jīng)過softmax輸出類別,
  • 目標(biāo)位置:Bbox regressor輸出位置偏移

缺點:候選區(qū)域的生成仍然采用選擇性搜索算法,速度仍有提升空間

1.2.3、faster RCNN

  • 目標(biāo)框的獲取方式:基于anchor base的RPN階段,用于輸出候選的proposal,和特征層相遇、經(jīng)過RoI max pooling,調(diào)整成一致尺寸,送入fully convolutional network.
  • 分類方式:分類分支,經(jīng)過softmax輸出類別,
  • 目標(biāo)位置:Bbox regressor輸出位置偏移

1.3、mask RCNN

【AI面試】目標(biāo)檢測中one-stage、two-stage算法的內(nèi)容和優(yōu)缺點對比匯總,7天快速通過AI/CV面試,人工智能,目標(biāo)檢測,算法,計算機視覺
mask RCNN是在faster RCNN的基礎(chǔ)上,增加了一個mask預(yù)測分值。其中為了得到更好的mask精細(xì)分割結(jié)果,在fast rcnn head階段,將之前目標(biāo)檢測的roi pooling,替換成roi align。

在分類和Bbox預(yù)測,均和faster RCNN是一樣的,在mask預(yù)測有差別,其中:

  1. 在分類部分,輸出的shape為(N, num_classes),其中N為RoI的數(shù)量,num_classes為類別數(shù)量(包括背景類)。每個RoI對應(yīng)著num_classes個概率值,分別表示該RoI屬于不同類別的概率。
  2. 在Bbox回歸部分,輸出的shape也為(N, 4 x num_classes),其中每個RoI對應(yīng)著4 x num_classes個偏移量,分別表示該RoI相對于目標(biāo)框的水平偏移量、垂直偏移量、寬度縮放比例和高度縮放比例。
  3. binary mask預(yù)測部分,每個RoI對應(yīng)的特征圖塊上應(yīng)用一個全卷積網(wǎng)絡(luò)(Fully Conv Network, FCN),輸出的shape為(N, mask_height, mask_width, num_classes),其中:
    • N為RoI的數(shù)量
    • mask_height和mask_width為輸出mask的高度和寬度,
    • num_classes為類別數(shù)量,
    • 輸出的每個元素表示該RoI屬于對應(yīng)類別時,每個像素點經(jīng)過per-pixel sigmoid操作,輸出為前景(即目標(biāo)物體)的概率,
    • mask 采用binary cross-entropy loss(only defined on the k-th mask ,other mask outputs do not contribute to the loss.)

問:為什么在分類階段,已經(jīng)對roi的類別進行了預(yù)測,在mask預(yù)測階段,還要對每一個classes進行mask預(yù)測呢?

答:在傳統(tǒng)的目標(biāo)檢測中,通常是先使用分類器對目標(biāo)進行分類,然后使用回歸器對目標(biāo)的位置進行精確定位,最后再使用分割模型對目標(biāo)進行像素級別的分割。這種做法將分類、定位和分割三個任務(wù)放在了不同的階段進行,每個任務(wù)都需要單獨地訓(xùn)練模型,而且彼此之間存在一定的耦合關(guān)系。

相比之下,Mask R-CNN 將分類、定位和分割三個任務(wù)整合到了同一個網(wǎng)絡(luò)中進行聯(lián)合訓(xùn)練,通過共享網(wǎng)絡(luò)層來解耦三個任務(wù)之間的關(guān)系。

具體來說,Mask R-CNN 在 RoI pooling 的基礎(chǔ)上增加了一個分割分支,該分支由一個全卷積網(wǎng)絡(luò)組成,負(fù)責(zé)對每個 RoI 中的像素進行分類,并生成相應(yīng)的掩碼。因此,分類、定位和分割三個任務(wù)可以在同一個網(wǎng)絡(luò)中共享特征,同時也能夠互相影響和優(yōu)化。

Mask R-CNN 的這種設(shè)計方式可以使不同任務(wù)之間的關(guān)系更加松散,同時也能夠提高網(wǎng)絡(luò)的訓(xùn)練效率和泛化能力,使得網(wǎng)絡(luò)更加容易學(xué)習(xí)到目標(biāo)的語義信息,從而提高目標(biāo)檢測和分割的準(zhǔn)確率。

二、one stage

one stage的開山之作yolo v1(論文地址:you only look once)。其中下面是一張網(wǎng)絡(luò)模型的簡圖,可以看到:

  1. 輸入圖像,經(jīng)過一連串的卷積層操作(24 convolutional layers),得到了一個channel=1024維的向量;
  2. 得到下采樣特征圖后,連接2個 fully connected layers
  3. 直接得到預(yù)測輸出的output,大小是:7x7x30,S ×S×(B?5+C) tensor。For evaluating YOLO on PASCAL VOC, we use S = 7, B =2. PASCAL VOC has 20 labelled classes so C = 20. Our final prediction is a 7 × 7 × 30 tensor.

【AI面試】目標(biāo)檢測中one-stage、two-stage算法的內(nèi)容和優(yōu)缺點對比匯總,7天快速通過AI/CV面試,人工智能,目標(biāo)檢測,算法,計算機視覺
可以看出來,yolo v1將目標(biāo)檢測問題,轉(zhuǎn)化為了回歸問題。把中間網(wǎng)絡(luò)模型學(xué)習(xí)做的事情,都當(dāng)做了一個黑箱,就是輸入圖像,輸出目標(biāo)。具體中間網(wǎng)絡(luò)是如何辦到的?這個不管,全部交由網(wǎng)絡(luò)模型的監(jiān)督信號,自己擬合。

2.1、訓(xùn)練和驗證階段

要理解單階段YOLO V1的整體工作方式,需要區(qū)分成訓(xùn)練階段train推理階段inference,區(qū)別對待。

訓(xùn)練階段train:損失函數(shù)定義如下:
【AI面試】目標(biāo)檢測中one-stage、two-stage算法的內(nèi)容和優(yōu)缺點對比匯總,7天快速通過AI/CV面試,人工智能,目標(biāo)檢測,算法,計算機視覺
要想要看到上面的損失函數(shù)公式,首先要了解這些字母,都表示是什么?其中:

  1. S, grid cell size,論文里面是7
  2. B, bounding box個數(shù),論文里面是2
  3. x, y, w, h, 分別表示bounding box的中心點坐標(biāo),和寬、高
  4. C, Confidence,是否有目標(biāo)的概率
  5. p, Pr(Classi|Object),有目標(biāo)下類別的條件概率
  6. obj,noobj,表示有物體的權(quán)重和沒有物體
  7. λcoord = 5 ,λnoobj = .5,有物體的權(quán)重和沒有物體的權(quán)重

每兩項之間,都是算距離的,都是按照回歸的方式進行求損失的。其他的建議參考這里:YOLO(You Only Look Once)算法詳解。那包括了哪些損失呢?

YOLO V1損失函數(shù),包括(面試中常被提及的問題):

  1. confidence loss(C) 目標(biāo)置信度損失,框內(nèi)是有目標(biāo)的損失;
  2. classification loss(pc) 在有目標(biāo)下,分類的損失
  3. localization loss(x, y, w, h) 定位損失,預(yù)測框和真實框之間的誤差

(在YOLO系列的損失函數(shù)中,經(jīng)過被忘記的就是目標(biāo)置信度損失,表示有目標(biāo)的置信度;因為后面預(yù)測具體類別的概率,其實是一個條件概率,也就是有目標(biāo)情況下的概率,這塊后面會展開)

:在yolo系列中,為什么要把分類任務(wù),給拆分為是否有目標(biāo)的概率,和目標(biāo)下類別的條件概率呢?為什么不能像其他目標(biāo)檢測任務(wù)一樣,直接對類別進行預(yù)測呢?

在YOLO系列中,將分類任務(wù)拆分為是否有目標(biāo)的概率和目標(biāo)下類別的條件概率是為了解決兩個問題:

  1. 目標(biāo)檢測中的類別不平衡問題具體的各個類,數(shù)量不等,不是有目標(biāo)和無目標(biāo)的數(shù)量):在目標(biāo)檢測任務(wù)中,不同類別的目標(biāo)可能具有不同的頻率。如果直接對類別進行預(yù)測,那些出現(xiàn)頻率較低的類別可能會被忽視或預(yù)測不準(zhǔn)確。通過將分類任務(wù)拆分為是否有目標(biāo)的概率和目標(biāo)下類別的條件概率,可以更好地處理類別不平衡問題。模型可以更容易地學(xué)習(xí)到是否存在目標(biāo)的信息,并獨立地預(yù)測每個類別的條件概率。

  2. 目標(biāo)多樣性問題:目標(biāo)檢測任務(wù)中的目標(biāo)可能具有不同的尺寸、形狀和外觀。將分類任務(wù)拆分為是否有目標(biāo)的概率和目標(biāo)下類別的條件概率可以更好地適應(yīng)目標(biāo)的多樣性。通過預(yù)測是否有目標(biāo)的概率,模型可以快速過濾掉圖像中沒有目標(biāo)的區(qū)域,從而減少計算量。而目標(biāo)下類別的條件概率可以更準(zhǔn)確地預(yù)測每個目標(biāo)的類別,而不受其他類別的干擾

怎么理解呢?

  1. 模型通過預(yù)測每個anchor是否包含目標(biāo)的概率來確定感興趣的區(qū)域。
  2. 對于那些被預(yù)測為沒有目標(biāo)的anchor,可以忽略它們,無需進行進一步的處理和計算。這樣做可以減少對這些區(qū)域的特征提取、分類和回歸等計算步驟,從而降低整體的計算量。
  3. 通過減少對沒有目標(biāo)的區(qū)域的處理,模型可以更高效地進行目標(biāo)檢測,并在處理大量候選區(qū)域時提高速度。這對于處理大尺寸圖像或在實時場景中進行目標(biāo)檢測尤為重要,可以提升模型的實用性和效率。

因此,將分類任務(wù)拆分為是否有目標(biāo)的概率和目標(biāo)下類別的條件概率,可以提高目標(biāo)檢測的準(zhǔn)確性和魯棒性,同時解決類別不平衡和目標(biāo)多樣性等問題。

在inference階段,步驟如下:

  1. 對于輸入圖像,resize為一個正方形(416x416)
  2. split the image into grid,大小為7x7
  3. 每一個grid cell 都預(yù)測B各bounding box框,論文里面B=2
  4. 每一個grid cell 只預(yù)測一個類。B=2兩個網(wǎng)格,那一個grid cell就是2個網(wǎng)格,兩個類
  5. 每一個bounding box框,有4個位置參數(shù)(x_c,y_c,w,h)1個置信度P(Object),表示有物體的概率,用于區(qū)分存在目標(biāo)物體,還是背景
  6. 到這里,就有了7x7x2=98個bounding box框,每一個框都包含5個參數(shù)(x_c,y_c,w,h,confidence)
  7. 每個bounding box框的中心點,都在對應(yīng)的grid cell像素內(nèi)。一個grid cell預(yù)測2個bounding box,就是10個參數(shù),再加上目標(biāo)條件概率20個類,每一個類都有一個條件概率P(Car|Object)。在該階段,最后對應(yīng)類的概率=P(Car|Object) x P(Object)。
  8. 這樣一個grid cell對應(yīng)的輸出向量就是2x5+20=30個。再加上一張輸入圖像被劃分為7x7個grid cell,最后的輸出就是7x7x30個張量大小。
  9. 至此,我們就預(yù)測得到了一堆框框,個數(shù)是7x7x2=98。最后經(jīng)過NMS,去掉用于的框,得到最終的預(yù)測結(jié)果。

【AI面試】目標(biāo)檢測中one-stage、two-stage算法的內(nèi)容和優(yōu)缺點對比匯總,7天快速通過AI/CV面試,人工智能,目標(biāo)檢測,算法,計算機視覺

(在沒有理解清楚這段之前,我一直在疑惑:
為什么2個bounding box已經(jīng)有了一個概率,這個概率是什么?后面20個類,是可以區(qū)分具體這個bounding
box屬于哪個類的,他們之間又是什么關(guān)系。不知道你到這里,是否理解清楚了)

這塊視頻詳解,參考這里:【精讀AI論文】YOLO V1目標(biāo)檢測,看我就夠了-同濟子豪兄

一步到位,沒有two stage的先預(yù)測出前景還是背景,然后在預(yù)測具體類別的過程,簡化了很多,端到端的過程。

YOLO v1算法的缺點:

1、位置精確性差,對于小目標(biāo)物體以及物體比較密集的也檢測不好(grid cell的原因,因為只能預(yù)測98個框),比如一群小鳥。
2、YOLO雖然可以降低將背景檢測為物體的概率,但同時導(dǎo)致召回率較低。

2.2、YOLOv1、 YOLOv2、 YOLOv3、橫評

YOLOv2 進行了許多改進,包括以下幾個方面:

  1. 使用 batch normalization:YOLOv2 在卷積層后加入 Batch Normalization,可以加速訓(xùn)練,提高模型的精度和魯棒性。
  2. 改進網(wǎng)絡(luò)結(jié)構(gòu):YOLOv2 采用了更深的網(wǎng)絡(luò)結(jié)構(gòu),引入了殘差網(wǎng)絡(luò)(ResNet)的結(jié)構(gòu),和NIN結(jié)構(gòu),增加了網(wǎng)絡(luò)層數(shù)
  3. anchor boxes: 替代了之前的固定網(wǎng)格grid cell來提高物體檢測的精度,kmean聚類確定anchor尺寸。
  4. passthrough layer 細(xì)粒度特征
  5. 采用了多尺度訓(xùn)練和預(yù)測: 引入了多尺度訓(xùn)練方法,可以提高模型對不同尺度物體的檢測能力。(不同于FPN,他是在訓(xùn)練階段每10個batch,會重新選擇一個新的圖像尺寸,包括{320,352,…,608}等等32倍數(shù)的尺寸)

YOLOv3 的改進主要集中在以下幾個方面:

  1. 使用了更深的 Darknet-53 網(wǎng)絡(luò):YOLOv3 使用了一個名為 Darknet-53 的更深的卷積神經(jīng)網(wǎng)絡(luò),相較于之前的 Darknet-19 網(wǎng)絡(luò),它具有更強的特征提取能力,可以提高目標(biāo)檢測的準(zhǔn)確性。
  2. 引入了 FPN 特征金字塔:YOLOv3 引入了 FPN(Feature Pyramid Network)特征金字塔,可以利用不同層級的特征信息進行目標(biāo)檢測(predicts boxes at 3 different scales. predict 3 boxes at each scale),從而提高檢測的準(zhǔn)確性。
  3. 使用更多的 Anchor Boxes:YOLOv3 使用了更多的 Anchor Boxes,可以更好地適應(yīng)不同大小和形狀的目標(biāo)物體,依舊使用 k-means clustering。
  4. 首次binary cross-entropy loss 用于分類

yolo v3之后,作者就不在更新YOLO系列了,再之后的改版,都是其他人或者團隊繼續(xù)更新的。YOLOv5再YOLOv4更新的沒多久就出來了,且是pytorch的開源代碼,所以相比于YOLOv4的C版本,受眾更多。

YOLOv5 (沒有論文)的改進主要集中在以下幾個方面:

  1. 自適應(yīng)anchor:在訓(xùn)練模型時,YOLOv5 會自己學(xué)習(xí)數(shù)據(jù)集中的最佳 anchor boxes,而不再需要先離線運行 K-means 算法聚類得到 k 個 anchor box 并修改 head 網(wǎng)絡(luò)參數(shù)??偟膩碚f,YOLOv5 流程簡單且自動化了。
  2. 自適應(yīng)圖片縮放(letterBox)
  3. Focus結(jié)構(gòu)

結(jié)構(gòu)圖:

【AI面試】目標(biāo)檢測中one-stage、two-stage算法的內(nèi)容和優(yōu)缺點對比匯總,7天快速通過AI/CV面試,人工智能,目標(biāo)檢測,算法,計算機視覺
Focus結(jié)構(gòu)中:

  1. 原始的640 × 640 × 3的圖像輸入Focus結(jié)構(gòu),采用切片操作。
  2. 具體操作是在一張圖片中每隔一個像素拿到一個值,類似于鄰近下采樣。
  3. 將一個channel上,W、H信息就集中到了通道空間,輸入通道擴充了4倍;RGB 3個通道,就變成了12個channel。
  4. 先變成320 × 320 × 12的特征圖,再經(jīng)過一次卷積操作,最終變成320 × 320 × 32的特征圖。
  5. 最終得到了沒有信息丟失情況下的二倍下采樣特征圖
  6. 目的是:減少傳統(tǒng)下采樣帶來的信息損失。
  7. 切片操作如下:
    【AI面試】目標(biāo)檢測中one-stage、two-stage算法的內(nèi)容和優(yōu)缺點對比匯總,7天快速通過AI/CV面試,人工智能,目標(biāo)檢測,算法,計算機視覺

詳盡內(nèi)容建議參考這里:yolov5中的Focus模塊的理解

YOLOv5 4個大結(jié)構(gòu),分別是:

  1. 輸入端:Mosaic數(shù)據(jù)增強(對于小目標(biāo)的檢測效果好)、cutMix、MixUP。自適應(yīng)錨框計算、自適應(yīng)圖片縮放
  2. Backbone:Focus結(jié)構(gòu)(slice切片操作,把高分辨率的圖片(特征圖)拆分成多個低分辨率的圖片/特征圖,即隔列采樣+拼接,可以減少下采樣帶來的信息損失),CSP結(jié)構(gòu)
  3. Neck:FPN+PAN結(jié)構(gòu)
  4. Prediction:GIOU_Loss

YOLOv5 不分給的創(chuàng)新點,很多是在YOLOv4階段就有的,這里就沒有分開說了,細(xì)節(jié)的可以參考下面這個文章)

更多詳細(xì)的部分,建議參考這里:深入淺出Yolo系列之Yolov3&Yolov4&Yolov5&Yolox核心基礎(chǔ)知識完整講解

問:了解為什么要進行Mosaic數(shù)據(jù)增強呢?
答:在平時項目訓(xùn)練時,小目標(biāo)的AP一般比中目標(biāo)和大目標(biāo)低很多。而Coco數(shù)據(jù)集中也包含大量的小目標(biāo),但比較麻煩的是小目標(biāo)的分布并不均勻。主要有幾個優(yōu)點:

【AI面試】目標(biāo)檢測中one-stage、two-stage算法的內(nèi)容和優(yōu)缺點對比匯總,7天快速通過AI/CV面試,人工智能,目標(biāo)檢測,算法,計算機視覺

  1. 豐富數(shù)據(jù)集:隨機使用4張圖片,隨機縮放,再隨機分布進行拼接,大大豐富了檢測數(shù)據(jù)集,特別是隨機縮放增加了很多小目標(biāo),讓網(wǎng)絡(luò)的魯棒性更好。
  2. 減少GPU:可能會有人說,隨機縮放,普通的數(shù)據(jù)增強也可以做,但作者考慮到很多人可能只有一個GPU,因此Mosaic增強訓(xùn)練時,可以直接計算4張圖片的數(shù)據(jù),使得Mini-batch大小并不需要很大,一個GPU就可以達到比較好的效果。

三、性能對比

下面是在論文centerNet中,作者對普遍常用的目標(biāo)檢測、分割模型做了次系統(tǒng)的測試。其中,上部分是two stage的主要算法,下部分是one stage的主要算法??梢园l(fā)現(xiàn):

  • FPS幀率這塊,one stage都是相對比較快的,尤其是yolo系列。two stage就慢了很多。
  • two stage的AP就比較的高,最高能到48.4,低的也有46,而one stage的就比較低,最高才45。尤其是TridentNet,幾乎是這些里面,各個領(lǐng)域都是最佳的。
    【AI面試】目標(biāo)檢測中one-stage、two-stage算法的內(nèi)容和優(yōu)缺點對比匯總,7天快速通過AI/CV面試,人工智能,目標(biāo)檢測,算法,計算機視覺

四、總結(jié)

到這里,目標(biāo)檢測中one-stage、two-stage算法的內(nèi)容基本上就結(jié)束了。但是,面試官是不會罷休的,他會沿著目標(biāo)檢測算法,繼續(xù)深入展開,比如:

  1. anchor base(anchor boxes)和anchor free分別是什么?有什么區(qū)別和優(yōu)缺點?直達鏈接:【AI面試】Anchor based 、 Anchor free 和 no anchor 的辨析
  2. faster RCNNROI Poolingmask RCNNROI Align分別是什么?有什么有缺點?
  3. yolo的損失函數(shù)式什么?faster RCNN的損失函數(shù)又是什么?
  4. 等等

所以說,目標(biāo)檢測是深度學(xué)習(xí)領(lǐng)域的一個重點,能夠考察的內(nèi)容很多,主要還是因為在各個企業(yè)里面,這塊的內(nèi)容,是真實可以落地的。所以,這塊內(nèi)容是真要吃透。

(上文內(nèi)容,比較的豐富,和比較的雜。是根據(jù)論文和一些網(wǎng)絡(luò)資料綜合記錄的。如果你對其中的內(nèi)容,存在異議或需要糾正的地方,歡迎評論區(qū)留言,一起進步,謝謝)

如果恰巧你也是在這個領(lǐng)域內(nèi)做研究的,并且恰好在準(zhǔn)備找工作,那么訂閱這篇面試專欄,就再好不過了,專欄鏈接:7天快速通過AI/CV面試

我想這個專欄提供的不僅僅是學(xué)習(xí)到了哪些面試過程中可能真實遇到的問題,更多的是返回來,思考自己簡歷中撰寫的研究可能會被問到的問題。預(yù)先思考,總比臨場發(fā)揮要好,這樣也幫助自己進步。


最后,如果您覺得本篇文章對你有幫助,歡迎點贊 ??,讓更多人看到,這是對我繼續(xù)寫下去的鼓勵。如果能再點擊下方的紅包打賞,給博主來一杯咖啡,那就太好了。??文章來源地址http://www.zghlxwxcb.cn/news/detail-519656.html

到了這里,關(guān)于【AI面試】目標(biāo)檢測中one-stage、two-stage算法的內(nèi)容和優(yōu)缺點對比匯總的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 目標(biāo)檢測--02(Two Stage目標(biāo)檢測算法1)

    目標(biāo)檢測--02(Two Stage目標(biāo)檢測算法1)

    R-CNN有哪些創(chuàng)新點? 使用CNN(ConvNet)對 region proposals 計算 feature vectors。從經(jīng)驗驅(qū)動特征(SIFT、HOG)到數(shù)據(jù)驅(qū)動特征(CNN feature map),提高特征對樣本的表示能力。 采用大樣本下(ILSVRC)有監(jiān)督預(yù)訓(xùn)練和小樣本(PASCAL)微調(diào)(fine-tuning)的方法解決小樣本難以訓(xùn)練甚至過擬合

    2024年01月19日
    瀏覽(23)
  • 論文筆記:Continuous Trajectory Generation Based on Two-Stage GAN

    論文筆記:Continuous Trajectory Generation Based on Two-Stage GAN

    2023 AAAI 建模人類個體移動模式并生成接近真實的軌跡在許多應(yīng)用中至關(guān)重要 1)生成軌跡方法能夠為城市規(guī)劃、流行病傳播分析和交通管控等城市假設(shè)分析場景提供仿仿真數(shù)據(jù)支撐 2)生成軌跡方法也是目前促進軌跡數(shù)據(jù)開源共享與解決軌跡數(shù)據(jù)隱私問題的可行解決方案 在不

    2024年02月12日
    瀏覽(47)
  • 目標(biāo)檢測-One Stage-YOLOx

    目標(biāo)檢測-One Stage-YOLOx

    根據(jù)前文CenterNet、YOLOv4等可以看出學(xué)界和工業(yè)界都在積極探索使用各種tricks(anchor-free、各種組件、數(shù)據(jù)增強技術(shù)等等)來改進One Stage網(wǎng)絡(luò)的表現(xiàn),2021年曠視科技結(jié)合先進的改進技巧,產(chǎn)出了多種改進模型,在多種情況下達到速度和精度的SOTA。 值得一提的是,YOLOx使得YOLO系

    2024年01月23日
    瀏覽(27)
  • 目標(biāo)檢測-One Stage-YOLOv7

    目標(biāo)檢測-One Stage-YOLOv7

    自YOLOv4之后,其作者提出一些新的trciks,YOLOv7誕生主要貢獻分為以下3個方面 設(shè)計了幾種訓(xùn)練tricks(bag-of-freebies),使得實時目標(biāo)檢測可以在不增加推理成本的情況下大大提高檢測精度 針對目標(biāo)檢測領(lǐng)域現(xiàn)有的兩個問題提出解決方案:一是模塊重參化如何高效合并,二是動態(tài)

    2024年01月25日
    瀏覽(48)
  • 目標(biāo)檢測-One Stage-YOLOv8

    目標(biāo)檢測-One Stage-YOLOv8

    終于到了YOLO系列最新最火爆的網(wǎng)絡(luò)–YOLOv8,前面YOLOv5中已經(jīng)提到ultralytics團隊集成了先進的YOLO系列目標(biāo)檢測最佳實踐,YOLOv8則是他們的最新力作。 YOLOv8本身的創(chuàng)新點不多,偏向工程實踐。 提示:以下是本篇文章正文內(nèi)容,下面內(nèi)容可供參考 YOLOv8同樣根據(jù)縮放給出了以下版本

    2024年01月19日
    瀏覽(24)
  • 目標(biāo)檢測-One Stage-YOLOv5

    目標(biāo)檢測-One Stage-YOLOv5

    前文目標(biāo)檢測-One Stage-YOLOv4提到Y(jié)OLOv4主要是基于技巧的集成,對于算法落地具有重大意義,YOLOv5則在工程應(yīng)用方面更近一步,將算法深度集成,使得使用者不用再過多關(guān)注算法實現(xiàn),且提供了多種預(yù)訓(xùn)練模型,到目前為止,由ultralytics團隊開發(fā)的 ultralytics 包,已經(jīng)支持 YOLOv3

    2024年01月23日
    瀏覽(19)
  • 目標(biāo)檢測-One Stage-YOLOv6

    目標(biāo)檢測-One Stage-YOLOv6

    YOLOv6 是美團視覺智能部研發(fā)的一款目標(biāo)檢測框架,致力于工業(yè)應(yīng)用。論文題目是《YOLOv6: A Single-Stage Object Detection Framework for Industrial Applications》。 和YOLOv4、YOLOv5等不同的是,YOLOv6對網(wǎng)絡(luò)結(jié)構(gòu)的改動較大。 除了模型的結(jié)構(gòu)之外,YOLOv6的數(shù)據(jù)增強和YOLOv5的保持一致;而標(biāo)簽分配

    2024年01月23日
    瀏覽(24)
  • OSFormer: One-Stage Camouflaged Instance Segmentation with Transformers

    OSFormer: One-Stage Camouflaged Instance Segmentation with Transformers

    地址:https://arxiv.org/pdf/2207.02255.pdf 1. 摘要 ????OSFormer為基于transformer的偽裝實例分割(CIS)框架,有兩個關(guān)鍵設(shè)計,首先是位置敏感transformer(LST),通過【位置引導(dǎo)查詢】和【混合卷積前向傳播網(wǎng)絡(luò)】獲得定位標(biāo)簽和實例級參數(shù);第二,開發(fā)粗糙到精細(xì)融合模塊(CFF)合并來

    2024年02月12日
    瀏覽(28)
  • TOOD Task-aligned One-stage Object Detection 論文學(xué)習(xí)

    TOOD Task-aligned One-stage Object Detection 論文學(xué)習(xí)

    目標(biāo)檢測通過多任務(wù)學(xué)習(xí)的方式,協(xié)同優(yōu)化目標(biāo)的分類和定位。分類任務(wù)會學(xué)習(xí)目標(biāo)的判別特征,關(guān)注于目標(biāo)的顯著性或關(guān)鍵區(qū)域,而定位任務(wù)則學(xué)習(xí)準(zhǔn)確地定位目標(biāo)的邊界。因為定位和分類的學(xué)習(xí)機制不同,這倆任務(wù)學(xué)到的特征分布也不同。當(dāng)這兩個分支做預(yù)測時,會產(chǎn)生

    2024年02月15日
    瀏覽(26)
  • FCOS3D: Fully Convolutional One-Stage Monocular 3D Object Detection

    FCOS3D: Fully Convolutional One-Stage Monocular 3D Object Detection

    Paper name FCOS3D: Fully Convolutional One-Stage Monocular 3D Object Detection Paper Reading Note URL: https://arxiv.org/pdf/2104.10956.pdf 基于 Fcos 改進的 3d 檢測方案,在 NeurIPS 2020 的 nuScenes 3d 檢測比賽上取得了第一名成績 Fcos3d 方案 將 7-DoF 3D 目標(biāo)解耦為 2D 和 3D 的屬性 考慮對象的二維比例,將對象分布到

    2023年04月08日
    瀏覽(48)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包