예제 #1
0
def get_prediction(model, image_bytes):
    try:
        tensor = transform_image(image_bytes=image_bytes)
        pred = model.forward(tensor)
    except Exception:
        return 0, "error"
    return str(torch.argmax(pred.unsqueeze(0), dim=1).item())
예제 #2
0
def basic_iterative(model_inp,
                    image_bytes,
                    alpha,
                    epsilon,
                    num_iter,
                    device=torch.device('cpu')):
    model = get_model(model_inp)
    tensor = transform_image(image_bytes=image_bytes)
    #outputs = model.forward(tensor)
    original_output, perturbed_output, perturbed_image = GAE.basic_iterative(
        model, tensor, alpha, epsilon, num_iter, device)
    cpudev = torch.device('cpu')
    original_output, perturbed_output = original_output.to(
        cpudev), perturbed_output.to(cpudev)
    perturbed_image, tensor = perturbed_image.to(cpudev), tensor.to(cpudev)
    per_tensor = perturbed_image - tensor
    or_percentage = torch.nn.functional.softmax(original_output,
                                                dim=1)[0] * 100
    _, or_indices = torch.sort(original_output, descending=True)
    per_percentage = torch.nn.functional.softmax(perturbed_output,
                                                 dim=1)[0] * 100
    _, per_indices = torch.sort(perturbed_output, descending=True)
    top5_original = [(imagenet_class_index[str(idx.item())][1],
                      or_percentage[idx.item()].item())
                     for idx in or_indices[0][:5]]
    top5_perturbed = [(imagenet_class_index[str(idx.item())][1],
                       per_percentage[idx.item()].item())
                      for idx in per_indices[0][:5]]
    perturbed_image = rev_transform(perturbed_image[0])
    original_image = rev_transform(tensor[0])
    perturbation = rev_transform(per_tensor[0])
    del model
    return dict(top5_original), dict(
        top5_perturbed), perturbed_image, original_image, perturbation
def get_prediction(image_bytes):
    try:
        tensor = transform_image(image_bytes=image_bytes)
        outputs = generate_caption(model, tensor)
    except Exception as err:
        print(str(err))
        return 0, 'error'
    return outputs
def get_prediction(image_bytes):
    try:
        tensor = transform_image(image_bytes=image_bytes)
        outputs = model.forward(tensor)
    except Exception:
        return 0, 'error'
    _, y_hat = outputs.max(1)
    predicted_idx = str(y_hat.item())
    return imagenet_class_index[predicted_idx]
def get_prediction(image_bytes):
    try:
        tensor = transform_image(image_bytes=image_bytes)
        outputs = model.forward(tensor)
    except Exception:
        return 0, 'error'
    _, y_hat = outputs.max(1)
    if str(y_hat.item()) == '1':
        return "Malignant"
    return "Benign"
예제 #6
0
def get_prediction(image_bytes):
    transform_image(image_bytes=image_bytes)
    #try:
    tensor = transform_image(image_bytes=image_bytes)
    model.eval()
    with torch.no_grad():
        output = model.forward(tensor)
    #_, predicted = torch.max(output.data, 1)
    probability = F.softmax(output.data, dim=1)
    prob, clas = probability.topk(1)
    #outputs = model.forward(tensor)
    #print(prob,clas)

    #except Exception:
    #    return 0, 'error'
    #_, y_hat = outputs.max(1)
    #predicted_idx = str(y_hat.item())
    #print(clas)
    return class_dict[clas[0][0].tolist()], round(prob[0][0].tolist(), 3)
예제 #7
0
def get_prediction(image_bytes):
    try:
        tensor = transform_image(image_bytes=image_bytes)
        output = model(tensor)
    except Exception:
        return 0, 'error'
    ps = torch.exp(output)
    top_p, top_class = ps.topk(1, dim=1)
    result = top_class.item()
    top_p = round(top_p.item(),3)
    return classes[result], top_p
def get_prediction(file):
    #try:
    input = transform_image(file)
    outputs = model(input)
    for element in outputs:
        index = element.data.numpy().argmax()
        #pred=imagenet_class_index[str(index)][1]
    print(index)
    if index % 2 == 0:
        return "normal"
    else:
        return "abnormal"
def upload_file():
    if request.method == 'POST':
        if 'file' not in request.files:
            return redirect(request.url)
        file = request.files.get('file')
        if not file:
            return
        img_bytes = file.read()
        file_tensor = transform_image(image_bytes=img_bytes)  #######
        class_name = get_prediction(file_tensor)
        return render_template('result.html', class_name=class_name)
    return render_template('index.html')
예제 #10
0
def upload_file():
    if request.method == 'POST':
        if 'file' not in request.files:
            return redirect(request.url)
        file = request.files.get('file')
        if not file:
            return
        img_bytes = file.read()
        file_tensor = transform_image(image_bytes=img_bytes)  ########
        #file_share_ptr = secret_share(file_tensor,workers,hospital)  # patient generates secret shares of the data and sends one share to the global agent.
        class_name = get_prediction(file_tensor)
        return render_template('result.html', class_name=class_name)
    return render_template('index.html')
def get_detection(image_bytes):
    try:
        tensor = transform_image(image_bytes=image_bytes)
        outputs = detection_model.forward(tensor)
    except Exception:
        return 0, 'error'
    image = tensor.squeeze(0).mul(255).permute(1, 2, 0).byte().numpy()
    x1, y1, x2, y2 = int(outputs[0]['boxes'][:, 0]), int(
        outputs[0]['boxes'][:, 1]), int(outputs[0]['boxes'][:, 2]), int(
            outputs[0]['boxes'][:, 3])
    cv2.rectangle(image, (x1, y1), (x2, y2), (0, 255, 0), 1)
    Image.fromarray(image).show()  # 用PIL显示图像
    return a
예제 #12
0
def lbfgs(model_inp,
          image_bytes,
          target,
          c,
          bin_search_steps,
          max_iter,
          const_upper,
          device=torch.device('cpu')):
    model = get_model(model_inp)
    tensor = transform_image(image_bytes=image_bytes)
    #outputs = model.forward(tensor)
    target = torch.tensor([target], dtype=torch.long)
    original_output, perturbed_output, perturbed_image = GAE.lbfgs(
        model, tensor, target, c, bin_search_steps, max_iter, const_upper,
        device)
    cpudev = torch.device('cpu')
    original_output, perturbed_output = original_output.to(
        cpudev), perturbed_output.to(cpudev)
    perturbed_image, tensor = perturbed_image.to(cpudev), tensor.to(cpudev)
    per_tensor = perturbed_image - tensor
    or_percentage = torch.nn.functional.softmax(original_output,
                                                dim=1)[0] * 100
    _, or_indices = torch.sort(original_output, descending=True)
    per_percentage = torch.nn.functional.softmax(perturbed_output,
                                                 dim=1)[0] * 100
    _, per_indices = torch.sort(perturbed_output, descending=True)
    top5_original = [(imagenet_class_index[str(idx.item())][1],
                      or_percentage[idx.item()].item())
                     for idx in or_indices[0][:5]]
    top5_perturbed = [(imagenet_class_index[str(idx.item())][1],
                       per_percentage[idx.item()].item())
                      for idx in per_indices[0][:5]]
    perturbed_image = rev_transform(perturbed_image[0])
    original_image = rev_transform(tensor[0])
    perturbation = rev_transform(per_tensor[0])
    del model
    return dict(top5_original), dict(
        top5_perturbed), perturbed_image, original_image, perturbation
예제 #13
0
def predict(image_bytes):
    tensor = transform_image(image_bytes=image_bytes)
    bboxes, labels, scores = get_predictions(tensor, model)
    return bboxes, labels, scores