示例#1
0
def val_test(sym, model, ctx, data_shape, global_step):
    results = []
    test_batch_size = 1
    all_layers = sym.get_internals()
    vsym = all_layers['heatmap_output']
    vmodel = mx.mod.Module(symbol=vsym, context=ctx, label_names=None)
    #model.bind(data_shapes=[('data', (args.batch_size, 3, image_size[0], image_size[1]))], label_shapes=[('softmax_label', (args.batch_size,))])
    vmodel.bind(data_shapes=[('data', (test_batch_size, ) + data_shape)])
    arg_params, aux_params = model.get_params()
    vmodel.set_params(arg_params, aux_params)
    for target in config.val_targets:
        _file = os.path.join(config.dataset_path, '%s.rec' % target)
        if not os.path.exists(_file):
            continue
        val_iter = FaceSegIter(
            path_imgrec=_file,
            # batch_size = args.batch_size,
            batch_size=test_batch_size,
            aug_level=0,
            args=args,
        )
        _metric = NMEMetric()
        val_metric = mx.metric.create(_metric)
        val_metric.reset()
        val_iter.reset()
        nme = []
        for i, eval_batch in enumerate(val_iter):
            #print(eval_batch.data[0].shape, eval_batch.label[0].shape)
            batch_data = mx.io.DataBatch(eval_batch.data)
            vmodel.forward(batch_data, is_train=False)
            # vmodel.update_metric(val_metric, eval_batch.label)
            pred_label = vmodel.get_outputs()[-1].asnumpy()
            label = eval_batch.label[0].asnumpy()
            _nme = _metric.cal_nme(label, pred_label)
            nme.append(_nme)
        # nme_value = val_metric.get_name_value()[0][1]
        nme_value = np.mean(nme)
        results.append(nme_value)
        print('[%d][%s]NME: %f' % (global_step[0], target, nme_value))
    return results
示例#2
0
all_layers = sym.get_internals()
sym = all_layers['heatmap_output']
#model = mx.mod.Module(symbol=sym, context=ctx, data_names=['data'], label_names=['softmax_label'])
model = mx.mod.Module(symbol=sym, context=ctx, data_names=['data'], label_names=None)
#model = mx.mod.Module(symbol=sym, context=ctx)
model.bind(for_training=False, data_shapes=[('data', (1, 3, image_size[0], image_size[1]))])
model.set_params(arg_params, aux_params)

val_iter = FaceSegIter(path_imgrec = rec_path,
  batch_size = 1,
  aug_level = 0,
  )
_metric = NMEMetric()
#val_metric = mx.metric.create(_metric)
#val_metric.reset()
#val_iter.reset()
nme = []
for i, eval_batch in enumerate(val_iter):
  if i%10==0:
    print('processing', i)
  #print(eval_batch.data[0].shape, eval_batch.label[0].shape)
  batch_data = mx.io.DataBatch(eval_batch.data)
  model.forward(batch_data, is_train=False)
  #model.update_metric(val_metric, eval_batch.label, True)
  pred_label = model.get_outputs()[-1].asnumpy()
  label = eval_batch.label[0].asnumpy()
  _nme = _metric.cal_nme(label, pred_label)
  nme.append(_nme)
print(np.mean(nme))