AILab-CVC / YOLO-World

[CVPR 2024] Real-Time Open-Vocabulary Object Detection
https://www.yoloworld.cc
GNU General Public License v3.0
4.68k stars 453 forks source link

大佬大佬,现在支持图像提示吗? #257

Open CatfishW opened 7 months ago

CatfishW commented 7 months ago

我个人在MDETR上用CLIP正在尝试搞文本和图像双提示目标检测,不知道大佬这边有没有一个比较好的支持图像提示的版本呀

wondervictor commented 7 months ago

@CatfishW 你好,图像提示的具体流程我周末更新上去,目前只有zero-shot的方式,后续版本会提供预训练后的图像提示版本。

CatfishW commented 7 months ago

@CatfishW 你好,图像提示的具体流程我周末更新上去,目前只有zero-shot的方式,后续版本会提供预训练后的图像提示版本。

图像提示预训练是不是也是把CLIP vision model的cls token embedding给转换为余弦距离后保存到本地然后训练呀,有没有试过DinoV2呢。

wondervictor commented 6 months ago

Hi @CatfishW, 目前是这样,tools/已经提供了初步的图像embedding的提取,后续将会更新image prompts训练的脚本与模型。

CatfishW commented 6 months ago

Hi @CatfishW, 目前是这样,tools/已经提供了初步的图像embedding的提取,后续将会更新image prompts训练的脚本与模型。

image 我这边和大佬的做法类似,但直接从MDETR CLIP文本训好模型换成CLIP图像提示后似乎效果不太行,不知道大佬有没有什么建议,还是说必须得微调image prompts呢

wondervictor commented 6 months ago

目前综合考虑下来,微调是需要的

CatfishW commented 6 months ago

目前综合考虑下来,微调是需要的

image 我之前是做的纯图像提示,用的DINOV2, 配合正负样本+每个类别多个图片的特征平均,但感觉训练出来模型对提示图片的泛化性并不是太好😂,训练的时候还用了mask只保留前景目标。不知道大佬这边有没有训练出idea研究院T-Rex那样的效果呀。 image

CatfishW commented 6 months ago

目前综合考虑下来,微调是需要的

image 我之前是做的纯图像提示,用的DINOV2, 配合正负样本+每个类别多个图片的特征平均,但感觉训练出来模型对提示图片的泛化性并不是太好😂,训练的时候还用了mask只保留前景目标。不知道大佬这边有没有训练出idea研究院T-Rex那样的效果呀。 image

我当时是每个类别取了1万张box或者mask抠出来的目标特征拿来随机抽样在OBJ365、OpenImages、Lvis、COCO2017还有一些Fewshot数据集上去训练,但感觉遇到部分罕见的的提示图片,模型效果就不太行了

CatfishW commented 6 months ago

目前综合考虑下来,微调是需要的

如果大佬的效果好的话可以尝试发一发Few-Shot领域的论文哈哈

wondervictor commented 6 months ago

赞!直接zero-shot去做会明显发现image和text之间存在较大的一个差异,并不是对齐的。而且如果只考虑部分类别,其实也很难学到通用的表征,就好比从COCO的48类泛化到17个novel类一样,这块还是需要较大规模的image prompts数据来做,这块我觉得多样性也比较重要。T-Rex2提供了一个不错的参考,我们也在做一些探索,不过暂时还没加入到预训练里去,计划微调这一条路走通后会尽快release一个版本出来。

CatfishW commented 6 months ago

赞!直接zero-shot去做会明显发现image和text之间存在较大的一个差异,并不是对齐的。而且如果只考虑部分类别,其实也很难学到通用的表征,就好比从COCO的48类泛化到17个novel类一样,这块还是需要较大规模的image prompts数据来做,这块我觉得多样性也比较重要。T-Rex2提供了一个不错的参考,我们也在做一些探索,不过暂时还没加入到预训练里去,计划微调这一条路走通后会尽快release一个版本出来。

确实欸,感觉它们的T-Rex2思路很不错,放弃了Owl-ViT那种的图像提示,转到了类似SAM的点、框坐标提示。我上周也仔细玩了下Owl-ViT的one shot图像提示,但一次前向传播只能检测一个类别,而且Owl-ViT改了CLIP结构重新预训练了一下,其图像提示是用的图像特征而非CLS TOKEN,需要额外通过一个objectiveness从H*W个特征中去筛选比较好的提示特征。我看T-Rex2他们的训练思路是Current Image Detection, Current Image Prompt(引自T-Rex2),在一个很大的batch下(引自DINOV),从同图提示也能泛化到跨图的框点提示,很好的代替了使用图像特征来提示,后面我也可能这么去搞一搞哈哈。