【发布时间】:2020-08-16 17:23:30
【问题描述】:
这里是新手。我按照在线指南成功部署了一个带有 Django API 的 Keras 模型。我想创建一个连接到 Django API 的 HTML 文件,我可以在其中将图像加载到模型中进行处理,然后发回预测。
以下是 API 的代码。我需要有人指导我。
import datetime
import pickle
import json
from django.shortcuts import render
from django.http import HttpResponse
from rest_framework.decorators import api_view
from api.settings import BASE_DIR
from custom_code import image_converter
@api_view(['GET'])
def __index__function(request):
start_time = datetime.datetime.now()
elapsed_time = datetime.datetime.now() - start_time
elapsed_time_ms = (elapsed_time.days * 86400000) + (elapsed_time.seconds * 1000) + (elapsed_time.microseconds / 1000)
return_data = {
"error" : "0",
"message" : "Successful",
"restime" : elapsed_time_ms
}
return HttpResponse(json.dumps(return_data), content_type='application/json; charset=utf-8')
@api_view(['POST','GET'])
def predict_plant_disease(request):
try:
if request.method == "GET" :
return_data = {
"error" : "0",
"message" : "Plant Assessment System"
}
else:
if request.body:
request_data = request.data["plant_image"]
header, image_data = request_data.split(';base64,')
image_array, err_msg = image_converter.convert_image(image_data)
if err_msg == None :
model_file = f"{BASE_DIR}/ml_files/cnn_model.pkl"
saved_classifier_model = pickle.load(open(model_file,'rb'))
prediction = saved_classifier_model.predict(image_array)
label_binarizer = pickle.load(open(f"{BASE_DIR}/ml_files/label_transform.pkl",'rb'))
return_data = {
"error" : "0",
"data" : f"{label_binarizer.inverse_transform(prediction)[0]}"
}
else :
return_data = {
"error" : "4",
"message" : f"Error : {err_msg}"
}
else :
return_data = {
"error" : "1",
"message" : "Request Body is empty",
}
except Exception as e:
return_data = {
"error" : "3",
"message" : f"Error : {str(e)}",
}
return HttpResponse(json.dumps(return_data), content_type='application/json; charset=utf-8')
【问题讨论】:
标签: python html django api keras