def test_net(visualise, cache_scoremaps): logging.basicConfig(level=logging.INFO) cfg = load_config() dataset = create_dataset(cfg) dataset.set_shuffle(False) dataset.set_test_mode(True) sess, inputs, outputs = setup_pose_prediction(cfg) if cache_scoremaps: out_dir = cfg.scoremap_dir if not os.path.exists(out_dir): os.makedirs(out_dir) num_images = dataset.num_images predictions = np.zeros((num_images, ), dtype=np.object) for k in range(num_images): print('processing image {}/{}'.format(k, num_images - 1)) batch = dataset.next_batch() outputs_np = sess.run(outputs, feed_dict={inputs: batch[Batch.inputs]}) scmap, locref, pairwise_diff = extract_cnn_output(outputs_np, cfg) pose = argmax_pose_predict(scmap, locref, cfg.stride) pose_refscale = np.copy(pose) pose_refscale[:, 0:2] /= cfg.global_scale predictions[k] = pose_refscale if visualise: img = np.squeeze(batch[Batch.inputs]).astype('uint8') visualize.show_heatmaps(cfg, img, scmap, pose) visualize.waitforbuttonpress() if cache_scoremaps: base = os.path.basename(batch[Batch.data_item].im_path) raw_name = os.path.splitext(base)[0] out_fn = os.path.join(out_dir, raw_name + '.mat') scipy.io.savemat(out_fn, mdict={'scoremaps': scmap.astype('float32')}) out_fn = os.path.join(out_dir, raw_name + '_locreg' + '.mat') if cfg.location_refinement: scipy.io.savemat( out_fn, mdict={'locreg_pred': locref.astype('float32')}) scipy.io.savemat('predictions.mat', mdict={'joints': predictions}) sess.close()
def test_net(visualise, cache_scoremaps): logging.basicConfig(level=logging.INFO) cfg = load_config() dataset = create_dataset(cfg) dataset.set_shuffle(False) dataset.set_test_mode(True) sess, inputs, outputs = setup_pose_prediction(cfg) if cache_scoremaps: out_dir = cfg.scoremap_dir if not os.path.exists(out_dir): os.makedirs(out_dir) num_images = dataset.num_images predictions = np.zeros((num_images,), dtype=np.object) for k in range(num_images): print('processing image {}/{}'.format(k, num_images-1)) batch = dataset.next_batch() outputs_np = sess.run(outputs, feed_dict={inputs: batch[Batch.inputs]}) scmap, locref, pairwise_diff = extract_cnn_output(outputs_np, cfg) pose = argmax_pose_predict(scmap, locref, cfg.stride) pose_refscale = np.copy(pose) pose_refscale[:, 0:2] /= cfg.global_scale predictions[k] = pose_refscale if visualise: img = np.squeeze(batch[Batch.inputs]).astype('uint8') visualize.show_heatmaps(cfg, img, scmap, pose) visualize.waitforbuttonpress() if cache_scoremaps: base = os.path.basename(batch[Batch.data_item].im_path) raw_name = os.path.splitext(base)[0] out_fn = os.path.join(out_dir, raw_name + '.mat') scipy.io.savemat(out_fn, mdict={'scoremaps': scmap.astype('float32')}) out_fn = os.path.join(out_dir, raw_name + '_locreg' + '.mat') if cfg.location_refinement: scipy.io.savemat(out_fn, mdict={'locreg_pred': locref.astype('float32')}) scipy.io.savemat('predictions.mat', mdict={'joints': predictions}) sess.close()
def disp_pic(new=False, where="your_file4"): ''' Displays image ''' if (new): new_pic("QWERTY12345") where = "QWERTY12345" image = imread(where + ".PNG", mode='RGB') image_batch = data_to_input(image) # Compute prediction with the CNN outputs_np = sess.run(outputs, feed_dict={inputs: image_batch}) scmap, locref, _ = predict.extract_cnn_output(outputs_np, cfg) # Extract maximum scoring location from the heatmap, assume 1 person pose = predict.argmax_pose_predict(scmap, locref, cfg.stride) visualize.show_heatmaps(cfg, image, scmap, pose) visualize.waitforbuttonpress()
def test_net(visualise, cache_scoremaps, development): logging.basicConfig(level=logging.INFO) cfg = load_config() dataset = create_dataset(cfg) dataset.set_shuffle(False) sm = SpatialModel(cfg) sm.load() draw_multi = PersonDraw() from_cache = "cached_scoremaps" in cfg if not from_cache: sess, inputs, outputs = setup_pose_prediction(cfg) if cache_scoremaps: out_dir = cfg.scoremap_dir if not os.path.exists(out_dir): os.makedirs(out_dir) pairwise_stats = dataset.pairwise_stats num_images = dataset.num_images if not development else min( 10, dataset.num_images) coco_results = [] for k in range(num_images): print('processing image {}/{}'.format(k, num_images - 1)) batch = dataset.next_batch() cache_name = "{}.mat".format(batch[Batch.data_item].coco_id) if not from_cache: outputs_np = sess.run(outputs, feed_dict={inputs: batch[Batch.inputs]}) scmap, locref, pairwise_diff = extract_cnn_output( outputs_np, cfg, pairwise_stats) if cache_scoremaps: if visualise: img = np.squeeze(batch[Batch.inputs]).astype('uint8') pose = argmax_pose_predict(scmap, locref, cfg.stride) arrows = argmax_arrows_predict(scmap, locref, pairwise_diff, cfg.stride) visualize.show_arrows(cfg, img, pose, arrows) visualize.waitforbuttonpress() continue out_fn = os.path.join(out_dir, cache_name) dict = { 'scoremaps': scmap.astype('float32'), 'locreg_pred': locref.astype('float32'), 'pairwise_diff': pairwise_diff.astype('float32') } scipy.io.savemat(out_fn, mdict=dict) continue else: # cache_name = '1.mat' full_fn = os.path.join(cfg.cached_scoremaps, cache_name) mlab = scipy.io.loadmat(full_fn) scmap = mlab["scoremaps"] locref = mlab["locreg_pred"] pairwise_diff = mlab["pairwise_diff"] detections = extract_detections(cfg, scmap, locref, pairwise_diff) unLab, pos_array, unary_array, pwidx_array, pw_array = eval_graph( sm, detections) person_conf_multi = get_person_conf_multicut(sm, unLab, unary_array, pos_array) if visualise: img = np.squeeze(batch[Batch.inputs]).astype('uint8') # visualize.show_heatmaps(cfg, img, scmap, pose) """ # visualize part detections after NMS visim_dets = visualize_detections(cfg, img, detections) plt.imshow(visim_dets) plt.show() visualize.waitforbuttonpress() """ # """ visim_multi = img.copy() draw_multi.draw(visim_multi, dataset, person_conf_multi) plt.imshow(visim_multi) plt.show() visualize.waitforbuttonpress() # """ if cfg.use_gt_segm: coco_img_results = pose_predict_with_gt_segm( scmap, locref, cfg.stride, batch[Batch.data_item].gt_segm, batch[Batch.data_item].coco_id) coco_results += coco_img_results if len(coco_img_results): dataset.visualize_coco(coco_img_results, batch[Batch.data_item].visibilities) if cfg.use_gt_segm: with open('predictions_with_segm.json', 'w') as outfile: json.dump(coco_results, outfile) sess.close()
# Load and setup CNN part detector sess, inputs, outputs = predict.setup_pose_prediction(cfg) # Read image from file file_name = "demo/image_multi.png" image = imageio.imread(file_name, mode='RGB') image_batch = data_to_input(image) # Compute prediction with the CNN outputs_np = sess.run(outputs, feed_dict={inputs: image_batch}) scmap, locref, pairwise_diff = predict.extract_cnn_output( outputs_np, cfg, dataset.pairwise_stats) detections = extract_detections(cfg, scmap, locref, pairwise_diff) unLab, pos_array, unary_array, pwidx_array, pw_array = eval_graph( sm, detections) person_conf_multi = get_person_conf_multicut(sm, unLab, unary_array, pos_array) img = np.copy(image) visim_multi = img.copy() fig = plt.imshow(visim_multi) draw_multi.draw(visim_multi, dataset, person_conf_multi) fig.axes.get_xaxis().set_visible(False) fig.axes.get_yaxis().set_visible(False) plt.show() visualize.waitforbuttonpress()
draw_multi = PersonDraw() # Load and setup CNN part detector sess, inputs, outputs = predict.setup_pose_prediction(cfg) # Read image from file file_name = "demo/image_multi.png" image = imread(file_name, mode='RGB') image_batch = data_to_input(image) # Compute prediction with the CNN outputs_np = sess.run(outputs, feed_dict={inputs: image_batch}) scmap, locref, pairwise_diff = predict.extract_cnn_output(outputs_np, cfg, dataset.pairwise_stats) detections = extract_detections(cfg, scmap, locref, pairwise_diff) unLab, pos_array, unary_array, pwidx_array, pw_array = eval_graph(sm, detections) person_conf_multi = get_person_conf_multicut(sm, unLab, unary_array, pos_array) img = np.copy(image) visim_multi = img.copy() fig = plt.imshow(visim_multi) draw_multi.draw(visim_multi, dataset, person_conf_multi) fig.axes.get_xaxis().set_visible(False) fig.axes.get_yaxis().set_visible(False) plt.show() visualize.waitforbuttonpress()
def test_net(visualise, cache_scoremaps): # 打开python的日志功能 logging.basicConfig(level=logging.INFO) # 加载配置文件 cfg = load_config() # 根据配置文件中的信息产生数据读取类的实例 dataset = create_dataset(cfg) # 不用对数据进行洗牌 dataset.set_shuffle(False) # 告诉数据读取类没有类标,即处于测试模式 dataset.set_test_mode(True) # 该函数返回session,输入算子,输出算子 sess, inputs, outputs = setup_pose_prediction(cfg) # 是否需要保存测试过程中的heatmap if cache_scoremaps: # 保存heatmap的目录 out_dir = cfg.scoremap_dir # 目录不存在则创建 if not os.path.exists(out_dir): os.makedirs(out_dir) # 图片个数 num_images = dataset.num_images # 预测的关节坐标都保存在这里 predictions = np.zeros((num_images, ), dtype=np.object) for k in range(num_images): print('processing image {}/{}'.format(k, num_images - 1)) # 获得一批数据 batch = dataset.next_batch() # 进行预测 outputs_np = sess.run(outputs, feed_dict={inputs: batch[Batch.inputs]}) # 得到heatmap和精细化的heatmap scmap, locref = extract_cnn_output(outputs_np, cfg) # 获得最终的关节坐标 ''' pose = [ [ pos_f8[::-1], [scmap[maxloc][joint_idx]] ] .... ..... .... ] 用我的话说就是下面的结构 pose = [ [关节的坐标, 关节坐标的置信度] .... ..... .... ] ''' pose = argmax_pose_predict(scmap, locref, cfg.stride) pose_refscale = np.copy(pose) # 除以尺度,就能恢复到未经过缩放的图像的坐标系上去 # 注意0:2是左开右闭的区间只取到了0和1 pose_refscale[:, 0:2] /= cfg.global_scale predictions[k] = pose_refscale if visualise: # 获取图片 img = np.squeeze(batch[Batch.inputs]).astype('uint8') # 显示heatmap visualize.show_heatmaps(cfg, img, scmap, pose) # 等待按键按下 visualize.waitforbuttonpress() if cache_scoremaps: # 保存heatmap base = os.path.basename(batch[Batch.data_item].im_path) raw_name = os.path.splitext(base)[0] out_fn = os.path.join(out_dir, raw_name + '.mat') scipy.io.savemat(out_fn, mdict={'scoremaps': scmap.astype('float32')}) # 保存精细化关节定位的heatmap out_fn = os.path.join(out_dir, raw_name + '_locreg' + '.mat') if cfg.location_refinement: scipy.io.savemat( out_fn, mdict={'locreg_pred': locref.astype('float32')}) # 将最终预测的关节坐标保存起来 scipy.io.savemat('predictions.mat', mdict={'joints': predictions}) sess.close()
def main(): start_time=time.time() print("main hai") tf.reset_default_graph() cfg = load_config("demo/pose_cfg_multi.yaml") dataset = create_dataset(cfg) sm = SpatialModel(cfg) sm.load() draw_multi = PersonDraw() # Load and setup CNN part detector sess, inputs, outputs = predict.setup_pose_prediction(cfg) # Read image from file dir=os.listdir("stick") k=0 cap=cv2.VideoCapture(0) i=0 while (cap.isOpened()): if i%20 == 0: ret, orig_frame= cap.read() if ret==True: frame = cv2.resize(orig_frame, (0, 0), fx=0.30, fy=0.30) image= frame sse=0 mse=0 image_batch = data_to_input(frame) # Compute prediction with the CNN outputs_np = sess.run(outputs, feed_dict={inputs: image_batch}) scmap, locref, pairwise_diff = predict.extract_cnn_output(outputs_np, cfg, dataset.pairwise_stats) detections = extract_detections(cfg, scmap, locref, pairwise_diff) unLab, pos_array, unary_array, pwidx_array, pw_array = eval_graph(sm, detections) person_conf_multi = get_person_conf_multicut(sm, unLab, unary_array, pos_array) img = np.copy(image) #coor = PersonDraw.draw() visim_multi = img.copy() co1=draw_multi.draw(visim_multi, dataset, person_conf_multi) plt.imshow(visim_multi) plt.show() visualize.waitforbuttonpress() #print("this is draw : ", co1) if k==1: qwr = np.zeros((1920,1080,3), np.uint8) cv2.line(qwr, co1[5][0], co1[5][1],(255,0,0),3) cv2.line(qwr, co1[7][0], co1[7][1],(255,0,0),3) cv2.line(qwr, co1[6][0], co1[6][1],(255,0,0),3) cv2.line(qwr, co1[4][0], co1[4][1],(255,0,0),3) cv2.line(qwr, co1[9][0], co1[9][1],(255,0,0),3) cv2.line(qwr, co1[11][0], co1[11][1],(255,0,0),3) cv2.line(qwr, co1[8][0], co1[8][1],(255,0,0),3) cv2.line(qwr, co1[10][0], co1[10][1],(255,0,0),3) # In[9]: cv2.imshow('r',qwr) qwr2="stick/frame"+str(k)+".jpg" qw1 = cv2.cvtColor(qwr, cv2.COLOR_BGR2GRAY) qw2= cv2.cvtColor(qwr2, cv2.COLOR_BGR2GRAY) fig = plt.figure("Images") images = ("Original", qw1), ("Contrast", qw2) for (i, (name, image)) in enumerate(images): ax = fig.add_subplot(1, 3, i + 1) ax.set_title(name) plt.imshow(hash(tuple(image))) # compare the images s,m=compare_images(qw1, qw2, "Image1 vs Image2") k+=1 sse=s mse=m else: break elapsed= time.time()-start_time #print("sse score : ", sse) print("Mean squared error : ", elapsed/100) cap.release() cv2.destroyAllWindows()
def test_net(visualise, cache_scoremaps, development): logging.basicConfig(level=logging.INFO) cfg = load_config() dataset = create_dataset(cfg) dataset.set_shuffle(False) sm = SpatialModel(cfg) sm.load() draw_multi = PersonDraw() from_cache = "cached_scoremaps" in cfg if not from_cache: sess, inputs, outputs = setup_pose_prediction(cfg) if cache_scoremaps: out_dir = cfg.scoremap_dir if not os.path.exists(out_dir): os.makedirs(out_dir) pairwise_stats = dataset.pairwise_stats num_images = dataset.num_images if not development else min(10, dataset.num_images) coco_results = [] for k in range(num_images): print('processing image {}/{}'.format(k, num_images-1)) batch = dataset.next_batch() cache_name = "{}.mat".format(batch[Batch.data_item].coco_id) if not from_cache: outputs_np = sess.run(outputs, feed_dict={inputs: batch[Batch.inputs]}) scmap, locref, pairwise_diff = extract_cnn_output(outputs_np, cfg, pairwise_stats) if cache_scoremaps: if visualise: img = np.squeeze(batch[Batch.inputs]).astype('uint8') pose = argmax_pose_predict(scmap, locref, cfg.stride) arrows = argmax_arrows_predict(scmap, locref, pairwise_diff, cfg.stride) visualize.show_arrows(cfg, img, pose, arrows) visualize.waitforbuttonpress() continue out_fn = os.path.join(out_dir, cache_name) dict = {'scoremaps': scmap.astype('float32'), 'locreg_pred': locref.astype('float32'), 'pairwise_diff': pairwise_diff.astype('float32')} scipy.io.savemat(out_fn, mdict=dict) continue else: #cache_name = '1.mat' full_fn = os.path.join(cfg.cached_scoremaps, cache_name) mlab = scipy.io.loadmat(full_fn) scmap = mlab["scoremaps"] locref = mlab["locreg_pred"] pairwise_diff = mlab["pairwise_diff"] detections = extract_detections(cfg, scmap, locref, pairwise_diff) unLab, pos_array, unary_array, pwidx_array, pw_array = eval_graph(sm, detections) person_conf_multi = get_person_conf_multicut(sm, unLab, unary_array, pos_array) if visualise: img = np.squeeze(batch[Batch.inputs]).astype('uint8') #visualize.show_heatmaps(cfg, img, scmap, pose) """ # visualize part detections after NMS visim_dets = visualize_detections(cfg, img, detections) plt.imshow(visim_dets) plt.show() visualize.waitforbuttonpress() """ # """ visim_multi = img.copy() draw_multi.draw(visim_multi, dataset, person_conf_multi) plt.imshow(visim_multi) plt.show() visualize.waitforbuttonpress() # """ if cfg.use_gt_segm: coco_img_results = pose_predict_with_gt_segm(scmap, locref, cfg.stride, batch[Batch.data_item].gt_segm, batch[Batch.data_item].coco_id) coco_results += coco_img_results if len(coco_img_results): dataset.visualize_coco(coco_img_results, batch[Batch.data_item].visibilities) if cfg.use_gt_segm: with open('predictions_with_segm.json', 'w') as outfile: json.dump(coco_results, outfile) sess.close()