推理
Ultralytics 提供用于测试训练模型的推理API。您可通过基于浏览器的"测试"选项卡进行快速验证,或REST API 程序化访问。
测试选项卡
每个模型都包含一个用于基于浏览器的推理的测试选项卡:
- 导航至您的模型
- 点击测试选项卡
- 上传图片或使用示例
- 即时查看预测
上传图片
拖放或点击上传:
- 支持的格式:JPG、PNG、WebP、GIF
- 最大尺寸:10MB
- 自动推理:结果自动显示
示例图片
使用内置示例图像进行快速测试:
| 图像 | 内容 |
|---|---|
bus.jpg | 街道上车辆穿梭的场景 |
zidane.jpg | 运动场景中的人们 |
查看结果
推理结果显示:
- 带类标签的边界框
- 每次检测的置信度评分
- 与您的数据集相匹配的班级颜色
推断参数
通过参数调整检测行为:
| 参数 | 范围 | 默认值 | 描述 |
|---|---|---|---|
| 自信 | 0.0-1.0 | 0.25 | 最低置信阈值 |
| IoU | 0.0-1.0 | 0.45 | NMS IoU |
| 图像大小 | 32-1280 | 640 | 输入尺寸调整参数 |
置信阈值
按置信度过滤预测结果:
- 更高(0.5+):更少、更确定的预测
- 较低(0.1-0.25):更多预测,存在部分噪声
- 默认值 (0.25):适用于大多数使用场景的平衡设置
IoU
控制非最大抑制:
- 更高(0.7+):允许重叠框
- 较低(0.3-0.45):合并邻近检测结果
- 默认值 (0.45):标准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.45"
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.45}
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 | 数组 | 检测列表 |
predictions[].class | 字符串 | 类名 |
predictions[].confidence | 浮点数 | 检测置信度(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 | 服务器错误 | 重试请求 |
常见问题
我能对视频进行推理吗?
该API接受单帧数据。对于视频:
- 在本地提取帧
- 将每个帧发送至API
- 汇总结果
对于实时视频,请考虑部署专用终端节点。
如何获取标注后的图像?
该API返回JSON预测结果。可通过以下方式可视化:
- 使用预测结果在本地绘制框
- 使用Ultralytics
plot()方法:
from ultralytics import YOLO
model = YOLO("yolo11n.pt")
results = model("image.jpg")
results[0].save("annotated.jpg")
最大图像尺寸是多少?
- 上传限制:10MB
- Recommended: <5MB for fast inference
- 自动调整大小: 图片被调整为
imgsz参数
大尺寸图片会自动调整大小,同时保持宽高比不变。
我能运行批量推理吗?
当前API每次请求处理一张图像。批量处理时:
- 发送并发请求
- 使用专用端点以获得更高吞吐量
- 考虑针对大批量的本地推理
📅 0 天前创建 ✏️ 0 天前更新