YOLOWorld 实现开集障碍物检测

目的:如何做障碍物模型。

开集障碍物模型

开集障碍物模型 (Open-Set Obstacle Model),核心是让感知系统既能识别训练时见过的已知障碍物 (如车、人、锥桶),也能检测 / 告警训练时未定义的未知障碍物 (如掉落的纸箱、翻倒的共享单车、破损井盖),本质是分布外检测 (OOD) 与开放世界感知问题。

OOD 检测(Out-of-Distribution Detection,分布外检测);

效果:

YOLO 的 OOD(Out-of-Distribution)检测本身通常不能告诉你"这个未知障碍物具体是什么",它只能判断"这不是我训练时见过的任何类别"。

基于文本提示的开集检测:

复制代码
from ultralytics import YOLOWorld
import os

# 检查图像是否存在
#img_path = '/Users/wangfeng/Downloads/1767196111.600000_1767196111.561000.webp'
img_path = '/Users/wangfeng/Downloads/dog1.webp'
if not os.path.exists(img_path):
    raise FileNotFoundError(f"Image not found: {img_path}")

# 加载模型(注意:yolov8s-worldv2.pt 是正确的名称)
model = YOLOWorld('yolov8s-worldv2.pt')

# 定义你的提示词列表(顺序即类别ID)
custom_classes = ['car', 'dog', 'person', 'bicycle', 'cone', 'truck', 'unknown obstacle', 'road debris', 'fallen object']
model.set_classes(custom_classes)

# 推理
results = model(img_path, conf=0.3, imgsz=640)

# 分离已知和未知
known_set = {'car', 'person', 'bicycle', 'cone', 'truck', 'dog'}  # 使用 set 提升查找效率
known_dets = []
unknown_dets = []

for box in results[0].boxes:
    cls_id = int(box.cls.item())  # 获取类别索引
    if cls_id >= len(custom_classes):
        continue  # 防御性处理(理论上不会发生)
    
    cls_name = custom_classes[cls_id]  # 正确获取类别名
    bbox = box.xyxy.cpu().numpy()[0]
    
    if cls_name in known_set:
        known_dets.append((cls_name, bbox))
    else:
        unknown_dets.append((cls_name, bbox))

# 打印结果
print(f"已知物体: {len(known_dets)} 个")
for name, bbox in known_dets:
    print(f"  - {name}: {bbox}")

print(f"未知障碍物: {len(unknown_dets)} 个")
for name, bbox in unknown_dets:
    print(f"  - {name}: {bbox}")

# 可视化(会显示所有检测框,包括 unknown obstacle 等)
results[0].show()

输出结果:

相关推荐
西西弗Sisyphus9 小时前
YOLO26 图像分割 - 训练的数据加载:取图、在线增强与标签缓存
yolo·yolo26
YOLO_DATA13 小时前
无人机高速公路道路缺陷数据集 道路损伤数据集 公路裂缝识别 AI大疆数据集 10798期
人工智能·深度学习·yolo·机器学习·cnn
YOLO数据集集合1 天前
小目标无人机、飞机、直升机检测数据集 | 小目标检测 无人机检测 空中目标识别 低空安防 反无人机9090期
深度学习·yolo·目标检测·无人机·飞机·小目标·直升机
YOLO数据集集合1 天前
全球无人机航拍树冠覆盖数据集 | 树冠分割 语义分割 无人机航拍 全球森林监测 GeoTIFF 生态恢复9083期
深度学习·yolo·目标检测·无人机·无人机视角·全球森林
Python图像识别1 天前
10-【2027毕设】YOLO11PCB缺陷检测识别系统 - Python完整源码+PyQt5界面+训练模型+数据集
python·深度学习·yolo·毕业设计·毕设
YOLO数据集集合2 天前
无人机树木识别检测数据集 | 树木检测 树种分类 无人机航拍 林业调查9082期
深度学习·yolo·目标检测·无人机·无人机视角·树冠识别·树冠
qq7422349842 天前
YOLO 之外的另一半:RF-DETR 检测实战
yolo
YOLO数据集集合2 天前
无人机低空影像语义分割数据集 | 语义分割 遥感影像 无人机低空 地物分类 Potsdam Vaihingen LoveDA 9080期
人工智能·深度学习·yolo·目标检测·计算机视觉·语义分割·无人机数据集
智购科技自动贩卖机2 天前
自动售货机嵌入式系统时钟同步与时间管理实战:从RTC校准到断网时间保持的工程实践
大数据·linux·数据库·人工智能·yolo
计算机编程-吉哥3 天前
深度学习:我用YOLO11-L做了一个水下垃圾检测系统 对比YOLOv8-L/Faster R-CNN【计算机毕业设计选题推荐】
人工智能·深度学习·yolo·课程设计·计算机毕业设计选题