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 0 gt stdClass Object id gt 20 news title gt Startup finance docs in GitHub news url gt http venturebeat com
  • 为什么 Java 中的每个对象都隐式扩展 java.lang.Object 类?

    我已经用 Java 编程有一段时间了 但是当我试图解释什么是 Java 时 java lang Object是给朋友上课的 我除了简单的一句台词之外想不出更多的话 Java中的所有对象都扩展java lang Object隐含地 我不太确定
  • 创建和管理 Whatsapp Web JS 的多个实例

    我的文件中有一个类whatsappWebSession import Client LocalAuth from whatsapp web js class WhatsappWebSession constructor callback r
  • 如何检索具有一个值的所有对象数组?

    这个问题是来自的后续问题this https stackoverflow com questions 17112360 php multi dimension array 17112404 noredirect 1 comment24760
  • Javascript:了解原型链

    我创建了一个简单的类 如下所示 var Class function Class prototype testObj a 2 b 3 现在如果我这样做console log Class testObj I get undefined 但是如
  • 对象不包括列表理解中的方法

    这个问题与我之前的问题 https stackoverflow com questions 65021583 list comprehensions with class objects以及比尔的回应 我在 subfile py 中有一个名
  • 自定义类排序:没有抛出错误,Python 测试的目的是什么?

    在不指定对象的相等比较属性的情况下 Python在使用时仍然在做一些事情 gt and lt 如果您不指定 Python 实际上是通过什么来比较这些对象的 gt or lt 我预计这里会出现不受支持的操作数错误 就像在尝试将两个对象添加在一
  • 命令行参数 - 所需对象:'objshell.NameSpace(...)'

    我正在编写一个脚本 该脚本将利用 Windows 的内置功能来解压缩提供的 zip 文件 我对 vbscript 还很陌生 所以有些语法让我有点困惑 我正在使用一些现有代码并尝试修改它 以便它将采用命令行选项作为文件名 如果我使用命令行传递
  • C# with Unity 3D:当用户移动鼠标时如何使相机围绕对象移动

    我正在尝试在 Unity 4 中进行 3D 观看模拟 用户可以选择一个对象并移动鼠标围绕它旋转 360 度 我已经拍摄了很多镜头来尝试让它工作 但每次都失败 任何我们将不胜感激 如果它是用 C 编写的 那就太好了 但没必要 提前致谢 这是一
  • 如何为 JavaScript 数组中的每个对象动态添加属性

    我试图循环遍历对象数组 为每个对象添加属性和值 表的顺序很重要 因为我试图使用可手动视图作为客户端来检索服务器端 mysql 表的内容 我希望 Handsontable 视图具有与表相同的列顺序 但我想插入一个复选框列作为第一列以允许记录选
  • Java中小型不可变对象的缓存策略?

    我正在开发一个应用程序 它创建大量小型 不可变的 Java 对象 一个例子可能是 public class Point final int x final int y final int z 许多 Point 实例可能需要引用相同的 x y
  • 我可以向 YAML Swagger 对象添加版本吗?

    我正在创建一个 API 定义 并且我想将规范模型拆分为不同的文档并使用 JSON 指针 ref 来重用它们 我需要找到一种在 YAML 文件中添加版本的方法 例如 pj yaml pJType verison 1 0 type object
  • 检测不同分辨率下的图像相等性

    我正在尝试构建一个脚本来浏览我的原始高分辨率照片 并替换我在拥有专业帐户之前上传到 Flickr 的旧的低分辨率照片 对于其中许多 我可以只使用 Exif 信息 例如拍摄日期 来确定匹配 但有些确实很旧 要么原始文件没有 Exif 信息 要
  • 如何在powershell中获取对象属性的名称?

    我知道我可以使用 get member 来获取对象的所有属性 但我正在浏览对象列表 并且我对名称不断变化的最后一个属性感兴趣 为了自动化我的脚本 我试图获取最后一个属性的名称 但我不确定如何获取 假设我有 result get member
  • 用javascript中的函数交换对象的两个属性

    我正在尝试编写一个函数 该函数将采用两个对象 在本例中为人 并且仅交换它们的两个属性 这是我的 Person 函数 function Person tall weight gender iq favoriteColor this tall
  • 如何调用 MemberwiseClone()?

    我对如何使用感到困惑MemberwiseClone 方法 我在 MSDN 中查看了示例 他们通过this关键词 为什么我不能像其他对象的方法一样直接调用它GetType or ToString 另外一个没有出现的相关方法是ShallowCo
  • Scala 中对象的 Mockito

    我正在使用 Scala 2 10 specs2 和 Mockito 我想模拟 scala io Source fromURL 问题似乎是 fromURL 是一个函数io Source 的对象 http www scala lang org
  • 如何实现 *object* 来改进我的时钟示例 javascript 程序

    这项工作的目标是理解和发挥某些意义object我听说过的概念 关于赏金 有很多不同的方式 方法可以做到这一点 My tries https stackoverflow com a 13219373 1765658不是很干净 为了添加第二个时
  • var->myProperty 和 var.myProperty 之间的区别

    我是 Objective C 的新手 我有一些疑问 我发现您可以访问类的属性 例如var gt 我的属性也喜欢那样变量 myProperty 但我不知道2之间有什么区别 我在互联网上搜索了很多 但确实没有找到确凿的答案 抱歉 如果我有拼写错
  • Hadoop:处理大型序列化对象

    我正在开发一个应用程序来使用 Hadoop 框架处理 和合并 几个大型 java 序列化对象 顺序 GB 大小 Hadoop 存储将文件块分布在不同的主机上 但由于反序列化需要所有块都存在于单个主机上 因此它会极大地影响性能 我该如何处理这

随机推荐

  • 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