예제 #1
0
def recognizeImage():
    gpu_available = torch.cuda.is_available()

    base64string = request.get_json(force=True)['base64']
    image = get_image(base64string)

    if image.shape[1:] != (3, 32, 32):
        return jsonify(error="only RGB image 32x32 accepted",
                       message="failure!")

    model = get_model()

    # breakpoint()

    # get sample outputs
    # breakpoint()
    output_tensor = model(image.cuda())
    output_tensor = Softmax(dim=1)(output_tensor)
    prob_pred_tensor, pred_tensor = torch.max(output_tensor, 1)

    output = np.squeeze(
        output_tensor.detach().numpy()) if not gpu_available else np.squeeze(
            output_tensor.cpu().detach().numpy())

    prob_pred = np.squeeze(prob_pred_tensor.detach().numpy()
                           ) if not gpu_available else np.squeeze(
                               prob_pred_tensor.cpu().detach().numpy())
    pred = np.squeeze(
        pred_tensor.detach().numpy()) if not gpu_available else np.squeeze(
            pred_tensor.cpu().detach().numpy())

    classes = [
        'airplane', 'automobile', 'bird', 'cat', 'deer', 'dog', 'frog',
        'horse', 'ship', 'truck'
    ]

    pred_dict = {
        'predicted_class': str(classes[pred]),
        'prob_predicted_class': str(prob_pred)
    }

    for i, prob in enumerate(output):
        pred_dict[classes[i]] = str(prob)

    return jsonify(prediction=pred_dict, message="success!")
예제 #2
0
def recognizeImage():
    try:
        base64string = request.get_json(force=True)['base64']
    except:
        return jsonify(error="payload does not have base64",
                       message='failure!')

    try:
        image = get_image(base64string)
    except:
        return jsonify(error='improper base64 encoding', message="failure!")

    if image.shape[1:] != (3, 32, 32):
        return jsonify(error="only RGB image 32x32 accepted",
                       message="failure!")

    model = get_model()

    output_tensor = model(image)
    output_tensor = Softmax(dim=1)(output_tensor)
    prob_pred_tensor, pred_tensor = torch.max(output_tensor, 1)

    output = np.squeeze(output_tensor.detach().numpy())

    prob_pred = np.squeeze(prob_pred_tensor.detach().numpy())

    pred = np.squeeze(pred_tensor.detach().numpy())

    classes = [
        'airplane', 'automobile', 'bird', 'cat', 'deer', 'dog', 'frog',
        'horse', 'ship', 'truck'
    ]

    pred_dict = {
        'predicted_class': str(classes[pred]),
        'prob_predicted_class': str(prob_pred)
    }

    for i, prob in enumerate(output):
        pred_dict[classes[i]] = str(prob)

    return jsonify(prediction=pred_dict, message="success!")
예제 #3
0
def recognizeImage(uploadfile,localfile):
    if (localfile and uploadfile) or (not(localfile) and not(uploadfile)):
        return {'error' : 'either upload an image OR give path to local DFS file', 'message' : 'failure!'}

    elif uploadfile and not(localfile):
        imagefile = uploadfile
    
    elif localfile and not(uploadfile):
        imagefile = localfile


    # gpu_available = torch.cuda.is_available()

    image = get_image(imagefile)

    if image.shape[1:] != (3,32,32):
        return {'error' : "only RGB image 32x32 accepted", 'message' : "failure!" }

    model = get_model()

    output_tensor = model(image)
    output_tensor = Softmax(dim=1)(output_tensor)
    prob_pred_tensor, pred_tensor = torch.max(output_tensor, 1)

    output = np.squeeze(output_tensor.detach().numpy()) 

    prob_pred = np.squeeze(prob_pred_tensor.detach().numpy())
    pred = np.squeeze(pred_tensor.detach().numpy())

    classes = ['airplane', 'automobile', 'bird', 'cat', 'deer','dog', 'frog', 'horse', 'ship', 'truck']

    pred_dict = {'predicted_class' : str(classes[pred]),
                 'prob_predicted_class' : str(prob_pred)}

    for i,prob in enumerate(output):
        pred_dict[classes[i]] = str(prob)


    return {'prediction' : pred_dict, 'message' : "success!" }