前言
YOLO_WORLD太牛了!!众所周知,传统是视觉目标检测一旦训练好后,如果我们需要增加新的识别目标的话,必须得重新训练模型。在生产中如果经常要新增检测目标,对时效性影响很大,而且随着数据量和种类增多,训练时长不可避免增加。
现在YOLO_WORLD提供了一个新玩法。只需修改目标名称,在不重新训练模型的情况下,可以识别到新的物体。并且其识别速度还是YOLOv8的20倍!!!
备注:以下为个人见解。如有错误,欢迎指出!!Thanks♪(・ω・)ノ
模型简介
一、该模型思路
主干特征网络使用CNN会比Transform架构轻量化许多。YOLO中yolohead的分类器和方框定位中,对分类器进行非常有意思的修改,参考多模态大模型的实现的图文对齐,使其分类器那块不再是每个框的概率,而是变成每个框的特征向量。即每个检测框都有自己的特征向量,通过比对最接近文本类里距离最近的文本特征向量来判断该检测框的类别。
二、大致流程如下:
不用担心文本embedding和图像embedding的问题,大佬们已经对齐啦~~
1、人输入想要检测目标文本(建议不要太口语化)。
2、Text Encoder 切割文本分好类型。
3、文本Embedding把各个类型转成对应特征向量。
4、传入检测图片。
5、YOLO Backbone:模型图片提取特征。
6、Vison-Language:视觉信息和语言信息进行联合处理和分析。
7.1、检测框内图像信息的特征向量通过和文本类向量比对获取相似度最大的。
7.2、检测框坐标数据
安装流程
为了方便个人建议直接使用ultralytics版本的yolo-world,超级简单。
官方详细教程地址
https://docs.ultralytics.com/models/yolo-world/#set-prompts
下载ultralytics
pip intstall -i https://pypi.tuna.tsinghua.edu.cn/simple ultralytics
下载权重文件
https://github.com/ultralytics/assets/releases/download/v8.1.0/yolov8l-world.pt
执行以下代码
from ultralytics import YOLO
# Initialize a YOLO-World model
model = YOLO('yolov8s-world.pt的路径') # or choose yolov8m/l-world.pt
# Define custom classes
model.set_classes(["person", "bus"])# 你要识别的类写英文哦~~
# Execute prediction for specified categories on an image
results = model.predict('图片地址')
# Show results
results[0].show()
怎么样是不是超短实现。
注意第一运行可能会有点卡,因为有些包要自动安装,如果网太卡的话,建议全局~~
训练
待更新~
个人对该模型的展望(纯属个人臆想,不喜勿喷)
问题:虽然模型通过embedding实现文本和检测框,那就会遇到一个问题。如果想要描述的目标受限于我们个人表述能力不足导致模型无法检测到该目标(也就是还不够便利)。
个人思路:相信不少人玩过stable diffusion这个AI生图的软件吧,我们是否可以借鉴那个图生文的思路,让相关embedding模型识别并生成用户框定目标的名称。理论上,这将进一步降低大家的使用门槛~
接下来就看哪些大佬能实现了O(∩_∩)O~
问题总结
待更新