图像类找工作面试题(二)——常见问题大总结
文章目錄
- 一、深度學習問題
- 1、目標檢測系列
- (1)介紹目標檢測網絡YOLO以及SSD系列原理。
- (2)YOLO對小目標檢測效果不好的原因,怎么改善?
- (3)怎么防止過擬合
- (4)DropOut層的作用是什么?
- (5)BN層的原理和作用分別是什么?
- (6)YOLO與RCNN網絡的區別
- (7)目標檢測中的評價指標是什么?
- (8)anchor、grounding truth, bounding box、候選框這些都是什么??
- 2、目標追蹤系列
- (1)說一下deepsort算法的原理
- (2)說一下FairMOT的原理
- (3)仔細說一下FairMOT算法的網絡結構(三個頭)
- (4)FairMOT算法損失函數的表示形式是怎么樣的??
- (5)DLA網絡是什么?
- 3、身份識別
- (1)說一下身份重識別的原理
- (2)數據集怎么樣?數據集不夠用的話,如何擴充?
- (3)
- 4、其他深度學習問題
- (1)說一下損失函數的作用以及其準確的原理
- (2)說一下二分交叉熵損失函數和多分交叉熵損失函數
- (3)anchor-based和anchor-free有什么區別?
- (4)batch_size和epoch可以設置為多少?
- (5)池化層的作用是什么?
- (6)全連接層的作用
- (7)Python裝飾器是什么?
- (8)batch-normalization的過程是怎么樣的?
- (9)Softmax層的作用是什么?
- (10)CNN的平移不變性是什么?怎么實現?
- (11)VGG、GoogleNet、ResNet之間的區別是什么?
- (12)殘差網絡為什么能解決梯度消失問題?
- (13)LSTM為什么能解決梯度消失和梯度爆炸問題?
- (14)常見的模型加速方法
- (15)怎么解決目標檢測中前景多背景少的問題?
- (16)detection你認為還有什么可以做的?
- (17)激活函數的作用是什么?
- (18)優化器是什么,有什么目的,目前比較主流的優化器有哪些?
- (19)如何從零構建一個深度學習項目
- (20)深度學習如何用數學的方式理解
- (21)前向傳播和后向傳播分別是什么?
- (22)你了解的分類算法有哪些?
- (23)分類算法與回歸算法有什么區別和相同之處?
- (24)有監督學習和無監督學習分別是什么?有什么區別?
- (25)你了解什么聚類算法嗎?
- 二、傳統圖像識別問題
- 1、圖像處理的基本步驟
- 2、怎么使用傳統圖像處理辦法識別我手中的一瓶水?
- 3、霍夫變換的基本原理
- 4、SIFT/SURF的基本原理能否說清(這個較難,因為比較多)
- 5、談談深度學習與機器視覺的區別
- 6、談談圖像的濾波
- 7、數據預處理的步驟有哪些(可以分普通數據與圖像數據)
- 8、圖像插值
- 9、什么叫深拷貝,什么叫淺拷貝?
- 10、OpenCV中RGB2GRAY是怎么實現的?
- 11、連續圖像如何轉換為數字圖像?
- 12、對HOG特征的理解
- 13、車牌識別的原理
- 三、綜合面試問題
- 1、未來五年的職業規劃
- 2、談談自己性格的優缺點
- 3、為什么選擇我們公司
- 4、你有什么想問我的嗎?
一、深度學習問題
1、目標檢測系列
(1)介紹目標檢測網絡YOLO以及SSD系列原理。
目前比較具有代表性的目標檢測算法可以分為兩大流派,一個是以fasterRCNN為主的二階段算法,第二個是以YOLO和SSD為主的一階段算法(one-stage)。fasterRCNN的原理是先用一個RPN(region proposal network)提取region proposal,再用一個分類網絡判斷RP中是否含有目標,所以fasterRCNN的檢測階段其實是分類問題。
YOLO:
YOLOv1:是one-stage的開山之作,它將目標檢測看成了回歸問題,直接從圖像像素得到邊界框坐標和類別概率。不同于RCNN只對某個RP預測,YOLOv1可以看到整張圖像,所以預測錯誤的概率比fasterRCNN要小,YOlov1的預測結果,精確率高,但是召回率低,定位誤差多。YOLOv1的 損失函數由:回歸框loss、置信度loss和分類loss三個部分組成。
YOLOv2:解決了YOLOv1定位誤差多,召回率低的問題。相比于v1,它做了如下改進:
(1)增加BN層,移除dropout層,這一操作可增加mAP
(2)使用高分辨率的分類器,v2使用448X448的分辨率微調分類網絡,使模型在檢測數據集之前適應了高分辨率輸入。
(3)增加了anchor box,v1用的是全連接預測bbox的位置坐標;v2借鑒了FasterRCNN中RPN網絡的anchor box策略,移除了YOLOv1的全連接層,采用了卷積和anchor boxes來預測邊界框,提高定位精度。值得一提的是,v2的檢測模型輸入是416X416維度,經過32倍的下采樣,會很容易找到中心點。對于一些大物體,它們中心點往往落入圖片中心的位置,這樣我們就可以通過中心點預測它的邊界框。YOLOv1只預測7X7X2=98個框,v2預測的邊框個數為13X13Xanchor_num,這樣雖然損失了一點map,但是召回率提高了不少。
YOLOv3是原作者在YOLOv2上的一些改進,首先將骨干網絡從Darknet19改進為DarkNet-53,利用特征金字塔實現了多尺度檢測,使用邏輯回歸代替了softmax層。
?Darnet53與19相比,主要做出了如下改進:
- 引入了殘差網路的思想
- 在網絡中間層和后面某一層的上采樣進行張量拼接,達到多尺度特征融合的目的
引入了FPN網絡,解決了小目標檢測效果不好的問題,骨干網絡使用DarkNet53,分類器由softmax改為了sigmoid。
SSD
??SSD算法是一種直接預測目標類別和bbox的多目標檢測算法。傳統的做法是先把圖像轉換成不同大小(圖像金字塔),然后分辨檢測,最后使用NMS。而SSD則利用不同卷積層的feature map進行總和也能達到同樣效果。
??算法的骨干網絡是VGG-16,不過它將最后兩個全連接層(FC)改成了卷積層,隨后增加了4個卷積層來構造網絡結果。對其中5中不同的卷積層輸入(feature map)分別用兩個不同的3X3卷積核進行卷積。一個輸出的是分類用的置信度(confidence),每個bbox可生成21個類別confidence;一個輸出回歸用的localization,每個bbox生成4個坐標(x, y, w, h)。
??多尺度feature map預測:接下來進行預測的時候,會對接下來的六個不同的尺寸分別進行預測,這六種不同的尺寸輸出也就是后續檢測層的輸入。這六種尺寸分別包括6個不同大小的feature map,分別是38*38, 19*19, 10*10, 5*5, 3*3, 1*1.
(2)YOLO對小目標檢測效果不好的原因,怎么改善?
??小目標像素特征少,不明顯。小目標檢測率低,這個在任何算法上都無法避免。目標檢測算法對小目標檢測效果不好的原因,在于卷積網絡結果的最后一層feature map太小,例如3232的目標經過VGG網絡會變成22,這就導致之后的檢測和回歸無法滿足要求。卷積網絡越深語義信息越強,越低則是描述的局部外觀信息越多。相比于YOLO,SSD是多尺度特征圖提取,它更穩定;YOLO只是通過全局特征直接得到預測結果,完全靠數據堆積,因此對于小目標可以考慮減少池化。
??如果物體過小,在訓練階段,GT可能沒有辦法找到相應的default box與它匹配,效果肯定不好。可以考慮調低尺度或者進行多尺度預測。YOLOv2里邊就是使用多尺度預測。
(1)小目標往往更依賴淺層特征,因為淺層特征有更高的分辨率,但是語義區分較差
(2)YOLOv1為了速度,本來是全卷積網絡,但是卻固定了尺寸,因此它對大圖中的小物體檢測效果較差。
(3)怎么防止過擬合
在數據層面,做數據增廣,篩選高質量的特征
在網絡層面,選擇簡單的模型,網絡剪枝,加入正則項,加入drop-out層,加入BN層。
在訓練操作界面,使用early stopping(早停法)
??過擬合的表現形式:模型在訓練數據中損失函數較小,預測準確率高;但在測試數據中損失函數較大,預測準確率較低。Dropout層可以比較有效的緩解過擬合的發生,在一定程度上達到正則化的效果。
(4)DropOut層的作用是什么?
dropout層的主要作用就是為了防止過擬合,那么為什么可以防止過擬合呢?
(1)取平均的作用:我們用相同的訓練數據訓練5個不同的結果,此時可以采用“5個結果取均值”或者“多數取勝的投票策略”決定最終結果。例如3個網絡判斷結果為9,其他兩個網絡給出錯誤結果,那么很有可能這個結果就是9,這就是取平均的道理。同時因為不同的網絡可能產生不同的過擬合,取平均可以讓一些“相反的”擬合相互抵消。dropout掉不同的隱藏神經元,這種互為“反向”的擬合相互抵消就可以達到整體上的減少過擬合。
(2)減少神經元之間復雜的共適應關系:
(3)增加稀疏性:在數據量較小的時候,可以通過稀疏性,來增加特征的區分度。
(5)BN層的原理和作用分別是什么?
BN層的作用主要有三個:
(1)加快網絡的訓練和收斂的速度
??在深度神經網絡中,如果每層的數據分布都不一樣的話,將會導致網絡非常難收斂和訓練,而如果把每層的數據都轉換為均值為0,方差為1的狀態下,這樣每層的數據分布都是一樣的,訓練會比較容易收斂。
(2)控制梯度爆炸和防止梯度消失
??梯度爆炸:
??梯度消失:
(3)防止過擬合
(6)YOLO與RCNN網絡的區別
首先,YOLOv1是anchor-free的one-stage目標檢測算法;Faster:anchor-based是two-stage的目標檢測算法
(1)YOLOv1并沒有預先設置anchor,而是直接預測bbox,并針對每一個特征點,只預測2個候選框;FasterRCNN是feature map上的特征點預先設置9中尺寸的anchor,之后引入RPN網絡,基于預先設置的anchor預測候選框的偏移(使預設的anchor在偏移后能更接近Ground Truth)。總的來說,YOLO的bbox和faster的anchor本質上不同。
(2)YOLO中的NMS算法僅在預測的時候使用;fasterRCNN是在訓練RPN網絡的時候已經用了NMS。總的來說,兩個算法對于NMS的使用不同,這也和他們bbox和anchor的定義和使用有關。
(3)YOLO采用預測相對于當前grid cell左上角坐標的offset,寬高也是相對于特征圖大小的值。而fasterRCNN首先預設了9中不同尺寸的anchor,fasterRCNN在預測中心點是是基于這些預設anchor的中心點進行計算偏移得到的。
(4)損失函數區別很大,YOLOv1的損失函數由5部分組成,
(7)目標檢測中的評價指標是什么?
(0)TP:正樣本,預測結果為正;FP:正樣本,預測結果為負;
(0)TN:負樣本,預測結果為正;FN:負樣本,預測結果為負;
?
(1)精確率:又叫precision、查準率。就是預測是正例的結果中,確實是正例的比例。
??TP+TN/(TP + FP + TN +FN)
(2)召回率:Recall、查全率。就是所有正例的樣本中,被找出的比例。
??TP/(TP + FN)
(3)PR曲線:查準率和查全率是一對矛盾的度量,所以引入PR曲線。
(4)top值:top1 & top3 & top5:
??如果模型給出的最大概率值顯示為狗,那這就是Top-1;
??如果狗的預測概率值在給出的所有概率值中排在前5,那就是Top-5。
(5)map:AP是某一PR曲線下的面積;mAP是所有類別的AP值取平均。
(6)F1指數:精確率(prediction)和召回率(recall)的調和均值。
??F1 = 2TP/(2TP + FP + FN)
(8)anchor、grounding truth, bounding box、候選框這些都是什么??
邊界框(Bounding box)
??它輸出的是框的位置(中心坐標與寬高), confidence以及N個類別。用來表示物體的位置,一般有(xyxy)和(xywh)兩種表現形式。
錨框(anchor box)
??只是一個尺度即只有寬高;它與物體邊界框不同,是由人們假想出來的一種框;先設定好錨框的大小和形狀,再以圖像上某一個點畫出矩形框。在目標檢測中,通常會以某種規則在圖片上生成一系列錨框,將這些錨框當成可能的候選區域。模型對這些候選區域是否包含物體進行檢測,如果包含目標物體,則還需要進一步預測出物體所屬的類別。錨框不一定和物體邊界框重合,所以需要模型進行預測微調的幅度。
預測框(prediction box)
??是錨框微調后的結果,其結果更貼近真實框。
候選區域
?每個錨框都有可能是候選區域,一張圖片中會有很多錨框,想要判定哪個錨框是我們需要的,主要考慮三個方面:
(1)objectness標簽:錨框中是否包含物體,可看成一個二分類問題 【是否包含】
(2)location標簽:如果錨框包含物體,那么它對應的預測框中心位置和大小應該是多少。【位置】
(3)label標簽:如果錨框包含物體,那么具體類別是什么? 【類別】
2、目標追蹤系列
(1)說一下deepsort算法的原理
首先DeepSort算法的原理就是為了改善遮擋情況下的目標追蹤效果,同時也可以減少目標ID跳變的問題。
多目標追蹤大概可以分為以下幾個步驟:
(1)給定視頻原始幀
(2)運行目標檢測器,如FasterRCNN、SSD、YOLO等目標檢測,并獲取目標檢測框
(3)將所有目標框中對應的目標摳出來,進行特征提取(包括表觀特征和運動特征)
(4)進行相似度計算,計算前兩幀目標之間的匹配程度(前后屬于同一個目標的之間距離小,不同目標距離較大)
(5)數據關聯,為每個對象分配目標的ID。
因此,絕大多數MOT算法無外乎四個步驟(1)檢測(2)特征提取(3)相似度計算(4)數據關聯
Deep Sort算法在SORT算法的基礎上增加了級聯分配和新軌跡確認,它的總體流程如下:
(1)卡爾曼濾波預測軌跡Tracks
(2)使用匈牙利算法將預測的軌跡Tracks和當前幀中的detection進行匹配(級聯匹配和IOU匹配)
(3)卡爾曼濾波更新,重復(1)
(2)說一下FairMOT的原理
FairMOT將整個任務分為目標檢測分支和ReID分支,但是通過一個網絡實現的;這里的骨干網絡采用ResNet-34。同時為了適應不同規模的對象,將深層聚合網絡(DLA)的一種變體用于骨干網。此外,上采樣模塊的所有卷積層都由可變形的卷積層代替,以便他們可以根據物體的尺寸和姿勢動態調整感受野。這樣生成的模型是DLA-34。這個網絡可以為檢測和重識別提供公平特征。
(3)仔細說一下FairMOT算法的網絡結構(三個頭)
??三個頭指的是FairMOT算法中的目標檢測分支,三個頭分別是熱力圖(heatmap head)、位置偏移(box offset head)和尺寸偏移頭(size head)。
(4)FairMOT算法損失函數的表示形式是怎么樣的??
??FairMOT的損失函數由兩部分組成,分別代表兩個分支:目標檢測分支和ReID分支。
??目標檢測分支基于centerNet,有三個頭,分別用來估算熱圖、目標中心偏移和bbox尺寸。將對象檢測視為高分辨率特征圖上基于中心點的回歸任務。通過對DLA-34的輸出特征圖應用3X3卷積(具有256個通道)來實現每個head,然后通過1X1卷積層來生成最終目標。
- 目標檢測分支
(1)Heatmap head(作用是估計對象中心位置)
(2)Box Offset Head and size head
??Box offset的作用是更精確的定位對象,估計每個像素相對于對象中心的連續偏移
??size head的作用是負責估計每個位置上的目標邊界框的高度/寬度
- ReID分支
ReID分支的目標是生成區分不同對象的特征。理想特征下,不同目標之間的距離大于同一目標之間的距離。【求相似度】
??Re-ID loss
我們通過一個分類任務來學習ReID特征。訓練集中具有相同身份的所有目標實例都被視為相同類別。
- 訓練FairMOT使用的整體損失函數
加入以上三個損失函數后聯合訓練檢測和ReID分支。特別地,我們使用不確定損失來自動平衡檢測和ReID任務。
(5)DLA網絡是什么?
?更深層的神經網絡可以提取更多的語義信息和全局特征,但這不代表最后一層是任務的最終表示,跳躍連接就已經證明了這一點,跳躍連接對分類和回歸以及結構化任務是有效的
?DLA是一種通用而有效的深度視覺網絡拓展技術。DLA的使用可以在現有的ResNet、ResNetXt、DenseNet 網絡結構的基礎上再提升模型的性能、減少參數數量以及顯存開銷。
3、身份識別
(1)說一下身份重識別的原理
身份重識別使用的網絡是ResNet50或者ResNet101。
(1)首先用標注好的圖像訓練ResNet網絡,得到一個訓練好的模型。
(2)其次將場景中可能出現的人的圖像輸入進網絡模型,提取得到關鍵特征,并將關鍵特征存到mat矩陣中。
(3)測試時,使用YOLO等目標檢測算法把多人圖像中的單人圖像提取出來,并通過訓練好的模型得到單人圖像特征。
(2)數據集怎么樣?數據集不夠用的話,如何擴充?
??身份識別的數據集就是圖片【遷移訓練等、數據擴充等】
??目前已經在使用的有圖像仿射和形狀的變換,比如把圖像鏡像翻轉等。還有一些沒有實現的思路,比如背景替換、人物摳圖、背景重構等,但是像這種的效果可能不會特別好。
身份識別是一個混合數據集,初步考慮會提升模型泛化性能;其中公共數據集有3000個行人,來自上海商飛項目的數據有900個行人,共4000左右。在進行數據擴充之后,大致夠用;使用訓練出的模型進行推理測試,精確度也可以達到95%以上。
行為數據集全部來自上海商飛項目,共700分鐘有效視頻。視頻規格為30fps,碼率為1080p。
(3)
4、其他深度學習問題
(1)說一下損失函數的作用以及其準確的原理
損失函數用來評價模型的預測值與真實值不一樣的程度,損失函數越好,通用模型的性能越好。不同的模型用的損失函數一般也不一樣。損失函數的作用也就是計算神經網絡每次迭代的前向計算結果與真實值的差距,從而知道下一步的訓練向正確的方向進行。
(2)說一下二分交叉熵損失函數和多分交叉熵損失函數
兩者一般用來作為分類損失函數
交叉熵的表示一般是相對熵與信息熵的差值,二分交叉熵損失函數的值;
假設有y1個y2兩個類別。那么二分交叉熵損失函數就是真實模型的概率分布與訓練模型概率分布求log值的乘積。如果是兩個類別,那就累加。之后在式子上加上負號,因為信息量(預測的結果)與它對應的概率是成反比的。
(3)anchor-based和anchor-free有什么區別?
?通過anchor中有沒有認識的目標和目標框偏移參考框的偏移量完成目標檢測。兩階段和單階段目標檢測算法都有使用。
?anchor-free是將目標檢測轉換為關鍵點檢測問題,不同訓練之前對當前訓練數據聚類出多個寬高的anchor參數了,基于anchor-free的目標檢測有兩種方式:關鍵點檢測、目標物體的中心點定位。
兩個東西的區別:
?(1)分類方式不同
??anchor-based:首先計算來自不同尺度的anchor box與gt的IOU來確定正負樣本,對于每個目標在所有IOU大于閾值K的anchor中,選擇最大的作為正樣本,所有IOU小于K的anchor作為負樣本,其余忽略不計;最后針對正樣本的anchor回歸計算bbox的偏移量。
?(2)回歸方式不同
??anchor-free:使用空間和尺度約束將anchor點分配到不同尺度上,通過判斷特征圖上的點是否落入GT來確認正負樣本,即將物體邊框內所有位置都定義為正樣本;最后通過4個距離值和1個中心點的分數來檢測物體。
(4)batch_size和epoch可以設置為多少?
設置batch_size為全數據集或者設置為1都有各自的缺點。設置合適的batch_size和樣本有一定的關系,樣本量少的時候會帶來很大的方差,而這個大方差恰好會導致我們在梯度下降到很差的局部最優點。
(1)batch太小會導致訓練速度變慢,訓練不容易收斂
(2)具體的batch選取與訓練集的樣本數目相關。
(5)池化層的作用是什么?
在卷積神經網絡中通常會在相鄰的卷積層之間加入一個池化層,池化層可以有效的縮小參數矩陣的尺寸,從而減少最后連接層的中的參數數量。所以加入池化層可以加快計算速度和防止過擬合的作用。
池化的原理或者是過程:pooling是在不同的通道上分開執行的(就是池化操作不改變通道數),且不需要參數控制。然后根據窗口大小進行相應的操作。 一般有max pooling、average pooling等。
(1)首要作用,下采樣(downsamping)
(2)降維、去除冗余信息、對特征進行壓縮、簡化網絡復雜度、減小計算量、減小內存消耗等等。各種說辭吧,總的理解就是減少參數量。
(3)實現非線性(這個可以想一下,relu函數,是不是有點類似的感覺?)。
(4)可以擴大感知野。
(6)全連接層的作用
(1)一般位于卷積神經網絡的最后,負責將卷積輸出的二維特征圖轉換為一維的向量,由此實現端到端的學習過程。全連接層的每一個結點都與上一層的所有結點相連,因而稱為全連接層。由于其全連接的特性,一般全連接層的參數也是最多的。
(2)卷積神經網絡經過池化后,尺寸會大大削減,這個時候如果我們再使用一兩層的全連接,計算量會大大減少。
(3)全連接就是組合特征和分類器的功能。
(7)Python裝飾器是什么?
?簡言之,python裝飾器就是用于拓展原來函數功能的一種函數,這個函數的特殊之處在于它的返回值也是一個函數,使用python裝飾器的好處就是在不用更改原函數的代碼前提下給函數增加新的功能。
(8)batch-normalization的過程是怎么樣的?
BN解決的問題:
??網絡一旦訓練起來,那么參數就會發生更新,除了輸入層的數據外,后面網絡每一層的輸入數據分布是一直都在變化的,因為在訓練的時候,前面層村聯參數的更新導致了后面層輸入數據分布發生變化。BN的提出,就是要解決在訓練過程中,中間層數據分布發生改變的情況。事實上,在任何位置都可以進行數據歸一化。
??
BN步驟主要分為4步:
(1)求每一個訓練批次數據的均值
(2)求每一個訓練批次數據的方差
(3)使用求得的均值與方差對該批次的訓練數據做歸一化,獲得(0,1)正態分布。
(4)尺度變換與偏移,這是為了防止歸一化后的輸入被限制在(0,1)之間,使得網絡變大能力下降。
經過上述幾步變換,數據歸一化就可以用下面的形式來進行表達:
?????????????????
(9)Softmax層的作用是什么?
??SoftMax可以被看成是一個函數,一般用于處理分類任務中初始輸出結果。
??對于一個分類任務,它的輸出一般是一個向量。因為可以通過向量的方式來表示某個類別。分類網絡的輸出結果是一個向量,只不過這個向量里邊可以是任何值,而不是像label一樣那么有規律。那么我們就可以使用分類網絡的輸出結果與label進行cross entropy來計算損失。softmax層的作用就是將任何與之連接的向量轉換為(0,1)之間的數,這些數相加是等于1的。
(10)CNN的平移不變性是什么?怎么實現?
?簡單地說,圖像經過平移,相應的特征圖上的表達也是平移的。輸入圖像的左下角有一個人臉,經過卷積,人臉的特征(眼睛,鼻子)也位于特征圖的左下角。假如人臉特征在圖像的左上角,那么卷積后對應的特征也在特征圖的左上角。
?在神經網絡中,卷積被定義為不同位置的特征檢測器,也就意味著,無論目標出現在圖像中的哪個位置,它都會檢測到同樣的這些特征,輸出同樣的響應。比如人臉被移動到了圖像左下角,卷積核直到移動到左下角的位置才會檢測到它的特征。
(11)VGG、GoogleNet、ResNet之間的區別是什么?
AlexNet :AlexNet包含了6億3000萬個連接,6000萬個參數和65萬個神經元,擁有5個卷積層,其中3個卷積層后面連接了最大池化層,最后還有3個全連接層。成功使用ReLU作為CNN的激活函數,并驗證其效果在較深的網絡超過了Sigmoid,成功解決了Sigmoid在網絡較深時的梯度彌散問題。整個AlexNet有8個需要訓練參數的層(不包括池化層和LRN層),前5層為卷積層,后3層為全連接層,AlexNet最后一層是有1000類輸出的Softmax層用作分類。
GoogLeNet:該結構將CNN中常用的卷積(1x1,3x3,5x5)、池化操作(3x3)堆疊在一起(卷積、池化后的尺寸相同,將通道相加),一方面增加了網絡的寬度,另一方面也增加了網絡對尺度的適應性。使用1x1的卷積塊(NIN)來減少特征數量,這通常被稱為“瓶頸”,可以減少深層神經網絡的計算負擔。每個池化層之前,增加feature maps, 增加每一層的寬度來增多特征的組合性
VGGNet :VGG的巨大進展是通過依次采用多個3X3卷積,能夠模擬出更大的感受野(receptive field)的效果,兩個3X3卷積可以模擬出55的感受野,三個3X3的卷積可以模擬出77的感受野。VGGNet擁有5段卷積,每一段內有2~3個卷積層,同時每段尾部會連接一個最大池化層用來縮小圖片尺寸。每段內的卷積核數量一樣,越靠后的段的卷積核數量越多:64?–?128?–?256?–?512?–?512。
ResNet :ResNet聲名鵲起的一個很重要的原因是,它提出了殘差學習的思想。與普通的CNN相比,ResNet 最大的不同在于 ResNet 有很多的旁路直線將輸入直接連到網絡后面的層中,使得網絡后面的層也可以直接學習殘差,這種網絡結構成為 shortcut 或 skip connection。這樣做解決了傳統CNN在信息傳遞時,或多或少會丟失原始信息的問題,保護數據的完整性,整個網絡只需要學習輸入、輸出差別的一部分,簡化了學習的難度和目標。
DenseNet :它的基本思路與ResNet一致,但是它建立的是前面所有層與后面層的密集連接(dense connection),它的名稱也是由此而來。DenseNet的另一大特色是通過特征在channel上的連接來實現特征重用(feature reuse)。
MobileNet:MobileNet 的基本單元是深度級可分離卷積(depthwise separable convolution——DSC),其實這種結構之前已經被使用在Inception模型中。從概念上來說,MobileNetV1正試圖實現兩個基本目標,以構建移動第一計算視覺模型:1,較小的模型,參數數量更少;2,較小的復雜度,運算中乘法和加法更少。遵循這些原則,MobileNet V1 是一個小型,低延遲,低功耗的參數化模型,可以滿足各種用例的資源約束。它們可以用于實現:分類,檢測,嵌入和分割等功能。
(12)殘差網絡為什么能解決梯度消失問題?
(1)殘差網絡提出跳層連接,也就是ResBlock。殘差連接使得信息前后向傳播更加通腸,由此解決了網絡的退化問題。
ResNet的主要作用機理是跳躍連接的存在使得求導時可以將倒數直接回傳到上一層,實現梯度的跨層傳播。
(2)從梯度大小的角度解釋,不管網絡結構有多深,殘差網絡可以令靠近數據層(輸入)的權重W保持一個較大的值,避免了梯度消失。
(3)因為在前向傳播的時候添加了y = x+y(就是上圖中右邊的兩個線),相當于添加了“高速公路”,在反向傳播計算梯度的時候,不需要再經過那些權重層,也就不用從網絡塊中進行反向計算,因此更新的更快,也就收斂速度更快。
(13)LSTM為什么能解決梯度消失和梯度爆炸問題?
(14)常見的模型加速方法
??從模型設計時就采用一些輕量化的思想,例如采用深度可分離卷積、分組卷積等輕量卷積方式,減少卷積過程的計算量。此外,利用全局池化來取代全連接層,利用1×1卷積實現特征的通道降維,也可以降低模型的計算量,這兩點在眾多網絡中已經得到了應用。
??對于輕量化的網絡設計,目前較為流行的有SqueezeNet、MobileNet及ShuffleNet等結構。其中,SqueezeNet采用了精心設計的壓縮再擴展的結構,MobileNet使用了效率更高的深度可分離卷積,而ShuffleNet提出了通道混洗的操作,進一步降低了模型的計算量。
(2)BN層合并
(3)網絡剪枝
?
模型加速方法
(15)怎么解決目標檢測中前景多背景少的問題?
為了保證正負樣本盡量平衡,SSD采用了hard negative mining,就是對負樣本進行抽樣,抽樣時按照置信度誤差(預測背景的置信度越小,誤差越大)進行降序排列,選取誤差的較大的top-k作為訓練的負樣本,以保證正負樣本比例接近1:3。
采用two stage的方式,用rpn先篩一遍。
(16)detection你認為還有什么可以做的?
??就比如密集場景下的行人檢測任務,上述的目標檢測均不能得到很好的結果,由于人與人之間的遮擋,和人群分布的多樣性,就算擬合能力無限強這樣只會導致過擬合,在訓練集上的效果好。這些算法無法解決兩個同類之間的邊框的偏移和NMS的誤殺情況。
(17)激活函數的作用是什么?
??個人理解使用激活函數的目的主要是為了使網路更具有非線性能力,可以使得網絡擬合數據;如果沒有激活函數,只有單純的連接,那么網絡不管如何構建,都只是一個線性網絡,這樣深度神經網絡也就失去了最本質的核心。
(1)sigmoid激活函數一般用于輸出層是二元分類的問題
(2)ReLU是最常用的激活函數,如果不知道用什么,就默認使用ReLU或者Leaky-ReLU。
(3)沒有絕對的最優,具體問題具體分析
(4)模擬人類神經元的傳遞規則(用來控制神經元活躍度)
(5)限制每層之間的輸出值范圍(如sigmoid函數把神經元輸出值限制在0-1之間)
(6)為神經網絡引入非線性的能力。(最重要的功能)
(18)優化器是什么,有什么目的,目前比較主流的優化器有哪些?
??在構建神經網絡的時候,選擇最佳的優化器,可以使網絡快速收斂并正確學習,同時調整內部參數,可最大程度地最小化損失函數的值。
常見的優化器有:
(1)批量梯度下降(BGD)
(2)隨機梯度下降(SGD)
(3)小批量梯度下降(MBGD)
(4)指數加權平均
(5)動量梯度下降法
(19)如何從零構建一個深度學習項目
??深度學習可以從六個部分說起:
(1)第一部分:啟動一個深度學習項目
(2)第二部分:創建一個深度學習數據集
(3)第三部分:設計深度模型
(4)第四部分:可視化深度網絡模型以及度量指標
(5)第五部分:深度學習網絡中的調試
(6)第六部分:改善深度學習模型性能以及網絡調參
??如果問的比較深,建議直接跳轉此網址
(20)深度學習如何用數學的方式理解
(21)前向傳播和后向傳播分別是什么?
前向傳播:神經網絡前向傳播從輸入層到輸出層:前向傳播就是從輸入層開始,經過一層層的layer,不斷計算每一層的神經網絡得到的結果以及通過激活函數的本層輸出結果,最后得到輸出的過程。過程如下:
(1)輸入層->隱含層
(2)隱含層->輸出層
后向傳播:前向傳播計算除了輸出值(預測值),就可以根據輸出值與目標值的差別計算損失loss。反向傳播就是根據損失函數loss來反方向地計算每一層的偏導數,從最后一層逐層向前改變每一層的權重,也就是更新權重,它的核心也就是損失函數對每一網絡層的每一個參數求偏導的鏈式求導法則過程:
(1)計算總誤差
(2)隱含層與輸出層之間的權重更新
(3)輸入層與隱含層之間的權重更新
(4)梯度下降:神經網絡就是通過不斷的前向和反向傳播不斷調整神經網絡的權重,最終達到預設的迭代次數或者對樣本的學習已經到了比較好的程度后,就停止迭代,那么一個神經網絡就算是訓練好了。這就是神經網絡的本質:通過計算誤差、不斷修正權重以擬合輸入輸出的映射函數曲線。
(22)你了解的分類算法有哪些?
??一些常見的機器學習分類方法有SVM、決策樹和隨機森林等;深度學習分類一般使用softmax、全連接層、邏輯回歸等對深度網絡提取到的特征進行分類;比如YOLOv3中的最終分類層用的就是邏輯回歸。
??分類的原理:
??首先機器學習的原理就是通過訓練集,不斷識別特征,不斷建模,最后形成有效的模型,這個過程就叫做機器學習。
??分類任務就是預測連續的、具體的數值,學習器要知道如何區分信息類型,并進行特定對象的識別。
- 邏輯回歸分類的原理:用于處理變量為分類變量的回歸問題,常見二分類或者二項分布問題,也可以處理多分類問題。
- 決策樹分類:是一種簡單但廣泛使用的分類器,通過訓練數據構建決策樹,對位置的數據進行分類。
- 樸素貝葉斯:是基于貝葉斯定理的統計學分類方法,通過預測一個給定的元組屬于一個特定類的概率,來進行分類。
- 支持向量機:把分類問題轉換為訓練分類平面的問題,并通過最大化分類邊界點距離分類平面的距離來實現分類。
(23)分類算法與回歸算法有什么區別和相同之處?
區別:
??回歸會給出一個具體的結果,例如房價的數據,根據位置、周邊、配套等維度,給出一個房價的預測。它可以被看做是定量輸出,或者說是連續變量預測。回歸問題通常用來預測一個值,比如房價、未來的天氣等,它是對真實值的一種逼近預測。
??分類最終大多會給出類別的概率,對概率進行取整之后,才完成最終的分類。它可以被看做是定性輸出,或者說是離散變量預測。分類并沒有逼近的概念,最終正確結果只有一個,錯誤的就是錯誤的,不會有相近的概念。最常見的分類方法是邏輯回歸,或者較邏輯分類。
本質:
??分類模型與回歸模型本質一樣,都是首先建立映射關系。在實際操作中,我們也確實要將回歸問題和分類相互轉化,通常分類模型可以將回歸模型的輸出離散化,回歸模型也可以將分類模型的輸出連續化。
(24)有監督學習和無監督學習分別是什么?有什么區別?
??有監督學習:指我們給算法一個數據集,并且給出正確答案。機器通過數據來學習正確答案的計算方法。也就是通過大量打標簽來幫助機器學習,是一種比較常見的訓練和學習方式。它的特點是:目標明確、需要帶標簽的訓練數據,效果容易評估、效果好、成本高。分類和回歸都是有監督學習。
??無監督學習:就是訓練樣本中目標變量未被標記。學習器要自己從訓練樣本中發掘規律,按照樣本的性質自動分組,本質上是一個統計手段,在沒有標簽的數據里可以發現潛在的一些結構的訓練方式。它的特點是:目標不明確、不需要帶標簽的數據、效果很難評估。如聚類算法、降維算法等。
??半監督學習:是一種介于監督和無監督學習之間的一種算法,本質上,半監督模型將兩者結合到自己的一個算法中。其在訓練階段結合了大量未標記的數據和少量標簽數據。與使用所有標簽數據的模型相比,使用訓練集的訓練模型在訓練時可以更為準確,而且訓練樣本更低。
(25)你了解什么聚類算法嗎?
??聚類的目的:為了把不同的數據按照它們的相似與相似度分割為不同的簇,確保每個簇中的數據都盡可能相似,而不同簇的數據盡可能相異。
??從模式識別的角度講,聚類就是通過發現數據中潛在的模型,幫助人們進行分組歸類,以更好的理解數據的分布規律。
??常見聚類算法有:
(1)K-Means(基于劃分的聚類算法)
二、傳統圖像識別問題
1、圖像處理的基本步驟
2、怎么使用傳統圖像處理辦法識別我手中的一瓶水?
個人理解:
(1)拿到圖像先濾波(一般用高斯,如果椒鹽噪聲比較多,先中值)。
(2)對圖像進行直方圖均衡化,提高圖像的對比度,使特征更加明顯。
(3)使用canny算子將圖像轉換成二值圖像
(4)使用霍夫變換檢測二值圖像中的線條,并篩選固定的區域,得到一瓶水的線條
(5)rectangle畫框,或者circle畫圓,可視化。
3、霍夫變換的基本原理
??簡單的說,霍夫變換就是投票問題;但是如果往高深的說,霍夫變換是映射問題。
?比如一條直線,在笛卡爾空間上,是若干個點表示的;但是如果把這條直線表示為ρ和θ\thetaθ的格式,在橫坐標是θ\thetaθ,縱坐標為ρρρ的坐標軸上,變現形式是很多條正弦曲線。
?我們可以找正弦曲線的交點,正弦曲線的交點對應的ρ和θ\thetaθ就是我們想要找到的直線,同時也可以將其表示出來。
4、SIFT/SURF的基本原理能否說清(這個較難,因為比較多)
可以說Harris和Shi-Tomas角點檢測。
5、談談深度學習與機器視覺的區別
6、談談圖像的濾波
圖像濾波可以大致分為線性濾波和非線性濾波
線性濾波:
(1)均值濾波
(2)高斯濾波
非線性濾波:
(1)中值濾波
(2)雙邊濾波
7、數據預處理的步驟有哪些(可以分普通數據與圖像數據)
普通數據:
(1)數據清理:處理缺失數據、噪聲數據等
??刪除數據,度量填補缺失值,預測填補缺失值
??對噪聲數據進行光滑操作,分箱操作。主要思想是將每個數據用其鄰近的(箱或桶)代替,這樣既可以光滑有序數據值,還可以使數據保持獨有特點。回歸處理,通過一個映像函數擬合多個屬性數據,從而達到光滑數據的效果。離群點分析,聚類可以將相似的值歸為同一“簇”,因此主要使用聚類等技術檢測離群點。
(2)數據集成
??數據集成就是將多個數據源合并存放在一個一致的數據存儲(數據倉庫)中的過程。在實際應用中,數據集成解決3類問題:實體識別、冗余和相關分析,以及數值沖突的檢測和處理。
(3)數據變換,常用的數據變換操作有:數據規范化、數據離散化、概念分層等
8、圖像插值
??插值(重置樣本),是在不生成像素的情況下增加圖像像素大小的方法,在周圍像素色彩的基礎上用數學公式計算丟失像素的色彩。插值是根據中心像素點的顏色參數模擬出周邊像素值的方法。
??插值并不能增加圖像的信息。可以在放大圖像時,使圖像看上比較平滑、干凈。
9、什么叫深拷貝,什么叫淺拷貝?
深拷貝:分配新內存的同時拷貝數據,當被賦值的容器被修改時,原始容器數據不會改變。
淺拷貝:僅拷貝數據,當被賦值的容器修改時,原始容器數據也會做出同樣改變。
OpenCV中的mat,有幾種賦值方式,分別為:
(1)深拷貝是b = a.clone()和a.copyTo(b)
(2)淺拷貝是b = a;和b(a)
C++中OpenCV存儲圖像的結構體用的是mat。
10、OpenCV中RGB2GRAY是怎么實現的?
本質就是尋找一個三維空間到一維空間的映射,以RGB為軸建立空間直角坐標系,那么圖片上每一個像素點都可以用一個點表示,那么就可以通過一個公式來完成一維空間的映射。Gray=0.29900?R+0.58700?G+0.11400?BGray = 0.29900 * R + 0.58700 * G + 0.11400*BGray=0.29900?R+0.58700?G+0.11400?B
11、連續圖像如何轉換為數字圖像?
為什么要轉換?因為要做傳統圖像算法處理,為了讓計算機更好的利用數學公式來處理圖像,才要將連續圖像量化為數字圖像。
(1)取樣:將空間上連續的圖像變換成離散點,對坐標值進行數字化的操作,相當于對位置離散。
(2)量化:將像素灰度轉換為離散的整數值,即對幅值數字化的過程,相當于對亮度離散。
12、對HOG特征的理解
?其主要思想是:在邊緣具體位置下,邊緣方向的分布也可以很好的表示行人目標的外形輪廓,即梯度的統計信息。而梯度主要位于邊緣的地方。
?因此HOG特征檢測算法的步驟分為:顏色歸一化–梯度計算–梯度方向直方圖–重疊直方圖歸一化–HOG特征。
13、車牌識別的原理
車牌識別原理1
車牌識別原理2
三、綜合面試問題
1、未來五年的職業規劃
結合自身特點與職位需求。
(1)因為我的研究方向并不是純粹的目標檢測,但是YOLO等我也都完整的復現過,各種版本的論文我也都看過。所以如果有幸可以通過面試的話,我會在研三的大半年時間,把研究的內容向目標檢測這方面側重;我們這邊的老師也有很多是從事目標檢測方向的,有什么比較特殊的問題,都方便請教。
(2)如果有幸進入公司,我會抓緊時間適應工作,盡快上手。
(3)我會從現在開始,關注一些比較前沿的目標檢測和圖像處理知識。在入職之后,如果當前檢測算法相對完善的話,可以對其進行維護和小trick;如果不太完善,我會去閱讀大量論文,去尋找一種能適應當前場景的高效算法。
(4)XX是一個很漂亮的城市,希望可以在那里扎根
2、談談自己性格的優缺點
優點:
(1)勤奮:為什么選擇考研?其實自己最注重的并不是學歷的提升,而是自身知識儲備量的提升;一個普通本科畢業能干什么??國內普本的教育其實是非常失敗的,管理太松,以至于讓學生覺得大學其實學習并不是第一位的。這也就導致很多本科畢業生基礎不夠扎實,專業技能掌握的不太好。我也是一樣,但是幸運的是,我意識到這一點的時間比較早,于是我就開始考研。知識改變命運,這句話我是一直相信的。
(2)脾氣好
我的父親平常喜歡玩一些樂器,他的脾氣很好,并且總是給我灌輸“上善若水”的思想;所以我很少跟別人發脾氣。
缺點:
(1)執拗:我還是比較喜歡搞研究的,如果一件事情不是很容易就能搞出來的話,我可能會廢寢忘食。舉個例子,為了配置GPU版本的OpenCV,好幾天都沒有回宿舍,累了就趴在桌子上睡一會兒。上班的時候,我會收斂一點,會以當前手頭工作為主。
(2)缺少社會經驗:畢竟沒有真正的踏進過社會,雖然說與人交流不膽怯,但是有時候說話可能會不合時宜。但這到后面應該會改善的。
3、為什么選擇我們公司
1、地點
2、公司風格(研發或者應用)
3、崗位內容
4、公司文化等【可以夸,但是要適當,不然很有可能馬屁過量】
4、你有什么想問我的嗎?
(1)貴公司算法部門規格如何?
(2)培養機制是怎么樣的?
(3)工作內容是什么?
(4)傳統圖像處理和深度學習圖像處理有沒有側重?
(5)加班、出差
(6)技術面試有幾輪
總結
以上是生活随笔為你收集整理的图像类找工作面试题(二)——常见问题大总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 云中的安全api使用云端点espv2 b
- 下一篇: BHQ-1 amine,1308657-