1 Star 0 Fork 245

脱线/faiss_dog_cat_question_lazypredictor

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
webapp.py 2.68 KB
一键复制 编辑 原始数据 按行查看 历史
脱线 提交于 2024-11-13 04:29 . update
# import gradio as gr
# import joblib # 使用joblib库加载模型
# import cv2
# import numpy as np
# # 加载准确率最高的模型
# with open("SVC_best_model.joblib", "rb") as f: # 替换为保存的模型文件名
# model = joblib.load(f) # 使用joblib加载模型
# def predict(image):
# # 将图片调整到模型需要的输入尺寸
# image = cv2.resize(image, (32, 32)) # 调整图像尺寸
# image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # 将图像转为灰度(如果模型需要灰度输入)
# image = image.flatten().reshape(1, -1) # 展平并调整为模型需要的形状
# prediction = model.predict(image)
# label = "Dog" if prediction[0] == 1 else "Cat"
# return label
# # 使用Gradio构建界面
# iface.launch()
import gradio as gr
import joblib
import numpy as np
from tensorflow.keras.preprocessing import image as keras_image
from tensorflow.keras.applications.vgg16 import VGG16, preprocess_input
# 加载最佳模型
model = joblib.load('SVC_best_model.joblib')
# 加载VGG16模型,用于图像特征提取
vgg_model = VGG16(weights='imagenet', include_top=False, pooling="max")
# 预处理函数:用于将图像转换为VGG16模型需要的格式
def preprocess_image(img):
# 转换为RGB并调整大小以适应VGG16输入
img = img.convert('RGB')
img = img.resize((224, 224)) # VGG16模型要求输入大小为224x224
img_array = np.array(img) # 转换为numpy数组
img_array = np.expand_dims(img_array, axis=0) # 增加batch维度
img_array = preprocess_input(img_array) # 使用VGG16的预处理函数
return img_array
# 预测函数
def predict(image):
# 图像预处理
preprocessed_image = preprocess_image(image)
# 使用VGG16模型提取特征
features = vgg_model.predict(preprocessed_image)
features = features.flatten() # 将提取的特征展平为一维数组
# 使用最佳集成模型进行预测
prediction = model.predict(features.reshape(1, -1)) # 调整形状以匹配模型输入
# 预测结果为猫或狗
label = "Dog" if prediction[0] == 1 else "Cat"
return label
# 创建Gradio界面
iface = gr.Interface(fn=predict,
inputs=gr.Image(type="pil", label="Upload an Image"),
outputs=gr.Textbox(label="Prediction"),
live=True,
title="Cat vs Dog Classifier",
description="Upload an image and the model will predict whether it's a cat or a dog.")
iface = gr.Interface(fn=predict, inputs="image", outputs="text", title="Cat vs Dog Classifier")
# 启动应用
iface.launch()
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/emmm_e_m/faiss_dog_cat_question_lazypredictor.git
git@gitee.com:emmm_e_m/faiss_dog_cat_question_lazypredictor.git
emmm_e_m
faiss_dog_cat_question_lazypredictor
faiss_dog_cat_question_lazypredictor
main

搜索帮助