一位算法工程师从30+场秋招面试中总结出的超强面经——目标检测篇(含答案)
作者丨燈會
來源丨極市平臺
編輯丨極市平臺
本文為極市平臺原創,轉載須經授權并注明來源
作者燈會為21屆中部985研究生,七月份將入職某互聯網大廠cv算法工程師。在去年灰飛煙滅的算法求職季中,經過幾十場不同公司以及不同部門的面試中積累出了CV總復習系列,此為目標檢測篇。
Faster-Rcnn網絡
1.faster RCNN原理介紹,要詳細畫出圖
? Faster R-CNN是一種兩階段(two-stage)方法,它提出的RPN網絡取代了選擇性搜索(Selective search)算法后使檢測任務可以由神經網絡端到端地完成。在結構上,Faster RCNN將特征抽取(feature extraction),候選區域提取(Region proposal提取),邊框回歸(bounding box regression),分類(classification)都整合在了一個網絡中,使得綜合性能有較大提高,在檢測速度方面尤為明顯。
2.RPN(Region Proposal Network)網絡的作用、實現細節
RPN網絡的作用: RPN專門用來提取候選框,一方面RPN耗時少,另一方面RPN可以很容易結合到Fast RCNN中,成為一個整體。
RPN網絡的實現細節:一個特征圖(Faster RCNN的公共Feature Map)經過sliding window處理,得到256維特征,對每個特征向量做兩次全連接操作,一個得到2個分數,一個得到4個坐標{然后通過兩次全連接得到結果2k個分數和4k個坐標[k指的是由錨點產生的K個框(K anchor boxes)]}
2個分數,因為RPN是提候選框,還不用判斷類別,所以只要求區分是不是物體就行,那么就有兩個分數,前景(物體)的分數,和背景的分數; 4個坐標是指針對原圖坐標的偏移,首先一定要記住是原圖;
預先設定好共有9種組合,所以k等于9,最后我們的結果是針對這9種組合的,所以有H x W x 9個結果,也就是18個分數和36個坐標。
寫一下RPN的損失函數(多任務損失:二分類損失+SmoothL1損失)
訓練RPN網絡時,對于每個錨點我們定義了一個二分類標簽(是該物體或不是)。
以下兩種情況我們視錨點為了一個正樣本標簽時:
1.錨點和錨點們與標注之間的最高重疊矩形區域
2.或者錨點和標注的重疊區域指標(IOU)>0.7
L(pi,ti)=1Ncls∑iLcls(pi,pi?)+λ1Nreg∑ipi?Lreg(ti,ti?)L\left(p_{i}, t_{i}\right)=\frac{1}{N_{c l s}} \sum_{i} L_{c l s}\left(p_{i}, p_{i}^{*}\right)+\lambda \frac{1}{N_{r e g}} \sum_{i} p_{i}^{*} L_{r e g}\left(t_{i}, t_{i}^{*}\right) L(pi?,ti?)=Ncls?1?i∑?Lcls?(pi?,pi??)+λNreg?1?i∑?pi??Lreg?(ti?,ti??)
RPN損失中的回歸損失部分輸入變量是怎么計算的?(注意回歸的不是坐標和寬高,而是由它們計算得到的偏移量)
smooth?L1(x)={0.5x2if?∣x∣<1∣x∣?0.5otherwise?\operatorname{smooth}_{L_{1}}(x)=\left\{\begin{array}{ll} 0.5 x^{2} & \text { if }|x|<1 \\ |x|-0.5 & \text { otherwise } \end{array}\right. smoothL1??(x)={0.5x2∣x∣?0.5??if?∣x∣<1?otherwise??
? ti 和 ti* 分別為網絡的預測值和回歸的目標
tx=(x?xa)/wa,ty=(y?ya)/ha,tw=log?(w/wa),th=log?(h/ha)tx?=(x??xa)/wa,ty?=(y??ya)/ha,tw?=log?(w?/wa),th?=log?(h?/ha),\begin{array}{r} t_{x}=\left(x-x_{a}\right) / w_{a}, \quad t_{y}=\left(y-y_{a}\right) / h_{a}, \quad t_{w}=\log \left(w / w_{a}\right), \quad t_{h}=\log \left(h / h_{a}\right) \\ t_{x}^{*}=\left(x^{*}-x_{a}\right) / w_{a}, \quad t_{y}^{*}=\left(y^{*}-y_{a}\right) / h_{a}, \quad t_{w}^{*}=\log \left(w^{*} / w_{a}\right), \quad t_{h}^{*}=\log \left(h^{*} / h_{a}\right), \end{array} tx?=(x?xa?)/wa?,ty?=(y?ya?)/ha?,tw?=log(w/wa?),th?=log(h/ha?)tx??=(x??xa?)/wa?,ty??=(y??ya?)/ha?,tw??=log(w?/wa?),th??=log(h?/ha?),?
? 在訓練RPN時需要準備好目標t*。它是通過ground-truth box(目標真實box)和anchor box(按一定規則生成的anchor box)計算得出的,代表的是ground-truth box與anchor box之間的轉化關系。用這個來訓練rpn,那么rpn最終學會輸出一個良好的轉化關系t。而這個t,是predicted box與anchor box之間的轉化關系。通過這個t和anchor box,可以計算出預測框box的真實坐標。
RPN中的anchor box是怎么選取的?
滑窗的中心在原像素空間的映射點稱為anchor,以此anchor為中心,生成k(paper中default k=9, 3 scales and 3 aspect ratios/不同尺寸和不同長寬比)個proposals。三個面積尺寸(1282,2562,512^2),然后在每個面積尺寸下,取三種不同的長寬比例(1:1,1:2,2:1)
為什么提出anchor box?
全文鏈接:CV 面試問題詳解寶典–目標檢測篇
推薦大家關注極市平臺公眾號,每天都會更新最新的計算機視覺論文解讀、綜述盤點、調參攻略、面試經驗等干貨~
總結
以上是生活随笔為你收集整理的一位算法工程师从30+场秋招面试中总结出的超强面经——目标检测篇(含答案)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CVPR2021 论文大盘点:全景分割论
- 下一篇: Transformer 向轻量型迈进,微