传统的目标检测模型通常受到其训练数据和定义的类别逻辑的限制。随着语言-视觉模型的近期兴起,出现了不受这些固定类别限制的新方法。尽管这些开放词汇检测模型具有灵活性,但与传统的固定类别模型相比,仍然在准确性上存在不足。同时,更加准确的数据特定模型在需要扩展类别或合并不同数据集进行训练时面临挑战。后者通常由于逻辑或冲突的类别定义而无法组合,这使得在不损害模型性能的情况下提升模型变得困难。

CerberusDet是一个旨在处理多目标检测任务的多头模型框架,该模型基于YOLO架构,能够有效地共享来自主干和NECK部分组件的视觉特征,同时保持独立的任务头。这种方法使得CerberusDet能够高效地执行,同时仍然提供最佳结果。

PASCAL VOC数据集和Objects365数据集上评估了该模型,以展示其能力。CerberusDet实现了最先进的结果,推理时间减少了36%。同时训练的任务越多,所提出的模型与顺序运行单独模型相比,效率越高。

来源:晓飞的算法工程笔记 公众号,转载请注明出处

论文: CerberusDet: Unified Multi-Dataset Object Detection

Introduction


向一个使用目标检测(OD)的现有实时应用程序中添加新类别涉及几个重大挑战。一个关键问题是,在一个数据集中标注的对象类别在另一个数据集中可能没有标注,即使这些对象本身出现在后者的图像中。此外,由于标注逻辑的不同和类别重叠的不完整,合并不同的数据集往往是不可能的。同时,这类应用程序需要高效的管道,这限制了独立的数据特定模型的使用。

论文的目标是构建一个在多个数据集上训练的统一模型,其准确性不会低于单独训练模型的表现,同时利用更少的计算资源。论文提出了CerberusDet,用于同时在多个数据集上训练单个检测神经网络。论文还展示了一种识别最佳模型架构的方法,因为并不是所有任务都可以一起训练。一个显著的挑战在于确定哪些参数在不同任务之间共享,任务的次优分组可能导致负迁移,即在无关任务之间共享信息的问题。此外,在计算资源有限的情况下,所提方法能够选择满足要求的架构。在开放数据的实验中,CerberusDet使用一个统一的神经网络获得的结果与分离数据特定的最先进模型相媲美。

扩展检测器模型以包含新类别的另一种方法是使用开放词汇目标检测器(OVDs),这一方法最近变得越来越流行。然而,OVDs通常缺乏数据特定检测器的准确性,需要大量的训练数据,并且容易对基础类别过拟合。论文优先考虑高准确性,而非OVDs的灵活性。论文提出的架构能够根据需要添加新类别,同时保持之前学习类别的准确性,更适合实际的需求。值得注意的是,这种方法已经在生产环境中部署并验证,证明了其在实际应用中的鲁棒性和可靠性。

论文的主要贡献如下:

  1. 对多数据集和多任务检测的各种方法进行了研究,探索了不同的参数共享策略和训练程序。

  2. 展示了使用开放数据集的几个实验结果,提供了各种方法有效性的见解。

  3. 提出了一种新的多分支目标检测模型CerberusDet,可以根据不同的计算需求和任务进行定制。

  4. 公开发布了训练和推理代码,以及训练好的模型,鼓励该领域进一步的研究和发展。

Model


Method

CerberusDet模型允许在一个共享模型中学习多个检测任务。每个检测任务都是一个独立的任务,使用其自己的数据集和独特的标签集。

CerberusDet模型建立在YOLO架构之上,通过在任务之间共享所有主干参数来优化计算资源,而每个任务保留其自己独特的HEAD部分参数集。NECK部分层可以是共享的,也可以是特定于任务的。图2展示了基于YOLOv8CerberusDet架构在三个任务下的一个可能变体。使用标准的YOLOv8x架构和640的输入图像分辨率,该模型的主干由184层和3000万参数组成。NECK部份有6个可共享模块,包含134层和2800万参数。每个HEAD部分由54层和800万参数组成。

通过在多个任务之间共享主干,训练方法相比于对每个任务分别使用单独模型的顺序推理,实现了显著的计算预算节约。图3展示了基于YOLOv8x架构的CerberusDet的推理速度。该图比较了两种场景的推理时间:一种是所有NECK部分参数依赖于特定任务,另一种是这些参数在任务间共享。结果突出显示了通过参数共享所获得的计算效率。

Parameters sharing

鉴于硬参数共享技术在多任务学习中的高效性及其通过在训练过程中利用任务间的信息来增强每个任务的预测质量,论文决定采用该技术。硬参数共享允许任务之间共享一组参数,并保留一组任务特定的参数。基于YOLO架构,在模块级别具有可共享的参数集。例如,YOLOv8x6个参数化的NECK部分模块,因此每个任务可以与另一个任务共享其中的任一模块。

为了决定哪些模块在不同任务之间共享,采用表示相似性分析(Representation Similarity AnalysisRSA)方法来估计每个NECK部分模块的任务相似性,这些模块可以是共享的或特定于任务的。然后,对于每个可能的架构变体,计算基于RSA的相似性评分( \(\mathit{rsa\ score}\) )和 \(\mathit{computational\ score}\) 。第一个评分显示了架构的潜在性能,而第二个评分评估了其计算效率。在可用的计算预算内,选择具有最佳 \(\mathit{rsa\ score}\) 的架构。设该架构包含 \(l\) 个可共享模块并且有 \(N\) 个任务,选择该架构的算法如下所示:

  1. 从每个任务的测试集中选择一个小的代表性图像子集。
  2. 使用特定于任务的模型,从每个模块中提取所选图像的特征。
  3. 根据提取的特征,计算双重性图相似性(Duality Diagram SimilarityDDS)——计算每对选定图像的成对(不)相似性。矩阵的每个元素是(1 -皮尔逊相关系数)的值。
  4. 使用中心化核对齐(Centered Kernel AlignmentCKA)方法对DDS矩阵进行计算,生成表示不相似度矩阵(Representation Dissimilarity MatricesRDMs)——每个模块一个 \(N \times N\) 矩阵。矩阵的每个元素表示两个任务之间的相似性系数。
  5. 对于每种可能的架构,使用来自RDM矩阵的值计算 \(\mathit{rsa\ score}\) ,即可共享模型层中每个位置的任务不相似度得分之和。定义为 \(\mathit{rsa\ score} = \sum_{m=1}^{l} S_m\) ,其中 \(S_m\) (公式 `ref`{eq:rsa})通过对模块 l 中共享任务的不相似度得分之间的最大距离取平均得到。
  6. 对于每种可能的架构,使用公式2计算 \(\mathit{computational\ score}\) 。
  7. 选择具有最佳 \(\mathit{rsa\ score}\) 和 \(\mathit{computational\ score}\) 组合的架构(越低越好),或者在 \(\mathit{computational\ score}\) 的设定约束下选择具有最低 \(\mathit{rsa\ score}\) 的架构。
\[\begin{align}
\label{eq:rsa}
S_m &= \frac{1}{|\tau_i, \ldots, \tau_k\}|} \times \\
&\sum_{j=i}^{k} \max \left\{ RDM(j, i), \ldots, RDM(j, k) \right\} \notag
\end{align}
\]

其中 \(\{\tau_i, \ldots, \tau_k\}\) 是模块 \(l\) 中的共享任务。

\[\begin{equation}
\label{eq:comp_score}
\mathit{computational\ score} = \frac{\mathit{inference\_time}}{(N * \mathit{single\_inference\_time})}
\end{equation}
\]

为了评估所选择的方法,选择了4个具有不同RSA分数和计算分数的架构,训练模型并比较了平均指标值。图4表明,随着RSA分数的下降和计算复杂度的增加,模型的准确性也在提高。为了计算计算分数,使用了V100 GPU,批处理大小为1

Training procedure

考虑一组任务 \(\{\mathit{{\tau}_1, \ldots, \tau_n}\}\) ,这些任务的不同组合可能共享一组模型参数。设 \(\theta_{shared} = \{\theta_{i..k}, \ldots \theta_{j..m}\}\) 为不同任务组之间的共享参数集合 \(\{i, \ldots,k\}, \ldots, \{j, \ldots,m\}\) 。算法1展示了所提出的CerberusDet模型的端到端学习过程。在训练过程中,遍历任务,从相应的数据集中抽取小批量数据,计算与当前任务相关的参数的损失和梯度。接下来,对每个任务组的共享参数进行梯度平均,并根据公式3更新它们的值。

\[\begin{equation}
\label{eq:average}
\theta_{\{i,\ldots,k\}} = \theta_{\{i,\ldots,k\}} - (\alpha * \frac{1}{|\{i,\ldots,k\}|} * \sum_{j \in \{i,\ldots,k\}} \dfrac{\partial L_j}{\partial \theta_{\{i,\ldots,k\}}})
\end{equation}
\]

其中 \(\{i,\ldots,k\}\) 表示具有共享参数 \(\theta_{\{i,\ldots,k\}}\) 的任务组, \(\alpha\) 是学习率, \(L_j\) 是任务 \(j\) 的损失。

联合训练的速度和有效性受到各个任务损失函数的强烈影响。由于这些损失函数可能具有不同的性质和规模,因此正确权衡它们是至关重要的。为了找到损失函数的最佳权重以及其他训练超参数,采用超参数演化方法。

在训练过程中,如果每个批次中的样本没有经过仔细和全面的平衡,模型的性能会显著下降。为了解决这个问题,需要确保每个迭代中所有类别都根据它们在数据集中的频率得到充分表示。

The impact of training settings

1展示了前面所述的每种技术影响的结果。在这些实验中使用专有数据,因为它们展示了足够的任务间一致性,以确保实验的清晰性。模型被训练用于3个任务,其中基线是一个架构,在该架构中,模型的所有参数(除了HEAD部分)都是在各任务之间共享的。

第一个任务的数据集包含22个类别,训练集中有27,146张图像,验证集中有3,017张图像。第二个任务的数据集包含18个类别,训练集中有22,365张图像,验证集中有681张图像。第三个任务的数据集包含16个类别,训练集中有17,012张图像,验证集中有3,830张图像。为了比较架构搜索方法对结果的影响,论文还训练了一个模型,其中所有的NECK部分参数都是任务特定的,然后将发现的架构的准确性提升与之进行比较。

提到的模型是在YOLOv5x基础上构建的,输入图像分辨率为640x640,测量是在V100 GPU上以FP16精度进行的。

Open-source datasets experiments






如果本文对你有帮助,麻烦点个赞或在看呗~

更多内容请关注 微信公众号【晓飞的算法工程笔记】

CerberusDet:不同任务共享不同的部分,新多任务目标检测方案的更多相关文章

  1. 第三十二节,使用谷歌Object Detection API进行目标检测、训练新的模型(使用VOC 2012数据集)

    前面已经介绍了几种经典的目标检测算法,光学习理论不实践的效果并不大,这里我们使用谷歌的开源框架来实现目标检测.至于为什么不去自己实现呢?主要是因为自己实现比较麻烦,而且调参比较麻烦,我们直接利用别人的 ...

  2. MySQL中实现DROP USER if EXISTS `test`,即创建新用户时检测用户是否存在

    MySQL中实现DROP USER if EXISTS `test`,即创建新用户时检测用户是否存在    版权声明:本文为博主原创文章,欢迎大家转载,注明出处即可.有问题可留言,会尽快回复,欢迎探讨 ...

  3. 转:iOS9的新特性以及适配方案

    2015年9月8日,苹果宣布iOS 9操作系统的正式版在太平洋时间9月16日正式推出,北京时间9月17日凌晨1点推送. 新的iOS 9系统比iOS8更稳定,功能更全面,而且还更加开放.iOS 9加入了 ...

  4. ASP.NET Core 2.2 : 十六.扒一扒新的Endpoint路由方案 try.dot.net 的正确使用姿势 .Net NPOI 根据excel模板导出excel、直接生成excel .Net NPOI 上传excel文件、提交后台获取excel里的数据

    ASP.NET Core 2.2 : 十六.扒一扒新的Endpoint路由方案   ASP.NET Core 从2.2版本开始,采用了一个新的名为Endpoint的路由方案,与原来的方案在使用上差别不 ...

  5. iOS9的新特性以及适配方案-----转载

    2015年9月8日,苹果宣布iOS 9操作系统的正式版在太平洋时间9月16日正式推出,北京时间9月17日凌晨1点推送. 新的iOS 9系统比iOS8更稳定,功能更全面,而且还更加开放.iOS 9加入了 ...

  6. Google AI推出新的大规模目标检测挑战赛

    来源 | Towards Data Science 整理 | 磐石 就在几天前,Google AI在Kaggle上推出了一项名为Open Images Challenge的大规模目标检测竞赛.当今计算 ...

  7. LabVIEW+OpenVINO在CPU上部署新冠肺炎检测模型实战

    前言 之前博客:[YOLOv5]LabVIEW+OpenVINO让你的YOLOv5在CPU上飞起来给大家介绍了在LabVIEW上使用openvino加速推理,在CPU上也能感受丝滑的实时物体识别.那我 ...

  8. 常用的HTML5、CSS3新特性能力检测写法

    伴随着今年10月底HTML5标准版的发布,未来使用H5的场景会越来越多,这是令web开发者欢欣鼓舞的事情.然而有一个现实我们不得不看清,那就是IE系列浏览器还占有一大部分市场份额,以IE8.9为主,w ...

  9. iOS9的新特性以及适配方案

    新的iOS 9系统比iOS8更稳定,功能更全面,而且还更加开放.iOS 9加入了更多的新功能,包括更加智能的Siri,新加入的省电模式.iOS 9为开发者提供5000个全新的API. 1. 限制HTT ...

  10. ASP.NET Core 2.2 : 十六.扒一扒新的Endpoint路由方案

    ASP.NET Core 从2.2版本开始,采用了一个新的名为Endpoint的路由方案,与原来的方案在使用上差别不大,但从内部运行方式上来说,差别还是很大的.上一篇详细介绍了原版路由方案的运行机制, ...

随机推荐

  1. 曝光!Apache SeaTunnel Catalog 功能设计为何能大大简化用户启用步骤?

    Catalog(目录)提供了关于数据库.表格和访问数据所需的信息的元数据,以及统一的 API 来管理元数据,验证连接,让元数据对 Sources(数据源).Sinks(数据汇)和 Web 可访问. C ...

  2. flex布局被内容被撑开及flex布局下定宽元素被压缩

    实现效果使用flex进行左右布局,左边定宽200px,右边自适应,当右边内容过多,造成右边盒子被撑开,会造成两种问题 左边定宽盒子被压缩解决办法: flex-grow:0;//是否自动增长空间 fle ...

  3. Binance 如何使用 Quickwit 构建 100PB 日志服务(Quickwit 博客)

    三年前,我们开源了 Quickwit,一个面向大规模数据集的分布式搜索引擎.我们的目标很宏大:创建一种全新的全文搜索引擎,其成本效率比 Elasticsearch 高十倍,配置和管理显著更简单,并且能 ...

  4. ARM指令和Thumb指令的区别

    ARM处理器的工作状态 https://blog.csdn.net/itismine/article/details/4753701?depth_1-utm_source=distribute.pc_ ...

  5. 热力学平衡、Liftshitz 理论和朗道理论

    科学家们经过广泛的实验发现:熔化往往始于固体表面.熔化时,体系由 "固体-气体接触" 变为 "固体-熔化层接触 + 熔化层-气体接触".如果后者的能量更稳定,则 ...

  6. TF-IDF 算法原理以及源码实现

    TF-IDF(Term Frequency-Inverse Document Frequency),是用来衡量一个词在文档中的重要性,下面看一下TDF-IDF的公式: 首先是TF,也就是词频,用来衡量 ...

  7. Ubuntu 设置 FTP 服务

    安装 VSFTP 服务 sudo apt install vsftpd 检查配置文件 sudo vim /etc/vsftpd.conf 确保以下配置项正确: #禁止匿名访问 anonymous_en ...

  8. 【面试题】Java中子类和父类静态代码块、非静态代码块、构造函数的执行顺序总结一览表

    在面试的时候,有时候我们会被问到这样的问题:子类A继承父类B,A a = new A();则父类B的构造函数.父类B静态代码块.父类B非静态代码块.子类A构造函数.子类A静态代码块.子类A非静态代码块 ...

  9. due to missing onError handler in the subscribe() method call.

    某日,APP端忽然与后台,一建立连接,就报错,然后断开, 之前都好好的,十分确信代码没有问题,可是跑着就是报错,百思不得其解, 终于发现,不知道怎么回事,配置文件里的stomp的地址配的居然不是我印象 ...

  10. 【YashanDB数据库】由于网络带宽不足导致的jdbc向yashandb插入数据慢

    问题现象 某客户环境,客户的业务使用jdbc驱动向其他操作系统上的yashandb插入90万条数据,耗时大约30分钟. 问题的风险及影响 影响客户的业务处理效率 问题影响的版本 所有的yashandb ...