計算機視覺崗常見面試題
問題1:Softmax+Cross Entropy反向求導
問題2:BatchNorm層的詳細解讀(具體可以參考之后出版的百面深度學習2333)
-
作用:
- 使得每層的輸入/輸出分布更加穩定,避免參數更新和網絡層次變深大幅度影響數據分布。從而使模型訓練更穩定。
-
參數 β 和 γ的作用
- 保留網絡各層在訓練過程中的學習成果
- 保證激活單元的非線性表達能力
- 使批歸一化模塊具有復原初始輸出分布能力。
-
BN放在激活層之前還是之后
問題3:Conv+BN加速策略
在inference階段,可以將BN層的參數合並在之前的Linear或Conv層中,加速推斷時間(因為二者都是線性變換)。
w = module.weight.data b = module.bias.data # conv的bias可以用全0代替 ws = [1] * len(w.size()) ws[0] = w.size()[0] invstd = bn_module.running_var.clone().add_(bn_module.eps).pow_(-0.5) w.mul_(invstd.view(*ws).expand_as(w)) b.add_(-bn_module.running_mean).mul_(invstd) if bn_module.affine: w.mul_(bn_module.weight.data.view(*ws).expand_as(w)) b.mul_(bn_module.weight.data).add_(bn_module.bias.data)
問題4:常見的模型加速方法
問題5:目標檢測里如何有效解決常見的前景少背景多的問題
- 采用Focal Loss或OHEM進行負樣本挖掘,加大Hard Example損失權重
- 訓練時只利用Ground Truth周邊的Prior Boxes進行訓練,忽略其他背景區域,只考慮困難背景區域
問題6:目標檢測里有什么情況是SSD、YOLOv3、Faster R-CNN等所不能解決的,假設網絡擬合能力無限強
問題7:分類和檢索兩個問題可以怎么理解
問題8:ROIPool和ROIAlign的區別,以及ROIAlign的簡單實現(不考慮並行,cpu串行即可)
- ROIPool存在兩次量化誤差,首先是將候選框邊界量化為整數點坐標值,其次是將量化后的邊界區域平均分割成 k x k 個單元,對每一個單元的邊界進行量化。ROIAlign通過雙線性插值避免了量化操作,保存了原始ROI的空間分布,有效避免了誤差的產生;對於檢測圖片中大目標物體時,兩種方案的差別不大,而如果是圖片中有較多小目標物體需要檢測,則優先選擇ROIAlign,更精准一些
問題9:深度神經網絡常見的參數初始化方式,如果全部初始化為0,會出現什么情況
問題10:多卡並行的時候怎么實現參數共享,通信梯度是指平均梯度,還是最大梯度,還是梯度總和
問題11:介紹常見的梯度下降優化方法
問題12: 神經網絡(卷積/全連接)反向傳播公式推導
問題13: Focal Loss解決了什么問題,如何解決的,與OHEM有什么不同
問題14: 斜着的矩形框如何求iou, 兩個多邊形的框如何求iou
首先要求解兩個多邊形的面積,方法見該鏈接
關鍵在於如何求出交集的面積
思路一
蒙特卡洛 + 采樣,近似求解交集的面積,但是中間涉及判斷點在不在多邊形內,判斷點是否在多邊形內
思路二
適合於兩個凸多邊形(非凸沒想到好的思路),凸多邊形可以看做是半平面的交集,因此兩個凸多邊形的交集,可以看作是(m+n)個半平面的交集(假設兩個凸多邊形分別有m個頂點和n個頂點),求出來半平面的交集(仍舊是一個凸多邊形)之后,求解該多邊形的面積即可。求解半平面交集
問題15: Detection你覺的還有哪些可做的點
問題16: 卷積底層如何實現的
問題17: mini-Batch SGD相對於GD有什么優點
問題18: DCN比普通卷積多了多少計算量
問題19: SyncBN如何實現的
問題20:當需要添加背景類時,怎樣處理比較合理
問題21:給出語義分割評估指標mIOU的計算公式和實現
問題22:人體姿態估計主流的兩個做法是啥?簡單介紹下
問題23:介紹帶孔卷積以及其優勢與劣勢
問題24:Non-local模塊與Self-attention的之間的關系與區別
問題25:PyTorch和TensorFlow的運行原理
問題26:卷積的實現原理以及如何快速高效實現局部weight sharing的卷積操作方式
問題27:詳解幾種優化算法
問題28:BN在training和inference的時候有什么區別
- 在訓練時,我們可以計算出batch的均值和方差,迭代訓練過程中,均值和方差一直在發生變化。但是在推理時,均值和方差是固定的,對於均值來說直接計算所有batch u值的平均值,對於標准偏差采用每個batch σB的無偏估計。



