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

输出结果:

相关推荐
JicasdC123asd6 小时前
密集残差瓶颈网络改进YOLOv26特征复用与梯度传播双重优化
网络·yolo·目标跟踪
JicasdC123asd9 小时前
密集连接瓶颈模块改进YOLOv26特征复用与梯度流动双重优化
人工智能·yolo·目标跟踪
duyinbi751710 小时前
局部特征提取改进YOLOv26空间移位卷积与轻量化设计双重突破
人工智能·yolo·目标跟踪
张道宁11 小时前
基于Spring Boot与Docker的YOLOv8检测服务实战
spring boot·yolo·docker
duyinbi751715 小时前
大核瓶颈架构改进YOLOv26扩大感受野与多尺度特征提取双重突破
yolo·架构
孤狼warrior15 小时前
YOLO技术架构发展详解(从v1到v8)近万字底层实现逻辑解析
yolo
张张123y15 小时前
机器学习与深度学习:从基础概念到YOLOv8全解析
深度学习·yolo·机器学习
hans汉斯1 天前
基于区块链和语义增强的科研诚信智能管控平台
人工智能·算法·yolo·数据挖掘·区块链·汉斯出版社
Dev7z1 天前
斑点叉尾鮰鱼损伤检测数据集(YOLO格式)
yolo·斑点叉尾鮰鱼
duyinbi75172 天前
多尺度空洞卷积分支模块改进YOLOv26感受野扩展与特征提取能力双重突破
深度学习·yolo·目标跟踪