日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 人工智能 > 目标检测 >内容正文

目标检测

目标检测与分割总结

發(fā)布時(shí)間:2025/3/8 目标检测 73 豆豆
生活随笔 收集整理的這篇文章主要介紹了 目标检测与分割总结 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

目標(biāo)檢測(cè)最常用的三個(gè)模型:Faster R-CNN、SSD和YOLO

Faster R-CNN架構(gòu)

在Faster RCNN中,候選框是經(jīng)過(guò)RPN產(chǎn)生的,然后再把各個(gè)“候選框”映射到特征圖上,得到RoIs。

Faster R-CNN步驟:
(1) 由輸入圖片產(chǎn)生的區(qū)域候選
(2) 最后一層卷積輸出的所有通道
(3) ROI pooling
注解:ROI Pooling的意義
ROIs Pooling。顧名思義,是Pooling層的一種,而且是針對(duì)RoIs的Pooling,他的特點(diǎn)是輸入特征圖尺寸不固定,但是輸出特征圖尺寸固定;

ROI pooling總結(jié):
(1)用于目標(biāo)檢測(cè)任務(wù);
(2)允許我們對(duì)CNN中的feature map進(jìn)行reuse;
(3)可以顯著加速training和testing速度;
(4)允許end-to-end的形式訓(xùn)練目標(biāo)檢測(cè)系統(tǒng)。

整個(gè)Faster RCNN訓(xùn)練過(guò)程可分為4步:

第一步:用在ImageNet數(shù)據(jù)集上訓(xùn)練好的model初始化模型,訓(xùn)練一個(gè)RPN網(wǎng)絡(luò);

第二步:用在ImageNet數(shù)據(jù)集上訓(xùn)練好的model初始化模型,同時(shí)用第一步中訓(xùn)練好的RPN網(wǎng)絡(luò)生成的region proposal作為輸入,訓(xùn)練一個(gè)Fast RCNN;

第三步:用第二步訓(xùn)練好的Fast RCNN的網(wǎng)絡(luò)參數(shù)初始化RPN網(wǎng)絡(luò),但是將RPN與Fast RCNN共享的網(wǎng)絡(luò)層的learning rate設(shè)置為0,僅微調(diào)RPN獨(dú)有的網(wǎng)絡(luò)層。

第四步:固定共享的網(wǎng)絡(luò)層,僅微調(diào)Fast RCNN所獨(dú)有的fc層。

網(wǎng)絡(luò)結(jié)構(gòu)

可以清晰的看到該網(wǎng)絡(luò)對(duì)于一副任意大小PxQ的圖像,首先縮放至固定大小MxN,然后將MxN圖像送入網(wǎng)絡(luò);而Conv layers中包含了13個(gè)conv層+13個(gè)relu層+4個(gè)pooling層;RPN網(wǎng)絡(luò)首先經(jīng)過(guò)3x3卷積,再分別生成positive anchors和對(duì)應(yīng)bounding box regression偏移量,然后計(jì)算出proposals;而Roi Pooling層則利用proposals從feature maps中提取proposal feature送入后續(xù)全連接和softmax網(wǎng)絡(luò)作classification(即分類proposal到底是什么object)。

復(fù)現(xiàn)方式

SSD架構(gòu)

一 介紹

SSD–single shot multibox detection,是目標(biāo)識(shí)別領(lǐng)域中對(duì) 不同類的物體(汽車,人。。。)的識(shí)別,識(shí)別的表示方式是對(duì)被識(shí)別的物體畫bounding box(包圍框)。除此之外還有其他種類的目標(biāo)識(shí)別,比如下圖:

SSD網(wǎng)絡(luò)的特點(diǎn)是:對(duì)不同尺度下的 feature map 中每一個(gè)點(diǎn)都設(shè)置一些 default box, 這些default box有不同的大小和橫縱比例,對(duì)這些default box進(jìn)行分類和邊框回歸的操作。在預(yù)測(cè)階段,SSD會(huì)對(duì)每個(gè)default box 生成一個(gè)分類標(biāo)簽(屬于每一類的概率構(gòu)成的向量)以及位置坐標(biāo)的調(diào)整

prior box

二 SSD網(wǎng)絡(luò)結(jié)構(gòu):


SSD網(wǎng)絡(luò)由兩部分組成,前部分是一些經(jīng)典的特征提取網(wǎng)絡(luò),在這里作為base network,使用的是VGG16。后半部分是作者增加的網(wǎng)絡(luò),提取成特征的基礎(chǔ)之上處理得到不同尺度的feature map,生成許多組default box進(jìn)行預(yù)測(cè)分類和位置調(diào)整信息。
SSD除了在最終特征圖上做目標(biāo)檢測(cè)之外,還在之前選取的5個(gè)特特征圖上進(jìn)行預(yù)測(cè)。檢測(cè)過(guò)程不僅在填加特征圖(conv8_2, conv9_2, conv_10_2, pool_11)上進(jìn)行,為了保證網(wǎng)絡(luò)對(duì)小目標(biāo)有很好檢測(cè)效果,檢測(cè)過(guò)程也在基礎(chǔ)網(wǎng)絡(luò)特征圖(conv4_3, conv_7)上進(jìn)行
SSD 方法的核心就是?predict?object(物體),以及其歸屬類別的 score(得分);同時(shí),在feature map上使用小的卷積核去?predict?一系列 bounding boxes 的?box offsets,為了得到高精度的檢測(cè)結(jié)果,在不同層次的 feature maps 上去 predict?object、box offsets,同時(shí),還得到不同?aspect ratio?的 predictions。?
這里簡(jiǎn)單介紹一下default map cell以及 feature box
1、feature map?cell就是將feature?map切分成n*n的格子。
2、default box就是每一個(gè)格子上,生成一系列固定大小的?box,即圖中虛線所形成的一系列 boxes。

算法流程:
首先來(lái)看一下SSD的基本步驟:

1、輸入一幅圖片,讓圖片經(jīng)過(guò)卷積神經(jīng)網(wǎng)絡(luò)(CNN)提取特征,并生成 feature map
2、抽取其中六層的feature map,然后再 feature map 的每個(gè)點(diǎn)上生成 default box(各層的個(gè)數(shù)不同,但每個(gè)點(diǎn)都有)
3、將生成的所有 default box 都集合起來(lái),全部丟到 NMS(極大值抑制)中,輸出篩選后的 default box,并輸出

算法框架

YOLO架構(gòu)

YOLO(You Only Look Once)是一種基于深度神經(jīng)網(wǎng)絡(luò)的對(duì)象識(shí)別和定位算法,其最大的特點(diǎn)是運(yùn)行速度很快,可以用于實(shí)時(shí)系統(tǒng)。
輸入一張圖片,要求輸出其中所包含的對(duì)象,以及每個(gè)對(duì)象的位置(包含該對(duì)象的矩形框)。

對(duì)象識(shí)別和定位,可以看成兩個(gè)任務(wù):找到圖片中某個(gè)存在對(duì)象的區(qū)域,然后識(shí)別出該區(qū)域中具體是哪個(gè)對(duì)象。對(duì)象識(shí)別這件事(一張圖片僅包含一個(gè)對(duì)象,且基本占據(jù)圖片的整個(gè)范圍),最近幾年基于CNN卷積神經(jīng)網(wǎng)絡(luò)的各種方法已經(jīng)能達(dá)到不錯(cuò)的效果了。所以主要需要解決的問(wèn)題是,對(duì)象在哪里。

最簡(jiǎn)單的想法,就是遍歷圖片中所有可能的位置,地毯式搜索不同大小,不同寬高比,不同位置的每個(gè)區(qū)域,逐一檢測(cè)其中是否存在某個(gè)對(duì)象,挑選其中概率最大的結(jié)果作為輸出。顯然這種方法效率太低。

RCNN/Fast RCNN/Faster RCNN

RCNN開(kāi)創(chuàng)性的提出了候選區(qū)(Region Proposals)的方法,先從圖片中搜索出一些可能存在對(duì)象的候選區(qū)Selective Search,大概2000個(gè)左右,然后對(duì)每個(gè)候選區(qū)進(jìn)行對(duì)象識(shí)別。大幅提升了對(duì)象識(shí)別和定位的效率。不過(guò)RCNN的速度依然很慢,其處理一張圖片大概需要49秒。因此又有了后續(xù)的Fast RCNN 和 Faster RCNN,針對(duì)RCNN的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)和候選區(qū)的算法不斷改進(jìn),Faster RCNN已經(jīng)可以達(dá)到一張圖片約0.2秒的處理速度。

YOLO創(chuàng)造性的將候選區(qū)和對(duì)象識(shí)別這兩個(gè)階段合二為一,看一眼圖片就能知道有哪些對(duì)象以及它們的位置。實(shí)際上,YOLO并沒(méi)有真正去掉候選區(qū),而是采用了預(yù)定義的候選區(qū)(準(zhǔn)確說(shuō)應(yīng)該是預(yù)測(cè)區(qū),并不是Faster RCNN所采用的Anchor)。也就是將圖片劃分為 7*7=49 個(gè)網(wǎng)格(grid),每個(gè)網(wǎng)格允許預(yù)測(cè)出2個(gè)邊框(bounding box,包含某個(gè)對(duì)象的矩形框),總共 49*2=98 個(gè)bounding box。可以理解為98個(gè)候選區(qū),它們很粗略的覆蓋了圖片的整個(gè)區(qū)域。

YOLO結(jié)構(gòu)
去掉候選區(qū)這個(gè)步驟以后,YOLO的結(jié)構(gòu)非常簡(jiǎn)單,就是單純的卷積、池化最后加了兩層全連接。最大的差異是最后輸出層用線性函數(shù)做激活函數(shù),因?yàn)樾枰A(yù)測(cè)bounding box的位置(數(shù)值型),而不僅僅是對(duì)象的概率。YOLO網(wǎng)絡(luò)結(jié)構(gòu)由24個(gè)卷積層與2個(gè)全連接層構(gòu)成,網(wǎng)絡(luò)入口為448x448(v2為416x416),圖片進(jìn)入網(wǎng)絡(luò)先經(jīng)過(guò)resize,網(wǎng)絡(luò)的輸出結(jié)果為一個(gè)張量,維度為:

其中,S為劃分網(wǎng)格數(shù),B為每個(gè)網(wǎng)格負(fù)責(zé)的邊框個(gè)數(shù),C為類別個(gè)數(shù)。每個(gè)小格會(huì)對(duì)應(yīng)B個(gè)邊界框,邊界框的寬高范圍為全圖,表示以該小格為中心尋找物體的邊界框位置。每個(gè)邊界框?qū)?yīng)一個(gè)分值,代表該處是否有物體及定位準(zhǔn)確度:,每個(gè)小格會(huì)對(duì)應(yīng)C個(gè)概率值,找出最大概率對(duì)應(yīng)的類別P(Class|object),并認(rèn)為小格中包含該物體或者該物體的一部分。

輸入和輸出的映射關(guān)系

輸入

輸入就是原始圖像,唯一的要求是縮放到448*448的大小。主要是因?yàn)閅OLO的網(wǎng)絡(luò)中,卷積層最后接了兩個(gè)全連接層,全連接層是要求固定大小的向量作為輸入,所以倒推回去也就要求原始圖像有固定的尺寸。那么YOLO設(shè)計(jì)的尺寸就是448*448。

輸出是一個(gè) 7*7*30 的張量(tensor)。

輸入圖像被劃分為 7*7 的網(wǎng)格(grid),輸出張量中的 7*7 就對(duì)應(yīng)著輸入圖像的 7*7 網(wǎng)格。或者我們把 7*7*30 的張量看作49個(gè)30維的向量,也就是輸入圖像中的每個(gè)網(wǎng)格對(duì)應(yīng)輸出一個(gè)30維的向量。參考上圖,比如輸入圖像左上角的網(wǎng)格對(duì)應(yīng)到輸出張量中左上角的向量。

要注意的是,并不是說(shuō)僅僅網(wǎng)格內(nèi)的信息被映射到一個(gè)30維向量。經(jīng)過(guò)神經(jīng)網(wǎng)絡(luò)對(duì)輸入圖像信息的提取和變換,網(wǎng)格周邊的信息也會(huì)被識(shí)別和整理,最后編碼到那個(gè)30維向量中。具體來(lái)看每個(gè)網(wǎng)格對(duì)應(yīng)的30維向量中包含了哪些信息?

網(wǎng)絡(luò)結(jié)構(gòu)

網(wǎng)絡(luò)方面主要采用GoogLeNet,卷積層主要用來(lái)提取特征,全連接層主要用來(lái)預(yù)測(cè)類別概率和坐標(biāo)。最后的輸出是7*7*30,7*7是grid cell的數(shù)量。

YOLO存在的優(yōu)點(diǎn)是:

1.速度快,處理速度可以達(dá)到45fps,其快速版本(網(wǎng)絡(luò)較小)甚至可以達(dá)到155fps。這得益于其識(shí)別和定位合二為一的網(wǎng)絡(luò)設(shè)計(jì),而且這種統(tǒng)一的設(shè)計(jì)也使得訓(xùn)練和預(yù)測(cè)可以端到端的進(jìn)行,非常簡(jiǎn)便。

2.泛化能力強(qiáng) ,可以廣泛適用于其他測(cè)試集。

3.背景預(yù)測(cè)錯(cuò)誤率低,因?yàn)槭钦麖垐D片放到網(wǎng)絡(luò)里面進(jìn)行預(yù)測(cè)。

YOLO存在的缺點(diǎn)是:

精度低,小目標(biāo)和鄰近目標(biāo)檢測(cè)效果差,小對(duì)象檢測(cè)效果不太好(尤其是一些聚集在一起的小對(duì)象),對(duì)邊框的預(yù)測(cè)準(zhǔn)確度不是很高,總體預(yù)測(cè)精度略低于Fast RCNN。主要是因?yàn)榫W(wǎng)格設(shè)置比較稀疏,而且每個(gè)網(wǎng)格只預(yù)測(cè)兩個(gè)邊框,另外Pooling層會(huì)丟失一些細(xì)節(jié)信息,對(duì)定位存在影響。

YOLOv2架構(gòu)

V1 缺陷之處:

1、輸入尺寸固定:由于輸出層為全連接層,因此在檢測(cè)時(shí),YOLO 訓(xùn)練模型只支持與訓(xùn)練圖像相同的輸入分辨率。其它分辨率需要縮放成此固定分辨率;
2、占比小的目標(biāo)檢測(cè)效果不好:雖然每個(gè)格子可以預(yù)測(cè) B 個(gè) bounding box,但是最終只選擇只選擇 IOU 最高的bbox作為物體檢測(cè)輸出,即每個(gè)格子最多只預(yù)測(cè)出一個(gè)物體。當(dāng)物體占畫面比例較小,如圖像中包含畜群或鳥(niǎo)群時(shí),每個(gè)格子包含多個(gè)物體,但卻只能檢測(cè)出其中一個(gè)。

YOLOv2的結(jié)構(gòu)示意圖如下:

YOLOv2 引入了 faster rcnn 中 anchor box 的思想,對(duì)網(wǎng)絡(luò)結(jié)構(gòu)的設(shè)計(jì)進(jìn)行了改進(jìn),使得模型更易學(xué)習(xí)。

YOLOv2提出了一種新的分類模型Darknet-19。主要使用3x3卷積并在pooling之后channel數(shù)加倍(VGG);global average pooling替代全連接做預(yù)測(cè)分類,并在3x3卷積之間使用1x1卷積壓縮特征表示(Network in Network);使用 batch normalization 來(lái)提高穩(wěn)定性,加速收斂,對(duì)模型正則化。Darknet-19的結(jié)構(gòu)如下表:

包含 19 conv + 5 maxpooling.用 1x1 卷積層替代 YOLOv1 的全連接層。1x1 卷積層( 為了跨通道信息整合)如上圖的紅色矩形框部分。

升級(jí)版YOLO v3

YOLO的V1和V2都不如SSD的算法,主要原因是V1的448尺寸和V2版本的416尺寸都不如SSD的300,以上結(jié)論都是實(shí)驗(yàn)測(cè)試的,V3版本的416跟SSD512差不多好,但速度快很多。yolov2有個(gè)毛病就是對(duì)小物體的檢測(cè)不敏感,而增加了多尺度預(yù)測(cè)之后,yolov3在對(duì)小物體檢測(cè)方便有了好轉(zhuǎn),但是現(xiàn)在的毛病是對(duì)中、大size的物體表現(xiàn)的不是那么好。

YOLO V2是一個(gè)縱向自上而下的網(wǎng)絡(luò)架構(gòu),隨著通道數(shù)目的不斷增加,FLOPS是不斷增加的,而V3網(wǎng)絡(luò)架構(gòu)是橫縱交叉的,看著卷積層多,其實(shí)很多通道的卷積層沒(méi)有繼承性,另外,雖然V3增加了anchor centroid,但是對(duì)GT的估計(jì)變得更加簡(jiǎn)單,每個(gè)GT只匹配一個(gè)先驗(yàn)框,而且每個(gè)尺度只預(yù)測(cè)3個(gè)框,V2預(yù)測(cè)5個(gè)框,這樣的話也降低了復(fù)雜度。

Mask R-CNN

Mask R-CNN:像素級(jí)目標(biāo)檢測(cè),不僅給出其邊界框,并且對(duì)邊界框內(nèi)的各個(gè)像素是否屬于該物體進(jìn)行標(biāo)記。

可以看出MaskRCNN在有效檢測(cè)目標(biāo)的同時(shí)輸出高質(zhì)量的實(shí)例分割mask

可以看出MaskRCNN的網(wǎng)絡(luò)結(jié)構(gòu),作為FasterRCNN的擴(kuò)展

1):用RolAlign代替了RoIPooling,RoIPooling使用取整量化,導(dǎo)致特征圖RoI映射回原圖RoI時(shí)空間不對(duì)齊明顯,造成誤差;RolAlign不使用取整量化而是采用雙線性插值,完成像素級(jí)的對(duì)齊;

2):FasterRcnn為每個(gè)候選對(duì)象ROI提供兩個(gè)輸出,一個(gè)類標(biāo)簽,一個(gè)邊界框偏移量,為此,MaskRCNN并行添加了第三個(gè)分割mask的分支,mask分支是應(yīng)用到每一個(gè)ROI上的一個(gè)小的FCN(Fully Convolutional Network),以pix2pix的方式預(yù)測(cè)分割mask。

分割

分割模型一般DeepLabv3+,U-net

U-net

U-net網(wǎng)絡(luò)非常簡(jiǎn)單,前半部分作用是特征提取,后半部分是上采樣。在一些文獻(xiàn)中也把這樣的結(jié)構(gòu)叫做編碼器-解碼器結(jié)構(gòu)。由于此網(wǎng)絡(luò)整體結(jié)構(gòu)類似于大寫的英文字母U,故得名U-net。

1、特征提取部分,每經(jīng)過(guò)一個(gè)池化層就一個(gè)尺度,包括原圖尺度一共有5個(gè)尺度。
2、上采樣部分,每上采樣一次,就和特征提取部分對(duì)應(yīng)的通道數(shù)相同尺度融合,但是融合之前要將其crop。這里的融合也是拼接。

U-net與其他常見(jiàn)的分割網(wǎng)絡(luò)有一點(diǎn)非常不同的地方:U-net采用了完全不同的特征融合方式:拼接,U-net采用將特征在channel維度拼接在一起,形成更厚的特征。

代碼復(fù)現(xiàn)

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的目标检测与分割总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。