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)
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)