【论文阅读】Unsupervised Learning of Image Segmentation Based on Differentiable Feature Clustering

该论文提出了一种无监督的图像分割方法,通过可微的特征聚类和空间连续性损失函数实现。方法包括固定特征提取器优化聚类标签,然后用固定标签优化网络。实验表明,添加用户涂鸦输入和预训练进一步提高了分割精度。
摘要由CSDN通过智能技术生成

摘要

目标

  • 特征相似的像素应该被分为同一类别
  • 空间上距离近的像素应该被分为同一类别
  • 类别的数量应尽可能多
    三个指标有互相排斥的地方,但应该做到一个平衡

贡献点

  • 通过normalization和argmax实现可微的聚类
  • 空间连续性损失函数
  • 扩展了可以让用户输入的涂鸦,使结果更精确
  • 扩展一个预训练方法

介绍

把摘要再扩展地讲了一遍,提到之前的工作超像素提取+线性迭代聚类只满足了空间连续性

相关工作

经典方法

  • K-means:矢量量化的标准方法
  • GS(基于图的方法):利用特定的区域比较函数,针对全局或局部特征进行简单的贪心算法选择

深度学习

  • MsLRR:有监督和无监督通用,但因为基于超像素,和本篇之前的工作一样具有边界的限制
  • W-Net:无监督,估计分割后恢复原图,无惧边界
  • Unsupervised learning of foreground object segmentation:无监督,但只是前后景分割

基于用户输入的图像分割

  • Graph cut:最小化图像像素对应于节点的图的代价,可以用于涂鸦或者锚定框的输入
  • Image matting:抠图是像素标签软分配,图切割对每个像素就是前后景的分割
  • Constrained random walks:可以根据涂鸦划分给出前/后景的种子

以上方法都只能产生一个二值mask,基于多标签的无监督分割,有以下扩展算法

α-expansion:找到一个局部最小值使得α标签的像素不再轻易增加
α-β swap:找到一个局部最小值使得α和β标签不再被轻易地交换

基于CNN的弱监督分割

常用的语义分割弱监督标签:物体检测锚定框、图片的分类结果、涂鸦
一般流程:根据弱监督标签生成一个训练目标,使用这个训练目标训练网络,两个步骤交替进行

  • ScribbleSup:使用超像素把涂鸦扩展到整张图,再进行训练
  • e-SVM:用CPMC分割从锚定框得到像素级别的标记,再进行训练
  • Distinct class-specific saliency maps for weakly supervised semantic segmentation:根据图片类标签生成class saliency map再送入全卷积CRF网络训练

但这些弱监督方法有可能无法收敛到正确的结果,有以下改进版的端到端CNN方法

端到端的可微分割CNN

关于图像分割的深度学习研究一致围绕对图像特征的理解和提取。

  • deep embedded clustering (DEC):最小化 KL divergence loss,本文提出的方法只是简单地最小化 softmax loss
  • maximum margin clustering:半监督
  • discriminative clustering:半监督

方法

问题建模

f:提取特征
g:分配标签
c:标签
无监督方法,f和g是固定的,c待学习
有监督方法,c是固定的,f和g待学习
分解成两个子问题

  1. 用固定的f和g优化c
  2. 再用固定的c优化f和g

网络结构

在这里插入图片描述
一张RGB图像提取特征后通过一个1x1的卷积转换到一个q维的聚类空间(图中q=3),沿着这个空间的q个轴,通过batch norm把这个q维的特征向量归一化,使用argmax确定每个像素的标签是q维中的哪一维,根据这个确定的伪标签计算特征相似度损失和空间连续性损失,再反向传播。


不考虑batch,我理解的维度变化是这样的:HxW>提取特征后并转换空间>HxWxq>确定伪标签后>HxW
在这里插入图片描述
在训练网络时,先设一个较大的q,随着损失下降,q会逐渐变小,为了防止q变成1,所以需要对response map做一个归一化。

损失函数

  • 基本:
    在这里插入图片描述
  • 加入涂鸦:
    在这里插入图片描述
  • 特征相似误差:
    在这里插入图片描述
    c n c_n cn是根据 r n r_n rn进行argmax得到的,所以当i遍历到得到 c n c_n cn r n r_n rn时才有ln值累加,因为归一化后 r n r_n rn都是0到1,所以前面有个负号。
  • 空间连续性损失:
    在这里插入图片描述
    计算每个像素上下左右的的response map上的值的差别
  • 涂鸦损失:
    在这里插入图片描述

网络更新

前面提到的分解为两个子问题,实际上就是CNN前向计算和反向传播的过程。
使用随机梯度下降、Xavier初始化

Xavier初始化的基本思想是,若对于一层网络的输出和输出可以保持正态分布且方差相近,这样就可以避免输出趋向于0,从而避免梯度弥散情况。https://www.zhihu.com/search?type=content&q=Xavier%20%E5%88%9D%E5%A7%8B%E5%8C%96

另外一个重要的点就是与有确切标签的有监督学习不同,本方法在最后一个卷积层和argmax层之间加的batch norm非常关键,把response map中的每一个轴都归一化到0均值,单位方差,这样每个轴才能平均地进行比较,进而得到正确的类标签。

实验结果

连续性损失的有效性

关于特征相似性损失和连续性损失之间的比例,根据数据集需要的分割精度,设置不同的比例可以达到更好的效果。
在这里插入图片描述

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

用户输入涂鸦的分割

在这里插入图片描述

参考图像预训练的效果

在这里插入图片描述

源代码解析

github地址:https://github.com/kanezaki/pytorch-unsupervised-segmentation-tip/blob/master/demo.py

import argparse
import torch
import torch.nn as nn
import torch.nn.functional as F
import torch.optim as optim
from torchvision import datasets, transforms
from torch.autograd import Variable
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值