def build_targets()

in py2/region_loss.py [0:0]


def build_targets(pred_corners, target, anchors, num_anchors, num_classes, nH, nW, noobject_scale, object_scale, sil_thresh, seen):
    nB = target.size(0)
    nA = num_anchors
    nC = num_classes
    anchor_step = len(anchors)/num_anchors
    conf_mask   = torch.ones(nB, nA, nH, nW) * noobject_scale
    coord_mask  = torch.zeros(nB, nA, nH, nW)
    cls_mask    = torch.zeros(nB, nA, nH, nW)
    tx0         = torch.zeros(nB, nA, nH, nW) 
    ty0         = torch.zeros(nB, nA, nH, nW) 
    tx1         = torch.zeros(nB, nA, nH, nW) 
    ty1         = torch.zeros(nB, nA, nH, nW) 
    tx2         = torch.zeros(nB, nA, nH, nW) 
    ty2         = torch.zeros(nB, nA, nH, nW) 
    tx3         = torch.zeros(nB, nA, nH, nW) 
    ty3         = torch.zeros(nB, nA, nH, nW) 
    tx4         = torch.zeros(nB, nA, nH, nW) 
    ty4         = torch.zeros(nB, nA, nH, nW) 
    tx5         = torch.zeros(nB, nA, nH, nW) 
    ty5         = torch.zeros(nB, nA, nH, nW) 
    tx6         = torch.zeros(nB, nA, nH, nW) 
    ty6         = torch.zeros(nB, nA, nH, nW) 
    tx7         = torch.zeros(nB, nA, nH, nW) 
    ty7         = torch.zeros(nB, nA, nH, nW) 
    tx8         = torch.zeros(nB, nA, nH, nW) 
    ty8         = torch.zeros(nB, nA, nH, nW) 
    tconf       = torch.zeros(nB, nA, nH, nW)
    tcls        = torch.zeros(nB, nA, nH, nW) 

    nAnchors = nA*nH*nW
    nPixels  = nH*nW
    for b in range(nB):
        cur_pred_corners = pred_corners[b*nAnchors:(b+1)*nAnchors].t()
        cur_confs = torch.zeros(nAnchors)
        for t in range(50):
            if target[b][t*21+1] == 0:
                break
            gx0 = target[b][t*21+1]*nW
            gy0 = target[b][t*21+2]*nH
            gx1 = target[b][t*21+3]*nW
            gy1 = target[b][t*21+4]*nH
            gx2 = target[b][t*21+5]*nW
            gy2 = target[b][t*21+6]*nH
            gx3 = target[b][t*21+7]*nW
            gy3 = target[b][t*21+8]*nH
            gx4 = target[b][t*21+9]*nW
            gy4 = target[b][t*21+10]*nH
            gx5 = target[b][t*21+11]*nW
            gy5 = target[b][t*21+12]*nH
            gx6 = target[b][t*21+13]*nW
            gy6 = target[b][t*21+14]*nH
            gx7 = target[b][t*21+15]*nW
            gy7 = target[b][t*21+16]*nH
            gx8 = target[b][t*21+17]*nW
            gy8 = target[b][t*21+18]*nH

            cur_gt_corners = torch.FloatTensor([gx0/nW,gy0/nH,gx1/nW,gy1/nH,gx2/nW,gy2/nH,gx3/nW,gy3/nH,gx4/nW,gy4/nH,gx5/nW,gy5/nH,gx6/nW,gy6/nH,gx7/nW,gy7/nH,gx8/nW,gy8/nH]).repeat(nAnchors,1).t() # 16 x nAnchors
            cur_confs  = torch.max(cur_confs, corner_confidences9(cur_pred_corners, cur_gt_corners)) # some irrelevant areas are filtered, in the same grid multiple anchor boxes might exceed the threshold
        conf_mask[b][cur_confs>sil_thresh] = 0
    if seen < -1:#6400:
       tx0.fill_(0.5)
       ty0.fill_(0.5)
       tx1.fill_(0.5)
       ty1.fill_(0.5)
       tx2.fill_(0.5)
       ty2.fill_(0.5)
       tx3.fill_(0.5)
       ty3.fill_(0.5)
       tx4.fill_(0.5)
       ty4.fill_(0.5)
       tx5.fill_(0.5)
       ty5.fill_(0.5)
       tx6.fill_(0.5)
       ty6.fill_(0.5)
       tx7.fill_(0.5)
       ty7.fill_(0.5)
       tx8.fill_(0.5)
       ty8.fill_(0.5)
       coord_mask.fill_(1)

    nGT = 0
    nCorrect = 0
    for b in range(nB):
        for t in range(50):
            if target[b][t*21+1] == 0:
                break
            nGT = nGT + 1
            best_iou = 0.0
            best_n = -1
            min_dist = 10000
            gx0 = target[b][t*21+1] * nW
            gy0 = target[b][t*21+2] * nH
            gi0 = int(gx0)
            gj0 = int(gy0)
            gx1 = target[b][t*21+3] * nW
            gy1 = target[b][t*21+4] * nH
            gx2 = target[b][t*21+5] * nW
            gy2 = target[b][t*21+6] * nH
            gx3 = target[b][t*21+7] * nW
            gy3 = target[b][t*21+8] * nH
            gx4 = target[b][t*21+9] * nW
            gy4 = target[b][t*21+10] * nH
            gx5 = target[b][t*21+11] * nW
            gy5 = target[b][t*21+12] * nH
            gx6 = target[b][t*21+13] * nW
            gy6 = target[b][t*21+14] * nH
            gx7 = target[b][t*21+15] * nW
            gy7 = target[b][t*21+16] * nH
            gx8 = target[b][t*21+17] * nW
            gy8 = target[b][t*21+18] * nH

            best_n = 0 # 1 anchor box
            gt_box = [gx0/nW,gy0/nH,gx1/nW,gy1/nH,gx2/nW,gy2/nH,gx3/nW,gy3/nH,gx4/nW,gy4/nH,gx5/nW,gy5/nH,gx6/nW,gy6/nH,gx7/nW,gy7/nH,gx8/nW,gy8/nH]
            pred_box = pred_corners[b*nAnchors+best_n*nPixels+gj0*nW+gi0]
            conf = corner_confidence9(gt_box, pred_box) 
            coord_mask[b][best_n][gj0][gi0] = 1
            cls_mask[b][best_n][gj0][gi0]   = 1
            conf_mask[b][best_n][gj0][gi0]  = object_scale
            tx0[b][best_n][gj0][gi0]        = target[b][t*21+1] * nW - gi0
            ty0[b][best_n][gj0][gi0]        = target[b][t*21+2] * nH - gj0
            tx1[b][best_n][gj0][gi0]        = target[b][t*21+3] * nW - gi0
            ty1[b][best_n][gj0][gi0]        = target[b][t*21+4] * nH - gj0
            tx2[b][best_n][gj0][gi0]        = target[b][t*21+5] * nW - gi0
            ty2[b][best_n][gj0][gi0]        = target[b][t*21+6] * nH - gj0
            tx3[b][best_n][gj0][gi0]        = target[b][t*21+7] * nW - gi0
            ty3[b][best_n][gj0][gi0]        = target[b][t*21+8] * nH - gj0
            tx4[b][best_n][gj0][gi0]        = target[b][t*21+9] * nW - gi0
            ty4[b][best_n][gj0][gi0]        = target[b][t*21+10] * nH - gj0
            tx5[b][best_n][gj0][gi0]        = target[b][t*21+11] * nW - gi0
            ty5[b][best_n][gj0][gi0]        = target[b][t*21+12] * nH - gj0
            tx6[b][best_n][gj0][gi0]        = target[b][t*21+13] * nW - gi0
            ty6[b][best_n][gj0][gi0]        = target[b][t*21+14] * nH - gj0
            tx7[b][best_n][gj0][gi0]        = target[b][t*21+15] * nW - gi0
            ty7[b][best_n][gj0][gi0]        = target[b][t*21+16] * nH - gj0
            tx8[b][best_n][gj0][gi0]        = target[b][t*21+17] * nW - gi0
            ty8[b][best_n][gj0][gi0]        = target[b][t*21+18] * nH - gj0
            tconf[b][best_n][gj0][gi0]      = conf
            tcls[b][best_n][gj0][gi0]       = target[b][t*21]

            if conf > 0.5:
                nCorrect = nCorrect + 1

    return nGT, nCorrect, coord_mask, conf_mask, cls_mask, tx0, tx1, tx2, tx3, tx4, tx5, tx6, tx7, tx8, ty0, ty1, ty2, ty3, ty4, ty5, ty6, ty7, ty8, tconf, tcls