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())
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"
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)
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')
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
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
def predict(image_bytes): tensor = transform_image(image_bytes=image_bytes) bboxes, labels, scores = get_predictions(tensor, model) return bboxes, labels, scores