推理
Ultralytics Platform 提供 Inference API 用于测试已训练的模型。您可以使用基于浏览器的“测试”选项卡进行快速验证,或使用 REST API 进行程序化访问。
测试选项卡
每个模型都包含一个用于基于浏览器的推理的“测试”选项卡:
- 导航到您的模型
- 点击测试选项卡
- 上传图片或使用示例
- 即时查看预测结果
上传图像
拖放或点击上传:
- 支持的格式:JPG、PNG、WebP、GIF
- 最大大小:10MB
- 自动推理:结果自动显示
示例图像
使用内置示例图片进行快速测试:
| 图片 | 内容 |
|---|---|
bus.jpg | 带有车辆的街景 |
zidane.jpg | 带有人物的体育场景 |
查看结果
推理结果显示:
- 边界框(带类别标签)
- 置信度分数(针对每次 detection)
- 类别颜色(与您的数据集匹配)
Inference 参数
使用参数调整 detection 行为:
| 参数 | 范围 | 默认值 | 描述 |
|---|---|---|---|
| 置信度 | 0.0-1.0 | 0.25 | 最小置信度阈值 |
| IoU | 0.0-1.0 | 0.70 | NMS IoU 阈值 |
| 图像大小 | 32-1280 | 640 | 输入尺寸调整维度 |
置信度阈值
按置信度过滤预测结果:
- 更高 (0.5+): 更少、更确定的预测
- 更低 (0.1-0.25): 更多预测,但存在一些噪声
- 默认 (0.25): 适用于大多数用例的平衡设置
IoU 阈值
控制非极大值抑制 (NMS):
- 更高(0.7+):允许更多重叠的框
- 较低(0.3-0.5):更积极地合并邻近检测结果
- 默认 (0.70):适用于大多数使用场景的NMS
REST API
以编程方式访问推理:
身份验证
在请求中包含您的 API 密钥:
Authorization: Bearer YOUR_API_KEY
端点
POST https://platform.ultralytics.com/api/models/{model_slug}/predict
请求
curl -X POST \
"https://platform.ultralytics.com/api/models/username/project/model/predict" \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "file=@image.jpg" \
-F "conf=0.25" \
-F "iou=0.7"
import requests
url = "https://platform.ultralytics.com/api/models/username/project/model/predict"
headers = {"Authorization": "Bearer YOUR_API_KEY"}
files = {"file": open("image.jpg", "rb")}
data = {"conf": 0.25, "iou": 0.7}
response = requests.post(url, headers=headers, files=files, data=data)
print(response.json())
响应
{
"success": true,
"predictions": [
{
"class": "person",
"confidence": 0.92,
"box": {
"x1": 100,
"y1": 50,
"x2": 300,
"y2": 400
}
},
{
"class": "car",
"confidence": 0.87,
"box": {
"x1": 400,
"y1": 200,
"x2": 600,
"y2": 350
}
}
],
"image": {
"width": 1920,
"height": 1080
}
}
响应字段
| 字段 | 类型 | 描述 |
|---|---|---|
success | 布尔值 | 请求状态 |
predictions | 数组 | detect 列表 |
predictions[].class | 字符串 | 类别名称 |
predictions[].confidence | 浮点数 | detect 置信度 (0-1) |
predictions[].box | 对象 | 边界框坐标 |
image | 对象 | 原始图像尺寸 |
特定任务响应
响应格式因任务而异:
{
"class": "person",
"confidence": 0.92,
"box": {"x1": 100, "y1": 50, "x2": 300, "y2": 400}
}
{
"class": "person",
"confidence": 0.92,
"box": {"x1": 100, "y1": 50, "x2": 300, "y2": 400},
"segments": [[100, 50], [150, 60], ...]
}
{
"class": "person",
"confidence": 0.92,
"box": {"x1": 100, "y1": 50, "x2": 300, "y2": 400},
"keypoints": [
{"x": 200, "y": 75, "conf": 0.95},
...
]
}
{
"predictions": [
{"class": "cat", "confidence": 0.95},
{"class": "dog", "confidence": 0.03}
]
}
速率限制
共享推理存在速率限制:
| 计划 | 请求数/分钟 | 请求数/天 |
|---|---|---|
| 免费版 | 10 | 100 |
| Pro | 60 | 10,000 |
如需更高的限制,请部署专用端点。
错误处理
常见错误响应:
| 代码 | 消息 | 解决方案 |
|---|---|---|
| 400 | 无效图像 | 检查文件格式 |
| 401 | 未经授权 | 验证 API 密钥 |
| 404 | 未找到模型 | 检查模型标识符 |
| 429 | 请求频率受限 | 请等待或升级套餐 |
| 500 | 服务器错误 | 重试请求 |
常见问题
我可以在视频上运行 Inference 吗?
API 接受单个帧。对于视频:
- 在本地提取帧
- 将每个帧发送到 API
- 聚合结果
对于实时视频,请考虑部署专用端点。
如何获取标注图像?
该 API 返回 JSON 预测。要进行可视化:
- 使用预测结果在本地绘制边界框
- 使用 Ultralytics
plot()方法:
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
results = model("image.jpg")
results[0].save("annotated.jpg")
最大图像尺寸是多少?
- 上传限制:10MB
- Recommended: <5MB for fast inference
- 自动调整大小:图像被调整为
imgsz参数
大图像会自动调整大小,同时保持宽高比。
我可以运行批量 Inference 吗?
当前 API 每个请求处理一张图像。对于批量处理:
- 发送并发请求
- 使用专用端点以获得更高吞吐量
- 对于大批量数据,请考虑本地推理
📅 创建于 20 天前 ✏️ 更新于 14 天前