Example #1
0
def apply_12_net(image, iname, nn, p_level=16, k=1.18, debug=1):
    py = fr.get_frame_pyramid(image, k=k, t=p_level)
    suff = nn.nn_name[:2]
    patch_size = int(suff)
    rows, cols, d = image.shape
    s = time()
    rbb = []
    ## check last k levels
    k = 1
    t_level = p_level - k
    for m, frame in enumerate(py):
        if m < t_level:
            continue
        H, W, dim = frame.shape
        X_test = []
        pnt = []
        for u in range(0, H - patch_size + 1, 4):
            for v in range(0, W - patch_size + 1, 4):
                subframe = fr.get_patch(frame, u, v, (patch_size, patch_size))
                #subframe = frame[y:y+h,x:x+w]
                X_test.append(fr.frame_to_vect(subframe))
                pnt.append((v, u))
        pnt = sp.array(pnt)
        X_test = sp.array(X_test)
        pred = nn.predict(X_test)
        pnt = pnt[pred == 1]
        if len(pred[pred == 1]) == 0:
            print('no detection on', str(m))
            continue
        else:
            print('detection on', str(m))
        bb = []
        for p in pnt:
            i = p[0]
            j = p[1]
            if debug:
                cv2.rectangle(frame, (i, j), (i + patch_size, j + patch_size),
                              (255, 0, 255), 1)
            bb.append([i, j, i + patch_size, j + patch_size])
        for e in bb:
            x1, y1, x2, y2 = e
            ox1 = math.floor(image.shape[1] * (x1 / frame.shape[1]))
            oy1 = math.floor(image.shape[0] * (y1 / frame.shape[0]))
            ox2 = math.floor(image.shape[1] * (x2 / frame.shape[1]))
            oy2 = math.floor(image.shape[0] * (y2 / frame.shape[0]))
            if m >= p_level - k:
                rbb.append([ox1, oy1, ox2, oy2])
        if debug:
            cv2.imwrite(
                iname[:-4] + '_pipeline_' + 'lev' + str(m) + '_' + nn.nn_name +
                '_.jpg', frame)

    f = time()
    print('time is:', f - s)
    return sp.array(rbb)
def apply_12_net(image,iname,nn,p_level = 16,k = 1.18,debug = 1):
    py = fr.get_frame_pyramid(image,k=k,t=p_level) 
    suff = nn.nn_name[:2]
    patch_size = int(suff)
    rows,cols,d = image.shape
    s = time()
    rbb = []
    ## check last k levels
    k = 1
    t_level = p_level-k
    for m,frame in enumerate(py):
        if m < t_level:
            continue
        H,W,dim = frame.shape
        X_test = []
        pnt = []
        for u in range(0,H - patch_size + 1,4):
            for v in range(0,W - patch_size + 1,4):
                subframe = fr.get_patch(frame,u,v,(patch_size,patch_size))
                #subframe = frame[y:y+h,x:x+w]
                X_test.append(fr.frame_to_vect(subframe))
                pnt.append((v,u))
        pnt = sp.array(pnt)
        X_test = sp.array(X_test)
        pred = nn.predict(X_test)
        pnt = pnt[pred==1]
        if len(pred[pred==1]) == 0:
            print('no detection on',str(m))
            continue
        else:
            print('detection on',str(m))
        bb = []
        for p in pnt:
            i = p[0]
            j = p[1]
            if debug:
                cv2.rectangle(frame, (i, j), (i+patch_size, j+patch_size), (255,0,255), 1)    
            bb.append([i,j,i+patch_size,j+patch_size])
        for e in bb:
            x1,y1,x2,y2 = e
            ox1 = math.floor(image.shape[1] * (x1/frame.shape[1]))
            oy1 = math.floor(image.shape[0] * (y1/frame.shape[0]))
            ox2 = math.floor(image.shape[1] * (x2/frame.shape[1]))
            oy2 = math.floor(image.shape[0] * (y2/frame.shape[0]))
            if m >= p_level - k:
                rbb.append([ox1,oy1,ox2,oy2])
        if debug:        
            cv2.imwrite(iname[:-4]+'_pipeline_' + 'lev'+str(m) + '_' + nn.nn_name  + '_.jpg',frame)
    
    f = time()
    print('time is:',f-s)
    return sp.array(rbb)
Example #3
0
def main():
    iname = 'img/test/p1.jpg'
    nn12 = Cnnl('12-net').__load_model_old__('12-net_lasagne_.pickle')
    nn24 = Cnnl(nn_name = '24-net',subnet=nn12).__load_model_old__('24-net_lasagne_.pickle')
    nn48 = Cnnl(nn_name = '48-net',subnet=nn24).__load_model_old__('48-net_lasagne_.pickle')
    nn_calib12 =  Cnnl('12-calib_net').__load_model_old__('12-calib_net_lasagne_.pickle')
    nn_calib24 =  Cnnl('24-calib_net').__load_model_old__('24-calib_net_lasagne_.pickle')
    #nn_calib48 =  Cnnl('48-calib_net').__load_model_old__('48-calib_net_lasagne_.pickle')
    image = fr.get_frame(iname)
    p = 11
    k = 1.41
    t_level = 0
    gbb = []
    gp = []
    print('Start....')
    s = time()
    py = fr.get_frame_pyramid(image,scale=k,steps=p)
    for m,frame in enumerate(py):
        if m < t_level:
            continue
        
        bb,p = apply_12_net(image = image,frame=frame,iname = iname,nn = nn12,m=m,debug=0)
        keep = util.nms(bb,p,T=0.5)
        
        bb = bb[keep] if keep != [] else bb
        p = p[keep] if keep != [] else p 
        cnt_detect = len(bb)
        if cnt_detect  == 0:
            continue
        #draw_bboxes(iname,bb,c='#-r_12--' + str(m))
        for b in bb:
            gbb.append(b)
        for pp in p:
            gp.append(pp)

    gbb = sp.array(gbb)
    gp = sp.array(gp)
    #draw_bboxes(iname,gbb,c='0-r_12')
    
    bb = gbb
    p = gp
    bb = apply_calib_net(image = image, iname = iname,bb=bb,nn=nn_calib12)
    cnt_detect = len(bb)
    
    #draw_bboxes(iname,bb,c='1-r_calib_12')    
    
    keep = util.nms(bb,p,T=0.3)
    
    bb = bb[keep] if keep != [] else bb
    
    p = p[keep] if keep != [] else p
    
    #draw_bboxes(iname,bb,c='2-r_nms_12')
    
    bb,p = apply_24_48_net(image = image, iname = iname, bb = bb,nn = nn24,debug=0 )
    cnt_detect = len(bb)
    #draw_bboxes(iname,bb,c='3-r_24')
    
    bb = apply_calib_net(image = image, iname = iname,bb = bb,nn=nn_calib24)
   
    cnt_detect = len(bb)
    #draw_bboxes(iname,bb,c='4-r_calib_24')
    keep = util.nms(bb,p,T=0.3)

    bb = bb[keep] if keep != [] else bb
    p = p[keep] if keep != [] else p
    #draw_bboxes(iname,bb,c='5-r_nms_24')
    cnt_detect = len(bb)
    
    bb,p = apply_24_48_net(image = image, iname = iname, bb = bb,nn = nn48,debug=1)        
    cnt_detect = len(bb)
    draw_bboxes(iname,bb,c='6-r_48',debug=1)
    
    
#    bb = apply_calib_net(image = image,iname = iname,bb=bb,nn=nn_calib48)
#    draw_bboxes(iname,bb,c='6-r_calib_48')
#    
#    bb = util.nms(bb,T=0.2)
#    draw_bboxes(iname,bb,c='7-r_nms_48_final')
    print('Finish...',time()-s)