我是深度学习和烧瓶部署的新手,我正在尝试使用烧瓶部署 pytorch 模型(resnet34)。当我尝试上传图像以检查预测时,它没有显示任何预测。它没有在我的代码中显示任何错误。
我上传图片的 HTML 页面。
<form method ='post' enctype=multipart/form-data>
<input type="file" name="file" >
<input type="submit" value="upload">
我想查看预测的 html 页面。
<body>
<h2>Prediction</h2>
<p>Currency Name: {{ currency }}</p>
</body>
烧瓶的App.py
from flask import Flask, request, render_template, jsonify
from commons import get_tensor
from inference import get_currency_name
app = Flask(__name__)
@app.route('/', methods=['GET', 'POST'])
def hello_world():
if request.method == 'GET':
return render_template('index.html', value='hi')
if request.method == 'POST':
try:
file = request.files['file']
image = file.read()
print(request.files)
if 'file' not in request.files:
print('file not uploaded')
return
file = request.files['file']
image = file.read()
currency_name = get_currency_name(image_bytes=image)
category, currency_name = get_currency_name(image_bytes=image)
get_currency_name(image_bytes=image)
tensor = get_tensor(image_bytes=image)
print(get_tensor(image_bytes=image))
print(currency_name)
return render_template('result.html', currency=currency_name, category=category)
#return jsonify({'category': category, 'currency_name': currency_name})
except:
return render_template('result.html')
if __name__ == '__main__':
app.run(debug=True)
commons.py 代码
import io
import torch
import torch.nn as nn
from torchvision import models, transforms
from PIL import Image
def get_model():
checkpoint_path = 'checkpoint.pth'
model = models.resnet34(pretrained=True)
model.classifier = nn.Sequential(nn.Linear(512, 6))
model.load_state_dict(torch.load(
checkpoint_path, map_location='cpu'), strict=False)
model.eval()
print("model loaded!!")
return model
def get_tensor(image_bytes):
my_transforms = transforms.Compose([transforms.Resize(224),
transforms.ToTensor(),
transforms.Normalize(mean=[0.5, 0.5, 0.5],
std=[0.5, 0.5, 0.5])
])
image = Image.open(io.BytesIO(image_bytes))
return my_transforms(image).unsqueeze(0)
inference.py 的代码
import torch
from commons import get_model, get_tensor
class_names = ['Rs. 20', 'Rs. 100', 'Rs. 500', 'Rs. 10', 'fake 100', 'Fake 500']
model = get_model()
def get_currency_name(image_bytes):
tensor = get_tensor(image_bytes)
outputs = model(tensor)
_, preds = outputs.max(2)
category = preds.item()
currency_name = class_names[category]
return currency_name
当我选择一张图片并提交时,它不会向 result.html 返回任何结果,也不会显示任何错误。 可能出了什么问题??