#python #tensorflow #flask
Вопрос:
Я сделал CNN и хочу использовать фреймворк Flask для создания веб-приложения для прогнозирования изображений. Я понял ошибку из названия. Мой CNN работает на локальном уровне, когда я очень хорошо использую обучающие изображения и тестовые изображения для прогнозирования, 97,8% на процессоре и более 95% на GPU.
Это мой код для колбы:
def cnnFlask(trainImages, trainLabels):
os.environ["CUDA_VISIBLE_DEVICES"] = "-1"
tensorflow.random.set_seed(1)
trainImages = np.array(trainImages)
trainLabels = np.array(trainLabels)
trainImages = trainImages / 255
model = Sequential()
model.add(Conv2D(filters = 32, kernel_size = (3, 3), padding = 'same', activation = 'relu', input_shape = (224, 224, 3)))
model.add(MaxPool2D(pool_size = (2, 2), strides = (2, 2)))
model.add(Conv2D(filters = 64, kernel_size = (3, 3), padding = 'same', activation = 'relu'))
model.add(MaxPool2D(pool_size = (2, 2), strides = (2, 2)))
model.add(Conv2D(filters = 128, kernel_size = (3, 3), padding = 'same', activation = 'relu'))
model.add(MaxPool2D(pool_size = (2, 2), strides = (2, 2)))
model.add(Flatten())
model.add(Dense(units = 256, activation = 'relu'))
model.add(Dense(units = 9, activation = 'softmax'))
opt = Adam(learning_rate = 0.001)
model.compile(optimizer = opt, loss = 'sparse_categorical_crossentropy', metrics = ['accuracy'])
model.fit(trainImages, trainLabels, epochs = 15, batch_size = 64)
model.save("myModel.h5")
app = Flask(__name__)
model = load_model('C:/Users/razva/OneDrive/Desktop/Vehicle Color Recognition/myModel.h5')
model.make_predict_function()
print('Model loaded. Check http://127.0.0.1:5000/')
def predictModel(imagePath, model):
image = Image.open(imagePath)
image = image.resize((224, 224))
image = np.array(image)
image = image.reshape(-1, 224, 224, 3)
image = image / 255
pred = model.predict(image)
return pred
@app.route('/', methods=['GET'])
def index():
# Main page
return render_template('index.html')
@app.route('/predict', methods=['GET', 'POST'])
def upload():
if request.method == 'POST':
# Get the file from post request
f = request.files['file']
# Save the file to ./uploads
basepath = os.path.dirname(__file__)
file_path = os.path.join(
basepath, 'uploads', secure_filename(f.filename))
f.save(file_path)
preds = predictModel(file_path, model)
result = np.argmax(preds, axis = -1)
return str(result)
return None
Итак, что здесь не так? Я попытался провести небольшой тест в терминале, не используя колбу, и это сработало, мой прогноз CNN был правильным