头条AI Lab
- 如何计算IoU,二叉树逐行遍历
- focal loss有什么缺点
- batch norm有在什么情况下效果不好
- 检测中one-stage和two stage区别是什么,为什么one-stage的方法精度底
- 如何判断一个点是否在凸多边形内
- mask rcnn的损失函数
yolov3
-
anchor如何计算?
采用标准的k-means(即用欧式距离来衡量差异),在box的尺寸比较大的时候其误差也更大,而我们希望的是误差和box的尺寸没有太大关系。因为框的大小不一样,这样大的定位框的误差可能更大,小的定位框误差会小,这样不均衡,很难判断聚类效果的好
d ( b o x , c e n t r o i d ) = 1 − I O U ( b o x , c e n t r o i d ) d(box,centroid)=1−IOU(box,centroid) d(box,centroid)=1−IOU(box,centroid)
在计算anchor boxes时我们将所有boxes中心点的x,y坐标都置为0 -
如何计算IoU
W = m a x ( m i n ( X 1 , A 1 ) − m a x ( X 0 , A 0 ) , 0 ) 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 ( { p i } , { t i } ) = 1 N c l s ∑ i L c l s ( p i , p i ∗ ) + λ 1 N r e g ∑ i p i ∗ L r e g ( t i , t i ∗ ) 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^*) L({pi},{ti})=Ncls1i∑Lcls(pi,pi∗)+λNreg1i∑pi∗Lreg(ti,ti∗)
L c l s L_{cls} Lcls是是否是物体的log loss, L r e g = R ( t i , t i ∗ ) L_{reg}=R(t_i,t_i^*) Lreg=R(ti,ti∗)是smooth L1 loss t i t_i ti是4个参数的vector
t x = ( x − x a ) / w a , t y = ( y − y a ) / h a t w = l o g ( w / w a ) , t h = l o g ( h / h a ) t x ∗ = ( x ∗ − x a ) / w a , t y ∗ = ( y ∗ − y a ) / h a t w ∗ = l o g ( w ∗ / w a ) , t h ∗ = l o g ( 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)\\ 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) tx=(x−xa)/wa,ty=(y−ya)/hatw=log(w/wa),th=log(h/ha)tx∗=(x∗−xa)/wa,ty∗=(y∗−ya)/hatw∗=log(w∗/wa),th∗=log(h∗/ha)
通过rpn网络得到的anchor,选择出来正负样本,并计算出正样本和真实框的差距,以及要预测的mask的值,这些都是在后面的网络中计算损失函数需要的真实值。