Ejemplo n.º 1
0
            print(
                "         x=%.4f y=%.4f z=%.4f l=%.4f h=%.4f w=%.4f y=%.4f" %
                (results['loc_loss_cls_%d_box_%d' % (class_idx, 0)],
                 results['loc_loss_cls_%d_box_%d' %
                         (class_idx, 1)], results['loc_loss_cls_%d_box_%d' %
                                                  (class_idx, 2)],
                 results['loc_loss_cls_%d_box_%d' %
                         (class_idx, 3)], results['loc_loss_cls_%d_box_%d' %
                                                  (class_idx, 4)],
                 results['loc_loss_cls_%d_box_%d' %
                         (class_idx, 5)], results['loc_loss_cls_%d_box_%d' %
                                                  (class_idx, 6)]), )

        # add summaries ====================================================
        for key in metrics_update_ops:
            write_summary_scale(key, results[key], results['step'],
                                train_config['train_dir'])
        write_summary_scale('learning rate', results['learning_rate'],
                            results['step'], train_config['train_dir'])
        # save checkpoint ==================================================
        if (epoch_idx + 1) % train_config['save_every_epoch'] == 0:
            checkpoint_path = os.path.join(train_config['train_dir'],
                                           train_config['checkpoint_path'])
            config_path = os.path.join(train_config['train_dir'],
                                       train_config['config_path'])
            train_config_path = os.path.join(train_config['train_dir'],
                                             'train_config')
            print('save checkpoint at step %d to %s' %
                  (epoch_idx, checkpoint_path))
            saver.save(sess,
                       checkpoint_path,
                       latest_filename='checkpoint',
Ejemplo n.º 2
0
def eval_once(graph, gpu_options, saver, checkpoint_path):
    """Evaluate the model once. """
    with tf.Session(graph=graph,
                    config=tf.ConfigProto(gpu_options=gpu_options)) as sess:
        sess.run(tf.variables_initializer(tf.global_variables()))
        sess.run(tf.variables_initializer(tf.local_variables()))
        print('Restore from checkpoint %s' % checkpoint_path)
        saver.restore(sess, checkpoint_path)
        previous_step = sess.run(global_step)
        print('Global step = %d' % previous_step)
        start_time = time.time()
        print("NUM_TEST_SAMPLE", NUM_TEST_SAMPLE)
        for frame_idx in range(NUM_TEST_SAMPLE):
            (input_v, vertex_coord_list, keypoint_indices_list, edges_list,
            cls_labels, encoded_boxes, valid_boxes)\
                = data_provider.provide(frame_idx)
            feed_dict = {
                t_initial_vertex_features: input_v,
                t_class_labels: cls_labels,
                t_encoded_gt_boxes: encoded_boxes,
                t_valid_gt_boxes: valid_boxes,
                t_is_training: config['eval_is_training'],
            }
            feed_dict.update(dict(zip(t_edges_list, edges_list)))
            feed_dict.update(
                dict(zip(t_keypoint_indices_list, keypoint_indices_list)))
            feed_dict.update(dict(zip(t_vertex_coord_list, vertex_coord_list)))
            results = sess.run(fetches, feed_dict=feed_dict)

            if NUM_TEST_SAMPLE >= 10:
                if (frame_idx + 1) % (NUM_TEST_SAMPLE // 10) == 0:
                    print('@frame %d' % frame_idx)
                    print('cls:%f, loc:%f, reg:%f, loss: %f' %
                          (results['cls_loss'], results['loc_loss'],
                           results['reg_loss'], results['total_loss']))
                    for class_idx in range(NUM_CLASSES):
                        print('Class_%d: recall=%f, prec=%f, mAP=%f, loc=%f' %
                              (class_idx, results['recall_%d' % class_idx],
                               results['precision_%d' % class_idx],
                               results['mAP_%d' % class_idx],
                               results['loc_loss_cls_%d' % class_idx]))
                        print('         '+\
                            'x=%.4f y=%.4f z=%.4f l=%.4f h=%.4f w=%.4f y=%.4f'
                            %(
                            results['loc_loss_cls_%d_box_%d'%(class_idx, 0)],
                            results['loc_loss_cls_%d_box_%d'%(class_idx, 1)],
                            results['loc_loss_cls_%d_box_%d'%(class_idx, 2)],
                            results['loc_loss_cls_%d_box_%d'%(class_idx, 3)],
                            results['loc_loss_cls_%d_box_%d'%(class_idx, 4)],
                            results['loc_loss_cls_%d_box_%d'%(class_idx, 5)],
                            results['loc_loss_cls_%d_box_%d'%(class_idx, 6)]),
                            )
        print('STEP: %d, time cost: %f' %
              (results['step'], time.time() - start_time))
        print('cls:%f, loc:%f, reg:%f, loss: %f' %
              (results['cls_loss'], results['loc_loss'], results['reg_loss'],
               results['total_loss']))
        for class_idx in range(NUM_CLASSES):
            print('Class_%d: recall=%f, prec=%f, mAP=%f, loc=%f' %
                  (class_idx, results['recall_%d' % class_idx],
                   results['precision_%d' % class_idx],
                   results['mAP_%d' % class_idx],
                   results['loc_loss_cls_%d' % class_idx]))
            print(
                "         x=%.4f y=%.4f z=%.4f l=%.4f h=%.4f w=%.4f y=%.4f" %
                (results['loc_loss_cls_%d_box_%d' % (class_idx, 0)],
                 results['loc_loss_cls_%d_box_%d' %
                         (class_idx, 1)], results['loc_loss_cls_%d_box_%d' %
                                                  (class_idx, 2)],
                 results['loc_loss_cls_%d_box_%d' %
                         (class_idx, 3)], results['loc_loss_cls_%d_box_%d' %
                                                  (class_idx, 4)],
                 results['loc_loss_cls_%d_box_%d' %
                         (class_idx, 5)], results['loc_loss_cls_%d_box_%d' %
                                                  (class_idx, 6)]), )
        # add summaries ====================================================
        for key in metrics_update_ops:
            write_summary_scale(key, results[key], results['step'],
                                eval_config['eval_dir'])
        return results['step']