Flask API всегда прогнозирует один и тот же класс при вызове из PHP-скриптаPython

Программы на Python
Ответить
Anonymous
 Flask API всегда прогнозирует один и тот же класс при вызове из PHP-скрипта

Сообщение Anonymous »

Я разработал API с использованием Flask для интеграции модели глубокого обучения, обученной на рентгеновских изображениях грудной клетки для выявления пневмонии. Чтобы проверить связь между PHP и API Flask, я успешно использовал модель Fashion MNIST (для классификации одежды), и модель правильно предсказывала классы.
Однако, когда я пытаюсь использовать В моей специально обученной модели обнаружения пневмонии (которая очень хорошо работает во время оценки) я заметил, что модель всегда предсказывает класс «ПНЕВМОНИЯ», даже если изображение относится к классу «НОРМАЛЬНОЕ».
Производительность модели (при тестировании набор):
Потери теста: 11,41 %
Точность теста: 97,10 %
Точность теста: 97,46 %
Отзыв теста: 98,60 %
Тестовая AUC: 98,33 %
Предпринятые шаги:
Обучение: я обучил модель с помощью ResNet50. слоев с дополнительными пользовательскими слоями.
Тестирование: я протестировал модель на тестовом наборе, содержащем НОРМАЛЬНЫЕ изображения и изображения ПНЕВМОНИИ, и она показала хорошие результаты.
Тестирование через Flask API: я пробовал отправлять изображения через PHP в Flask API, но модель всегда предсказывает «ПНЕВМОНИЯ».
Код Flask API:

Код: Выделить всё

from flask import Flask, request, jsonify
from tensorflow import keras
import numpy as np
from PIL import Image

app = Flask(__name__)

# Load the model
model = keras.models.load_model('path_to_your_model')

# Class names
class_names = ['NORMAL', 'PNEUMONIA']

@app.route('/predict', methods=['POST'])
def predict():
if 'image' not in request.files:
return jsonify({'error': 'No image file provided'}), 400

image = request.files['image']

try:
# Convert the image to RGB and resize it
img = Image.open(image).convert('RGB')
img = img.resize((224, 224))

# Convert the image to an array and expand dimensions to match model input
img_array = np.array(img) / 255.0
img_array = np.expand_dims(img_array, axis=0)  # Add batch dimension

# Make prediction
prediction = model.predict(img_array)

# Get the predicted class
predicted_class = class_names[int(prediction[0] > 0.5)]

return jsonify({
'prediction': predicted_class,
'probability': float(prediction[0])
})
except Exception as e:
return jsonify({'error': f"An error occurred: {str(e)}"}), 500

if __name__ == '__main__':
app.run(debug=True)

PHP-код для отправки изображения в API Flask: Проблема: несмотря на то, что модель работает хорошо при локальном тестировании с хорошими показателями производительности на изображениях НОРМАЛЬНОЙ и ПНЕВМОНИИ, когда я тестирую ее через Flask API (через PHP), модель всегда прогнозирует «ПНЕВМОНИЯ». ", даже если изображение относится к классу "НОРМАЛЬНЫЙ".
Есть ли какие-либо проблемы со способом отправки изображения или с тем, как API Flask его обрабатывает?

Подробнее здесь: https://stackoverflow.com/questions/792 ... php-script
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»