vscode通过使用 Python Django 来搭建后端接口,将训练好的模型加载进来,当用户上传一张水果照片时,调用接口,根据图像识别出水果种类,返回识别出的水果类型和信度值给前端具体代码实现
时间: 2024-06-09 18:11:51 浏览: 88
vscode开发工具。
首先,你需要在Django项目中创建一个API视图,接收用户上传的水果照片,并返回识别结果。下面是一个简单的示例代码:
``` python
import io
import json
import numpy as np
from PIL import Image
from django.http import JsonResponse
from django.views.decorators.csrf import csrf_exempt
from torchvision import models
import torchvision.transforms as transforms
# 加载训练好的模型
model = models.resnet18(pretrained=True)
model.eval()
# 定义图像预处理方法
preprocess = transforms.Compose([
transforms.Resize(256),
transforms.CenterCrop(224),
transforms.ToTensor(),
transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
])
# 定义API视图
@csrf_exempt
def classify_fruit(request):
if request.method == 'POST' and request.FILES['image']:
# 读取上传的图像
image = request.FILES['image'].read()
image = Image.open(io.BytesIO(image))
# 预处理图像
image_tensor = preprocess(image)
image_tensor = image_tensor.unsqueeze(0)
# 使用模型进行预测
output = model(image_tensor)
probabilities = np.exp(output.detach().numpy()[0])
index = np.argmax(probabilities)
label = str(index)
# 返回结果
response = {
'label': label,
'probability': str(probabilities[index])
}
return JsonResponse(response)
return JsonResponse({'error': 'Invalid request'})
```
在这个示例中,我们使用了PyTorch的resnet18模型进行图像识别,并使用了Django的JsonResponse来返回结果。要使用这个API视图,你需要将它添加到Django项目的urls.py文件中:
``` python
from django.urls import path
from .views import classify_fruit
urlpatterns = [
path('api/classify_fruit/', classify_fruit, name='classify_fruit'),
]
```
现在你可以使用这个API视图来处理用户上传的水果照片,并返回识别结果了。你可以使用类似于以下代码的方式来调用这个API:
``` python
import requests
url = 'http://localhost:8000/api/classify_fruit/'
files = {'image': open('fruit.jpg', 'rb')}
response = requests.post(url, files=files)
print(response.json())
```
在这个示例中,我们将本地的fruit.jpg文件作为图像上传到API,然后打印出API的返回结果。
阅读全文