计算机视觉实习面试整理

头条AI Lab

  • 如何计算IoU,二叉树逐行遍历
  • focal loss有什么缺点
  • batch norm有在什么情况下效果不好
  • 检测中one-stage和two stage区别是什么,为什么one-stage的方法精度底
  • 如何判断一个点是否在凸多边形内
  • mask rcnn的损失函数

yolov3

  • anchor如何计算?
    采用标准的k-means(即用欧式距离来衡量差异),在box的尺寸比较大的时候其误差也更大,而我们希望的是误差和box的尺寸没有太大关系。因为框的大小不一样,这样大的定位框的误差可能更大,小的定位框误差会小,这样不均衡,很难判断聚类效果的好
    d(box,centroid)=1IOU(box,centroid)d(box,centroid)=1−IOU(box,centroid)
    在计算anchor boxes时我们将所有boxes中心点的x,y坐标都置为0

  • 如何计算IoU
    计算机视觉实习面试整理
    W=max(min(X1,A1)max(X0,A0),0)W=max(min(X1,A1)−max(X0,A0),0)

  • Loss function
    置信度损失+分类损失(只包含物体)+(仅计算包含物体框的x,y,w,h的损失mse)

faster rcnn

参考https://github.com/matterport/Mask_RCNN/blob/master/mrcnn/model.py

  • backbone :
    resnet101提取特征C2,C3,C4,C5
    利用C2-C5构建FPN金字塔特征P2,P3,P4,P5(上采样后,相加,在卷积),P6(maxpooling P5)
  • rpn网络(只预测是否是物体)
    (rpn网络类似yolo)
    rpn的feature map是[P2, P3, P4, P5, P6]
    输入时【图片,标签】
    输出是【feature map对应点的每一类的可能性,物体的可能性,bbox的位置】
    对输出的概率排序,保存前景概率大的一部分,然后选取想对应的anchor,利用rpn的输出回归值对anchor进行第一次修正。修正完利用极大抑制方法,删除其中的一部分anchor。获的最后的anchor。
    rpn的loss
    L({pi},{ti})=1NclsiLcls(pi,pi)+λ1NregipiLreg(ti,ti)L(\{p_i\},\{t_i\}) = \frac{1}{N_{cls}}\sum_iL_{cls}(p_i,p_i^*)+\lambda\frac{1}{N_{reg}}\sum_ip_i^*L_{reg}(t_i,t_i^*)
    LclsL_{cls}是是否是物体的log loss,Lreg=R(ti,ti)L_{reg}=R(t_i,t_i^*)是smooth L1 loss tit_i是4个参数的vector
    tx=(xxa)/wa,ty=(yya)/hatw=log(w/wa),th=log(h/ha)tx=(xxa)/wa,ty=(yya)/hatw=log(w/wa),th=log(h/ha)t_x = (x-x_a)/w_a,t_y=(y-y_a)/h_a \\t_w = log(w/w_a),t_h = log(h/h_a)\\ t_x^* = (x^*-x_a)/w_a,t_y^*=(y^*-y_a)/h_a\\ t_w* = log(w^*/w_a),t_h^*=log(h^*/h_a)

通过rpn网络得到的anchor,选择出来正负样本,并计算出正样本和真实框的差距,以及要预测的mask的值,这些都是在后面的网络中计算损失函数需要的真实值。