首页 > 其他分享 >IRNet

IRNet

时间:2024-01-31 17:25:44浏览次数:24  
标签:sum 像素 CAM fg omega 物体 IRNet

IRNet论文:https://openaccess.thecvf.com/content_CVPR_2019/papers/Ahn_Weakly_Supervised_Learning_of_Instance_Segmentation_With_Inter-Pixel_Relations_CVPR_2019_paper.pdf

IRNet论文解读:https://zhuanlan.zhihu.com/p/246105364

图像分割弱监督技术综述:https://blog.csdn.net/hacker_long/article/details/88677087

CAM论文:https://openaccess.thecvf.com/content_cvpr_2016/papers/Zhou_Learning_Deep_Features_CVPR_2016_paper.pdf

CAM论文解读:https://zhuanlan.zhihu.com/p/415524071

IRNet是一种弱监督的实例分割方法,是基于image-level label的弱监督图像分割方法之一

Image-level label

image-level label或image-level tag指的是一张图片只有一个标签,这个标签往往是有概括性的,而忽略了很多细节。例如:“陆上交通工具”,而并不是细化成“自行车”“三轮车”“小型轿车”这种很细粒度的标签。(好处之一在于这种label相对方便获取)。一般基于image-level label的弱监督方法会预训练一个基于image-level label的网络,网络的分割能力不强,但能够大概地区分前景和背景。

IRNet的结构

IRNet的结构如下图所示:

可以看出,框架主要分为三个分支网络:

  • 分支1:一个使用image-level label训练的分类网络,可以看做是一个粗糙的语义分割网络,输出为Class Attention Maps(简称CAM);
  • 分支2:物体中心预测;
  • 分支3:物体边界预测。

分支1:训练得到CAM

CAM的概念是另一篇15年的论文Learning Deep Features for Discriminative Localization中提出的。这篇文章提出了利用GAP(global average pooling)来替代一般特征识别网络最后的全连接层(GAP的概念是更早的论文提出的,这里简单记录不再仔细分析)。

Global Average Pooling

GAP原本是一种正则化训练方法。它的提出动机在于:

  1. 替代全连接层,减少参数量,也就减少了可训练参数,环节模型的过拟合问题;
  2. 强制特征图与类别对应,对于卷积结构而言更加自然。

GAP的主要原理如下:

假设通过特征提取网络,得到了4张\(6 \times 6\)的特征图,则现在对4张feature map分别做average pooling,得到4个\(1 \times 1\)的特征图,相当于得到了一个\(1 \times 4\)的特征向量。这个特征向量可以送入softmax层进行分类。

Global Average Pooling(右)与常规的全连接层(左)对比

Class Activation Mapping

CAM的主要目的是,假设一张图里有若干个不同类别的目标,而现在只需要重点关注一个类别,或得到不同类别的特征图中最重视的特征。

CAM利用了GAP网络的输出。还是接着上面\(1 \times 4\)的特征向量的例子来理解。假设现在得到了4张\(6 \times 6\)的特征图,CAM的生成方法是:对特征图进行上采样,得到与原图一样的尺寸,再通过GAP,得到\(1 \times 4\)的特征向量。向量中的每一维再向后送入一个全连接的层,每一层对应着一个类别,如图所示:

例如,当我们注重对狗的分类(假设是第二类)时,通过让网络训练、调整\(1 \times 4\)的特征向量到狗分类的权值\(\omega_{12},\omega_{22},\omega_{32},\omega_{42}\),即可最终得出如上图中的heat map,我们会发现网络的重点在于狗的位置。当然,如果识别目标是人类(假设是第三类),网络会通过调整\(1 \times 4\)的特征向量到狗分类的权值\(\omega_{13},\omega_{23},\omega_{33},\omega_{43}\)来生成对应的CAM。

数学上的解释

设\(f_k(x,y)\)是第k个特征图上\((x,y)\)位置的值,则通过GAP可以得到\(F_k=\sum_{x,y}f_k(x,y)\),对于某个类别c,在经过softmax前的输入值为:\(s_c=\sum_k\omega_k^cF_k\),最终输出的类别值是:\(P_c = \frac{exp(s_c)}{\sum_c exp(s_c)}\). 而这个时候得到的类别c的CAM可以表示为\(M_c\):

\[s_c = \sum_k\omega_k^cF_k = \sum_k\omega_k^c\sum_{x,y}f_k(x,y) = \sum_{x,y}\sum_k\omega_k^cf_k(x,y)\\ M_c = \sum_k\omega_k^cf_k(x,y) \]

分支2:物体中心预测

这一步实际上就是预测物体的质心,然后利用质心的性质确定那些点是属于物体的。displacement field上的每个点实际上表示着原图中这个点到物体质心的向量。颜色代表向量的角度,饱和度代表向量的长度。当前点到质心的偏移量\(D(x)\)可以用一种迭代的形式进行优化,如下图所示:

displacement field和位移更新方法

基本思想是找到偏移值较小一些点作为物体的中心,再利用上图中的优化方法对图像中的点进行迭代更新,最终用一个物体的中心所能到达的所有点的集合视为一个instance,这样可以得到一个无类别的instance图像。

再将其与分支1中得到的CAMs相结合,可以得到instance-wise CAMs。

在常规理解下,不知道物体的中心的ground truth,怎么算出最初始的位移场?然而,这篇文章提出了一种在不知道物体中心的情况下的解决办法。

首先,分支1可以看做一个简易的图像分割网络,得到的结果虽然准确性很低,但能够提供图上每个像素对应不同class的基础的置信度信息。对于每个像素,我们将其分为几类

  • 最高confidence高于threshold:将像素认定为最高confidence所对应的类别;
  • 最高confidence低于threshold:像素标记为ignored。

接下来,我们对每个像素取一个半径为\(\gamma\)的邻域,并将其与邻域中的所有其他像素构成像素对。像素对可以分成三种(如图所示):

  1. 像素对中的两个像素属于同一类:\(P^+\);
  2. 像素对中的两个像素不属于同一类:\(P^-\);
  3. 像素对中存在像素属于ignore:ignore。

对于一个前景正像素对\(P_{fg}^+=(i,j)\),则该像素对中的两个像素拥有相同的物体中心。即设\(x\)为像素坐标,\(D(x)\)为像素到中心的偏移值,则有:

\[x_i + D(X_i) = x_j + D(X_j)\\ x_j - x_i = D(x_i) - D(x_j) \]

令:

\[\hat{\delta} = x_j - x_i\\ \delta = D(x_i) - D(x_j) \]

则\(\hat{\delta} - \delta\)应该是要趋近于0的,于是定义对于前景正像素对的损失函数:

\[L^D_{fg} = \frac{1}{P_{fg}}\sum_{(i,j)\in P_{fg}}|\delta(i,j) - \hat{\delta}(i,j)| \]

对于背景正像素对\(P_{bg}^+=(i,j)\),由于理论上一个物体的所有点到质心的距离(带方向)总和为0,因此损失函数:

\[L^D_{bg} = \frac{1}{P_{bg}}\sum_{(i,j)\in P_{fg}}|\delta(i,j)| \]

这样就完成了网络中的对于“物体中心点预测”的损失函数的定义。

分支3:物体边界预测

上面找到的像素对可不只是为物体中心预测准备的,而是也可以用于物体的边界预测。这篇文章引入了像素对关联度\(a_{ij}\)的概念:

\[a_{ij} = 1 - max_{k\in\Pi_{ij}}B(x_k) \]

其中,\(B(x_k)\)表示边界,\(\Pi_{ij}\)表示一个像素对\((i,j)\)之间的所有点。即当所有点中最大的点\(x'\)满足\(B(x')=1\),则有\(a_{ij} = 0\)。两个点之间的像素对关联小,也就意味着两个点之间可能存在着边界。

因此,对于正像素对和负向素对的定义,可以得到边界预测的损失函数:

\[L^B = -\sum_{(i,j)\in P_{fg}^+}\frac{log\ a_{ij}}{2|P_{fg}^+|} - \sum_{(i,j)\in P_{bg}^+}\frac{log\ a_{ij}}{2|P_{bg}^+|} - \sum_{(i,j)\in P^-}\frac{log(1-a_{ij})}{|P^-|} \]

分支2和分支3的loss合并

\[L = L^D_{fg} + L^D_{bg} + L^B \]

最终IRNet的总体结构一览:

标签:sum,像素,CAM,fg,omega,物体,IRNet
From: https://www.cnblogs.com/pab-oolongtea/p/17999715

相关文章

  • AirNet使用笔记10(组播测试)
    1、修改MSDP2的主机名,IP改为不同网段,加路由测试SMC:/home/cdatc/AirNet/config/network.xml<nodehostname="msdp2"showname="msdp2"position="ACC"logic_position="ACC"stationno="4"bakenode="3"grouptype=&quo......
  • AirNet使用笔记9
    摘要:音视频工具;1、合成通用音视频工具,工具支持将屏幕操作记录文件(.dat/.fdat)和语音回放文件(.wav)合成为通用视频格式文件(例如.mp4).dat是一种自定义的数据格式;.fdat是mp4格式;合并时候需要直接把fdat和wav进行合成(屏幕记录文件(.dat/.fdat)放入工具目录下的datafiles文件夹中;将音频文......
  • AirNet使用笔记8
    摘要:SDD显示多监视源航迹;1、SDD同时显示多监视源航迹,在“DataSource”选择。.sdd_offline.conf.0不加点不是隐藏文件也行。[root@ACC-3conf]#more/home/cdatc/AirNet/bin/conf/.sdd_offline.conf.0B_OPS_IS_MAINTAIN=1......
  • AirNet使用笔记5
    1、DBM“升级工具”,“InstallPosition”之后“UpdatePosition”失败;“ShowLog”提示:/home/cdatc/InstallTK/copyAirNet:errorwhileloadingsharedlibraries:libQtXml.so.4:cannotopensharedobjectfile:Nosuchfileordirectory原因:/usr/lib64下缺少以下3个libQt*......
  • AirNet使用笔记4
    1、DBM“航迹与计划相关配置”中“自动相关参数”:“相关最小权重值(含)”:最小就是二次代码,航班号,地址码全部算下来的,例如航班号一致6,二次代码不一致-3,24地址码一致,最终3,满足最小权重;“直接相关权重值(含)”:权重值(含)为12,指仅正值加起来满足12,就相关,不管负值(不同时的负值)。2、DBM“发布......
  • MIRNetV2 更快、更强、更轻量!
    前言 本文介绍了MIRNetV2,它的核心模块为MRB,它是一种多尺度特征提取、聚合模块。在多尺度方面,它通过下采样方式构建了三个尺度的特征;在特征聚合方面,它采用了SKNet一文的特......