import base64
import io
import json
import os
from django.core import serializers
from torchvision import models
from torchvision import transforms
import numpy as np
import logging
import datetime
from django.http import JsonResponse
from io import BytesIO
from PIL import Image,ImageEnhance
# Create your views here.
logger = logging.getLogger(__name__)
model = models.densenet121(pretrained=True)
model.eval()
json_path = os.path.join('.\static/', "imagenet_class_index.json")
imagenet_mapping = json.load(open(json_path))
def transform_image(image_bytes):
"""
Transform image into required DenseNet format: 224x224 with 3 RGB channels and normalized.
Return the corresponding tensor.
"""
my_transforms = transforms.Compose([transforms.Resize(255),
transforms.CenterCrop(224),
transforms.ToTensor(),
transforms.Normalize(
[0.485, 0.456, 0.406],
[0.229, 0.224, 0.225])])
image = Image.open(io.BytesIO(image_bytes))
return my_transforms(image).unsqueeze(0)
def get_prediction(image_bytes):
"""For given image bytes, predict the label using the pretrained DenseNet"""
tensor = transform_image(image_bytes)
outputs = model.forward(tensor)
_, y_hat = outputs.max(1)
predicted_idx = str(y_hat.item())
class_name, human_label = imagenet_mapping[predicted_idx]
return human_label
def index(request):
image_uri = None
predicted_label = None
Temp_Msg = None
if request.method == 'POST':
Temp_Msg = 'true'
image_bytes = request.body # 二进制图像数据
img = Image.open(BytesIO(image_bytes))
buf = BytesIO()
img.save(buf, 'JPEG')
buf.seek(0)
img_data = buf.read()
buf.close()
try:
# image_data = transform_image_M(img_data)
predicted_label = get_prediction(img_data)
except RuntimeError as re:
print(re)
# predicted_label = "Prediction Error"
else:
Temp_Msg = 'false'
# form = ImageUploadForm()
print(predicted_label)
context = {
'success': Temp_Msg,
# 'image_uri': image_uri,
'data': predicted_label,
}
return JsonResponse(context)
# return render(request,"Index.html", context)
没有合适的资源?快使用搜索试试~ 我知道了~
Django 基于densenet121的简单目标检测

共3个文件
vue:1个
py:1个
json:1个

0 下载量 199 浏览量
2023-09-27
11:21:47
上传
评论
收藏 16KB ZIP 举报
温馨提示
开发过程中使用Vue 3、TypeScript、Element Plus和Axios,确保已经安装了相关环境,此处只演示整个流程与最终结果,对安装细节不做讲解。 利用Vue3+TypeScript搭建前端图像上传模块,后端利用Django框架接收相关图像数据,加载相关的目标检测模型,将识别的后的目标信息回传给前端页面。
资源推荐
资源详情
资源评论
























收起资源包目录






共 3 条
- 1
资源评论


爱神的箭呵呵
- 粉丝: 1072
- 资源: 25
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


安全验证
文档复制为VIP权益,开通VIP直接复制
