江大白 | 大模型时代,CV目标检测任务,会走向何方?

2024-09-01 11:36

本文主要是介绍江大白 | 大模型时代,CV目标检测任务,会走向何方?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文来源公众号“江大白”,仅用于学术分享,侵权删,干货满满。

原文链接:大模型时代,CV目标检测任务,会走向何方?

以下文章来源于知乎:深度眸

作者:深度眸

编辑:极市平台

链接:https://zhuanlan.zhihu.com/p/663703934

本文仅用于学术分享,如有侵权,请联系后台作删文处理

导读

目标检测现在都在干啥?大模型时代都有哪些思考?本文细数从常见的目标检测到现在MLLM盛行的时代,和Object Detection的任务以及近期涌现的新任务。如果读者也做目标检测,这篇文章很适合您拓宽思路!

1 Object Detection

经典目标检测大家应该非常熟悉了,一般指的就是闭集固定类别的检测。

2 Open Set/Open World/OOD

这个任务是指在实际应用上可以检测任何前景物体,但是有些不需要预测类别,只要检测出框就行。在很多场合也有应用场景,有点像类无关的增量训练。

unknown 就是模型预测的不知道类别的检测结果。

3 Open Vocabulary

也是开放集任务,相比于 open set,需要知道不在训练集类别中的新预测物体类别。这类模型通常都需要接入文本作为一个模态输入,因为开放词汇目标检测的定义就是给定任意词汇都可以检测出来。

训练时候通常是要确保训练集和测试集的类别不能重复,否则就是信息泄露了,但是训练和测试集图片是否重复其实也没有强制限制。

可以看出 OVD 任务更加贴合实际应用,文本的描述不会有很大限制,同一个物体你可以采用多种词汇描述都可以检测出来。OVD 任务是一个比较实用的,但是目前还没有出现开源的超级强的 OVD 算法(这个超强是指的对比 SAM 来说,极强的 open 检测能力)

4 Phrase Grounding

这个任务也叫做 phrase localization。给定名词短语,输出对应的单个或多个物体检测框。如果是输入一句话,那么就是定位这句话中包括的所有名词短语。在 GLIP 得到了深入的研究。

从上图可以看出,Phrase Grounding 任务是包括了 OVD 任务的。常见的评估数据集是 Flickr30k Entities

5 Referring Expression Comprehension

简称 REC,有时候也称为 visual grounding。给定图片和一句话,输出对应的物体坐标,通常就是单个检测框。

常用的是 RefCOCO/RefCOCO+/RefCOCOg 三个数据集。是相对比较简单的数据集。这个任务侧重理解。

6 Description Object Detection

描述性目标检测也可以称为广义 Referring Expression Comprehension。为何叫做广义,这就要说道目前常用的

Referring Expression Comprehension 存在的问题了:

  1. REC 数据集通常都是指代一个物体,不太符合实际

  2. REC 数据集没有负样本,也就是每句话一定对应了图片中的物体,这样训练的模型会存在很大的幻觉

  3. REC 数据集通常都是正向描述,例如上图的一条在图片左边的狗,但是没有反向描述,例如一条没有被绳子牵引着在外面的狗

基于此,Described Object Detection 论文提出了这个新的数据集,命名为 DOD。类似还有 gRefCOCO

其实还有一个更细致的任务叫做 :Open-Vocabulary Visual Grounding 和 Open-Vocabulary Phrase Grounding,来自论文 OV-VG

可以看出这个任务重点是想特意区分类别泄露问题,但是由于大数据集训练时代,这个情况是无法避免的。

7 Caption with Grounding

这个任务的含义是:给定图片,要求模型输出图片描述,同时对于其中的短语都要给出对应的 bbox

有点像 Phrase Grounding 的反向过程。这个任务可以方便将输出的名称和 bbox 联系起来,方便后续任务的进行。

8 Reasoning Intention-Oriented Object Detection

意图导向的目标检测,和之前的 DetGPT 提出的推理式检测,我感觉非常类似。

DetGPT 中的推理式检测含义是:给定文本描述,模型要能够进行推理,得到用户真实意图。

例如 我想喝冷饮,LLM 会自动进行推理解析输出 冰箱 这个单词,从而可以通过 Grounding 目标检测算法把冰箱检测出来。模型具备推理功能。

而 RIO 我觉得也是一样,来自论文 RIO: A Benchmark for Reasoning Intention-Oriented Objects in Open Environments,想做的事情也是一样

9 基于区域输入的理解和 Grounding

这个是一个非常宽泛的任务,表示不仅可以输入图文模态,还可以输入其他任意你能想到的模态,然后进行理解或者定位相关任务。

最经典的任务是 Referring expression generation:给定图片和单个区域,对该区域进行描述。常用的评估数据集是 RefCOCOg

现在也有很多新的做法,典型的如 Shikra 里面提到的 Referential dialogue,包括 REC,REG,PointQA,Image Caption 以及 VQA 5 个任务

Apple 也提出了新的可交互的设计

其实文本、bbox 和图片配合,还可以实现很多任务,但是由于都是比较特殊或者不是很主流,这里就没有写了。

10 结尾

可能还漏掉了一些,欢迎大家留言评论。后续可以讲讲这些任务应该如何解决?每个任务到底是咋评测的,通常的做法是咋样的。

现在都是大数据训练时代,评测虽然非常有用,但是很难避免数据泄露问题,如果作者不开源,你根本无法知道到底是模型性能还是数据泄露,这个一个值得思考的问题...,而这个问题也很难解,因为作者不开源,你也没有精力去做复现...

THE END !

文章结束,感谢阅读。您的点赞,收藏,评论是我继续更新的动力。大家有推荐的公众号可以评论区留言,共同学习,一起进步。

这篇关于江大白 | 大模型时代,CV目标检测任务,会走向何方?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1126826

相关文章

Redis实现延迟任务的三种方法详解

《Redis实现延迟任务的三种方法详解》延迟任务(DelayedTask)是指在未来的某个时间点,执行相应的任务,本文为大家整理了三种常见的实现方法,感兴趣的小伙伴可以参考一下... 目录1.前言2.Redis如何实现延迟任务3.代码实现3.1. 过期键通知事件实现3.2. 使用ZSet实现延迟任务3.3

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

Linux中的计划任务(crontab)使用方式

《Linux中的计划任务(crontab)使用方式》:本文主要介绍Linux中的计划任务(crontab)使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、前言1、linux的起源与发展2、什么是计划任务(crontab)二、crontab基础1、cro

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

python+opencv处理颜色之将目标颜色转换实例代码

《python+opencv处理颜色之将目标颜色转换实例代码》OpenCV是一个的跨平台计算机视觉库,可以运行在Linux、Windows和MacOS操作系统上,:本文主要介绍python+ope... 目录下面是代码+ 效果 + 解释转HSV: 关于颜色总是要转HSV的掩膜再标注总结 目标:将红色的部分滤

Spring定时任务只执行一次的原因分析与解决方案

《Spring定时任务只执行一次的原因分析与解决方案》在使用Spring的@Scheduled定时任务时,你是否遇到过任务只执行一次,后续不再触发的情况?这种情况可能由多种原因导致,如未启用调度、线程... 目录1. 问题背景2. Spring定时任务的基本用法3. 为什么定时任务只执行一次?3.1 未启用

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

如何使用Python实现一个简单的window任务管理器

《如何使用Python实现一个简单的window任务管理器》这篇文章主要为大家详细介绍了如何使用Python实现一个简单的window任务管理器,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起... 任务管理器效果图完整代码import tkinter as tkfrom tkinter i

Spring Boot 集成 Quartz 使用Cron 表达式实现定时任务

《SpringBoot集成Quartz使用Cron表达式实现定时任务》本文介绍了如何在SpringBoot项目中集成Quartz并使用Cron表达式进行任务调度,通过添加Quartz依赖、创... 目录前言1. 添加 Quartz 依赖2. 创建 Quartz 任务3. 配置 Quartz 任务调度4. 启

Java使用多线程处理未知任务数的方案介绍

《Java使用多线程处理未知任务数的方案介绍》这篇文章主要为大家详细介绍了Java如何使用多线程实现处理未知任务数,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 知道任务个数,你可以定义好线程数规则,生成线程数去跑代码说明:1.虚拟线程池:使用 Executors.newVir