from django.contrib import admin from management.models import DataSet,DataSetItem from django import forms from django.db import models from django.conf import settings from django.core.management import call_command import threading from django.core.files.storage import FileSystemStorage import zipfile import os from os import listdir from os.path import isfile, join import shutil from django.core.files import File from django.urls import path from django.core.files import File from keras.models import Sequential,load_model from keras.layers import Dense, Dropout, Flatten from keras.layers import Conv2D, MaxPooling2D from keras.layers.normalization import BatchNormalization from PIL import Image from random import shuffle, choice import numpy as np import os from keras.utils import to_categorical import tempfile import uuid import json from django.contrib import messages import logging logger = logging.getLogger(__name__) class KManager: @staticmethod def get_image_size(): return 256 @staticmethod def predict(image_path,datasetid): logger.info("predicting "+image_path+" "+str(datasetid)) dataset=DataSet.objects.get(pk=datasetid) modelpath=dataset.model.path logger.info("model path "+modelpath) model=load_model(modelpath) labels=json.loads(dataset.model_labels) img = Image.open(image_path) img = img.convert('L') img = img.resize((256, 256), Image.ANTIALIAS) result= model.predict(np.array(img).reshape(-1,256,256, 1)) max=result[0] idx=0 for i in range(1,len(result)): if max<result[i]: max=result[i] idx=i logger.info(result[idx]) logger.info(labels[idx]) return labels[idx]