DiffSeg——基于Stable Diffusion的无监督零样本图像分割

概述

基于计算机视觉的模型的核心挑战之一是生成高质量的分割掩模。大规模监督训练的最新进展已经实现了跨各种图像风格的零样本分割。此外,无监督训练简化了分割,无需大量注释。尽管取得了这些进展,构建一个能够在没有注释的零样本设置中分割任何东西的计算机视觉框架仍然是一项复杂的任务。语义分割是计算机视觉模型中的一个基本概念,涉及将图像划分为具有统一语义的较小区域。该技术为许多下游任务奠定了基础,例如医学成像、图像编辑、自动驾驶等。

为了推进计算机视觉模型的发展,图像分割不局限于类别有限的固定数据集,这一点至关重要。相反,它应该充当各种其他应用程序的多功能基础任务。然而,在每个像素的基础上收集标签的高昂成本提出了重大挑战,限制了不需要注释且缺乏对目标的事先访问的零样本和监督分割方法的进展。本文将讨论自注意力层如何Stable Diffusion可以促进创建能够在零样本设置中分割任何输入的模型,即使没有适当的注释。这些自注意力层本质上理解通过预训练的稳定扩散模型学习的对象概念。

DiffSeg:增强的零样本分割算法

语义分割是将图像划分为不同部分的过程,每个部分共享相似的语义。该技术构成了众多下游任务的基础。传统上,零样本计算机视觉任务依赖于监督语义分割,利用带有注释和标记类别的大型数据集。然而,在零样本设置中实现无监督语义分割仍然是一个挑战。虽然传统的监督方法是有效的,但它们的每像素标记成本往往令人望而却步,这凸显了在限制较少的零样本设置中开发无监督分割方法的必要性,其中模型既不需要注释数据也不需要数据的先验知识。

为了解决这一限制,DiffSeg 引入了一种新颖的后处理策略,利用稳定扩散框架的功能来构建能够在任何图像上进行零镜头传输的通用分割模型。稳定扩散框架已证明其在根据提示条件生成高分辨率图像方面的功效。对于生成的图像,这些框架可以使用相应的文本提示生成分割掩模,通常仅包括主要的前景对象。

相比之下,DiffSeg 是一种创新的后处理方法,它通过利用扩散模型中自注意力层的注意力张量来创建分割掩模。 DiffSeg 算法由三个关键组件组成:迭代注意力合并、注意力聚合和非极大值抑制,如下图所示。

DiffSeg 算法通过聚合具有空间一致性的 4D 注意力张量,并通过采样锚点来利用迭代合并过程,从而保留多个分辨率下的视觉信息。这些锚点充当合并注意力蒙版的发射台,并最终吸收相同的对象锚点。 DiffSeg 框架通过以下方式控制合并过程: KL散度法衡量两个注意力图之间的相似度。

与基于聚类的无监督分割方法相比,开发人员不必在 DiffSeg 算法中事先指定聚类的数量,即使没有任何先验知识,DiffSeg 算法也可以在不利用额外资源的情况下产生分割。总的来说,DiffSeg 算法是“一种新颖的无监督零样本分割方法,利用预先训练的稳定扩散模型,无需任何额外资源或先验知识即可分割图像。=

DiffSeg:基本概念

DiffSeg 是一种新颖的算法,它建立在扩散模型、无监督分割和零样本分割的学习基础上。

扩散模型

DiffSeg 算法建立在预训练扩散模型的学习基础上。扩散模型是最流行的计算机视觉模型生成框架之一,它从采样的各向同性高斯噪声图像中学习前向和反向扩散过程以生成图像。稳定扩散是扩散模型最流行的变体,它用于执行各种任务,包括监督分割、零样本分类、语义对应匹配、标签高效分割和开放词汇分割。然而,扩散模型的唯一问题是它们依赖高维视觉特征来执行这些任务,并且它们通常需要额外的训练才能完全利用这些特征。

无监督分割

DiffSeg 算法与无监督分割密切相关,无监督分割是一种现代人工智能实践,旨在在不使用任何注释的情况下生成密集的分割掩模。然而,为了提供良好的性能,无监督分割模型确实需要对目标数据集进行一些事先的无监督训练。基于无监督分割的人工智能框架可以分为两类:使用预训练模型的聚类和基于不变性的聚类。在第一类中,框架利用预先训练的模型学习的判别特征来生成分割掩模,而属于第二类的框架使用通用聚类算法,该算法优化两个图像之间的相互信息,将图像分割成语义簇并避免退化分割。

零样本分割

DiffSeg 算法与零样本分割框架密切相关,零样本分割框架是一种无需任何事先训练或数据知识即可分割任何内容的方法。尽管零样本分割模型需要一些文本输入和提示,但它们近年来已经展示了出色的零样本传输能力。相比之下,DiffSeg 算法采用扩散模型来生成分割,无需查询和合成多个图像,也不知道对象的内容。

DffSeg:方法和架构

DiffSeg 算法利用预训练的稳定扩散模型中的自注意力层来生成高质量的分割任务。

稳定扩散模型

稳定扩散是 DiffSeg 框架中的基本概念之一。稳定扩散是一种生成式人工智能框架,也是最流行的扩散模型之一。扩散模型的主要特征之一是前向和反向传递。在前向传播中,在每个时间步迭代地将少量高斯噪声添加到图像中,直到图像变成各向同性高斯噪声图像。另一方面,在反向过程中,扩散模型迭代地去除各向同性高斯噪声图像中的噪声,以恢复没有任何高斯噪声的原始图像。

稳定扩散框架采用编码器-解码器和带有注意层的 U-Net 设计,其中使用编码器首先将图像压缩到具有较小空间维度的潜在空间,并利用解码器解压缩图像。 U-Net 架构由一堆模块化块组成,其中每个块由以下两个组件之一组成:Transformer 层和 ResNet 层。

组件和架构

扩散模型中的自注意力层以空间注意力图的形式对固有对象的信息进行分组,而 DiffSeg 是一种新颖的后处理方法,可将注意力张量合并到有效的分割掩模中,管道由三个主要组件组成:注意力聚合、非极大值抑制和迭代注意力。

注意力聚合

对于经过 U-Net 层和编码器的输入图像,稳定扩散模型总共生成 16 个注意力张量,每个维度有 5 个张量。生成 16 个张量的主要目标是将这些具有不同分辨率的注意力张量聚合成具有尽可能高的分辨率的张量。为了实现这一目标,DiffSeg 算法对 4 个维度进行不同的处理。

在四个维度中,注意力传感器中的最后 2 个维度具有不同的分辨率,但它们在空间上是一致的,因为 DiffSeg 框架的 2D 空间图对应于位置和空间位置之间的相关性。结果,DiffSeg 框架将所有注意力图的这两个维度采样为最高分辨率,64 x 64。另一方面,前 2 个维度表示注意力图的位置参考,如下图所示。

由于这些维度指的是注意力图的位置,因此需要相应地聚合注意力图。此外,为了确保聚合的注意力图具有有效的分布,框架在聚合后对分布进行归一化,并为每个注意力图分配与其分辨率成比例的权重。

迭代注意力合并

虽然注意力聚合的主要目标是计算注意力张量,但主要目标是将张量中的注意力图合并到一堆对象提案中,其中每个单独的提案包含内容类别或单个对象的激活。所提出的实现此目的的解决方案是通过在张量的有效分布上实施 K-Means 算法来查找对象的簇。然而,使用 K-Means 并不是最佳解决方案,因为 K-Means 聚类需要用户事先指定聚类的数量。此外,实施 K 均值算法可能会导致同一图像产生不同的结果,因为它随机地依赖于初始化。为了克服这个障碍,DiffSeg 框架建议生成一个采样网格,通过迭代合并注意力图来创建建议。

非极大值抑制

迭代注意力合并的上一步以概率注意力图的形式生成一个对象提案列表,其中每个对象提案都包含对象的激活。该框架利用非极大值抑制将对象建议列表转换为有效的分割掩模,并且该过程是一种有效的方法,因为列表中的每个元素已经是概率分布图。对于所有地图上的每个空间位置,该算法采用最大概率的索引,并根据相应地图的索引分配隶属度。

DiffSeg:实验和结果

用于无监督分割的框架使用两个分割基准,即 Cityscapes 和 COCO-stuff-27。 Cityscapes 基准是一个包含 27 个中级类别的自动驾驶数据集,而 COCO-stuff-27 基准是原始 COCO-stuff 数据集的精选版本,它将 80 个事物和 91 个类别合并为 27 个类别。此外,为了分析分割性能,DiffSeg 框架使用并集或 mIoU 和像素精度或 ACC 上的平均交集,并且由于 DiffSeg 算法无法提供语义标签,因此它使用匈牙利匹配算法来分配地面真值掩模每个预测的掩模。如果预测掩码的数量超过地面实况掩码的数量,框架会将不匹配的预测任务视为假阴性。

此外,DiffSeg框架还强调以下三个工作来运行干扰:语言依赖(LD)、无监督适应(UA)和辅助图像(AX)。语言依赖意味着该方法需要描述性文本输入以促进图像分割,无监督适应是指该方法需要在目标数据集上使用无监督训练,而辅助图像是指该方法需要额外的输入作为合成图像,或作为参考图像池。

成果

在 COCO 基准上,DiffSeg 框架包括两个 k-means 基线:K-Means-S 和 K-Means-C。 K-Means-C 基准包括 6 个聚类,通过对所评估的图像中的对象数量进行平均来计算,而 K-Means-S 基准则根据存在的对象数量为每个图像使用特定数量的聚类图像的真实情况,这两个基准的结果如下图所示。

可以看出,K-Means 基线优于现有方法,从而证明了使用自注意力张量的好处。有趣的是,K-Means-S 基准测试优于 K-Means-C 基准测试,这表明聚类数量是一个基本的超参数,调整它对于每个图像都很重要。此外,即使依赖相同的注意力张量,DiffSeg 框架也优于 K-Means 基线,这证明了 DiffSeg 框架不仅能够提供更好的分割,而且还可以避免使用 K-Means 基线带来的缺点。

在 Cityscapes 数据集上,DiffSeg 框架提供的结果与使用较低 320 分辨率输入的框架类似,同时在准确度和 mIoU 方面优于采用较高 512 分辨率输入的框架。

如前所述,DiffSeg 框架使用多个超参数,如下图所示。

注意力聚合是 DiffSeg 框架中采用的基本概念之一,在图像分辨率不变的情况下,使用不同聚合权重的效果如下图所示。

可以看出,图 (b) 中具有 64 x 64 地图的高分辨率地图产生了最详细的分割,尽管分割确实有一些可见的裂缝,而较低分辨率的 32 x 32 地图往往会过度分割细节,尽管它确实会导致增强的连贯分割。在图(d)中,低分辨率图无法生成任何分割,因为整个图像使用现有的超参数设置合并为单个对象。最后,图(a)利用比例聚合策略增强了细节并平衡了一致性。

总结

零样本无监督分割仍然是计算机视觉框架的最大障碍之一,现有模型要么依赖于非零样本无监督适应,要么依赖外部资源。为了克服这个障碍,我们讨论了稳定扩散模型中的自注意力层如何能够构建一个能够在零样本设置中分割任何输入而无需适当注释的模型,因为这些自注意力层持有以下固有概念预训练的稳定扩散模型学习的对象。我们还讨论了 DiffSeg,一种新颖的印后策略,旨在利用稳定扩散框架的潜力构建通用分割模型,可以在任何图像上实现零镜头传输。该算法依靠注意力间相似度和注意力内相似度将注意力图迭代地合并到有效的分割掩模中,以在流行的基准上实现最先进的性能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/591058.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ElementUI从unpkg.com完整下载到本地的方法 - 解决unpkg.com不稳定的问题 - 自建镜像站 - 不想打包只想cdn一下

方法 方法1)随便弄个文件夹,根据官网npm方法下载包,提取即可 npm i element-ui -S cd /node_modules/element-ui/ ls src 安装npm方法:https://nodejs.org/en 方法2)不推荐 - 在github中搜索对应的库zip包&#xff0…

视频编辑软件pitivi基本功之将三个相关视频合并成一个视频

视频编辑软件pitivi基本功之将三个相关视频合并成一个视频 一、素材来源:网站下载 到http://cpc.people.com.cn/GB/67481/435238/437822/437828/437900/index.html下载以下三个视频,鼠标右击视频——另存视频为 庆祝中国共产党成立100周年大会即将开始—…

用keras识别狗狗

一、需求场景 从照片从识别出狗狗 from keras.applications.resnet50 import ResNet50 from keras.preprocessing import image from keras.applications.resnet50 import preprocess_input, decode_predictions import numpy as np# 加载预训练的ResNet50模型 model ResNet5…

240503-关于Unity的二三事

240503-关于Unity的二三事 1 常用快捷键 快捷键描述CtrlP播放/停止Ctrl1打开Scene窗口Ctrl2打开Game窗口Ctrl3打开Inspect窗口Ctrl4打开Hierarchy窗口Ctrl5打开Project窗口Ctrl6打开Animation窗口 2 关联VisualStudio2022 3 节约时间:将最新声明的参数移动到最上…

华为机考入门python3--(20)牛客20- 密码验证合格程序

分类&#xff1a;字符串 知识点&#xff1a; 遍历字符串的每个字符 for char in my_str: 可以直接比较字符范围 a < char < z 列表统计元素个数 my_list.count(elem) 寻找子串 my_str.find(sub_str) 题目来自【牛客】 import re import sysdef check_…

【算法系列】字符串

目录 leetcode题目 一、最长公共前缀 二、最长回文子串 三、二进制求和 四、字符串相加 五、字符串相乘 六、仅仅反转字母 七、字符串最后一个单词的长度 八、验证回文串 九、反转字符串 十、反转字符串 II 十一、反转字符串中的单词 III leetcode题目 一、最长公…

如何使用提示测试为LLMs构建单元测试?

原文地址&#xff1a;how-to-build-unit-tests-for-llms-using-prompt-testing 确保您的人工智能交付&#xff1a;快速测试完美生成应用程序的基本指南 2024 年 4 月 26 日 如果你曾经编写过软件&#xff0c;你就会知道测试是开发过程中必不可少的一部分。特别是单元测试&#…

华为机考入门python3--(19)牛客19- 简单错误记录

分类&#xff1a;字符串 知识点&#xff1a; 分割字符串 my_str.split(\\) 字符串只保留最后16位字符 my_str[-16:] 列表可以作为队列、栈 添加元素到第一个位置 my_list.insert(0, elem) 增加元素到最后一个位置 my_list.append(elem) 删除第一个 my_list.pop(0)…

Redis---------实现商品秒杀业务,包括唯一ID,超卖问题,分布式锁

订单ID必须是唯一 唯一ID构成&#xff1a; 代码生成唯一ID&#xff1a; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Component; import java.time.LocalDateTime; import java.time.ZoneOffset; import java.tim…

Java毕业设计 基于SSM SpringBoot vue宠物领养平台

Java毕业设计 基于SSM SpringBoot vue宠物领养平台 SSM 宠物领养平台 功能介绍 首页 图片轮播 新闻信息 新闻类型 新闻详情 宠物百科 宠物百科类型 宠物百科详情 宠物 宠物类型 宠物详情 立即领养 留言 论坛 发布帖子 登录 个人中心 宠物收藏 宠物领养订单 后台管理 登录注…

EtherCAT开发_3_SSC生成协议栈移植到STM32F405

一、协议栈的生成 协议栈的生成可参考《https://blog.csdn.net/g360250466/article/details/129847081》 几个重点的字段&#xff1a; 1、Hardware中 EL9800_HW, 设置为1&#xff0c;在该基础上进行修改 CONTROLLER_16BIT&#xff0c;设置为0 CONTROLLER_32BIT&#xff0c;设置…

PG控制文件的管理与重建

一.控制文件位置与大小 逻辑位置&#xff1a;pgpobal 表空间中 物理位置&#xff1a;$PGDATA/global/pg_control --pg_global表空间的物理位置就在$PGDATA/global文件夹下 物理大小&#xff1a;8K 二.存放的内容 1.数据库初始化的时候生成的永久化参数&#xff0c;无法更改…

Golang | Leetcode Golang题解之第66题加一

题目&#xff1a; 题解&#xff1a; func plusOne(digits []int) []int {n : len(digits)for i : n - 1; i > 0; i-- {if digits[i] ! 9 {digits[i]for j : i 1; j < n; j {digits[j] 0}return digits}}// digits 中所有的元素均为 9digits make([]int, n1)digits[0]…

自定义拦截器jwt登录校验接口模拟账号登录

五一闲在宿舍&#xff0c;本来想写一个自己的简易博客网站&#xff0c;发现vue基础太差&#xff0c;做不出来页面效果于是便放弃&#xff0c;但也没有完全放弃。于是我分析了一下简易博客的后端实现流程&#xff0c;除了最基本的crud以外&#xff0c;在自己目前的对接口的分析中…

ubuntu搭建jupyter_notebook服务器

环境&#xff1a;ubuntu 22.04 目录 环境&#xff1a;ubuntu 22.04 一、创建一个anaconda用户 创建用户condaUser 为用户condaUser设置密码 开放opt文件夹的权限 登录condaUser用户 二、安装anaconda 下载anaconda 安装anaconda 三、添加环境变量 四、anaconda换源 …

stm32之hal库串口中断和ringbuffer的结合

前言 结合hal库封装的中断处理函数使用rt-thread内部的rt-ringbuffer数据结构源码改造hal库串口部分的源码&#xff0c;将内部静态方法变为弱引用的函数&#xff0c;方便重写标志位采用信号量或变量的两种方式&#xff0c;内部数据分配方式采用动态和静态两种方式 hal库部分串…

GDPU JavaWeb 猜字母游戏

他在对你重定向打卡的大饼与立即跳转到你面前的谎言之间反复横跳。 sendRedirect与forward sendRedirect与forward区别 sendRedirect用于将请求重定向到另一个资源&#xff0c;可以是同一个应用程序内的其他 Servlet&#xff0c;也可以是其他 Web 应用程序的资源&#xff0c;…

R语言数据探索与分析-运用时间序列预测模型对成都市API进行预测分析

一、研究背景 “绿水青山就是金山银山&#xff0c;要让绿水青山变成金山银山”让人们深刻的意识到环境的重要性。与此同时&#xff0c;由于现代生活水平的不断提高&#xff0c;所带来的环境污染也不断增多&#xff0c;空气以及环境的污染带来了越来越多的疾病&#xff0c;深刻…

基于node.js+css+html+mysql博客系统

博主介绍&#xff1a; 大家好&#xff0c;本人精通Java、Python、Php、C#、C、C编程语言&#xff0c;同时也熟练掌握微信小程序、Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我有丰富的成品Java、Python、C#毕设项目经验&#xff0c;能够为学生提供各类…

Docker 加持的安卓手机:随身携带的知识库(一)

这篇文章聊聊&#xff0c;如何借助 Docker &#xff0c;尝试将一台五年前的手机&#xff0c;构建成一个随身携带的、本地化的知识库。 写在前面 本篇文章&#xff0c;我使用了一台去年从二手平台购入的五年前的手机&#xff0c;K20 Pro。 为了让它能够稳定持续的运行&#xf…