1說一下非極大值抑制(NMS)
用處:本質(zhì)是搜索局部極大值,抑制非極大值元素典鸡。
原理:NMS為非極大值抑制,用來抑制檢測(cè)時(shí)冗余的框。
大致算法流程為:
@1.對(duì)所有預(yù)測(cè)框的置信度降序排序
@2.選出置信度最高的預(yù)測(cè)框暖哨,確認(rèn)其為正確預(yù)測(cè),并計(jì)算他與其他預(yù)測(cè)框的IOU
@3.根據(jù)2中計(jì)算的IOU去除重疊度高的凰狞,IOU>threshold閾值就刪除
@4.剩下的預(yù)測(cè)框返回第1步鹿蜀,直到?jīng)]有剩下的為止(需要注意的是:Non-Maximum Suppression一次處理一個(gè)類別,如果有N個(gè)類別服球,Non-Maximum Suppression就需要執(zhí)行N次茴恰。)
假設(shè)兩個(gè)目標(biāo)靠的很近,則會(huì)識(shí)別成一個(gè)bbox斩熊,會(huì)有什么問題往枣,怎么解決?
@當(dāng)兩個(gè)目標(biāo)靠的非常近時(shí)粉渠,置信度低的會(huì)被置信度高的框抑制掉分冈,從而兩個(gè)目標(biāo)靠的非常近時(shí)會(huì)被識(shí)別成一個(gè)bbox。為了解決這個(gè)問題霸株,可以使用softNMS(基本思想:用稍低一點(diǎn)的分?jǐn)?shù)來代替原有的分?jǐn)?shù)雕沉,而不是直接置零)
2為什么提出anchor box?
主要有兩個(gè)原因:一個(gè)窗口只能檢測(cè)一個(gè)目標(biāo)去件、無法解決多尺度問題坡椒。
目前anchor box尺寸的選擇主要有三種方式:人為經(jīng)驗(yàn)選取、k-means聚類尤溜、作為超參數(shù)進(jìn)行學(xué)習(xí)
為什么使用不同尺寸和不同長(zhǎng)寬比倔叼? 為了得到更大的交并比(IOU)。
3Faster R-CNN是如何解決正負(fù)樣本不平衡的問題宫莱?
限制正負(fù)樣本比例為1:1丈攒,如果正樣本不足,就用負(fù)樣本補(bǔ)充授霸,這種方法后面研究工作用的不多巡验。通常針對(duì)類別不平衡問題可以從調(diào)整樣本數(shù)或修改loss weight兩方面去解決,常用的方法有OHEM碘耳、OHNM显设、class balanced loss和Focal loss。
Faster RCNN怎么篩選正負(fù)anchor
我們給兩種錨點(diǎn)分配一個(gè)正標(biāo)簽:(i)具有與實(shí)際邊界框的重疊最高交并比(IoU)的錨點(diǎn)藏畅,(ii)具有與實(shí)際邊界框的重疊超過0.7 IoU的錨點(diǎn)敷硅。IoU比率低于0.3功咒,我們給非正面的錨點(diǎn)分配一個(gè)負(fù)標(biāo)簽。
4簡(jiǎn)要闡述一下One-Stage绞蹦、Two-Stage模型
One-Stage檢測(cè)算法力奋,沒有selective search產(chǎn)生region proposal的階段,直接產(chǎn)生物體的類別概率和位置坐標(biāo)幽七,經(jīng)過單次檢測(cè)即可直接獲得最終的檢測(cè)結(jié)果景殷。相比Two-Stage有更快的速度。代表網(wǎng)絡(luò)有YOLO v1/v2/v3/9000,SSD,Retina-Net. (two-stage算法中的roi pooling會(huì)對(duì)目標(biāo)做resize, 小目標(biāo)的特征被放大澡屡,其特征輪廓也更為清晰猿挚,因此檢測(cè)也更為準(zhǔn)確)Two-Stage檢測(cè)算法將檢測(cè)問題劃分成兩個(gè)階段,首先是獲取region proposal進(jìn)行位置精修和分類階段驶鹉。相比于One-Stage,精度高绩蜻,漏檢率也低,但是速度較慢室埋,代表網(wǎng)絡(luò)有Fast rcnn办绝,F(xiàn)aster rcnn,mask rcnn等姚淆。
Two-Stage和One-Stage的異同
(回答的是
Two-Stage先對(duì)前景背景做了篩選孕蝉,再進(jìn)行回歸,回歸效果比較好腌逢,準(zhǔn)度高但是相比較慢降淮,
One-Stage是直接對(duì)特征上的點(diǎn)進(jìn)行直接回歸,優(yōu)點(diǎn)是速度快搏讶,因?yàn)橛昧硕鄬犹卣鲌D出框可能小目標(biāo)效果比較好一點(diǎn)(個(gè)人看法)佳鳖,缺點(diǎn)是因?yàn)檎?fù)樣本失衡導(dǎo)致效果較差,要結(jié)合難例挖掘窍蓝。)
one stage在哪些具體方面檢測(cè)精度不高(ROI+default box的深層理解)
(one-stage算法對(duì)小目標(biāo)檢測(cè)效果較差腋颠,如果所有的anchor都沒有覆蓋到這個(gè)目標(biāo),那么這個(gè)目標(biāo)就會(huì)漏檢吓笙。)
Faster rcnn的兩階段訓(xùn)練和end-to-end訓(xùn)練的不一樣 (回答的是就是把RPN和二階段拆開訓(xùn),然后追問RPN在ENDTOEND中怎么回傳巾腕,答TOTALLoss中有一階段和二階段的LOSS面睛,只是回傳影響的部分不一樣。)
目標(biāo)檢測(cè)的發(fā)展歷程尊搬,從傳統(tǒng)到深度(傳統(tǒng)部分回答的算子結(jié)合分類器分類叁鉴,簡(jiǎn)單說了一下缺陷,深度部分說了RCNN,FAST,FASTER,SSD,YOLO,FPN,MASK RCNN,Cascade RCNN佛寿,都簡(jiǎn)單的介紹了一下)傳統(tǒng)目標(biāo)檢測(cè):主線:區(qū)域選擇->特征提取->分類器
傳統(tǒng)的做目標(biāo)檢測(cè)的算法基本流程如下:
- 使用不同尺度的滑動(dòng)窗口選定圖像的某一區(qū)域?yàn)楹蜻x區(qū)域幌墓;
- 從對(duì)應(yīng)的候選區(qū)域提取如Harr HOG LBP LTP等一類或者多類特征但壮;
- 使用Adaboost SVM 等分類算法對(duì)對(duì)應(yīng)的候選區(qū)域進(jìn)行分類,判斷是否屬于待檢測(cè)的目標(biāo)常侣。
缺點(diǎn):1)基于滑動(dòng)窗口的區(qū)域選擇策略沒有針對(duì)性蜡饵,時(shí)間復(fù)雜度高,窗口冗余2)手工設(shè)計(jì)的特征對(duì)于多樣性的變化沒有很好的魯棒性
5YOLOV1胳施、YOLOV2溯祸、YOLOV3復(fù)述一遍 YOLOv1到v3的發(fā)展歷程以及解決的問題。
YOLO系列算法是一類典型的one-stage目標(biāo)檢測(cè)算法舞肆,其利用anchor box將分類與目標(biāo)定位的回歸問題結(jié)合起來焦辅,從而做到了高效、靈活和泛化性能好椿胯。YOLOv1:YOLOv1的核心思想就是利用整張圖作為網(wǎng)絡(luò)的輸入筷登,直接在輸出層回歸 bounding box(邊界框) 的位置及其所屬的類別。
YOLOv1的基本思想是把一副圖片哩盲,首先reshape成448×448大星胺健(由于網(wǎng)絡(luò)中使用了全連接層,所以圖片的尺寸需固定大小輸入到CNN中)种冬,然后將劃分成SxS個(gè)單元格(原文中S=7)镣丑,以每個(gè)格子所在位置和對(duì)應(yīng)內(nèi)容為基礎(chǔ),來預(yù)測(cè)檢測(cè)框和每個(gè)框的Confidence以及每個(gè)格子預(yù)測(cè)一共C個(gè)類別的概率分?jǐn)?shù)娱两。
創(chuàng)新點(diǎn):
- 將整張圖作為網(wǎng)絡(luò)的輸入弊添,直接在輸出層回歸bounding box的位置和所屬的類別
- 速度快豺撑,one stage detection的開山之作損失函數(shù)設(shè)計(jì)細(xì)節(jié): YOLOv1對(duì)位置坐標(biāo)誤差,IoU誤差,分類誤差均使用了均方差作為損失函數(shù)推沸。激活函數(shù)(最后一層全連接層用線性激活函數(shù),其余層采用leak RELU)
缺點(diǎn):
- 首先饭玲,每個(gè)單元格只預(yù)測(cè)2個(gè)bbox醉冤,然后每個(gè)單元格最后只取與gt_bbox的IOU高的那個(gè)最為最后的檢測(cè)框,也只是說每個(gè)單元格最多只預(yù)測(cè)一個(gè)目標(biāo)宵呛。
- 損失函數(shù)中单匣,大物體 IOU 誤差和小物體 IOU 誤差對(duì)網(wǎng)絡(luò)訓(xùn)練中 loss 貢獻(xiàn)值接近(雖然采用求平方根方式,但沒有根本解決問題)宝穗。因此户秤,對(duì)于小物體,小的 IOU 誤差也會(huì)對(duì)網(wǎng)絡(luò)優(yōu)化過程造成很大的影響逮矛,從而降低了物體檢測(cè)的定位準(zhǔn)確性鸡号。
- 由于輸出層為全連接層,因此在檢測(cè)時(shí)须鼎,YOLO 訓(xùn)練模型只支持與訓(xùn)練圖像相同的輸入分辨率的圖片鲸伴。
- 和two-stage方法相比府蔗,沒有region proposal階段,召回率較低
YOLOv2: YOLOv2又叫YOLO9000汞窗,其能檢測(cè)超過9000種類別的物體姓赤。相比v1提高了訓(xùn)練圖像的分辨率;引入了faster rcnn中anchor box的想杉辙,對(duì)網(wǎng)絡(luò)結(jié)構(gòu)的設(shè)計(jì)進(jìn)行了改進(jìn)模捂,輸出層使用卷積層替代YOLO的全連層,聯(lián)合使用coco物體檢測(cè)標(biāo)注數(shù)據(jù)和imagenet物體分類標(biāo)注數(shù)據(jù)訓(xùn)練物體檢測(cè)模型蜘矢。
YOLOv3:
YOLOv3總結(jié)了自己在YOLOv2的基礎(chǔ)上做的一些嘗試性改進(jìn)狂男,有的嘗試取得了成功,而有的嘗試并沒有提升模型性能品腹。其中有兩個(gè)值得一提的亮點(diǎn)岖食,一個(gè)是使用殘差模型,進(jìn)一步加深了網(wǎng)絡(luò)結(jié)構(gòu)舞吭;另一個(gè)是使用FPN架構(gòu)實(shí)現(xiàn)多尺度檢測(cè)泡垃。
改進(jìn)點(diǎn):
1.多尺度預(yù)測(cè) (類FPN):每種尺度預(yù)測(cè)3個(gè)box, anchor的設(shè)計(jì)方式仍然使用聚類,得到9個(gè)聚類中心羡鸥。
2.更好的基礎(chǔ)分類網(wǎng)絡(luò)(ResNet)和分類器 darknet-53蔑穴。
3.用邏輯回歸替代softmax作為分類器。
(1)yolo的預(yù)測(cè)框是什么值(x,y,w,h)
(2)YOLOv2中如何通過K-Means得到anchor boxes卷積神經(jīng)網(wǎng)絡(luò)具有平移不變性惧浴,且anchor boxes的位置被每個(gè)柵格固定存和,因此我們只需要通過k-means計(jì)算出anchor boxes的width和height即可
(3)YOLOv3框是怎么聚出來的? YOLOv3有沒有很致命的問題衷旅?
yolov3通過聚類的方式自定義anchor box的大小捐腿,在一定程度上,這可以提高定位的準(zhǔn)確率柿顶。缺點(diǎn): 識(shí)別物體位置精準(zhǔn)性差茄袖,召回率低(在每個(gè)網(wǎng)格中預(yù)測(cè)兩個(gè)bbox這種約束方式減少了對(duì)同一目標(biāo)的多次檢測(cè))
(4)YOLO系列anchor的設(shè)計(jì)原理,kmeans的原理嘁锯,anchor距離如何度量宪祥,如何改進(jìn)k-means原理:
K-means算法是很典型的基于距離的聚類算法,采用距離作為相似性的評(píng)價(jià)指標(biāo)家乘,即認(rèn)為兩個(gè)對(duì)象的距離越近品山,其相似度就越大。該算法認(rèn)為簇是由距離靠近的對(duì)象組成的烤低,因此把得到緊湊且獨(dú)立的簇作為最終目標(biāo)。由于從標(biāo)記文件的width笆载,height計(jì)算出的anchor boxes的width和height都是相對(duì)于整張圖片的比例(w=anchor_width*****input_width/downsamples h=anchor_height*input_height/downsamples)
6.簡(jiǎn)要闡述一下SSD網(wǎng)絡(luò)
SSD網(wǎng)絡(luò)的特點(diǎn)是對(duì)不同尺度下的feature map中的每一個(gè)點(diǎn)都設(shè)置一些default box,這些default box有不同的大小和橫縱比例扑馁,對(duì)這些default box進(jìn)行分類和邊框回歸的操作涯呻。SSD的核心是對(duì)固定設(shè)置的default box(不同尺度feature map中每一個(gè)空間位置都設(shè)置一組default box,這里只考慮空間位置腻要,不考慮feature的通道個(gè)數(shù))計(jì)算屬于各類物體的概率以及坐標(biāo)調(diào)整的數(shù)值复罐。這個(gè)計(jì)算方式是對(duì)每層的feature map做卷積操作,卷積核設(shè)定為3*3雄家,卷積核的個(gè)數(shù)是與default box個(gè)數(shù)相關(guān)效诅。
優(yōu)點(diǎn):SSD的優(yōu)點(diǎn)是運(yùn)行速度超過yolo,精度在一定條件下超過faster rcnn趟济。缺點(diǎn)是需要人工設(shè)置先驗(yàn)框(prior box)和min_size乱投,max_size和長(zhǎng)寬比(aspect_ratio)值,網(wǎng)絡(luò)中default_box的基礎(chǔ)大小和形狀不能直接通過學(xué)習(xí)獲得顷编,而是需要手工設(shè)置戚炫,雖然使用了圖像金字塔的思路,但是對(duì)小目標(biāo)的recall(召回率)依然一般簡(jiǎn)述SSD網(wǎng)絡(luò)前向是如何計(jì)算的
1數(shù)據(jù)增強(qiáng)媳纬,獲取訓(xùn)練樣本双肤,將訓(xùn)練數(shù)據(jù)統(tǒng)一resize到固定尺寸;
2.通過卷積網(wǎng)絡(luò)獲取feature map:①使用的卷積網(wǎng)絡(luò)钮惠,前半部分使用基礎(chǔ)分類網(wǎng)絡(luò)獲取各層的feature map茅糜,這部分稱為base network。②下一步計(jì)算的輸入素挽,就是上述的不同尺寸的feature map蔑赘;
3.通過卷積操作,從特征圖中獲取檢測(cè)信息毁菱。①此處實(shí)現(xiàn)方式與yolo類似米死;②與Faster R-CNN類似,在特征圖中每個(gè)點(diǎn)新建若干固定尺寸的anchor贮庞。檢測(cè)信息包括每個(gè)anchor的信息峦筒。主要包括:confidence(代表這個(gè)anchor中是否存在物體)、分類信息以及bbox信息窗慎。
SSD的致命缺點(diǎn)物喷,如何改進(jìn)SSD主要缺點(diǎn):
SSD對(duì)小目標(biāo)的檢測(cè)效果一般,作者認(rèn)為小目標(biāo)在高層沒有足夠的信息對(duì)小目標(biāo)檢測(cè)的改進(jìn)可以從下面幾個(gè)方面考慮:
- 增大輸入尺寸
- 使用更低的特征圖做檢測(cè)(比如S3FD中使用更低的conv3_3檢測(cè))
- FPN(已經(jīng)是檢測(cè)網(wǎng)絡(luò)的標(biāo)配了)
7簡(jiǎn)要闡述一下RetinaNet
RetinaNet的作者對(duì)one-stage檢測(cè)器準(zhǔn)確率不高的問題原因進(jìn)行探究遮斥,發(fā)現(xiàn)主要問題在于正負(fù)類別不均衡峦失,提出Focal Loss來解決類別不平衡問題。目的是通過減少易分類樣本的權(quán)重术吗,從而使得模型在訓(xùn)練時(shí)更注重于難分類的樣本尉辑。RetinaNet=ResNet+FPN+Two sub-network+Focal Loss; RetinaNet由backbone網(wǎng)絡(luò)和兩個(gè)子任務(wù)網(wǎng)絡(luò)組成,backbone網(wǎng)絡(luò)負(fù)責(zé)計(jì)算feature map较屿,子任務(wù)網(wǎng)絡(luò)一個(gè)負(fù)責(zé)目標(biāo)分類隧魄,一個(gè)負(fù)責(zé)bbox回歸卓练,網(wǎng)絡(luò)的loss使用Focal loss。
闡述一下ssd和retinanet的區(qū)別
SSD的基礎(chǔ)網(wǎng)絡(luò)是VGG购啄,且SSD在使用多層feature map時(shí)只是簡(jiǎn)單的在不同層的feature map上放default box襟企,并沒有真正將低維度特征和高維度特征進(jìn)行融合。且SSD網(wǎng)絡(luò)中使用的控制正負(fù)樣本數(shù)量比的方法是難樣本挖掘方法狮含,loss是分類+回歸的loss顽悼。而RetinaNet網(wǎng)絡(luò)的基礎(chǔ)網(wǎng)絡(luò)是resnet+FPN,是真正將低維度的特征和高維度的特征進(jìn)行了特征融合后再來做檢測(cè)的几迄。且控制正負(fù)樣本的方法是使用Focal Loss蔚龙。
8faster rcnn和yolo,ssd之間的區(qū)別和聯(lián)系
1.針對(duì)之前RCNN系列selective search的方法導(dǎo)致算法沒有實(shí)時(shí)性乓旗,所以faster rcnn提出RPN網(wǎng)絡(luò)來取代之前的方法府蛇,可以理解為fasterrcnn=fast rcnn+rpn網(wǎng)絡(luò),且rpn網(wǎng)絡(luò)和fast rcnn的分類屿愚,回歸網(wǎng)絡(luò)共用特征提取層汇跨,這樣使得引入RPN網(wǎng)絡(luò)不會(huì)增加太多計(jì)算量。整體流程為先使用RPN網(wǎng)絡(luò)找出可能存在object的區(qū)域妆距,再將這些區(qū)域送入fast rcnn中進(jìn)一步定位和分類穷遂。所以faster rcnn是典型的Two stage算法。因?yàn)閒aster rcnn中包含了兩次定位娱据,所以其精度一般高于YOLO和SSD算法蚪黑,所以速度一般慢于YOLO和SSD。
2.YOLO算法的特點(diǎn)是將檢測(cè)問題轉(zhuǎn)換成回歸問題中剩,即YOLO直接通過回歸一次既產(chǎn)生坐標(biāo)忌穿,又產(chǎn)生每種類別的概率。YOLO中將每張圖分成7*7的網(wǎng)格结啼,每個(gè)網(wǎng)格默認(rèn)可能屬于2個(gè)object掠剑,即在一張圖片上提取98個(gè)region proposal,相比于faster rcnn使用Anchor機(jī)制提取20k個(gè)anchor再?gòu)闹刑崛∽罱K的300個(gè)region proposal郊愧,所以faster rcnn的精度比YOLO要高朴译,但是由于需要處理更多region proposal,所以faster rcnn的速度要比YOLO慢属铁。
3.SSD相比于faster rcnn使用了多層網(wǎng)絡(luò)特征眠寿,而不僅僅使用最后一層feature map。SSD還借鑒了YOLO算法中將檢測(cè)任務(wù)轉(zhuǎn)換為回歸任務(wù)的思想焦蘑,且SSD也借鑒了faster rcnn中的anchor機(jī)制盯拱,只是SSD的anchor不是每個(gè)位置的精調(diào),而是類似于YOLO那樣在feature map上分割出網(wǎng)格,在網(wǎng)格上產(chǎn)生anchor坟乾。但是SSD和YOLO不需要selective search步驟迹辐,所以SSD和YOLO同屬于One-Stage算法。
闡述一下Mask RCNN網(wǎng)絡(luò)甚侣,這個(gè)網(wǎng)絡(luò)相比于Faster RCNN網(wǎng)絡(luò)有哪些改進(jìn)的地方
Mask rcnn網(wǎng)絡(luò)是基于faster rcnn網(wǎng)絡(luò)架構(gòu)提出的新的目標(biāo)檢測(cè)網(wǎng)絡(luò)。該網(wǎng)絡(luò)可以在有效地完成目標(biāo)檢測(cè)的同時(shí)完成實(shí)例分割间学。Mask RCNN主要的貢獻(xiàn)在于如下:
1.強(qiáng)化了基礎(chǔ)網(wǎng)絡(luò):通過ResNeXt-101+FPN用作特征提取網(wǎng)絡(luò)殷费,達(dá)到state-of-the-art的效果。
2.ROIAlign替換之前faster rcnn中的ROI Pooling低葫,解決錯(cuò)位(Misalignment)問題详羡。
3.使用新的Loss Function:Mask RCNN的損失函數(shù)是分類,回歸再加上mask預(yù)測(cè)的損失之和嘿悬∈的總結(jié)來說,mask rcnn的主要貢獻(xiàn)就是采用了ROI Align以及加了一個(gè)mask分支善涨。
9分析一下SSD,YOLO,Faster rcnn等常用檢測(cè)網(wǎng)絡(luò)對(duì)小目標(biāo)檢測(cè)效果不好的原因
SSD窒盐,YOLO等單階段多尺度算法,小目標(biāo)檢測(cè)需要較高的分辨率钢拧,
1 SSD對(duì)于高分辨的低層特征沒有再利用蟹漓,而這些層對(duì)于檢測(cè)小目標(biāo)很重要。按SSD的設(shè)計(jì)思想源内,其實(shí)SSD對(duì)小目標(biāo)應(yīng)該有比較好的效果葡粒,但是需要重新精細(xì)設(shè)計(jì)SSD中的default box,比如重新設(shè)計(jì)min_sizes參數(shù)膜钓,擴(kuò)大小default box的數(shù)量來cover住小目標(biāo)嗽交。但是隨著default box數(shù)量的增加,網(wǎng)絡(luò)速度也會(huì)降低颂斜。
2 YOLO網(wǎng)絡(luò)可以理解為是強(qiáng)行把圖片分割成7*7個(gè)網(wǎng)格夫壁,每個(gè)網(wǎng)格預(yù)測(cè)2個(gè)目標(biāo),相當(dāng)于只有98個(gè)anchor焚鲜,所以不管是小目標(biāo)掌唾,還是大目標(biāo),YOLO的表現(xiàn)都不是很理想忿磅,但是由于只需處理少量的anchor糯彬,所以YOLO的速度上有很大優(yōu)勢(shì)。
3 Faster rcnn系列對(duì)小目標(biāo)檢測(cè)效果不好的原因是faster rcnn只用卷積網(wǎng)絡(luò)的最后一層葱她,但是卷積網(wǎng)絡(luò)的最后一層往往feature map太小撩扒,導(dǎo)致之后的檢測(cè)和回歸無法滿足要求。甚至一些小目標(biāo)在最后的卷積層上直接沒有特征點(diǎn)了。所以導(dǎo)致faster rcnn對(duì)小目標(biāo)檢測(cè)表現(xiàn)較差搓谆。
10手寫計(jì)算IOU代碼
有兩個(gè)框炒辉,設(shè)第一個(gè)框的兩個(gè)關(guān)鍵點(diǎn)坐標(biāo):(x1,y1)(X1,Y1),第二個(gè)框的兩個(gè)關(guān)鍵點(diǎn)坐標(biāo):(x2,y2)(X2,Y2)泉手。以大小寫來區(qū)分左上角坐標(biāo)和右下角坐標(biāo)黔寇。首先,要知道兩個(gè)框如果有交集斩萌,一定滿足下面這個(gè)公式:max(x1,x2)<=min(X1,X2) && max(y1,y2)<=min(Y1,Y2)7炜恪!<绽伞憋飞!
11講一下目標(biāo)檢測(cè)優(yōu)化的方向
【可以從數(shù)據(jù)集下手,提升特征表征強(qiáng)度(backbone下手姆吭,加深加寬或者換卷積方式)榛做,RPN下手(級(jí)聯(lián),F(xiàn)PN内狸,IOU NET)检眯,LOSS(行人檢測(cè)領(lǐng)域有些問題,如重疊答倡,可以靠修改loss提升準(zhǔn)確度)轰传。】
12 anchor設(shè)置的意義:
其實(shí)就是多尺度的滑動(dòng)窗口
13 如果只能修改RPN網(wǎng)絡(luò)的話瘪撇,怎么修改可以提升網(wǎng)絡(luò)小目標(biāo)檢出率
①修改RPN網(wǎng)絡(luò)的結(jié)構(gòu)获茬,比如引入FPN結(jié)構(gòu),利用多層feature map融合來提高小目標(biāo)檢測(cè)的精度和召回倔既;
②針對(duì)小目標(biāo)重新精細(xì)設(shè)計(jì)Anchor的尺寸和形狀恕曲,從而更好地對(duì)小目標(biāo)進(jìn)行檢測(cè);
14 如何理解concat和add這兩種常見的feature map特征融合方式
兩者都可以理解為整合特征圖信息渤涌。concat是通道數(shù)的增加;add是特征圖相加佩谣,通道數(shù)不變。 add是描述圖像的特征下的信息量增多了实蓬,但是描述圖像的維度本身并沒有增加茸俭,只是每一維下的信息量在增加,這顯然是對(duì)最終的圖像的分類是有益的安皱。而concatenate是通道數(shù)的合并调鬓,也就是說描述圖像本身的特征數(shù)(通道數(shù))增加了,而每一特征下的信息是沒有增加酌伊。 concat每個(gè)通道對(duì)應(yīng)著對(duì)應(yīng)的卷積核腾窝。 而add形式則將對(duì)應(yīng)的特征圖相加,再進(jìn)行下一步卷積操作,相當(dāng)于加了一個(gè)先驗(yàn):對(duì)應(yīng)通道的特征圖語義類似虹脯,從而對(duì)應(yīng)的特征圖共享一個(gè)卷積核(對(duì)于兩路輸入來說驴娃,如果是通道數(shù)相同且后面帶卷積的話,add等價(jià)于concat之后對(duì)應(yīng)通道共享同一個(gè)卷積核)循集。因此add可以認(rèn)為是特殊的concat形式唇敞。但是add的計(jì)算量要比concat的計(jì)算量小得多。
15 闡述一下如何檢測(cè)小物體
小目標(biāo)難以檢測(cè)的原因:**分辨率低暇榴,圖像模糊厚棵,攜帶的信息少
①借鑒FPN的思想,在FPN之前目標(biāo)檢測(cè)的大多數(shù)方法都是和分類一樣蔼紧,使用頂層的特征來進(jìn)行處理。雖然這種方法只是用到了高層的語義信息狠轻,但是位置信息卻沒有得到奸例,尤其在檢測(cè)目標(biāo)的過程中,位置信息是特別重要的向楼,而位置信息又是主要在網(wǎng)絡(luò)的低層查吊。因此FPN采用了多尺度特征融合的方式,采用不同特征層特征融合之后的結(jié)果來做預(yù)測(cè)湖蜕。
②要讓輸入的分布盡可能地接近模型預(yù)訓(xùn)練的分布逻卖。先用ImageNet做預(yù)訓(xùn)練,之后使用原圖上采樣得到的圖像來做微調(diào)昭抒,使用微調(diào)的模型來預(yù)測(cè)原圖經(jīng)過上采樣的圖像评也。該方法提升效果比較顯著。
③采用多尺度輸入訓(xùn)練方式來訓(xùn)練網(wǎng)絡(luò)灭返;
④借鑒Cascade R-CNN的設(shè)計(jì)思路盗迟,優(yōu)化目標(biāo)檢測(cè)中Two-Stage方法中的IOU閾值。檢測(cè)中的IOU閾值對(duì)于樣本的選取是至關(guān)重要的熙含,如果IOU閾值過高罚缕,會(huì)導(dǎo)致正樣本質(zhì)量很高,但是數(shù)量會(huì)很少怎静,會(huì)出現(xiàn)樣本比例不平衡的影響邮弹;如果IOU閾值較低,樣本數(shù)量就會(huì)增加蚓聘,但是樣本的質(zhì)量也會(huì)下降腌乡。如何選取好的IOU,對(duì)于檢測(cè)結(jié)果來說很重要或粮。
⑤采用分割代替檢測(cè)方法导饲,先分割,后回歸bbox來檢測(cè)微小目標(biāo)。
16闡述一下目標(biāo)檢測(cè)任務(wù)中的多尺度
輸入圖片的尺寸對(duì)檢測(cè)模型的性能影響相當(dāng)明顯渣锦,事實(shí)上硝岗,多尺度是提升精度最明顯的技巧之一。在基礎(chǔ)網(wǎng)絡(luò)部分常常會(huì)生成比原圖小數(shù)十倍的特征圖袋毙,導(dǎo)致小物體的特征描述不容易被檢測(cè)網(wǎng)絡(luò)捕捉型檀。通過輸入更大、更多尺寸的圖片進(jìn)行訓(xùn)練听盖,能夠在一定程度上提高檢測(cè)模型對(duì)物體大小的魯棒性胀溺,僅在測(cè)試階段引入多尺度,也可享受大尺寸和多尺寸帶來的增益皆看。檢測(cè)網(wǎng)絡(luò)SSD中最后一層是由多個(gè)尺度的feature map一起組成的仓坞。FPN網(wǎng)絡(luò)中采用多尺度feature map分層融合,分層預(yù)測(cè)的方法可以提升小目標(biāo)的檢測(cè)效果腰吟。
闡述一下如何進(jìn)行多尺度訓(xùn)練
多尺度訓(xùn)練可以分為兩個(gè)方面:一個(gè)是圖像金字塔无埃,一個(gè)是特征金字塔
1、人臉檢測(cè)的MTCNN就是圖像金字塔毛雇,使用多種分辨率的圖像送到網(wǎng)絡(luò)中識(shí)別嫉称,時(shí)間復(fù)雜度高,因?yàn)槊糠鶊D都要用多種scale去檢測(cè)灵疮。
2织阅、FPN網(wǎng)絡(luò)屬于采用了特征金字塔的網(wǎng)絡(luò),一次特征提取產(chǎn)生多個(gè)feature map即一次圖像輸入完成震捣,所以時(shí)間復(fù)雜度并不會(huì)增加多少3荔棉、faster rcnn多個(gè)anchor帶來的多種尺寸的roi可以算muti scale思想的應(yīng)用。
17 如果有很長(zhǎng)伍派,很小江耀,或者很寬的目標(biāo),應(yīng)該如何處理目標(biāo)檢測(cè)中如何解決目標(biāo)尺度大小不一的情況 小目標(biāo)不好檢測(cè)诉植,有試過其他的方法嗎祥国?
嗎?
比如裁剪圖像進(jìn)行重疊小目標(biāo)不好檢測(cè)的兩大原因:
1)數(shù)據(jù)集中包含小目標(biāo)的圖片比較少晾腔,導(dǎo)致模型在訓(xùn)練的時(shí)候會(huì)偏向medium和large的目標(biāo)舌稀。
2)小目標(biāo)的面積太小了,導(dǎo)致包含目標(biāo)的anchor比較少灼擂,這也意味著小目標(biāo)被檢測(cè)出的概率變小壁查。
改進(jìn)方法:
1)對(duì)于數(shù)據(jù)集中含有小目標(biāo)圖片較少的情況,使用過度采樣(oversample)的方式睡腿,即多次訓(xùn)練這類樣本。
2)對(duì)于第二類問題应闯,則是對(duì)于那些包含小物體的圖像,將小物體在圖片中復(fù)制多分,在保證不影響其他物體的基礎(chǔ)上刻撒,人工增加小物體在圖片中出現(xiàn)的次數(shù)骨田,提升被anchor包含的概率。
3)使用FPN态贤;
4)RPN中anchor size的設(shè)置一定要合適抵卫,這樣可提高proposal的準(zhǔn)確率
5)對(duì)于分辨率很低的小目標(biāo)胎撇,我們可以對(duì)其所在的proposal進(jìn)行超分辨率晚树,提升小目標(biāo)的特征質(zhì)量雅采,更有利于小目標(biāo)的檢測(cè)婚瓜。
18 介紹YOLO,并且解釋一下YOLO為什么可以這么快愚铡?
yolo是單階段檢測(cè)算法的開山之作沥寥,最初的yolov1是在圖像分類網(wǎng)絡(luò)的基礎(chǔ)上直接進(jìn)行的改進(jìn)邑雅,摒棄了二階段檢測(cè)算法中的RPN操作,直接對(duì)輸入圖像進(jìn)行分類預(yù)測(cè)和回歸淮野,所以它相對(duì)于二階段的目標(biāo)檢測(cè)算法而言骤星,速度非常的快,但是精度會(huì)低很多了嚎;但是在迭代到目前的V4歪泳、V5版本后露筒,yolo的精度已經(jīng)可以媲美甚至超過二階段的目標(biāo)檢測(cè)算法慎式,同時(shí)保持著非潮窭簦快的速度,是目前工業(yè)界內(nèi)最受歡迎的算法之一蕾盯。yolo的核心思想是將輸入的圖像經(jīng)過backbone特征提取后级遭,將的到的特征圖劃分為S x S的網(wǎng)格挫鸽,物體的中心落在哪一個(gè)網(wǎng)格內(nèi)鸥跟,這個(gè)網(wǎng)格就負(fù)責(zé)預(yù)測(cè)該物體的置信度锌雀、類別以及坐標(biāo)位置腋逆。
19 介紹一下YOLOv3的原理惩歉?
yolov3采用了作者自己設(shè)計(jì)的darknet53作為主干網(wǎng)絡(luò)俏蛮,darknet53借鑒了殘差網(wǎng)絡(luò)的思想,與resnet101辣恋、resnet152相比模软,在精度上差不多的同時(shí)燃异,有著更快的速度回俐,網(wǎng)絡(luò)里使用了大量的殘差跳層連接仅颇,并且拋棄了pooling池化操作雕凹,直接使用步長(zhǎng)為2的卷積來實(shí)現(xiàn)下采樣。
在特征融合方面明场,為了加強(qiáng)小目標(biāo)的檢測(cè)李丰,引入了類似與FPN的多尺度特征融合趴泌,特征圖在經(jīng)過上采樣后與前面層的輸出進(jìn)行concat操作嗜憔,淺層特征和深層特征的融合吉捶,使得yolov3在小目標(biāo)的精度上有了很大的提升皆尔。
yolov3的輸出分為三個(gè)部分慷蠕,首先是置信度流炕、然后是坐標(biāo)信息每辟,最后是分類信息饼问。在推理的時(shí)候莱革,特征圖會(huì)等分成S x S的網(wǎng)格盅视,通過設(shè)置置信度閾值對(duì)格子進(jìn)行篩選闹击,如果某個(gè)格子上存在目標(biāo)赏半,那么這個(gè)格子就負(fù)責(zé)預(yù)測(cè)該物體的置信度、坐標(biāo)和類別信息拂酣。
20 YOLO婶熬、SSD和Faster-RCNN的區(qū)別赵颅,他們各自的優(yōu)勢(shì)和不足分別是什么饺谬?
YOLO商蕴、SSD和Faster-RCNN都是目標(biāo)檢測(cè)領(lǐng)域里面非常經(jīng)典的算法,無論是在工業(yè)界還是學(xué)術(shù)界苛谷,都有著深遠(yuǎn)的影響腹殿;Faster-RCNN是基于候選區(qū)域的雙階段檢測(cè)器代表作锣尉,而YOLO和SSD則是單階段檢測(cè)器的代表自沧;在速度上拇厢,單階段的YOLO和SSD要比雙階段的Faster-RCNN的快很多孝偎,而YOLO又比SSD要快凉敲,在精度上爷抓,F(xiàn)aster-RCNN精度要優(yōu)于單階段的YOLO和SSD蓝撇;不過這也是在前幾年的情況下唉地,目標(biāo)檢測(cè)發(fā)展到現(xiàn)在耘沼,單階段檢測(cè)器精度已經(jīng)不虛雙階段群嗤,并且保持著非晨衩兀快的速度,現(xiàn)階段SSD和Faster-RCNN已經(jīng)不更了破衔,但是YOLO仍在飛快的發(fā)展晰筛,目前已經(jīng)迭代到V4读第、V5怜瞒,速度更快吴汪,精度更高浇坐,在COCO精度上雙雙破了50map,這是很多雙階段檢測(cè)器都達(dá)不到的精度觉渴,而最近的Scale yolov4更是取得了55map案淋,成功登頂榜首踢京。當(dāng)然雖然SSD和Faster-RCNN已經(jīng)不更了瓣距,但是有很多他們相關(guān)的變體蹈丸,同樣有著不錯(cuò)的精度和性能逻杖,例如Cascade R-CNN荸百、RefineDet等等管搪。
21 介紹一下CenterNet的原理更鲁,它與傳統(tǒng)的目標(biāo)檢測(cè)有什么不同點(diǎn)?
CenterNet是屬于anchor-free系列的目標(biāo)檢測(cè)算法的代表作之一,與它之前的目標(biāo)算法相比顶别,速度和精度都有不小的提高驯绎,尤其是和yolov3相比剩失,在速度相同的情況下册着,CenterNet精度要比yolov3高好幾個(gè)點(diǎn)甲捏。它的結(jié)構(gòu)非常的簡(jiǎn)單芒粹,而且不需要太多了后處理化漆,連NMS都省了,直接檢測(cè)目標(biāo)的中心點(diǎn)和大小锨苏,實(shí)現(xiàn)了真正的anchor-free伞租。
CenterNet論文中用到了三個(gè)主干網(wǎng)絡(luò):ResNet-18葵诈、DLA-34和Hourglass-104作喘,實(shí)際應(yīng)用中,也可以使用resnet-50等網(wǎng)絡(luò)作為backbone;CenterNet的算法流程是:一張512512(1x3x512x512)的圖片輸入到網(wǎng)絡(luò)中,經(jīng)過backbone特征提取后得到下采樣32倍后的特征圖(1x2048x16x16)授嘀,然后再經(jīng)過三層反卷積模塊上采樣到128128的尺寸蹄皱,最后分別送入三個(gè)head分支進(jìn)行預(yù)測(cè):分別預(yù)測(cè)物體的類別夯接、長(zhǎng)寬尺寸和中心點(diǎn)偏置盔几。其中推理的核心是從headmap中提取需要的bounding box逊拍,通過使用3*3的最大池化芯丧,檢查當(dāng)前熱點(diǎn)的值是否比周圍的8個(gè)臨近點(diǎn)值都大缨恒,每個(gè)類別取100個(gè)這樣的點(diǎn)岭佳,經(jīng)過box后處理后再進(jìn)行閾值篩選珊随,得到最終的預(yù)測(cè)框叶洞。
22 你知道哪些邊緣端部署的方案衩辟?
目前大多數(shù)深度學(xué)習(xí)算法模型要落地對(duì)算力要求還是比較高的惭婿,如果在服務(wù)器上财饥,可以使用GPU進(jìn)行加速钥星,但是在邊緣端或者算力匱乏的開發(fā)板子上谦炒,不得不對(duì)模型進(jìn)一步的壓縮或者改進(jìn),也可以針對(duì)特定的場(chǎng)景使用市面上現(xiàn)有的推理優(yōu)化加速框架進(jìn)行推理还蹲。目前來說比較常見的幾種部署方案為:
nvidia GPU:pytorch->onnx->TensorRT
intel CPU: pytorch->onnx->openvino
移動(dòng)端(手機(jī)谜喊、開發(fā)板等):pytorch->onnx->MNN斗遏、NCNN诵次、TNN逾一、TF-lite、Paddle-lite鄙早、RKNN等
搭環(huán)境
依賴庫:動(dòng)態(tài)庫 *.o *.lib (官方) (開發(fā)環(huán)境是什么庫限番,推理環(huán)境就得是什么庫弥虐,不然可能發(fā)生不兼容)
配置環(huán)境變量:export LD_LIBRARY_PATH=$LD_LIBRARY_PATH (依賴庫路徑)轉(zhuǎn)模型
pytorch->onnx->tensorRT推理模型
(1) 讀取模型文件 根據(jù)每個(gè)框架的API
(2) 送入輸入數(shù)據(jù) opencv 應(yīng)該和原工程保持一致 Anchor, Mean(0.485, 0.456, 0.406), Std(1/255)
(3) 推理模型 根據(jù)每個(gè)框架的API
(4) 獲取輸出結(jié)果 根據(jù)API
(5) 后處理 (1) 輸出的是一個(gè)什么樣的數(shù)據(jù),它的形狀是多少 (2) 知道輸出的格式模型部署難點(diǎn):
模型大小 -> 量化(float16、int8)缤底、蒸餾、剪枝
算子不適配 -> 根據(jù)框架提供的API來開發(fā)算子實(shí)現(xiàn)跑在硬件資源上
推理時(shí)間 -> 模型大小徙歼、模型層的復(fù)雜度絮缅、量化
當(dāng)前部署場(chǎng)景精度 -> 訓(xùn)練事情
后處理 -> 寫到對(duì)應(yīng)框架里面去鲁沥,調(diào)用框架本身對(duì)應(yīng)的硬件資源(GPU, NPU, TPU)
23 你最常用的幾種目標(biāo)檢測(cè)算法是什么?為什么選擇這些算法耕魄,你選擇它們的場(chǎng)景分別是什么画恰?
在工作中,我通常會(huì)根據(jù)不同的任務(wù)選取不同的算法模型:
目標(biāo)檢測(cè):yolov5吸奴、yolov3缠局、CenterNet、SSD考润、Faster RCNN狭园、EfficientDet;
圖像分類:mobileNetv2糊治、mobileNetv3唱矛、ghostNet、ResNet系列井辜、ShuffleNetV2绎谦、EfficientNet;
實(shí)例分割:mask-rcnn粥脚、yolact窃肠、solo;
語義分割:deeplabv3刷允、deeplabv3+冤留、UNet嘁扼;
文本檢測(cè):CTPN漫贞、PSENet、DBNet峭状、YOLOV5天通;
文本識(shí)別:CRNN+CTC肪跋、CRNN+Attention;
通常土砂,我比較喜歡性能好的模型州既,性能的指標(biāo)由兩部分,一個(gè)是精度萝映,一個(gè)是速度吴叶。比如在目標(biāo)檢測(cè)中,用的比較多的是yolo系列序臂,特別是v4蚌卤、v5出來后。通常在圖像分類的任務(wù)上奥秆,分類并不困難的情況下會(huì)選擇一些輕量型的網(wǎng)絡(luò)逊彭,能夠一定程度上節(jié)省算力資源。其他領(lǐng)域的任務(wù)算法抉擇也大同小異构订。
24 介紹一下yolov5
yolov5和v4都是在v3基礎(chǔ)上改進(jìn)的侮叮,性能與v4基旗鼓相當(dāng),但是從用戶的角度來說悼瘾,易用性和工程性要優(yōu)于v4囊榜,
v5的原理可以分為四部分:
輸入端审胸、backbone、Neck卸勺、輸出端砂沛;
1、輸入端:針對(duì)小目標(biāo)的檢測(cè)曙求,沿用了v4的mosaic增強(qiáng)碍庵,當(dāng)然這個(gè)也是v5作者在他復(fù)現(xiàn)的v3上的原創(chuàng),對(duì)不同的圖片進(jìn)行隨機(jī)縮放悟狱、裁剪怎抛、排布后進(jìn)行拼接;
2芽淡、是自適應(yīng)錨框計(jì)算,在v3豆赏、v4中挣菲,初始化錨框是通過對(duì)coco數(shù)據(jù)集的進(jìn)行聚類得到,v5中將錨框的計(jì)算加入了訓(xùn)練的代碼中掷邦,每次訓(xùn)練時(shí)白胀,自適應(yīng)的計(jì)算不同訓(xùn)練集中的最佳錨框值;
3抚岗、backbone:沿用了V4的CSPDarkNet53結(jié)構(gòu)或杠,但是在圖片輸入前加入了Focus切片操作,CSP結(jié)構(gòu)實(shí)際上就是基于Densnet的思想宣蔚,復(fù)制基礎(chǔ)層的特征映射圖向抢,通過dense block發(fā)送到下一個(gè)階段,從而將基礎(chǔ)層的特征映射圖分離出來胚委。這樣可以有效緩解梯度消失問題挟鸠,支持特征傳播,鼓勵(lì)網(wǎng)絡(luò)重用特征亩冬,從而減少網(wǎng)絡(luò)參數(shù)數(shù)量艘希。在V5中,提供了四種不同大小的網(wǎng)絡(luò)結(jié)構(gòu):s硅急、m覆享、l、x营袜,通過depth(深度)和width(寬度)兩個(gè)參數(shù)控制撒顿。
4、Neck:采用了SPP+PAN多尺度特征融合荚板,PAN是一種自下而上的特征金字塔結(jié)構(gòu)核蘸,是在FPN的基礎(chǔ)上進(jìn)行的改進(jìn)巍糯,相對(duì)于FPN有著更好的特征融合效果。
5客扎、輸出端:沿用了V3的head祟峦,使用GIOU損失進(jìn)行邊框回歸,輸出還是三個(gè)部分:置信度徙鱼、邊框信息宅楞、分類信息。
25 在你的項(xiàng)目中為什么選用yolov5模型而不用v4袱吆?
yolov4和v5都是yolo系列性能非常優(yōu)秀的算法厌衙,性能上不分伯仲,而且最近出來的scale yolov4更是達(dá)到了55的map绞绒。在項(xiàng)目中選擇v5的原因是因?yàn)樵趘4婶希、v5出來之前,就一直在用U版的yolov3蓬衡,相對(duì)于原版的v3喻杈,做了很多改進(jìn),而V5是在這個(gè)hub的基礎(chǔ)上改進(jìn)的狰晚,用起來上手比較快筒饰,而且代碼和之前的v3相似度很高,可以無縫對(duì)接以前的項(xiàng)目壁晒。另一方面瓷们,v5可選的模型比較多,在速度和精度上對(duì)比v4有一定的優(yōu)勢(shì)秒咐,而且模型采用半精度存儲(chǔ)谬晕,模型很小,訓(xùn)練和推理上都很友好携取。通常用s或者m版本的基本上都可以滿足項(xiàng)目需求固蚤。
比較官方一點(diǎn)的回答:
1、使用Pytorch框架歹茶,對(duì)用戶非常友好夕玩,能夠方便地訓(xùn)練自己的數(shù)據(jù)集,相對(duì)于YOLOV4采用的Darknet框架惊豺,Pytorch框架更容易投入生產(chǎn)燎孟。
2、代碼易讀尸昧,整合了大量的計(jì)算機(jī)視覺技術(shù)揩页,非常有利于學(xué)習(xí)和借鑒。
不僅易于配置環(huán)境烹俗,模型訓(xùn)練也非潮拢快速萍程,并且批處理推理產(chǎn)生實(shí)時(shí)結(jié)果。
3兔仰、 能夠直接對(duì)單個(gè)圖像茫负,批處理圖像,視頻甚至網(wǎng)絡(luò)攝像頭端口輸入進(jìn)行有效推理乎赴。
4忍法、 能夠輕松的將Pytorch權(quán)重文件轉(zhuǎn)化為安卓使用的ONXX格式,然后可以轉(zhuǎn)換為OPENCV的使用格式榕吼,或者通過CoreML轉(zhuǎn)化為IOS格式饿序,直接部署到手機(jī)應(yīng)用端。
5羹蚣、最后YOLO V5s高達(dá)140FPS的對(duì)象識(shí)別速度令人印象非常深刻原探,使用體驗(yàn)非常棒。
26 介紹yolov5中Focus模塊的原理和作用
Focus模塊將W顽素、H信息集中到通道空間咽弦,輸入通道擴(kuò)充了4倍,作用是可以使信息不丟失的情況下提高計(jì)算力戈抄。
具體操作為把一張圖片每隔一個(gè)像素拿到一個(gè)值,類似于鄰近下采樣后专,這樣我們就拿到了4張圖划鸽,4張圖片互補(bǔ),長(zhǎng)的差不多戚哎,但信息沒有丟失裸诽,拼接起來相當(dāng)于RGB模式下變?yōu)?2個(gè)通道,通道多少對(duì)計(jì)算量影響不大型凳,但圖像縮小丈冬,大大減少了計(jì)算量。
以Yolov5s的結(jié)構(gòu)為例甘畅,原始640×640×3的圖像輸入Focus結(jié)構(gòu)埂蕊,采用切片操作,先變成320×320×12的特征圖疏唾,再經(jīng)過一次32個(gè)卷積核的卷積操作蓄氧,最終變成320×320×32的特征圖。
27 yolov4和v5均引入了CSP結(jié)構(gòu)槐脏,介紹一下它的原理和作用
CSP結(jié)構(gòu)是一種思想喉童,它和ResNet、DenseNet類似顿天,可以看作是DenseNet的升級(jí)版堂氯,它將feature map拆成兩個(gè)部分蔑担,一部分進(jìn)行卷積操作,另一部分和上一部分卷積操作的結(jié)果進(jìn)行concate咽白。主要解決了三個(gè)問題:
- 增強(qiáng)CNN的學(xué)習(xí)能力啤握,能夠在輕量化的同時(shí)保持著準(zhǔn)確性;
- 降低計(jì)算成本局扶;
- 降低內(nèi)存開銷恨统。CSPNet改進(jìn)了密集塊和過渡層的信息流,優(yōu)化了梯度反向傳播的路徑三妈,提升了網(wǎng)絡(luò)的學(xué)習(xí)能力畜埋,同時(shí)在處理速度和內(nèi)存方面提升了不少。
強(qiáng)CNN學(xué)習(xí)能力的Backbone:CSPNet
28 你還了解當(dāng)下哪些比較流行的目標(biāo)檢測(cè)算法畴蒲?
目前比較流行的目標(biāo)檢測(cè)算法有以下幾種類型悠鞍,不局限于這幾種:
anchor-based:yolov3、yolov4模燥、yolov5咖祭、pp-yolo、SSD蔫骂、Faster-R-CNN么翰、Cascade R-CNN、EfficientDet辽旋,RetinaNet浩嫌、MTCNN;
anchor-free:CornerNet补胚、CenterNet码耐、CornerNet-lite、FCOS溶其;
transform:DETR骚腥; mobile-detector:mobileNet-yolo、mobileNet-SSD瓶逃、tiny-yolo束铭、nanodet、yolo-fastest厢绝、YOLObile纯露、mobilenet-retinaNet、MTCNN代芜;
還有很多很多埠褪。。。mmdetection里面就實(shí)現(xiàn)了幾十種钞速,可以去看一看贷掖,這里面最想總結(jié)的是移動(dòng)端的det,很多都是一些大佬在原生算法基礎(chǔ)上的改進(jìn)渴语,有時(shí)間出一篇文章專門記錄這個(gè)類型的檢測(cè)器苹威。
29 EfficentDet為什么可以做到速度兼精度并存 ?
30 介紹Faster R-CNN和Cascade R-CNN
Faster-RCNN是基于候選區(qū)域的雙階段檢測(cè)器代表作驾凶,總的來說可以分為四部分:首先是主干卷積網(wǎng)絡(luò)的特征提取牙甫,然后是RPN層,RPN層通過softmax判斷anchors屬于positive或者negative调违,再利用邊框回歸修正anchors獲得精確的候選區(qū)域窟哺,RPN生成了大量的候選區(qū)域,這些候選區(qū)域和feature maps一起送入ROI pooling中技肩,得到了候選特征區(qū)域且轨,最后送入分類層中進(jìn)行類別判斷和邊框回歸,得到最終的預(yù)測(cè)結(jié)果虚婿。Cascade R-CNN算法是在Faster R-CNN上的改進(jìn)旋奢,通過級(jí)聯(lián)幾個(gè)檢測(cè)網(wǎng)絡(luò)達(dá)到不斷優(yōu)化預(yù)測(cè)結(jié)果的目的,預(yù)普通的級(jí)聯(lián)不同然痊,Cascade R-CNN的幾個(gè)檢測(cè)網(wǎng)絡(luò)是基于不同的IOU閾值確定的正負(fù)樣本上訓(xùn)練得到的至朗。簡(jiǎn)單來說cascade R-CNN是由一系列的檢測(cè)模型組成,每個(gè)檢測(cè)模型都基于不同IOU閾值的正負(fù)樣本訓(xùn)練得到剧浸,前一個(gè)檢測(cè)模型的輸出作為后一個(gè)檢測(cè)模型的輸入锹引,因此是stage by stage的訓(xùn)練方式,而且越往后的檢測(cè)模型辛蚊,其界定正負(fù)樣本的IOU閾值是不斷上升的粤蝎。
31 SSD相比于YOLO做了哪些改進(jìn)真仲?
這里說的是SSD相對(duì)于YOLOv1的改進(jìn)袋马,因?yàn)楝F(xiàn)在SSD已經(jīng)不更了,但是YOLO還如日中天秸应,已經(jīng)發(fā)展到v5虑凛,性能在目標(biāo)檢測(cè)算法里一騎絕塵。那么最原始的SSD相對(duì)于YOLOv1做了哪些改進(jìn)呢软啼?
1桑谍、SSD提取了不同尺度的特征圖來做檢測(cè),而YOLO在檢測(cè)是只用了最高層的Feature maps祸挪;
2锣披、 SSD引入了Faster-RCNN的anchor機(jī)制,采用了不同尺度和長(zhǎng)寬比的先驗(yàn)框;SSD網(wǎng)絡(luò)結(jié)構(gòu)是全卷積雹仿,采用卷積做檢測(cè)增热,YOLO用到了FC(全連接)層;
SSD算法流程;
3胧辽、 輸入一幅圖峻仇,讓圖片經(jīng)過卷積神經(jīng)網(wǎng)絡(luò)(VGG)提取特征,生成feature map 抽取其中六層的feature map邑商,然后分別在這些feature map層上面的每一個(gè)點(diǎn)構(gòu)造
4摄咆、個(gè)不同尺度大小的default box,然后分別進(jìn)行檢測(cè)和分類(各層的個(gè)數(shù)不同人断,但每個(gè)點(diǎn)都有) 將生成的所有default box都集合起來吭从,全部丟到NMS中,輸出篩選后的default box含鳞。
32 了解哪些開源的移動(dòng)端輕量型目標(biāo)檢測(cè)影锈?
輕量型的目標(biāo)檢測(cè)其實(shí)有很多,大多數(shù)都是基于yolo蝉绷、SSD的改進(jìn)鸭廷,當(dāng)然也有基于其他算法改的;比較常用的改進(jìn)方法是使用輕量型的backbone替換原始的主干網(wǎng)絡(luò)熔吗,例如mobilenet-ssd辆床、mobilenet-yolov3、yolo-fastest桅狠、yolobile讼载、yolo-nano、nanodet中跌、tiny-yolo等等咨堤,在減少了計(jì)算量的同時(shí)保持著不錯(cuò)的精度,經(jīng)過移動(dòng)部署框架推理后漩符,無論是在服務(wù)器還是移動(dòng)端都有著不錯(cuò)的精度和速度
33 對(duì)于小目標(biāo)檢測(cè)一喘,你有什么好的方案或者技巧?
1嗜暴、圖像金字塔和多尺度滑動(dòng)窗口檢測(cè)(MTCNN)
2凸克、多尺度特征融合檢測(cè)(FPN、PAN闷沥、ASFF)
3萎战、增大訓(xùn)練、檢測(cè)圖像分辨率舆逃;
4蚂维、超分策略放大后檢測(cè)戳粒;
34 介紹一下NMS和IOU的原理;
NMS全稱是非極大值抑制虫啥,顧名思義就是抑制不是極大值的元素享郊。在目標(biāo)檢測(cè)任務(wù)中,通常在解析模型輸出的預(yù)測(cè)框時(shí)孝鹊,預(yù)測(cè)目標(biāo)框會(huì)非常的多炊琉,其中有很多重復(fù)的框定位到了同一個(gè)目標(biāo),NMS的作用就是用來除去這些重復(fù)框又活,從而獲得真正的目標(biāo)框苔咪。而NMS的過程則用到了IOU,IOU是一種用于衡量真實(shí)和預(yù)測(cè)之間相關(guān)度的標(biāo)準(zhǔn)柳骄,相關(guān)度越高团赏,該值就越高。IOU的計(jì)算是兩個(gè)區(qū)域重疊的部分除以兩個(gè)區(qū)域的集合部分耐薯,
簡(jiǎn)單的來說就是交集除以并集舔清。在NMS中,首先對(duì)預(yù)測(cè)框的置信度進(jìn)行排序曲初,依次取置信度最大的預(yù)測(cè)框與后面的框進(jìn)行IOU比較体谒,當(dāng)IOU大于某個(gè)閾值時(shí),可以認(rèn)為兩個(gè)預(yù)測(cè)框框到了同一個(gè)目標(biāo)臼婆,而置信度較低的那個(gè)將會(huì)被剔除抒痒,依次進(jìn)行比較,最終得到所有的預(yù)測(cè)框颁褂。
35 目標(biāo)檢測(cè)中如何處理正負(fù)樣本不平衡的問題故响?
那么正負(fù)樣本不均衡,會(huì)帶來什么問題呢颁独?
1彩届、訓(xùn)練效率低下
2、模型精度變低誓酒。 過多的負(fù)樣本會(huì)主導(dǎo)訓(xùn)練樟蠕,使模型退化。
36 yolov3為什么這么快丰捷?
yolov3和SSD比網(wǎng)絡(luò)更加深了坯墨,雖然anchors比SSD少了許多寂汇,但是加深的網(wǎng)絡(luò)深度明顯會(huì)增加更多的計(jì)算量病往,那么為什么yolov3會(huì)比SSD快3倍?
SSD用的很老的VGG16骄瓣,V3用的其最新原創(chuàng)的Darknet停巷,darknet-53與resnet的網(wǎng)絡(luò)結(jié)構(gòu),darknet-53會(huì)先用1x1的卷積核對(duì)feature降維,隨后再利用3x3的卷積核升維畔勤,這個(gè)過程中蕾各,就會(huì)大大降低參數(shù)的計(jì)算量以及模型的大小,有點(diǎn)類似于低秩分解庆揪。究其原因是做了很多優(yōu)化式曲,比如用卷積替代替代全連接,1X1卷積減小計(jì)算量等缸榛。
37 基于Anchor-base的目標(biāo)檢測(cè)算法相對(duì)于基于Anchor-free的目標(biāo)檢測(cè)算法有什么缺陷吝羞?
1、基于Anchor-base的目標(biāo)檢測(cè)算法需要在訓(xùn)練前通過聚類決定一系列的anchor内颗,這些anchor具有很強(qiáng)的領(lǐng)域性钧排,泛化差;
2均澳、 anchor機(jī)制增加了detection heads的復(fù)雜性恨溜,增加了預(yù)測(cè)數(shù)量,這在邊緣AI系統(tǒng)中找前,是一個(gè)瓶頸糟袁。
anchor-free在yolox中的做法是:
在每個(gè)位置只預(yù)測(cè)一次,預(yù)測(cè)四個(gè)值:左上角xy坐標(biāo)的偏移躺盛、寬系吭、高。將中心3X3=9的區(qū)域設(shè)置為正樣本颗品,稱作:center sampling.
37 什么是梯度消失和梯度爆炸問題肯尺?
在反向傳播過程中需要對(duì)激活函數(shù)進(jìn)行求導(dǎo),如果導(dǎo)數(shù)大于1躯枢,那么隨著網(wǎng)絡(luò)層數(shù)的增加梯度更新將會(huì)朝著指數(shù)爆炸的方式增加這就是梯度爆炸则吟。同樣如果導(dǎo)數(shù)小于1,那么隨著網(wǎng)絡(luò)層數(shù)的增加梯度更新信息會(huì)朝著指數(shù)衰減的方式減少這就是梯度消失锄蹂。因此氓仲,梯度消失、爆炸得糜,其根本原因在于反向傳播訓(xùn)練法則敬扛,屬于先天不足。
38 梯度消失朝抖、爆炸的解決方案
1啥箭、預(yù)訓(xùn)練加微調(diào)
2、權(quán)重正則化: 針對(duì)梯度爆炸提出的治宣,其思想是設(shè)置一個(gè)梯度剪切閾值急侥,然后更新梯度的時(shí)候砌滞,如果梯度超過這個(gè)閾值,那么就將其強(qiáng)制限制在這個(gè)范圍之內(nèi)坏怪。這可以防止梯度爆炸贝润。
3、relu铝宵、leakrelu打掘、elu等激活函數(shù)
4、batch normalization :具有加速網(wǎng)絡(luò)收斂速度鹏秋,提升訓(xùn)練穩(wěn)定性的效果胧卤。
反向傳播式子中有w的存在,所以w的大小影響了梯度的消失和爆炸拼岳,batchnorm就是通過對(duì)每一層的輸出規(guī)范為均值和方差一致的方法枝誊,消除了w帶來的放大縮小的影響,進(jìn)而解決梯度消失和爆炸的問題惜纸。
5叶撒、LSTM
6、殘差結(jié)構(gòu)
參考文獻(xiàn):https://zhuanlan.zhihu.com/p/51490163
耐版。