2019论文阅读:SIMCO: SIMILARITY-BASED OBJECT COUNTING

2023-05-16

发表于CVPR2019

文章目录

  • 文章贡献
  • 1.绪论
  • 2.SIMCO的两个阶段
    • 2.1 SIMCO detection
      • InShape数据集
      • 网络结构:
    • 2.2 SIMCO clustering
  • 3.实验及结果
  • 4.总结

文章贡献

在这里插入图片描述

提出了SIMilarity-based object COunting (SIMCO):一种多类别的无监督目标计数模型。

  • SIMCO对于物体的类别完全没有知识(completely agnostic):所以不需要临时的、针对某个物品类别的调参;
  • 能够对多类别物体进行计数,因为它能够区分不同类别物体类内的重复模式

1.绪论

很多对相似物体进行计数的方法假想只有一类物体,如果不止一类,就需要临时进行额外的训练。在没有针对某些类别进行识别训练、调参的情况下,这些都不能捕捉到图片中各个类别的(同一类内)重复的模式。

None of them are truly agnostic and multi-class, i.e., able to capture generic repeated patterns of different type without any tuning.

计数方法主要有基于回归、基于检测、基于密度估计的,而SIMCO属于基于检测的。
无监督的物体计数可以帮助标注图片训练集的数据,为单类或者多类数据集提供初步的标记。
SIMCO的两点主要思想:

  • 待计数的物体(尤其是比较小的物体)可以认为是特殊的基本二维形状,SIMCO将这一思想融入到基于Mask-RCNN的分类器,在一个合成的形状数据集InShape进行调参。
  • 利用对待计数物体近似出来的二维形状,对待计数进行聚类(grouping circles with circles etc.),这可以找到各个类别的类内相似的规律。SIMCO通过实现三元损失的网络体系结构中的head分支实现了这一点,该分支提供了一个64维的嵌入,如果对象共享相同的形状类和一些外观属性,则映射对象关闭。关联传播集群在此嵌入中找到组。

    SIMCO real- izes this with a head branch in the network architecture imple- menting triplet losses, which provides a 64-dim embedding that maps objects close if they share the same shape class plus some appearance attributes. Affinity propagation clus- tering [23] finds groups over this embedding.

2.SIMCO的两个阶段

SIMCO是两阶段算法,包含检测聚类两个阶段

2.1 SIMCO detection

InShape数据集

作者认为每个物体都可以用特定的二维形状来近似,这一想法通过在InShape(二维形状)数据集中训练Mask-RCNN来实现。InShape是一个合成的数据集,包含5万张图片,包含基本的形状有线,三角形,长方形,菱形,五边形、六边形、椭圆。
在这里插入图片描述在这里插入图片描述
很可惜我找不到这个数据集,与论文作者联系后,他给我这个数据集:Texel-Att,这个数据集的类别只有3类——[‘circle’, ‘line’, ‘polygon’]。

网络结构:

作者在Mask-RCNN末尾增加了一个分支,称之为similarity head,输出每一个bounding box的视觉相似性描述子【similarity-based visual descriptor desc(b)】这个分支层接在Mask-RCNN模型bounding box回归层的后面:descriptor函数是64维全连接层,从RoI特征对应到计算出来的bounding box。这一层的输出被归一化,限制在64维的单位超球体内。

The desc function is implemented as a 64-dimensional fully connected layer from the RoI features corresponding to the computed box b. The output of this layer is constrained on the 64-dimensional hypersphere [29].

  • Mask R-CNN结构细节回顾
  • Mask R-CNN论文

similarity-based descriptor经过训练后:

  • 同类(形状基本相似)同颜色并且同尺寸的实例最大程度的“靠近”;
  • 同类但具有不同颜色或不同尺寸的实例或者甚至不同类的实例之间,有较大的“距离”。

以上两个条件是通过三元损失函数实现的:
L = L c l s + L b o x + L m a s k + L s i m L = L_{cls} + L_{box} + L_{mask} + L_{sim} L=Lcls+Lbox+Lmask+Lsim
其中 L c l s 、 L b o x 、 L m a s k L_{cls} 、L_{box}、 L_{mask} LclsLboxLmask是Mask R-CNN已有的, L s i m L_{sim} Lsim是新定义的:
∑ ( a , p ) ∈ P ; ( a , p ) ∈ N = m a x ( ∣ ∣ d e s c ( a ) − d e s c ( p ) ∣ ∣ 2 − ∣ ∣ d e s c ( a ) − d e s c ( n ) ∣ ∣ 2 + α , 0 ) \sum\limits_{(a,p)∈P;(a,p)∈N}=max(||desc(a)−desc(p)||_2−||desc(a)−desc(n)||_2+α, 0) (a,p)P;(a,p)N=max(desc(a)desc(p)2desc(a)desc(n)2+α,0)
L s i m L_{sim} Lsim项中的P、N分别表示同类型、不同类型,在论文中定义如下:

在这里插入图片描述
在这里插入图片描述

上图是我根据论文绘制的网络结构,我通过邮件与论文作者进行过沟通:

  • 我绘制的网络结构是正确的;
  • 训练时:在InShape数据集进行训练,不进行聚类过程(2.2节),也就是只进行到计算描述子的部分,描述子中的P、N分别表示同类型、不同类型,P、N是由maskrcnn输出的类别label对照Table 1的标准查表决定的。所以maskrcnn的分类精度会影响 L s i m L_{sim} Lsim的计算,一些误分类的目标会引入误差。在Texel-Att中polygon有很多种形状(六边形、矩形、平行四边形、类似纺锤体的多边形),如果训练similarity head,使其对这些形态各异的polygon输出的描述子“互相接近”,那么模型会认为六边形和四边形是相似的——作者对“形状形似”这一条件放得太宽了;
  • 模型对新的图片进行推理时:进行聚类过程,maskrcnn输出的classes必然是InShape数据集中的目标类别(如果用Texel-Att数据集,只能输出这3种类别[‘circle’, ‘line’, ‘polygon’])

2.2 SIMCO clustering

2.1节嵌入的descriptor将具有相同形状和颜色且尺寸接近的物体紧密地映射到一起,从而可以应用聚类来发现自然的分组——每个聚类都是一个“视觉上的物体”。

在聚类过程中作者选择了AP聚类算法——“affinity propagation algorithm”。这个算法利用不同数据点对之间相似性的度量。

怎样在sklearn中使用AP聚类算法?
在这里插入图片描述

3.实验及结果

细胞计数实验:
在这里插入图片描述
在RepTile数据集进行实验,结果在table3中,种类形状各异;
在这里插入图片描述
实验结果的意义:

  • 可以用于和计数有关的视觉问答问题
  • 可以用来解决复杂多类聚类问题;
    在这里插入图片描述
    SIMCO为核心的图像处理算法可以批量选定一些特定形状,批量处理,利用了SIMCO的聚类功能。
    在这里插入图片描述

4.总结

We presented SIMCO, a powerful and flexible framework to select and count clusters of similar objects in images. An extensive experimental testing showed that the main ideas behind the method, e.g. training the detection on a custom dataset made of photorealistic images with repeated basic shapes (InShape) and learning an optimal embedding for elements’ clustering based on InShape annotations are partic- ularly effective, making the framework suitable for a variety of practical applications in different domains.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

2019论文阅读:SIMCO: SIMILARITY-BASED OBJECT COUNTING 的相关文章

  • 从 array_map 匿名函数内部调用类方法

    我正在尝试从一个对象中调用我的对象的方法之一array map匿名函数 到目前为止 我收到了预期的错误 致命错误 不在对象上下文中时使用 this 我知道为什么我会收到此错误 我只是不知道如何实现我想要的目标 有人有任何建议吗 这是我当前的
  • 已删除的类实例上的方法仍然有效吗?

    我在 Visual C 2010 上有这段代码 include
  • OOP 中的对象和结构有什么区别?

    对象与结构体有何区别 我们何时以及为何使用对象而不是结构体 数组与两者有何不同 何时以及为何使用数组而不是对象或结构 我想了解每个的用途 显然 您可以根据您的编程风格模糊这些区别 但通常结构是结构化的数据块 对象是可以执行某种任务的主权实体
  • 如何递归地将嵌套对象数组转换为平面对象数组?

    我有以下深度嵌套对象数组 const data name foo children count 1 name A count 2 name B name bar children count 3 name C children count
  • 比较 C# 中的对象属性[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案或互动
  • JAVASCRIPT - 为什么这个对象没有改变?

    function myFunc theObject theObject make Ford model Focus year 2006 var mycar make Honda model Accord year 1998 var x my
  • C# 无法覆盖继承的成员

    我正在从一本名为 Chegwidden Gladdis 的书中学习 C 我正在制作与书中编写的相同的程序和相同的代码 但有一个问题 我无法重写父类中的方法 我从章节一开始就读完了这本书 读了五遍 一切都是一样的 但我不明白为什么我不能重写父
  • for 循环内的 Promise 的 setTimeout

    我想做的是这样的 循环数据集合 对于每个数据元素调用 API 等待 Promise 失败或解析 暂停 30 秒 然后对下一个数据元素再次执行此操作 直到没有任何内容可以迭代集合 最后显示 完成 消息 到目前为止 这是我编写的代码 在其他问题
  • Django“模型”对象不可迭代

    我有一张表 其中显示了已注册的员工 我想根据他们的数据库生成一个简单的 HTML 页面 其中包括他们的姓名 id 职称等 为此 我将一个 id 传递给视图 以便它可以获取相应用户的详细信息并向我显示 一切正常 直到出现错误对象不可迭代 下面
  • 何时使用“原型”一词向 JavaScript 中的对象添加新属性?

    我不明白在 JavaScript 中何时使用 原型 一词 以及何时使用不带 原型 一词的简单 点 表示法 有人可以查看这些代码块并帮助我理解您何时想要使用其中一个而不是另一个吗 with 原型 function employee name
  • javascript:检查对象是否具有特定元素或属性的最佳方法?

    假设我有这个 var person name John Doe email email protected cdn cgi l email protection 该对象只有两个元素 称为name and email 有些人还有一个要素age
  • 如何在 Java 中复制对象?

    考虑下面的代码 DummyBean dum new DummyBean dum setDummy foo System out println dum getDummy prints foo DummyBean dumtwo dum Sys
  • Java中如何将Object[]转换为String[]?

    我有一个关于 Java 的问题 我有一个Object Java默认的 不是用户定义的 我想将它转换为String 谁能帮我 谢谢 这是转换 for int i 0 i lt objectArr length i try strArr i o
  • TypeError:“NoneType”对象不可下标[重复]

    这个问题在这里已经有答案了 错误 names curfetchone 0 TypeError NoneType object is not subscriptable 我尝试检查缩进 但仍然有错误 我读到 如果数据库中没有文件名记录 变量名
  • Typescript 继承:扩展基类对象属性

    当扩展一个类时 我可以轻松地向它添加一些新属性 但是 如果当我扩展基类时 我想向基类的对象 简单对象的属性 添加新属性怎么办 这是一个带有一些代码的示例 基类 type HumanOptions alive boolean age numb
  • 匹配拉丁脚本中包含少于 10 个单词的两个字符串的最佳算法是什么

    我正在比较歌曲标题 使用拉丁字母 尽管并不总是 我的目标是一种算法 如果两个歌曲标题看起来相同 则给出高分 如果它们没有任何共同点 则给出很低的分数 现在我已经必须使用 Lucene 和 RAMDirectory 编写代码 Java 来编写
  • Pandas 将对象转换为 timedelta

    我有以下数据 Duration 0 00 00 00 1 00 00 00 2 00 00 57 3 00 03 16 4 00 00 00 And Duration被存储为一个对象 我想将其转换为具有秒数的整数 例如 00 03 16 被
  • Solr 自定义相似度

    我想在我的 solr schema xml 中设置我自己的自定义相似度 但我在理解此功能时遇到一些问题 我想完全停用 solr 评分 tf idf coord 和 fieldNorm 我不知道从哪里开始 我知道的事情 我必须编写自己的 De
  • 逐对计算行相似度百分比并将其添加为新列

    我有一个像这个示例一样的日期框架 我想找到相似的行 不重复 并逐个计算相似度 我发现这个解决方案 https stackoverflow com questions 52650932 how to calculate the similar
  • 将 FORTRAN 对象传递给 C,反之亦然

    我有我的 Fortran 对象 即 this object a this object b this object c 我想将它传递给用 C 编写的代码 我主要是一名 FORTRAN 程序员 而且我很少接触 C 我正在使用iso c bin

随机推荐

  • VNCViewer实现与WIN端文本复制粘贴

    主机系统 xff1a Win10 View端系统 xff1a Ubuntu 16 04 VNCViewer xff1a 6 17 今天踩的第二个坑 xff0c 主要还是因为懒 xff0c 有时候懒得打那么多字 xff0c 就想着和虚拟机一用
  • FGSM(Fast Gradient Sign Method)_学习笔记+代码实现

    前言 本篇博客出于学习交流目的 xff0c 主要是用来记录自己学习中遇到的问题和心路历程 xff0c 方便之后回顾 过程中可能引用其他大牛的博客 xff0c 文末会给出相应链接 xff0c 侵删 xff01 FGSM xff08 Fast
  • DeepFool对抗算法_学习笔记

    前言 本篇博客出于学习交流目的 xff0c 主要是用来记录自己学习中遇到的问题和心路历程 xff0c 方便之后回顾 过程中可能引用其他大牛的博客 xff0c 文末会给出相应链接 xff0c 侵删 xff01 DeepFool算法 特点 xf
  • 对抗样本黑箱攻击UPSET、ANGRI_学习笔记

    前言 本篇博客出于学习交流目的 xff0c 主要是用来记录自己学习中遇到的问题和心路历程 xff0c 方便之后回顾 过程中可能引用其他大牛的博客 xff0c 文末会给出相应链接 xff0c 侵删 xff01 DeepFool算法 特点 xf
  • One pixel 对抗攻击_学习笔记

    前言 本篇博客出于学习交流目的 xff0c 主要是用来记录自己学习中遇到的问题和心路历程 xff0c 方便之后回顾 过程中可能引用其他大牛的博客 xff0c 文末会给出相应链接 xff0c 侵删 xff01 One pixel 对抗攻击算法
  • 对抗样本可转移性与黑盒攻击_学习笔记

    前言 本篇博客出于学习交流目的 xff0c 主要是用来记录自己学习中遇到的问题和心路历程 xff0c 方便之后回顾 过程中可能引用其他大牛的博客 xff0c 文末会给出相应链接 xff0c 侵删 xff01 对抗样本可转移性与黑盒攻击深入研
  • VNC安装记录

    又是一次痛苦的安装过程 xff0c 记录一下避免再次踩坑 sudo apt get install tightvncserver 我安装的是tightvncserver 这个版本 xff0c 网上也有很多是vnc4server xff0c
  • ubuntu升级python版本

    Ubuntu16 04默认安装了Python2 7和3 5 请注意 xff0c 系统自带的python千万不能卸载 xff01 输入命令python 按Ctrl 43 D退出python命令行 输入命令sudo add apt reposi
  • Python microseconds 显示问题,及毫秒显示方法

    系统环境Ubuntu14 04 Python3 5 问题由来 xff1a 优化程序函数运行时间 xff0c 由于输入数据量比较大 xff0c 所以恰好且与1秒左右 xff0c 之前数据量小的数据集测试时用微秒 xff08 microseco
  • 关于ssh: connect to host XXX port 22: Connection timed out的解决办法

    今天想试着建立一个ss xff0c 结果犯了很多人在这里都会出现的错误 xff0c SSH连接不上 下面展现了笔者解决这个问题的流程 一 xff1a 查看master和data1 3的IP地址 当直接对data1 data2 data3进行
  • Matlab 应用GPU加速

    由于GPU近几年地迅速发展 xff0c GPU在多线程计算等方面逐渐超越CPU成为计算的主力军 而Matlab是常用的数学应用软件 xff0c 现在讲解一下如何在Matlab中使用GPU加速计算 文章目录 0 必要条件1 给GPU传输数据1
  • crt + xManager 远程打开linux 图形界面

    因为想要使用eclipse所以看了一下如何远程显示图形界面 1 安装eclipse c 43 43 xff1a sudo apt get install eclipse sudo apt get install eclipse cdt 2
  • keras.layers.upsampling2d

    span class token keyword from span keras span class token punctuation span layers span class token keyword import span U
  • (二)MapReduce整体流程

    1 MapReduce工作流程 1 MapReduce核心思想 图6 xff1a 采用 分而治之 思想 xff0c 将大数据集拆分到多个小数据块 xff0c 再转到多台机器上并行处理 总的来说Map任务独立执行被分割的数据 xff0c Re
  • 在 Linux 系统下使用badblocks检测硬盘上的坏道和坏块

    让我们从坏道和坏块的定义开始说起 xff0c 它们是一块磁盘或闪存上不再能够被读写的部分 xff0c 一般是由于磁盘表面特定的物理损坏或闪存晶体管失效导致的 随着坏道的继续积累 xff0c 它们会对你的磁盘或闪存容量产生令人不快或破坏性的影
  • 【已解决】NVIDIA-SMI has failed because it couldn‘t communicate with the NVIDIA driver 的报错

    问题描述 基于ubuntu16 04 xff0c 本人在更换一次系统下载源后 xff0c 误操作进行了内核升级 执行以下查看cuda命令 xff1a nvidia smi 出现如下提示 xff1a NVIDIA SMI has failed
  • python在图片上画矩形

    python在图片上画矩形 image path 61 39 39 image 61 cv2 imread image path first point 61 100 100 last point 61 100 100 cv2 rectan
  • Java中的线程池(3)----SingleThreadExecutor

    本文简单介绍Java中的另一种线程池 SingleThreadExecutor 创建SingleThreadExecutor的静态方法 首先还是先看一下创建SingleThreadExecutor的Executors下的静态方法 xff1a
  • ros运行catkin_make报警:No module named em......

    ros运行catkin make报警 xff1a No module named em 问题描述我的解决方法待续参考链接 问题描述 在跟着ros教程学习 创建ros消息和ros服务 http wiki ros org cn ROS Tuto
  • 2019论文阅读:SIMCO: SIMILARITY-BASED OBJECT COUNTING

    发表于CVPR2019 文章目录 文章贡献1 绪论2 SIMCO的两个阶段2 1 SIMCO detectionInShape数据集网络结构 xff1a 2 2 SIMCO clustering 3 实验及结果4 总结 文章贡献 提出了SI