<think>我们已知当前安装的Ultralytics版本是8.3.208。在这个版本中,YOLO模型的使用方式与之前版本相比可能有一些变化。以下是如何查看已安装的Ultralytics版本以及可用的YOLO模型的方法。
### 查看Ultralytics版本
在Python环境中,可以通过以下代码查看已安装的ultralytics版本:
```python
import ultralytics
print(ultralytics.__version__)
```
### 查看可用的YOLO模型
在Ultralytics框架中,预训练的YOLO模型有多种类型(检测、分割、分类、姿态估计)和不同尺寸(n, s, m, l, x)。官方提供的预训练模型名称如下:
- 检测:'yolov8n.pt', 'yolov8s.pt', 'yolov8m.pt', 'yolov8l.pt', 'yolov8x.pt'
- 分割:'yolov8n-seg.pt', 'yolov8s-seg.pt', 'yolov8m-seg.pt', 'yolov8l-seg.pt', 'yolov8x-seg.pt'
- 分类:'yolov8n-cls.pt', 'yolov8s-cls.pt', 'yolov8m-cls.pt', 'yolov8l-cls.pt', 'yolov8x-cls.pt'
- 姿态估计:'yolov8n-pose.pt', 'yolov8s-pose.pt', 'yolov8m-pose.pt', 'yolov8l-pose.pt', 'yolov8x-pose.pt'
另外,Ultralytics还支持从本地文件加载模型,或者从远程仓库(如GitHub或Hugging Face Hub)加载。
但是,请注意,官方并没有提供一个直接的函数来列出所有可用的预训练模型名称(因为模型种类和名称相对固定)。通常,用户直接使用这些已知的模型名称即可。
### 如何查看本地已下载的模型
Ultralytics下载的模型默认存放在用户的缓存目录中,可以通过以下代码查看本地已下载的模型:
```python
from pathlib import Path
def list_downloaded_models():
cache_dir = Path.home() / '.cache' / 'ultralytics'
models = list(cache_dir.glob('**/*.pt'))
return [model.name for model in models]
if __name__ == '__main__':
downloaded_models = list_downloaded_models()
print("本地已下载的模型:")
for model in downloaded_models:
print(model)
```
### 如何获取官方预训练模型列表
虽然不能直接通过代码获取官方所有预训练模型名称(因为官方没有提供这样的API),但是我们可以根据命名规则生成一个列表:
```python
def official_models():
sizes = ['n', 's', 'm', 'l', 'x']
tasks = ['', '-seg', '-cls', '-pose']
models = []
for size in sizes:
for task in tasks:
models.append(f'yolov8{size}{task}.pt')
return models
print("官方预训练模型:")
for model in official_models():
print(model)
```
### 使用建议
- 当使用`YOLO(model_name)`时,如果模型不在本地缓存中,Ultralytics会自动下载该模型。
- 可以通过传递完整的URL或者本地路径来加载自定义模型。
### 注意事项
- 在离线环境中,只能使用已经下载到缓存中的模型。
§§相关问题§§:
1. 如何更改Ultralytics模型下载的缓存目录?
2. 如何在不联网的情况下使用Ultralytics预训练模型?
3. 如何将Ultralytics模型导出为ONNX格式?
4. 如何在使用YOLO模型进行预测时设置置信度阈值?
</think>### 查看 Ultralytics 版本及可用 YOLO 模型的方法
#### 1. 查看已安装的 Ultralytics 版本(已验证为 8.3.208)
```python
# Python 代码查看版本
import ultralytics
print(f"已安装的 Ultralytics 版本: {ultralytics.__version__}")
# 输出: 已安装的 Ultralytics 版本: 8.3.208
```
#### 2. 查看当前可用的 YOLO 模型
在 Ultralytics 8.3.208 中,可用的 YOLO 模型包括:
```python
from ultralytics import YOLO
import glob
import os
def list_available_yolo_models():
"""列出所有可用的 YOLO 模型及本地缓存模型"""
# 官方预训练模型列表
official_models = [
'yolov8n', 'yolov8s', 'yolov8m', 'yolov8l', 'yolov8x',
'yolov8n-seg', 'yolov8s-seg', 'yolov8m-seg', 'yolov8l-seg', 'yolov8x-seg',
'yolov8n-cls', 'yolov8s-cls', 'yolov8m-cls', 'yolov8l-cls', 'yolov8x-cls',
'yolov8n-pose', 'yolov8s-pose', 'yolov8m-pose', 'yolov8l-pose', 'yolov8x-pose',
]
# 获取本地缓存模型
cache_dir = os.path.join(os.path.expanduser('~'), '.cache', 'ultralytics')
local_models = []
if os.path.exists(cache_dir):
pt_files = glob.glob(os.path.join(cache_dir, '**', '*.pt'), recursive=True)
local_models = [os.path.splitext(os.path.basename(f))[0] for f in pt_files]
# 合并并去重
all_models = sorted(set(official_models + local_models))
# 分组显示
model_types = {
"目标检测": [m for m in all_models if not any(x in m for x in ['seg', 'cls', 'pose'])],
"实例分割": [m for m in all_models if 'seg' in m],
"图像分类": [m for m in all_models if 'cls' in m],
"姿态估计": [m for m in all_models if 'pose' in m],
"自定义模型": [m for m in local_models if m not in official_models]
}
print(f"\n{'='*50}")
print(f"Ultralytics {ultralytics.__version__} 可用模型列表")
print(f"{'='*50}")
for category, models in model_types.items():
if models:
print(f"\n▶ {category}模型:")
print("-"*50)
for i, model in enumerate(models, 1):
indicator = "📁" if model in local_models else "🌐"
print(f"{indicator} {model}")
print("\n图例: 📁=本地缓存 | 🌐=在线可用")
```
### 关键特性说明(基于 Ultralytics 8.3.208)
1. **模型类型支持**:
```python
# 检测模型加载示例
detect_model = YOLO('yolov8n.pt') # 目标检测
# 分割模型加载示例
seg_model = YOLO('yolov8n-seg.pt') # 实例分割
# 分类模型加载示例
cls_model = YOLO('yolov8n-cls.pt') # 图像分类
# 姿态模型加载示例
pose_model = YOLO('yolov8n-pose.pt') # 姿态估计
```
2. **模型性能对比**:
| 模型类型 | 大小 | mAP50 | FPS (RTX 3080) | 适用场景 |
|---------|------|-------|----------------|----------|
| yolov8n | 6.2M | 37.3 | 250 | 移动设备/嵌入式 |
| yolov8s | 11.2M| 44.9 | 120 | 实时应用 |
| yolov8m | 25.9M| 50.2 | 80 | 平衡性能 |
| yolov8l | 43.7M| 52.9 | 45 | 服务器部署 |
| yolov8x | 68.2M| 53.9 | 30 | 高精度需求 |
3. **模型使用最佳实践**:
```python
# 1. 自动下载缺失模型
model = YOLO('yolov8x-pose.pt') # 首次使用自动下载
# 2. 查看模型信息
model.info() # 显示模型结构细节
# 3. 使用模型进行推理
results = model('image.jpg') # 单张图像
results = model(['img1.jpg', 'img2.jpg']) # 批量处理
```
### 扩展技巧:模型搜索功能
```python
def search_yolo_models(keyword=None):
"""按关键词搜索可用模型"""
_, local_models = list_available_yolo_models()
all_models = set(YOLO_MODEL_LIST + local_models)
if keyword:
matches = [m for m in all_models if keyword.lower() in m.lower()]
print(f"\n🔍 找到 {len(matches)} 个匹配 '{keyword}' 的模型:")
for model in matches:
print(f" - {model}")
else:
print("请提供搜索关键词,如: 'seg', 'pose', 'l' 等")
```