《CounTR: Transformer-based Generalised Visual Counting》CVPR2023

news/2024/9/17 3:39:29/ 标签: 目标检测, transformer, 计算机视觉, 视觉统计

摘要

本论文考虑了通用视觉对象计数问题,目标是开发一个计算模型,用于计算任意语义类别的对象数量,使用任意数量的“样本”(即可能为零样本或少样本计数)。作者提出了一个新颖的基于Transformer的架构,称为Counting TRansformer(CounTR),它通过注意力机制显式捕获图像块之间的相似性或与给定“样本”的相似性。此外,作者采用了两阶段训练机制,首先通过自监督学习预训练模型,然后进行有监督的微调。作者还提出了一个简单、可扩展的流程来合成训练图像,这些图像包含大量实例或来自不同语义类别,明确迫使模型利用给定的“样本”。通过在大规模计数基准测试(例如FSC147)上进行彻底的消融研究,证明了在零样本和少样本设置下达到了最先进的性能。

拟解决的问题

论文旨在解决通用视觉对象计数问题,即在一个图像中识别任意语义类别的显著对象的数量。这包括从零样本到少样本对象计数的挑战。

创新之处

  1. 提出了一个新颖的基于Transformer的架构CounTR,利用注意力机制显式捕获图像块之间的相似性或与给定样本的相似性。
  2. 采用了两阶段训练机制,包括自监督预训练和有监督微调,有效提高了计数性能。
  3. 提出了一个简单、可扩展的流程来合成训练图像,这些图像包含大量实例或来自不同语义类别,以解决现有数据集中的长尾问题。
  4. 在大规模计数基准测试上进行了彻底的消融研究,证明了模型在零样本和少样本设置下达到了最先进的性能。

方法

  • 架构:提出了Counting TRansformer (CounTR),它包括视觉编码器、特征交互模块(FIM)和视觉解码器。
  • 两阶段训练:首先通过掩码图像重建 (MAE) 使用自我监督对模型进行预训练,然后对下游计数任务进行微调。
  • 数据合成:提出了一种新颖且可扩展的马赛克管道来合成训练图像,以解决现有对象计数数据集中长尾分布(即具有大量实例的图像往往不太频繁)的挑战。
  • 测试时归一化:对于少样本计数,引入了测试时归一化策略来校准输出密度图。

4.1 架构

  1. 视觉编码器(Visual Encoder):将输入图像和用户提供的样本映射到高维特征空间。
  2. 特征交互模块(Feature Interaction Module, FIM):通过一系列的标准Transformer解码器层来融合来自视觉编码器的信息。
  3. 视觉解码器(Visual Decoder):将特征交互模块的输出重新塑形为2D特征图,并恢复到输入图像的原始分辨率。

视觉编码器:由两部分组成:

  • ViT编码器:基于Vision Transformer(ViT),将输入图像分割成小块,并通过一系列Transformer编码层处理,输出为一系列D维的特征向量。
  • 样本编码器:对于少样本计数,使用轻量级卷积神经网络(CNN)来提取样本的视觉特征。
  • 在没有给出示例的零样本场景下,我们采用可学习的 [SPE] 标记作为替代来为模型提供线索。

特征交互模块:FIM由一系列标准的Transformer解码器层构成,其中图像特征作为查询(Query),样本特征或特殊学习到的标记(在零样本情况下)作为键(Key)和值(Value)。这样的设计使得FIM的输出维度与图像特征相同。

视觉解码器:解码器采用渐进式上采样设计,将向量序列首先重塑为密集的特征图,然后通过基于卷积神经网络的解码器进行处理。最终通过一个线性层作为密度回归器,输出单通道的密度热图。

4.2 两阶段训练方案 

  1. 自监督预训练:使用遮蔽图像建模(Masked Image Modeling)来训练视觉编码器,通过部分观察到的图像块来重建输入图像。
  2. 有监督微调:在预训练的基础上,使用训练集中的图像和样本对模型进行微调,以适应具体的计数任务。

第一阶段:自监督预训练:目的是利用图像内部的冗余信息,通过图像重建任务来学习有效的视觉表示,而不依赖于标注数据。

方法:

  • 遮蔽图像建模(Masked Image Modeling, MAE):这是一种自监督学习方法,通过随机遮蔽图像中的部分区域,然后训练模型预测这些被遮蔽区域的内容。这种方法可以看作是图像版本的BERT,即通过遮蔽部分图像并让模型预测这些部分来学习图像的表示。
  • ViT编码器训练:在CounTR模型中,首先使用MAE对基于Vision Transformer(ViT)的视觉编码器进行预训练。具体来说,将输入图像分割成固定大小的块,随机遮蔽一部分图像块,然后使用剩余的图像块作为输入,训练模型来重建整个图像。

第二阶段:在自监督预训练的基础上,通过有监督学习进一步优化模型,使其更好地适应特定的视觉对象计数任务。

方法:

  • 模型初始化:使用自监督预训练得到的ViT编码器的权重作为初始化,固定这些权重。
  • 任务特定训练:在固定的视觉编码器基础上,添加特征交互模块(FIM)和视觉解码器,然后使用标注的数据集(如FSC-147)对整个模型进行微调。模型的输入包括图像和用户给定的样本,输出为对应的密度图。
  • 损失函数:使用像素级均方误差(MSE)作为损失函数,计算模型预测的密度图和真实密度图之间的差异。

 4.3 可扩展的马赛克

解决通用视觉对象计数数据集中的长尾问题,即大多数图像只包含少量对象,而少量图像包含大量对象。方法如下:

  • 增加背景多样性:通过结合不同图像的区域,增加训练图像的背景多样性。
  • 合成更多实例:在单个图像中合成更多的对象实例,帮助模型更好地学习和泛化到包含大量对象的场景。

拼贴步骤涉及从单个或多个图像中裁剪区域,并将这些区域组合成一个新的图像。 

简单的裁剪和拼贴可能会在图像的边界处留下明显的人工痕迹。为了解决这个问题,在图像的边界处使用随机宽度的α通道混合,使图像的组合更加真实。

4.4 测试时间归一化

针对少样本计数场景提出的一种策略,用于在模型推理阶段校准输出密度图,以提高计数的准确性。 

在少样本计数任务中,用户提供的“样本”(即示例对象)对于模型预测图像中的目标对象至关重要。测试时归一化的目的是利用这些样本信息来校正模型在测试阶段的输出,确保计数的准确性。

  1. 样本位置的密度图预测:模型首先对输入图像进行预测,生成一个包含对象位置的密度图。

  2. 计算样本位置的平均预测值:在得到的密度图中,计算与用户提供的样本相对应的区域的平均预测值。这些区域通常由样本的边界框(bounding boxes)标识。

  3. 归一化处理:如果样本位置的平均预测值超过了预设的阈值(例如1.8),则将整个密度图的值除以该平均值进行归一化。这样做的原因是,如果模型在样本位置的预测值过高,可能意味着它将对象的一部分错误地计为多个实例,或者反之,将多个实例错误地计为一个。

  4. 最终计数:经过归一化处理后,通过累加密度图中的所有值来得到最终的对象计数。

在测试时间归一化中,如果密度图中样本位置的平均总和超过 1.8,则密度图的总和将除以该平均值以获得最终的预测。在测试时间裁剪中,如果至少有一个样本的边长小于10个像素,则将图像裁剪成9个片段,模型将分别处理这9幅图像。最终预测将是这 9 张图像的结果之和。


http://www.ppmy.cn/news/1522134.html

相关文章

ELK学习笔记(二)——使用K8S部署Kibana8.15.0

上篇文章我们完成了,ES的集群部署,如果还没有看过上篇文章的兄弟,可以去看看。 ELK学习笔记(一)——使用K8S部署ElasticSearch8.15.0集群 话不多说,接下来直接进入kibana的搭建 一、下载镜像 #1、下载官方…

Echarts中国地图省市区县三级联动

NodeV14.20.0安装 # 历史版本Node下载地址 https://nodejs.org/en/download/prebuilt-installer# NodeV14.20.0配置与部署 https://nodejs.org/dist/v14.20.0/node-v14.20.0-x64.msi构建默认Vue3工程目录 npm install -g vue/cli --registryhttps://registry.npm.taobao.org …

综合案例-数据可视化-折线图

一、json数据格式 1.1 json数据格式的定义与功能 json是一种轻量级的数据交互格式,可以按照json指定的格式去组织和封装数据,json数据格式本质上是一个带有特定格式的字符串。 功能:json就是一种在各个编程语言中流通的数据格式&#xff0…

常用排序算法(上)

目录 前言: 1.排序的概念及其运用 1.1排序的概念 1.2排序运用 1.3 常见的排序算法 2.常见排序算法的实现 2.1 堆排序 2.1 1 向下调整算法 2.1 2 建堆 2.1 3 排序 2.2 插入排序 2.1.1基本思想: 2.1.2直接插入排序: 2.1.3 插…

光伏项目报告如何做?能否自动生成?

一、光伏项目做报告的必要性 在光伏项目开发过程中,编制一份详尽、准确的光伏项目报告是至关重要的环节。这份报告不仅是对项目建设的全面调查和评估,更是项目立项、审批、融资、设计、建设及运营等多个阶段的重要参考依据。光伏项目报告通过深入分析项…

项目实战 ---- 商用落地视频搜索系统(6)---UI 结构及与service互动

目录 背景 技术问题 描述 Jinja2 概述 特性 问题解决手段 问题1 问题2 问题3 代码实现 前端代码 python代码 解释 页面展示 home 上传视频 搜索视频 背景 通过1-5 我们已经搭建好完整的后台功能,service,及准备与UI 交互的路由及接口。下面就是UI 部分的搭…

统计学习方法与实战——统计学习方法概论

统计学习方法概论 文章目录 统计学习方法概论前言章节目录导读 实现统计学习方法的步骤统计学习方法三要素模型模型是什么? 策略损失函数与风险函数常用损失函数ERM与SRM 算法 模型评估与模型选择过拟合与模型选择 正则化与交叉验证泛化能力生成模型与判别模型生成方法判别方法…

Spark的Web界面

http://localhost:4040/jobs/ 在顶部导航栏上,可以点击以下选项来查看不同类型的Spark应用信息: Jobs - 此视图将列出所有已提交的作业,并提供每个作业的详细信息,如作业ID、名称、开始时间、结束时间等。Stages - 此视图可以查…

线性因子模型 - 引言篇

序言 在当今数据爆炸的时代,如何从海量、高维的数据中提炼出有价值的信息,已成为机器学习乃至人工智能领域的重要课题。深度学习,作为这一领域的璀璨明珠,凭借其强大的特征学习与表示能力,在图像识别、自然语言处理、…

探索EasyCVR与AI技术深度融合:视频汇聚平台的新增长点

随着5G、AI、边缘计算、物联网(IoT)、云计算等技术的快速发展,万物互联已经从概念逐渐转变为现实,AIoT(物联网人工智能)的新时代正在加速到来。在这一背景下,视频技术作为信息传输和交互的重要手…

深入RabbitMQ世界:探索3种队列、4种交换机、7大工作模式及常见概念

文章目录 文章导图RabbitMQ架构及相关概念四大核心概念名词解读 七大工作模式及四大交换机类型0、前置了解-默认交换机DirectExchange1、简单模式(Simple Queue)-默认DirectExchange2、 工作队列模式(Work Queues)-默认DirectExchange3、发布/订阅模式(Publish/Subscribe)-Fano…

【Java毕业设计】基于SpringBoot+Vue+uniapp的农产品商城系统

文章目录 一、系统架构1、后端:SpringBoot、Mybatis2、前端:Vue、ElementUI4、小程序:uniapp3、数据库:MySQL 二、系统功能三、系统展示1、小程序2、后台管理系统 一、系统架构 1、后端:SpringBoot、Mybatis 2、前端…

水晶连连看 - 无限版软件操作说明书

水晶连连看 – 无限版游戏软件使用说明书 文章目录 水晶连连看 – 无限版游戏软件使用说明书1 引言1.1 编写目的1.2 项目名称1.3 项目背景1.4 项目开发环境 2 概述2.1 目标2.2 功能2.3 性能 3 运行环境3.1 硬件3.2 软件 4 使用说明4.1 游戏开始界面4.2 游戏设定4.2.1 游戏帮助4…

数据库MySQL基础

目录 一、数据库的介绍 1.数据库概述 (1)数据的存储方式 (2)数据库 2.常见数据库排行榜 二、数据库的安装与卸载 1.数据库的安装 2.数据库的卸载 三、数据库服务的启动与登录 1.Windows 服务方式启动 (1&…

如何解决PCDN技术与边缘计算技术融合后的安全和隐私问题(壹)?

PCDN(Peer-assisted Content Delivery Network)技术与边缘计算技术的融合可以带来显著的性能提升和效率优化,但同时也带来了新的安全和隐私挑战。以下是一些解决这些安全和隐私问题的操作策略: 1. 强化数据加密 传输加密&#x…

U盘怎么加密保护?U盘加密方法介绍

在数字化时代,U盘作为一种便携式存储设备,广泛应用于我们的日常生活和工作中。然而,U盘中存储的数据安全性问题日益凸显。为了保护个人隐私和重要数据,学会U盘加密方法显得尤为重要。本文将为您详细介绍几种U盘加密方法&#xff0…

linux————根据端口查找运行目录的三种方法

先查询端口找到进程 netstat -anlpt | grep 16443 | grep -v grep tcp 0 0 0.0.0.0:16443 0.0.0.0:* LISTEN 3710563/nginx: mast tcp 0 0 192.168.110.253:16443 192.168.110.22:64430 ESTABLISHED 3710580/n…

Spark MLlib模型训练—回归算法 Survival Regression

Spark MLlib模型训练—回归算法 Survival Regression 生存回归(Survival Regression)是一种用于分析时间到事件数据的回归方法,广泛应用于医学、生物统计学、工程可靠性分析等领域。它的核心是预测一个事件发生的时间或概率,比如患者生存时间、设备故障时间等。本文将详细…

net、udp、tcp

Makefile的main.c文件中的全局变量SONG song,要在fun.c文件里面写成extern SONG song 编译方法 第一次编写 或 网络编程 物理层的网线规定有八根,颜色不一样,功能不一样,光猫把光信号转换成电信号,光纤10Gb WiFi叫无线局域网,一般也就50米左右,手机流量叫蜂窝网络,…

golang闭包中变量获取

闭包的本质是一个语法糖,其本质是获取外部变量在其内部使用。文中case2和case3并未涉及闭包,只是作为对比案例。case4这个案例有点不能理解,汇编看着太吃力了。case4和case5留待后续再研究。 案例1: package main// 探究go语言中…