当前位置: 首页 > news >正文

YOLO-World 零样本目标检测实战:文本类别提示与视频筛选

YOLO-World 零样本目标检测实战:文本类别提示与视频筛选


这篇教程根据我复现 YOLO-World 零样本目标检测流程时整理,重点演示如何设置文本类别提示、跑通图片推理、再把同一套模型迁移到视频帧上做目标筛选。

YOLO-World 的特点是不用重新训练就能通过文本类别完成目标检测。本文适合想快速验证开放词汇检测效果、并把它接到图片或视频流里的同学。

本文会重点跑通以下流程:

  • 安装 YOLO-World 依赖
  • 准备图片和视频示例
  • 设置文本类别提示并执行检测
  • 通过 NMS 和阈值过滤结果
  • 把同一套检测逻辑应用到视频帧并导出结果

如果你正在系统学习目标检测、实例分割、OCR、多目标跟踪或视觉大模型,建议收藏本文;配套 notebook、示例图片和运行环境说明后续会继续整理。如果环境配置卡住,可以在评论区说明具体报错。

📚 文章目录

  • YOLO-World 零样本目标检测实战:文本类别提示与视频筛选
    • ⚙️ 环境准备
    • 🖼️ 准备示例资源
    • 🔍 加载 YOLO-World 模型
    • 🏷️ 设置文本类别
    • 📷 图片目标检测
    • 🎞️ 视频检测准备
    • 📏 视频过滤与导出
    • 📌 小结
    • 📚 同系列教程汇总

⚙️ 环境准备

先检查运行环境并安装依赖。建议优先使用带 NVIDIA GPU 的环境,避免推理和训练阶段显存不足。

!nvidia-smi
importos HOME=os.getcwd()print(HOME)
!pip install-q inference-gpu[yolo-world]==0.9.13!pip install-q supervision==0.19.0rc3
!pip install-q supervision==0.19.0rc3
importcv2importsupervisionassvfromtqdmimporttqdmfrominference.modelsimportYOLOWorld

🖼️ 准备示例资源

这一段会准备图片和视频示例。实际复现时,可以直接换成你自己从数据集后台下载的资源。

# 请从数据集后台下载示例图片和视频,并放到当前目录。# 文件名保持为 dog.jpeg 和 yellow-filling.mp4。
SOURCE_IMAGE_PATH=f"{HOME}/dog.jpeg"SOURCE_VIDEO_PATH=f"{HOME}/yellow-filling.mp4"

🔍 加载 YOLO-World 模型

先把零样本模型跑通,确认文本类别提示和推理接口都正常。

model=YOLOWorld(model_id="yolo_world/l")

🏷️ 设置文本类别

YOLO-World 通过文本类别列表来定义要检测的目标。

classes=["person","backpack","dog","eye","nose","ear","tongue"]model.set_classes(classes)

📷 图片目标检测

先在静态图片上验证类别提示和置信度过滤。

image=cv2.imread(SOURCE_IMAGE_PATH)results=model.infer(image)detections=sv.Detections.from_inference(results)
BOUNDING_BOX_ANNOTATOR=sv.BoundingBoxAnnotator(thickness=2)LABEL_ANNOTATOR=sv.LabelAnnotator(text_thickness=2,text_scale=1,text_color=sv.Color.BLACK)
annotated_image=image.copy()annotated_image=BOUNDING_BOX_ANNOTATOR.annotate(annotated_image,detections)annotated_image=LABEL_ANNOTATOR.annotate(annotated_image,detections)sv.plot_image(annotated_image,(10,10))

image=cv2.imread(SOURCE_IMAGE_PATH)results=model.infer(image,confidence=0.003)detections=sv.Detections.from_inference(results)
labels=[f"{classes[class_id]}{confidence:0.3f}"forclass_id,confidenceinzip(detections.class_id,detections.confidence)]annotated_image=image.copy()annotated_image=BOUNDING_BOX_ANNOTATOR.annotate(annotated_image,detections)annotated_image=LABEL_ANNOTATOR.annotate(annotated_image,detections,labels=labels)sv.plot_image(annotated_image,(10,10))

image=cv2.imread(SOURCE_IMAGE_PATH)results=model.infer(image,confidence=0.003)detections=sv.Detections.from_inference(results).with_nms(threshold=0.1)
labels=[f"{classes[class_id]}{confidence:0.3f}"forclass_id,confidenceinzip(detections.class_id,detections.confidence)]annotated_image=image.copy()annotated_image=BOUNDING_BOX_ANNOTATOR.annotate(annotated_image,detections)annotated_image=LABEL_ANNOTATOR.annotate(annotated_image,detections,labels=labels)sv.plot_image(annotated_image,(10,10))

🎞️ 视频检测准备

把同一套模型接到视频帧生成器上,观察连续帧中的检测效果。

generator=sv.get_video_frames_generator(SOURCE_VIDEO_PATH)frame=next(generator)sv.plot_image(frame,(10,10))

classes=["yellow filling"]model.set_classes(classes)
results=model.infer(frame,confidence=0.002)detections=sv.Detections.from_inference(results).with_nms(threshold=0.1)
annotated_image=frame.copy()annotated_image=BOUNDING_BOX_ANNOTATOR.annotate(annotated_image,detections)annotated_image=LABEL_ANNOTATOR.annotate(annotated_image,detections)sv.plot_image(annotated_image,(10,10))

📏 视频过滤与导出

最后对小目标或低置信度结果做过滤,再把标注后的视频写出。

video_info=sv.VideoInfo.from_video_path(SOURCE_VIDEO_PATH)video_info
width,height=video_info.resolution_wh frame_area=width*height frame_area
results=model.infer(frame,confidence=0.002)detections=sv.Detections.from_inference(results).with_nms(threshold=0.1)detections.area
(detections.area/frame_area)<0.10
detections=detections[(detections.area/frame_area)<0.10]annotated_image=frame.copy()annotated_image=BOUNDING_BOX_ANNOTATOR.annotate(annotated_image,detections)annotated_image=LABEL_ANNOTATOR.annotate(annotated_image,detections)sv.plot_image(annotated_image,(10,10))

TARGET_VIDEO_PATH=f"{HOME}/yellow-filling-output.mp4"
frame_generator=sv.get_video_frames_generator(SOURCE_VIDEO_PATH)video_info=sv.VideoInfo.from_video_path(SOURCE_VIDEO_PATH)width,height=video_info.resolution_wh frame_area=width*height frame_areawithsv.VideoSink(target_path=TARGET_VIDEO_PATH,video_info=video_info)assink:forframeintqdm(frame_generator,total=video_info.total_frames):results=model.infer(frame,confidence=0.002)detections=sv.Detections.from_inference(results).with_nms(threshold=0.1)detections=detections[(detections.area/frame_area)<0.10]annotated_frame=frame.copy()annotated_frame=BOUNDING_BOX_ANNOTATOR.annotate(annotated_frame,detections)annotated_frame=LABEL_ANNOTATOR.annotate(annotated_frame,detections)sink.write_frame(annotated_frame)

📌 小结

YOLO-World 的复现重点不在训练,而在文本类别、置信度阈值和视频过滤策略。实际项目里,先用几张示例图验证类别提示,再接入视频流会更稳。

这一类 notebook 建议按“先环境、再数据、再单样例、最后批量推理”的顺序复现。遇到报错时,优先检查 GPU、依赖版本、数据集目录和模型权重路径。

后续我会继续按源项目顺序整理同系列中的目标检测、实例分割、OCR、多目标跟踪和视觉大模型教程。

📚 同系列教程汇总

  • Google Gemini 3.5 Flash 零样本目标检测教程:从提示词到可视化结果

  • GLM-OCR 文档识别实战教程:从验证码、公式到车牌 OCR

  • RF-DETR + ByteTrack 多目标跟踪实战教程:从命令行到 Python 视频轨迹可视化

  • SAM 3 图像分割实战教程:文本、框和点提示的多种分割方式

  • YOLO-World 零样本目标检测实战:文本类别提示与视频筛选-本文

http://www.jsqmd.com/news/1190356/

相关文章:

  • 2026抖音主播转型实测:成熟高流水主播为什么都在换轻量化挂靠模式? - 彭拜新闻(测评)
  • 2026年郓城道路工程路沿石供应厂家优质实力榜单 - 热点品牌推荐
  • 统计学学习教程,从入门到精通,导论 — 知识点详解(1)
  • 2026年白麻路沿石工厂怎么联系 正规对接方法全指南 - 热点品牌推荐
  • 2026吉林钢结构厂家产品实测维度与参考标准梳理 - 奔跑123
  • Dalin L — 我造了一门支持中文编程的语言,完整移植到 Rust 了
  • 亲身到店探访杭州亨得利官方名表服务中心|最新网点地址及热线(2026年7月更新) - 亨得利官方
  • 计算机毕业设计之jsp校医院预约挂号平台的设计与实现
  • 国自然会评进行时,评审ABC代表什么?
  • 为什么同一个问题,AI 每次给出的答案都不一样?
  • RTMDet 自定义目标检测训练实战:MMYOLO 训练、评估与可视化
  • 2026年上海污水提升器推荐 不同场景选型思路分享参考 - 奔跑123
  • 工业洗地机靠谱品牌厂家怎么选?硬核判定标准拆解 - 奔跑123
  • 2026年十万级无尘车间服务机构评测与精选推荐 - 奔跑123
  • 2026水泥建材行业罗茨风机厂家推荐信息汇总 - 奔跑123
  • 亲身到店探访广州宇舶官方售后服务中心|地址与24小时客服电话(2026年7月最新) - 亨得利官方服务中心
  • 一天快速完成文献综述的sop
  • 亨得利官方钟表服务中心|官方热线和门店地址权威信息公告(2026年7月更新) - 亨得利官方
  • 2026吉林钢结构厂家基础生产能力综合评测 - 奔跑123
  • 2026年秦皇岛活动跟拍综合实力年度权威排名报告|头部摄影摄像机构深度评测云摄影照片直播视频直播游机摄像服务全面解析 - 全国影像制作行业测评
  • 告警分级与降噪规范:避免告警风暴的通用实践
  • FastSAM 图像分割实战:自动 Mask、框提示、点提示与文本提示
  • OpenHarmony 关系型数据库 RDB 完整封装(API Version23 本地持久化数据库)
  • 莲籽甘,籽心苦,不剥玉壳不知我。龟求毛,兔觅角,几回一池秋水浪过。乱!乱!乱!春风红,秋光短,莲籽无须甘苦果山河碎,今昨何,俯弄星月,卧沐汉河,吃,了,睡!
  • 收藏了!1个让零基础小白也能看懂AI的GitHub开源课程,太全了
  • 工业洗地机靠谱厂家判定指南 资质与实绩双维度解析 - 奔跑123
  • 芝柏中国官方售后服务中心|网点地址和官方热线权威信息公告(2027年7月最新) - 亨得利官方服务中心
  • 抖音小店标题主图详情怎么优化?AI 自动整改方法 抖店微信小店批量商品优化软件工具 - 电商分享
  • 生产变更准入与回滚 SOP:从上线前检查到故障回滚的通用实践
  • ArkCompiler 5.0:方舟编译器新一代编译优化技术解析(160)