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()

输出结果:

相关推荐
迪菲赫尔曼15 小时前
【基础篇 11】把官方源码放到服务器:版本、解压层级和安装位置,一次弄清楚
运维·服务器·开发语言·人工智能·python·yolo·目标检测
迪菲赫尔曼17 小时前
【基础篇 12】把环境与源码接起来:检查 GPU,再安装服务器上的项目
运维·服务器·开发语言·人工智能·python·yolo·目标检测
yyk3332419 小时前
YOLOv4算法
人工智能·yolo·目标跟踪
pjj198541 天前
YOLO 目标检测算法系列梳理:从 V1 到 V5 的原理演进
算法·yolo·目标检测
爱吃火鸡面呀1 天前
YOLOv2、YOLOv3、YOLOv4、YOLOv5 全面对比与总结
yolo
微尘hjx1 天前
【ByteTrack 04】多轨迹算法ByteTrack改进点
算法·yolo·目标检测·目标跟踪·bytetrack·ultralytics·车跟踪
fl1768312 天前
工业玻璃不同形状类别玻璃检测数据集VOC+YOLO格式1012张4类别
人工智能·yolo·机器学习
微尘hjx2 天前
【StrongSort 03】多轨迹算法StrongSort改进点
人工智能·算法·yolo·视觉检测·ultralytics·strongsort·轨迹算法
迪菲赫尔曼2 天前
【基础篇 08】让VS Code连接服务器:界面在本地,文件保存到远端
运维·服务器·vscode·yolo·论文·教程·ultralyt
yyk333242 天前
YOLOv3算法
人工智能·yolo·目标跟踪