大数跨境
0
0

U版YOLO-World来了,YOLOv8再度升级,三行代码上手YOLO-World!

U版YOLO-World来了,YOLOv8再度升级,三行代码上手YOLO-World! 极市平台
2024-02-19
0
↑ 点击蓝字 关注极市平台
作者丨AIWalker
来源丨AIWalker
编辑丨极市平台

极市导读

 

YOLO-World在大规模视觉语言数据集上进行了预训练,包括Objects 365,GQA,Flickr 30 K和CC 3 M,这使得YOLO-World具有强大的zero-shot开集Capbility与Grounding能力。 >>加入极市CV技术交流群,走在计算机视觉的最前沿

论文链接:https://arxiv.org/abs/2401.17270

代码链接:https://github.com/AILab-CVC/YOLO-World

https://github.com/ultralytics/ultralytics

项目主页: https://www.yoloworld.cc/

YOLO-World亮点

  • YOLO-World是下一代YOLO检测器,旨在实时开放词汇对象检测。
  • YOLO-World在大规模视觉语言数据集上进行了预训练,包括Objects 365,GQA,Flickr 30 K和CC 3 M,这使得YOLO-World具有强大的zero-shot开集Capbility与Grounding能力
  • YOLO-World实现了快速的推理速度;可以对用户给定词汇,所提重新参数化技术进一步加速推理和部署;

YOLO-World方案

上图为YOLO-World整体架构示意图,它包含一个YOLO检测器、一个文本编码器以及RepVL-PAN。文本编码器首先将输入文本编码为文本嵌入信息;图像编码器对基于输入图像提取多尺度特征信息;RepVL-PAN通过跨模态融合增强文本与图像表征。

  • YOLO Detector:编码器基于YOLOv8演变而来,YOLOv8由DarkNet骨干、PAN多尺度特征融合以及检测头构成;
  • Text Encoder:采用CLIP预训练文本编码器对输入文本T提取对应的文本嵌入,这里C表示名词数目,D表示嵌入维度。相比于Text语言编码器,CLIP文本编码器可以提供更好的视觉-语义能力。当输入文本是句子时,我们采用n-gram算法提取名词短词并送入本文编码器
  • Text Contrastive Head: 延续YOLOv8, 我们采用解耦头对边框 与目标嵌入 进行回归。作者提出文本对比头 (Text Contrastive Head)计算目标文本相似度 , 定义如下:

注:这里的L2-Norm与仿生变换参数对于稳定区域-本文训练非常重要。

  • Training with Online Vocabulary:在训练过策划肝囊肿,我们为每个Mosaic图像构建一个在线词汇集合T。具体来说,我们采样所有包含在Mosaic图像中的正名词短语,然后从对应数据集中随机采样一些负名词短语。每个Mosaic图像最多包含M个词汇,默认M=80。
  • Inference with Offline Vocabulary:在推理阶段,我们提出了一种基于离线词汇集合的_prompt-then-detect_策略以进一步提升效率。用户也可以自定义一些客制化提示信息[可选],然后采用文本编码器对这些提示信息进行编码得到离线嵌入包。离线词汇可以避免对每个输入都进行文本编码计算,为词汇调整提供了更灵活的调控机制。

更详细介绍请参考:YOLO-World | 赋能YOLOv8开集检测能力,构建新一代YOLO新标杆

上手测试

官方YOLO-World是基于mmyolo, mmdetection实现的,但U1S1,mm系列对于入门确实不错,但对于新开源算法上手测试真心难用,毒瘤啊[mmcv的ops这个鬼东西啊]~好消息来了!ultralytics支持YOLO-World了,可以直接通过ultralytics库来玩YOLO-world了使用方式简单到了极致,几行命令即可,还不需要安装一大堆的mm包,不需要编译各种无关op,牛逼克拉斯~

  from ultralytics import YOLOWorld  
  
# Initialize a YOLO-World model  
model = YOLOWorld('yolov8s-world.pt')    
  
# Execute inference with the YOLOv8s-world on the specified image  
results = model.predict('bus.jpg')  
  
# Show results  
results[0].show()  

就是这么的简单好用,两行代码完成测试!

那么,YOLO-World的Prompts功能该如何测试呢?同样非常简单,新增一行代码即可,代码如下:

  from ultralytics import YOLOWorld  
  
# Initialize a YOLO-World model  
model = YOLOWorld('yolov8s-world.pt')    
  
# Define custom classes  
model.set_classes(["person"])  
      
# Execute inference with the YOLOv8s-world on the specified image  
results = model.predict('bus.jpg')  
  
# Show results  
results[0].show()  

就这么一行代码改动,YOLO-World就变成了行人检测器,

当然,你还可以把它变成bus检测器,效果如下

不得不说,YOLO-World进一步释放了检测器的可玩性,不仅可以搞通用检测,还可以玩限定场景检测,关键速度还贼快,还等什么呢,速速试玩咯

公众号后台回复“数据集”获取100+深度学习各方向资源整理

极市干货

技术专栏:多模态大模型超详细解读专栏搞懂Tranformer系列ICCV2023论文解读极市直播
极视角动态欢迎高校师生申报极视角2023年教育部产学合作协同育人项目新视野+智慧脑,「无人机+AI」成为道路智能巡检好帮手!
技术综述:四万字详解Neural ODE:用神经网络去刻画非离散的状态变化transformer的细节到底是怎么样的?Transformer 连环18问!

点击阅读原文进入CV社区

收获更多技术干货

【声明】内容源于网络
0
0
极市平台
为计算机视觉开发者提供全流程算法开发训练平台,以及大咖技术分享、社区交流、竞赛实践等丰富的内容与服务。
内容 8155
粉丝 0
极市平台 为计算机视觉开发者提供全流程算法开发训练平台,以及大咖技术分享、社区交流、竞赛实践等丰富的内容与服务。
总阅读5.7k
粉丝0
内容8.2k