Flask猫狗分类ML Web应用报错:无法同时展示图片与预测结果
排查方向与常见问题
以下是针对你遇到的内部服务器错误的核心排查点,按出现概率排序:
1. 模型加载异常
- 检查
app_ml.py中模型文件的路径是否正确,相对路径容易因运行环境导致找不到文件,建议改用绝对路径:from pathlib import Path model_file = Path(__file__).parent / "cat_dog_model.h5" model = load_model(model_file) - 单独在Python环境中测试模型加载与预测,确认模型文件未损坏、能正常输出结果。
2. 图片预处理不匹配
训练模型时的预处理逻辑必须和预测时完全一致,否则会触发模型输入维度/格式错误:
- 确保预测时图片resize的尺寸和训练时一致(比如
target_size=(150,150)) - 同步归一化操作(训练时如果做了
img /=255.0,预测时必须同样处理) - 不要遗漏扩展维度的步骤,模型需要批量输入:
img_array = np.expand_dims(img_array, axis=0)
3. 路由变量传递错误
- 确认
app_ml.py的结果路由中,已将预测结果正确传入模板,比如:pred_result = "猫" if model.predict(img_array)[0][0] < 0.5 else "狗" return render_template("result.html", img_name=file.filename, prediction=pred_result) - 若模板中使用
{{ prediction }}但路由未传递该变量,会直接触发模板渲染错误。
4. 模板语法错误
检查result.html中的变量引用与标签语法:
- 确认
{{ prediction }}等变量的拼写和路由传递的变量名一致 - 检查图片展示的
url_for是否指向正确的视图函数,比如:
需确保<img src="{{ url_for('get_uploaded_img', filename=img_name) }}" alt="上传图片">get_uploaded_img路由已正确定义,能返回上传的图片文件。
5. 文件权限与路径问题
- 确认上传文件夹(
UPLOAD_FOLDER)的权限允许服务器读写,Linux环境下可执行chmod 755 上传文件夹路径 - 检查
app.config['UPLOAD_FOLDER']的路径是否正确,确保上传的图片能被保存和读取
内容的提问来源于stack exchange,提问作者DS Park
相关产品推荐
相关产品推荐

