2021论文解读:Learning To Count Everything

2023-05-16

此文着眼于仅用少量标注样本完成物体计数的任务。

1 研究近况

1.1 小样本

当前的小样本学习研究主要集中在分类任务上,例如图片(物体)分类、文本分类。较少触及检测、分割等任务的,因为小样本学习问题的核心在于快速地识别新类别,相比于分类,检测和分割更加复杂。

2019reweighting
在这里插入图片描述
2019年,第一篇小样本物体检测的论文发布(Few-shot object detection via feature
reweighting),2020年有Few-shot object detection with attention-rpn and multi-relation detector。小样本+物体检测的研究开始密集起来。这些模型大多都有两个分支,一个分支输入支撑集,另一个输入查询集,有Matching Network的影子(Matching Networks for One Shot Learning)。

当然也有用元学习方法的研究,但是比较少,例如Few-shot scene adaptive crowd counting using meta-learning关注的是,在小样本情况下实现人群计数的场景迁移(源域和目标域的背景不同,计数的对象相同——都是人群)。也有用MAML+物体追踪的,例如Tracking by instance detection: A meta-learning approach,用MAML算法来解决在小样本情况下的物体跟踪,但对多尺度或者多类别的识别并不好。

当前罕有直接触及小样本物体计数问题的,更准确地说,是利用小样本实现新类别的计数这一问题。
比较接近这一工作的有2018年提出的GMN模型(Class-agnostic counting),但GMN在测试时,需要较多标注样本来进行微调,离“小样本”这一概念相差较远(仅仅几个标注样本)。

Learning To Count Everything应该算是第一篇关注利用小样本实现新类别计数的论文。

1.2 物体计数

物体计数方面的研究大多关注单个类别的计数。方法可以分为基于检测(老)、基于密度图回归、直接回归等。
三种方法各有优劣:

  • 完美的检测自然可以获得完美的计数,但检测方法需要框标注,物体紧密排列、长宽比大、旋转等问题都容易导致检测方法性能崩塌,加入旋转参数又容易导致锚框数量剧增,训练周期长。
  • 密度图回归方法需要事先设置高斯核的大小,对物体的尺度比较敏感。
  • 直接回归的方法不能看到物体的位置,因此失去了改进的潜在机会。
    此文作者选择了基于密度图回归的方法。

2 Learning To Count Everything论文解读

这篇论文发表于CVPR 2021,作者单位是石溪大学。代码已经开源,代码量少得惊人。

2.1贡献

  • 开源了一个小样本物体计数的数据集,共有超过6000张图,140多类物体,平均每张图的物体数量是56。通常每张图只有一类物体有标注(点标注),每张图只有几个物体有额外的框标注(也有点标注)。
    在这里插入图片描述
  • 提出了一个小样本计数网络FamNet,相比于流行的计数网络,通用性更强。流行的计数网络多数针对单类物体,比如针对人群、动物、细胞、交通工具、植物等。

2.2 网络结构

在这里插入图片描述

  • 输入:训练时输入密度图真值以及原图、几个标注框的位置;测试时输入原图、几个标注框的位置。标注框总是在同一张图上。有别于GMN等模型的两个分支的特点。
  • feature extraction module:利用resnet 50的前面4个blocks(也就是扔掉了全连接层),但冻结了这4个blocks的参数,不可改变,同时还用了FPN的多尺度来强化特征。
  • ROI pooling:将标注框所框的特征抠出来,池化成统一的大小。
  • feature correlation layer:ROI pooling取得的特征 和 特征提取器获得的特征做相关计算,得到的张量输入到下一层预测密度图。
  • density prediction module:预测密度图。

2.3 新的损失函数

  • Min-Count loss:每个框对应位置的物体数量应该至少是1个,若小于1个就产生损失。大于等于1不产生损失,框可能包含超过一个物体。(思考:可否用轮廓标注?这样损失函数就更加精确。)
    在这里插入图片描述
  • Perturbation Loss:从目标跟踪的研究借用correlation filter而来的。给定一个需要跟踪的物体以及它的标注框,当一个框位于标注框的位置有最大的响应值,当这个框偏离了标注框,它的响应值根据距离指数型下降。
    在这里插入图片描述
  • 总的损失:
    在这里插入图片描述

3 新方法的性能

  • 对比目标检测网络,精度更好,即使目标检测网络已经在某些类别上(COCO数据集里)预训练过。
  • 对比计数网络,通用性更加强,但可能对某种类别计数不如专门训练过的网络。如GMN在CARPK训练过,对汽车的计数精度高,但对其他类别的计数精度较低。
  • 如果增加标注量,FamNet的精度会进一步提升。
    更多实验结果可看原论文

4 潜在的改进

  • 工作机制方面:在测试阶段,每张需要计数的图片都需要标注,如果能提供外部图片+标注,可以避免这种情况。
  • 密度图回归计数的固有缺陷:对尺度敏感。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

2021论文解读:Learning To Count Everything 的相关文章

  • 通过排列两个变量添加计数器列(dplyr)

    我到处寻找了一段时间 但找不到适合我情况的任何解决方案 我有一个数据框 其中混合有 ID 和 VAR 下面我尝试复制一个示例 require dplyr seed 123 N lt 3 T lt 4 id lt rep letters 1
  • 使用 JavaScript 计算 A、B、C、D,而不是 0、1、2、3...

    这可能是一个不寻常的请求 但对于我的脚本 我需要一个按字母而不是数字递增的函数 例如 这是一个数字示例 var i 0 while condition window write We are at i i 本质上 我想像 Microsoft
  • C++ - 如何找到整数的长度

    我试图找到一种方法来查找整数的长度 位数 然后将其放入整数数组中 该作业还要求在不使用 STL 中的类的情况下执行此操作 尽管程序规范确实说我们可以使用 通用 C 库 我会问我的教授是否可以使用 cmath 因为我假设 log10 num
  • 命令行“sort | uniq -c | sort -n”的替代方法

    I use sort uniq c sort n多年来 但今天它失败了 因为我的输入文件是 10 GB 并且我的 tmp宽度为 1 GB sort write failed tmp sortmIGbL No space left on de
  • 计算每行中缺失/NaN 的数量

    我有一个包含大量行的数据集 有些值为 NaN 如下所示 In 91 df Out 91 1 3 1 1 1 1 3 1 1 1 2 3 1 1 1 1 1 NaN NaN NaN 1 3 1 1 1 1 1 1 1 1 我想计算每行中 Na
  • 计算数据库中截止日期与今天日期匹配的所有记录

    我需要计算数据库中截止日期与今天日期匹配的所有记录 我发现我应该能够使用 COUNT 和 CURDATE 来做到这一点 但我无法做到正确 SELECT COUNT id FROM tasks WHERE due date CURDATE 从
  • MySQL统计复杂查询结果?

    我有以下查询 count SELECT COUNT FROM post GROUP BY ID HAVING ID NOT IN SELECT taxiID FROM taxi WHERE userID userID AND value I
  • 如何计算具有两个变量的表中的行数

    我有一个名为 dF 的数据框 有两列 名称 区域 例如 Name Region a EU a EU b AM C AP 如果我执行 table dF 它将显示一个包含两个变量的表 比如像这样 table int 1 325 1 3 Regi
  • 分别计算每列的不同值

    我可以计算每列的不同值而不枚举它们吗 假设我有一张桌子col1 col2 col3 并且没有其他列 在不明确提及这些列的情况下 我希望得到与以下相同的结果 SELECT count distinct col1 as col1 count d
  • 按组的 SQL 计数

    我必须遵循架构 Movie mvID title rating year Director directorID firstname lastname Genre mvID genre Direct mvID directorID 我需要知
  • JPA - COUNT 的最大值或从 SELECT 中选择

    我为 MySQL 编写了以下查询 SELECT subquery t1 column1 subquery t2 id MAX subquery val FROM SELECT t1 column1 as t1 column1 t1 id t
  • 如何让 PHP 代码行更短?

    我有这个循环 同时它会计算输出 while wp query gt have posts wp query gt the post current current2 然后要调用正确的 html 类 我的设计需要这样 div class Th
  • 来自连接表的 SQL 计数

    我有一个表 lijsten 一个表 werknemerlijsten 和一个表 categorieen 现在我正在使用查询来获取计数 SELECT id naam beschrijving count wl werknemer id as
  • Python:计算一个单词在文件中出现的次数

    我有一个文件 其中包含城市名称 然后文件中每行包含州名称 我应该计算状态名称出现的次数并返回值 例如 如果我的文件包含 Los Angeles California San Diego California San Francisco Ca
  • 将最后一个值替换为之前的值

    我有一组不完整的三元组 a np arange 10 3 1 print a 1 1 1 2 2 2 3 3 3 4 Or a1 np arange 11 3 1 print a1 1 1 1 2 2 2 3 3 3 4 4 最后的值为4
  • 如何在表上选择并计算某些值的出现次数

    我请求你的帮助 因为我不太了解 SQL 我需要计算表列中某些值的出现次数 以达到类似统计表的效果 如下图所示 需要的结果 Comment 我的结果表需要有前两列 国家和站点 来自第一个表 Violations 接下来的 5 列将包含状态表中
  • 如何从 Twitter 按钮获取“仅推文计数”

    我一直在看http dev twitter com pages tweet button build your own example http dev twitter com pages tweet button build your o
  • 按应用于 Pandas 中同一列的条件进行计数

    这是我的数据框 acc index veh count veh type 001 1 1 002 2 1 002 2 2 003 2 1 003 2 2 004 1 1 005 2 1 005 2 3 006 1 2 007 2 1 007
  • CakePHP GROUP 和 COUNT 个项目在列表中返回

    我知道这里有一些类似的问题 但它们都是关于使用时的 Model gt find all 但这不是我正在做的 我正在做的 Model gt find list 这就是工作与不工作之间的区别 给定一组产品 我想找到该组中的所有品牌以及每个品牌的
  • 获取两个不同日期列的计数并按日期分组

    我有包含两个 DATE 列的表 TS customer 和 TS verified 我正在寻找一种方法来获取结果 在第一列中 我有某人创建用户 TS customer 或某人经过验证 TS verified 的日期 在第二列中 我希望 co

随机推荐