【文献阅读笔记】基于自监督的异常检测和定位:SSM

news2025/1/16 8:14:48

2022 IEEE TRANSACTIONS ON MULTIMEDIA
领域:异常检测
目标:图像输入数据

文章目录

  • 1、模型
  • 2、方法
    • 2.1、random masking
    • 2.2、restoration network
    • 2.3、损失函数
    • 2.4、推理时的渐进细化
  • 3、实验
  • 4、引用
  • 5、想法

1、模型

在这里插入图片描述
训练: 每个图像实时生成随机的掩码,然后将掩码输入到具有两个预测头的条件自动编码器,一个用于重建图像,一个用于重建掩码。通过随机掩码,每个图像都被增强为不同的训练三元组<增加掩码的图片,掩码,原始图片>。使得自动编码器能够学习使用各种形状的掩码进行重建。
推理: 提出新的渐进掩码细化方法。一组互补的掩码作为初始化掩码。然后基于重建误差,掩码被迭代的细化并收缩到可能的异常区域。同时使用多个尺度的初始掩码进行掩码细化,并使用他们的集合来检测异常。

在这里插入图片描述
渐进细化的结果,随着不断迭代进行,掩码逐渐与异常区域重合。

训练时候的掩码,类似于异常图像的异常部分。训练这个模型的目的是,让模型学会将异常的图像重建,并分别重建出正常的图像和异常部分。而推理的目的是,找到异常的真实位置。

2、方法

2.1、random masking

每个图片被分解成多个块,每个块的大小是 k × k k \times k k×k个像素大小的正方形。掩码的大小也和这个正方形相同,在后面掩码细化的过程中,也是以这个掩码大小进行更新。

2.2、restoration network

在这里插入图片描述
恢复网络的骨干是条件自动编码器。由掩码引导,而不是简单的重建图像。假设掩蔽区域与其对应的恢复之间的差异对于检测异常是重要的。

为了提高鲁棒性和重建能力,引入掩码注意模块
在这里插入图片描述
掩码注意模块被添加在每个子网络的前面。每个掩码注意模块,使用最近邻方法将掩码下采样,并匹配到相应输入特征映射的空间维度。输出为:
在这里插入图片描述

2.3、损失函数

注意重建的图像其实包含两个部分,未被掩蔽的区域用本来图像中复制,掩蔽的区域进行了恢复。
在这里插入图片描述
损失函数包括:均方误差、梯度幅度相似性损失、结构相似性指数和掩码重建的损失。
在这里插入图片描述

2.4、推理时的渐进细化

主要解决的是如何定位异常。分为两个阶段:掩码初始化和掩码细化。

根据给定输入图像和重建图像,引入误差函数。这个误差函数,用于计算每个像素的误差分数并将具有最大分数的区域视为潜在异常,渐进的细化并缩小的可能的异常区域。

在这里插入图片描述
初始化选择: 一组互补的掩码。共同覆盖所有像素,避免遗漏可能的异常。将不同掩码的分数图平均图平均为单个分数图,得到一个总体的初始化异常分数图。

细化过程中: 将较小误差的区域视为正常区域,并在掩码中移除,之后进行下一次迭代。当掩码覆盖的区域大部分是异常区域时候,提供更多的图像信息并不能显著降低异常区域的重建误差,相应的掩码保持不变,这时候停止推理,获得最终的掩码。

在这里插入图片描述
根据阈值 η \eta η更新掩码,并且阈值是验证集中的最大误差,可以将验证集的最大误差认为是正常和异常之间的粗略边界。

3、实验

异常检测

RETINAL-OCT DATASET
在这里插入图片描述
MVTec AD DATASET
在这里插入图片描述

异常定位
在这里插入图片描述
效率

在这里插入图片描述
SSM具有更高的AUC,占用较小的内存,并具有较高的计算效率。

消融实验
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可视化结果
在这里插入图片描述

4、引用

C. Huang, Q. Xu, Y. Wang, Y. Wang and Y. Zhang, “Self-Supervised Masking for Unsupervised Anomaly Detection and Localization,” in IEEE Transactions on Multimedia, vol. 25, pp. 4426-4438, 2023, doi: 10.1109/TMM.2022.3175611.

5、想法

  1. 掩码的类型是不是可以与实际的异常更相似。
  2. 随机掩码和恢复的自监督学习。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

时间复杂度为O (nlogn)的排序算法

归并排序 归并排序遵循分治的思想&#xff1a;将原问题分解为几个规模较小但类似于原问题的子问题&#xff0c;递归地求解这些子问题&#xff0c;然后合并这些子问题的解来建立原问题的解&#xff0c;归并排序的步骤如下&#xff1a; 划分&#xff1a;分解待排序的 n 个元素的…

智能诊疗体验:整合AI技术的互联网医院小程序开发

在科技化的趋势下&#xff0c;互联网医院小程序的开发变得愈发重要&#xff0c;尤其是通过整合人工智能&#xff08;AI&#xff09;技术&#xff0c;进一步提升了就医的效率。 一、引言 互联网医院小程序其开发目标是提高医疗服务的效率&#xff0c;同时也也提升了用户的就医…

Linux学习笔记之七(shell脚本的基本语法)

Shell 1、Shell脚本2、常用运算符2、特殊语法4、关于变量的一些命令4.1、echo4.2、export4.3、read4.4、declare/typeset4.5、local4.6、unset 5、基本逻辑语法5.1、if判断5.2、for循环5.3、while循环5.4、case语句 6、函数定义7、多脚本链接 1、Shell脚本 学习shell脚本开发之…

Difference between getc(), getchar(), and gets()

getc(): 从输入中只能读单个字符 getchar()&#xff1a;从标准输入流中输入都单个字符。 两者基本等同&#xff0c;唯一不一样的是getc()是任何输入流&#xff0c;而getchar()是标准输入流。 gets:可以读入含有空格的字符串 // Example for getc() in C #include <stdio.h…

DDD系列 - 第4讲 从架构师的角度看待DDD - 一个关于拆解、微服务、面向对象的故事(二)

目录 第3次拆解 - 面向对象分析与设计3.1 交互入口实现层3.2 面向对象分析3.2.1 根据业务映射类3.2.2 对象持久化仓库3.2.3 自定义属性类3.2.4 类间的关联关系3.2.5 分包提升内聚、包内指定入口类降低耦合3.2.6 定义交互出口3.3 流程编排 & 业务编排3.4 交互出口实现层 &am…

使用AOS实现网页动画效果

在现代Web开发中&#xff0c;动画效果是提升用户体验和页面交互性的重要因素之一。而AOS&#xff08;Animate On Scroll&#xff09;作为一个强大的动画库&#xff0c;可以帮助我们轻松地实现网页元素的滚动动画效果。 什么是AOS&#xff1f; AOS是一个基于CSS3和JavaScript的…

Python学习路线 - Python语言基础入门 - 判断语句

Python学习路线 - Python语言基础入门 - 判断语句 前言布尔类型和比较运算符布尔类型布尔类型的定义 比较运算符 if语句的基本格式if判断语句 if else 语句if elif else 语句判断语句的嵌套实战案例 前言 进行逻辑判断&#xff0c;是生活中常见的行为。同样&#xff0c;在程序…

【uni-app】赋予你的APP(Android原生)小程序开发能力

采用DCloud(数字天堂&#xff08;北京&#xff09;网络技术有限公司)的uniMPsdk(uni小程序SDK)&#xff0c;是为原生App打造的可运行基于 uni-app 开发的小程序前端项目的框架&#xff0c;从而帮助原生App快速获取小程序的能力。 uni-app文档地址(小程序开发人员开发用) uniMP…

冗余链路和生成树协议

文章目录 冗余链路生成树协议 冗余链路 背景&#xff1a;在许多交换机或者交换机设备组成的网络环境中&#xff0c;通常都使用一些备份连接&#xff0c;来提高网络的健全。在金融网中A和B之间不止一条线路&#xff0c;保证网络的安全性能。备份连接也叫做冗余链路 冗余链路带…

Xshell会话文件解密获取密码

Xshell会话文件解密获取密码 开发了一个小工具用于获取已存储的xshell会话密码功能简介截图展示下载地址 开发了一个小工具用于获取已存储的xshell会话密码 在日常开发中&#xff0c;服务器太多&#xff0c;密码记不住。使用xshell管理服务器会话&#xff0c;记住密码&#xf…

详解递归锁,以及递归锁与其他同步机制的区别

什么是递归锁 递归锁是一种多线程同步机制&#xff0c;用于解决线程在多次获取同一个锁时产生死锁的问题。在递归锁中&#xff0c;同一个线程可以多次获取同一个锁&#xff0c;而不会造成死锁。 递归锁具有两个主要操作&#xff1a;上锁&#xff08;lock&#xff09;和解锁&a…

python 自主学习笔记

文章目录 前言相关教程模板字符串JavaScriptC#Python 临时变量C#的ValueTuplePython字典 自定义模块化封装的文件路径问题解决方案 暂时结束 前言 最近在学halcon&#xff0c;机器视觉&#xff0c;越学越发现&#xff0c;python是无法避免的语言。因为python用途实在是太广了。…

深度解析:整数和浮点数在内存中的存储

深度解析&#xff1a;整数和浮点数在内存中的存储 引言 在计算机科学中&#xff0c;理解整数和浮点数在内存中的存储方式是深入学习的关键一步。这篇博客将带你深入探讨整数和浮点数的内存表示&#xff0c;并通过代码实例详细解析其存储结构。 整数的内存存储 对于整形来说&a…

Redis 数据结构详解

分类 编程技术 Redis 数据类型分为&#xff1a;字符串类型、散列类型、列表类型、集合类型、有序集合类型。 Redis 这么火&#xff0c;它运行有多块&#xff1f;一台普通的笔记本电脑&#xff0c;可以在1秒钟内完成十万次的读写操作。 原子操作&#xff1a;最小的操作单位&a…

【开源】基于Vue+SpringBoot的音乐平台

项目编号&#xff1a; S 055 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S055&#xff0c;文末获取源码。} 项目编号&#xff1a;S055&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统展示 四、核心代码4.1 查询单首…

超大规模集成电路设计----基本概念(二)

本文仅供学习&#xff0c;不作任何商业用途&#xff0c;严禁转载。绝大部分资料来自----数字集成电路——电路、系统与设计(第二版)及中国科学院段成华教授PPT 超大规模集成电路设计----基本概念&#xff08;二&#xff09; 简短的历史回顾(A Brief Historical Perspective)第…

栈和队列OJ题——15.循环队列

15.循环队列 622. 设计循环队列 - 力扣&#xff08;LeetCode&#xff09; * 解题思路&#xff1a; 通过一个定长数组实现循环队列 入队&#xff1a;首先要判断队列是否已满&#xff0c;再进行入队的操作&#xff0c;入队操作需要考虑索引循环的问题&#xff0c;当索引越界&…

SpringBoot MyBatis连接数据库 查询数据(注解方式)

创建项目时选择依赖 配置数据库连接 在resources中的 application.properties 配置文件进行连接的配置 #驱动名称 spring.datasource.driver-class-namecom.mysql.cj.jdbc.Driver#连接地址 spring.datasource.urljdbc:mysql://10.20.22.11:26954/canteen#数据库用户名 spring.d…

基于YOLOv7算法的的高精度实时通用目标检测识别系统(PyTorch+Pyside6+YOLOv7)

摘要&#xff1a;基于YOLOv7算法的高精度实时检测识别系统可用于日常生活中检测与定位多种目标&#xff0c;此系统可完成对输入图片、视频、文件夹以及摄像头方式的目标检测与识别&#xff0c;同时本系统还支持检测结果可视化与导出。本系统采用YOLOv7目标检测算法来训练数据集…

工作几年了,你真的懂 Redis 嘛?

大家好&#xff0c;我是伍六七。一个专注于输出 AI 编程内容的在职大厂资深程序员&#xff0c;全国最大 AI 付费社群破局初创合伙人&#xff0c;关注我一起破除 35 诅咒。 Redis 基本上是大部分技术公司都会使用的缓存框架&#xff0c;但是我发现很多程序员其实并不懂 Redis。 …