当前位置: 首页 > news >正文

【公有云部署模型】yolo模型公有云部署

利用huggaingface部署自己的yolo模型,例如下图,方便访问和api调试。在这里插入图片描述

1 构建步骤

1.1创建新的space

访问 https://huggingface.co/spaces
点击"Create new Space"
选择SDK:Gradio (推荐)或Streamlit
选择硬件:CPU(免费)或GPU(付费)

1.2上传文件

在你的space界面中,点击“+Contribute”,单出的对话框中点击“upload files”,如下图所示。在这里插入图片描述
以yolo模型调用为例,你需要上传三个文件,分别是app.py、test.pt和requirements.txt,模型会自己构建环境。模型文件可以用标准的yolo模型,改名即可。

app.py

import gradio as gr
from ultralytics import YOLO
import numpy as np
from PIL import Image# 加载模型
model = YOLO('test.pt')  # 替换为你的模型文件名def detect_bboxes(image):"""只返回边界框坐标的检测函数"""try:# YOLO推理results = model(image)# 提取边界框坐标bboxes = []for r in results:if r.boxes is not None:for box in r.boxes:# 获取坐标 [x1, y1, x2, y2]coords = box.xyxy[0].cpu().numpy().tolist()bbox_info = {"bbox": [round(coord, 2) for coord in coords],  # 四舍五入到2位小数"class_id": int(box.cls.item()),"confidence": round(float(box.conf.item()), 4)}bboxes.append(bbox_info)return {"bboxes": bboxes, "count": len(bboxes)}except Exception as e:return {"error": str(e), "bboxes": [], "count": 0}# 创建Gradio界面
with gr.Blocks(title="YOLO边界框检测") as demo:gr.Markdown("# YOLO目标检测 - 返回坐标框")with gr.Row():with gr.Column():input_image = gr.Image(type="pil", label="上传图片")detect_btn = gr.Button("开始检测", variant="primary")with gr.Column():output_json = gr.JSON(label="检测结果 (坐标框)")detect_btn.click(fn=detect_bboxes,inputs=input_image,outputs=output_json)# 添加示例gr.Examples(examples=[# 如果你有示例图片,可以在这里添加路径# ["example1.jpg"],# ["example2.jpg"],],inputs=input_image,outputs=output_json,fn=detect_bboxes,cache_examples=False)if __name__ == "__main__":demo.launch(mcp_server=True)

requirement.txt

torch
torchvision
ultralytics
opencv-python
gradio
pillow
numpy

2.api调用

代码如下,注意修改为你的space的名字。调用起来会比较慢,因为涉及到了数据上传、模型推理(免费的只能用cpu推理)。

from gradio_client import Client, handle_fileclient = Client("yourname/spacename")
result = client.predict(image=handle_file('https://ultralytics.com/images/zidane.jpg'),api_name="/detect_bboxes"
)
print(result)

结果如下:

Loaded as API: https://hantianshuo-yolo-demo.hf.space ✔
{'bboxes': [{'bbox': [748.51, 41.81, 1148.07, 711.11], 'class_id': 0, 'confidence': 0.8405}, {'bbox': [148.56, 203.08, 1125.28, 714.99], 'class_id': 0, 'confidence': 0.7793}, {'bbox': [361.39, 437.73, 524.66, 717.32], 'class_id': 27, 'confidence': 0.452}], 'count': 3}
http://www.dtcms.com/a/306656.html

相关文章:

  • 用聊天方式聊聊msvcr100.dll丢失的解决方法有哪些?msvcr100.dll是什么
  • 7.pcl滤波(一)
  • Python在Web开发领域的崛起与生态探索:从脚本语言到全栈利器
  • Unity Standard Shader 解析(四)之ForwardAdd(简化版)
  • 机器视觉halcon7-缺陷检测
  • SpringCloud -- MQ高级
  • 关于获取某目录及子目录下所有文件且不包含隐藏文件
  • dify + mcp 实现图片 ocr 识别
  • Apache RocketMQ 的核心概念(Core Concepts)
  • 解决 Node.js 托管 React 静态资源的跨域问题
  • SpringBoot之整合SSM步骤
  • 基因组选择育种-2.3多性状与多组学整合GS-GWAS
  • Python 使用pandas库实现Excel字典码表对照自动化处理
  • 从单体到分布式:解锁架构进化密码
  • MS Access 数据库修复:修复损坏的 MDB 文件的快速指南
  • llama factory本地部署常见问题
  • 大模型的开发应用(二十):AIGC原理
  • 从数据到预测:InfluxDB+Prophet时间序列分析案例实战
  • Promise完全体总结
  • 会吸的簸箕专利拆解:迷你真空组件的吸力控制与吸入口设计原理
  • React 编程式导航
  • 基于 Flask 和 MySQL 的期货数据分析系统
  • 5.Origin2021如何绘制柱状+折线双Y轴图?
  • Gemini CLI 怎么保存会话?两个命令解决 AI 失忆问题
  • 嵌入式开发学习———Linux环境下数据结构学习(五)
  • 一个使用共享内存进行进程间通信的程序,主要功能是创建并读取共享内存中的数据。具体作用如下:
  • 《Flutter篇第二章》MasonryGridView瀑布流列表
  • 机器视觉引导机器人修磨加工系统助力芯片封装
  • 机器人在动态表面上行走的强化学习研究
  • Rust在土木工程中的创新应用