def METHOD_NAME(models, features, size):
    if isinstance(features, np.ndarray):
        features = torch.from_numpy(features)
    mean_seg = None
    all_seg = []
    all_entropy = []
    seg_mode_ensemble = []
    softmax_f = nn.Softmax(dim=1)
    with torch.no_grad():
        for MODEL_NUMBER in range(len(models)):
            models[MODEL_NUMBER].to(features.device)
            preds = models[MODEL_NUMBER](features)
            entropy = Categorical(logits=preds).entropy()
            all_entropy.append(entropy)
            all_seg.append(preds)
            if mean_seg is None:
                mean_seg = softmax_f(preds)
            else:
                mean_seg += softmax_f(preds)
            img_seg = oht_to_scalar(preds)
            img_seg = img_seg.reshape(*size)
            img_seg = img_seg.cpu().detach()
            seg_mode_ensemble.append(img_seg)
        mean_seg = mean_seg / len(all_seg)
        full_entropy = Categorical(mean_seg).entropy()
        js = full_entropy - torch.mean(torch.stack(all_entropy), 0)
        top_k = js.sort()[0][-int(js.shape[0] / 10):].mean()
        img_seg_final = torch.stack(seg_mode_ensemble, dim=-1)
        img_seg_final = torch.mode(img_seg_final, 2)[0]
    return img_seg_final, top_k