Edge论文的创新点
创新点及其来源
1. 从灰度边缘重建RGB图像的方法(EdgRec)
-
基于的方法:传统的重建方法,如使用自动编码器或生成模型来重建正常样本的图像,并通过对原始图像和重建图像的比较来检测异常。
- 重建过程:
-
- 训练阶段:
使用正常图像训练一个重建模型,如自动编码器。
模型学习如何捕捉正常图像的特征,并尝试在没有任何异常的情况下重建这些图像。
- 训练阶段:
-
- 重建目标:
在理想情况下,模型应该能够准确地重建训练时使用的正常图像。
这意味着,如果输入的是正常图像,模型输出的重建图像应该与输入图像非常相似。
- 重建目标:
-
- 异常检测
当模型被训练好之后,我们使用它来处理两种类型的图像:
正常图像:
如果输入的是正常图像,模型应该能够重建出与输入图像非常相似的图像,因为模型已经学习了正常图像的特征。
异常图像:
如果输入的是包含异常的图像,模型通常无法准确地重建这些图像,因为异常区域的特征与模型训练时学习的正常特征不同。
因此,重建的图像与原始异常图像之间的差异可以用来检测和定位异常区域。
使用像素级的距离度量(如L2距离或结构相似性SSIM)来评估重建误差。
- 异常检测
-
存在的问题:传统重建方法难以控制模型泛化能力的边界。模型泛化能力过强可能导致异常区域也被很好地重建,而泛化能力不足则无法重建正常区域中的高频变化部分,导致误报。

-
创新点:提出从灰度边缘重建RGB图像的方法。通过UNet型去噪自编码器和跳跃连接来重建图像,这样可以保留原始图像中的高频信息,并迫使网络记忆正常区域的低频和颜色信息。去噪设计可以防止模型直接复制原始的高频组件。
对照图像详细说明
训练阶段(Training)
Encoder
- 功能:将原始图像转换成灰度边缘表示。
- 创新点:不是直接使用原始图像的全部信息,而是转换成一种更简化的表示形式,即灰度边缘图像。这一步骤迫使网络必须学习如何从较少的信息中恢复出丰富的细节。
Decoder
- 功能:从灰度边缘表示中重建出原始的RGB图像。
- 创新点:网络需要学习如何从简化的边缘信息中恢复出完整的图像细节,这要求网络必须学习到正常图像的深层次特征。
Loss
- 功能:衡量重建图像与原始图像之间的差异。
- 创新点:损失函数不仅包括传统的像素级误差(如L2损失),还可能包括结构相似性(SSIM)损失,以确保重建图像在结构上与原始图像保持一致。
Back propagation
- 功能:基于损失函数的结果,通过网络的反向传播来更新模型的权重。
- 目的:使得模型在后续的训练中能够更好地重建图像。
测试阶段(Testing)
Encoder
- 功能:在测试阶段,编码器同样将输入图像转换成灰度边缘表示。
- 一致性:表明模型在测试时也依赖于从灰度边缘信息中提取特征。
Decoder
- 功能:尝试从灰度边缘表示中重建出RGB图像。
- 检测原理:如果输入图像包含异常,解码器将无法准确地重建出原始图像,因为异常区域的灰度边缘与模型在训练阶段学到的正常边缘不同。
Comparing Function
- 功能:评估原始图像和重建图像之间的差异,从而检测出异常区域。
- 创新点:这个比较函数不仅考虑了像素级的差异,还结合了颜色和梯度差异,以更准确地检测异常区域。
图解创新点
从图中的“Encoder”和“Decoder”部分,我们可以看到从灰度边缘重建RGB图像的过程。这一过程体现了EdgRec方法的核心创新,即利用简化的灰度边缘信息来迫使网络学习如何重建出完整的RGB图像,从而在异常检测任务中实现更高的准确性和鲁棒性。
- 效果:在MVTec AD基准测试中达到了97.8%的检测率和97.7%的定位率(AUROC)。
2. 结合颜色和梯度差异的异常评估函数
-
基于的方法:像素级的L2距离或结构相似性(SSIM)比较原始和重建的图像。
- 过程:
- 使用像素级的L2距离或SSIM来比较原始和重建的图像。
- 通过比较结果来生成异常图。
- 过程:
-
存在的问题:直接使用像素级的L2距离比较可能会在重建过程中造成正常区域的退化,导致误报。
-
创新点:提出结合颜色和梯度差异的异常评估函数。新的颜色评估函数在CIELAB颜色空间中评估颜色差异,而结构差异评估则利用多尺度梯度幅度相似性(MSGMS)。这种结合可以有效检测颜色异常,并且对光照变化不敏感。
-
效果:在MVTec AD和MVTec 3D-AD数据集上都取得了有说服力的结果,并且使用RGB图像仅用于2D检测问题。
总结
本文提出的创新点在于从灰度边缘重建RGB图像的方法和结合颜色与梯度差异的异常评估函数,这些创新使得模型在工业表面异常检测任务中取得了显著的性能提升,同时保持了方法的可解释性和可调整性。
相关文章:
Edge论文的创新点
创新点及其来源 1. 从灰度边缘重建RGB图像的方法(EdgRec) 基于的方法:传统的重建方法,如使用自动编码器或生成模型来重建正常样本的图像,并通过对原始图像和重建图像的比较来检测异常。 重建过程: 训练阶…...
ComfyUI 高级实战:实现华为手机的AI消除功能
大家好,我是每天分享AI应用的萤火君! 不知道大家是否还记得华为 Pura 70的「AI消除」事件,当时使用 华为Pura 70 系列手机的智能消除功能时,该功能可以被用来消除照片中女性胸口处的衣物,这一功能曾引发广泛的关注和伦…...
我记得我曾喜欢过冬天
写在前面 1316 字 | 感触 | 世界 | 情感 | 体验 | 经历 | 想法 | 认知 正文 晚上出门,起电单车,很冷。冻得有些发抖。下车,我第一时间和珍发了消息。 我说,居然在四川感受到了哈尔滨的温度。 哈尔滨的夏天很热,但哈尔…...
最新夜间数据集发布LoLI-Street: 33000帧数据,涵盖19000个目标
最新夜间数据集发布LoLI-Street: 33000帧数据,涵盖19000个目标 Abstract 低光照图像增强(LLIE)对于许多计算机视觉任务至关重要,包括目标检测、跟踪、分割和场景理解。尽管已有大量研究致力于提高在低光照条件下捕捉的低质量图像…...
反向传播算法与随机搜索算法的比较
反向传播算法与随机搜索算法的比较 在这篇文章中,我们将通过一个简单的线性回归问题来比较反向传播算法和随机搜索算法的性能。我们将使用Python代码来实现这两种算法,并可视化它们的梯度下降过程。 反向传播算法 反向传播算法是深度学习和神经网络训…...
【PDF文件】默认被某种软件打开,如何进行修改?
当有时下载某种软件后,电脑中的PDF文件就默认由该种软件打开,每次需要右键选择打开方式才能选择需要的其他软件打开。如下图所示。 修改方法: (1)点击电脑的“设置”,选择应用 (2)…...
Kaggle Python练习:字符串和字典(Exercise: Strings and Dictionaries)
文章目录 问题:搜索特定单词并定位思路代码实现官方代码代码解析 更进一步 问题:搜索特定单词并定位 一位研究人员收集了数千篇新闻文章。但她想将注意力集中在包含特定单词的文章上。完成以下功能以帮助她过滤文章列表。 您的函数应满足以下条件&…...
React(四) 事件总线,setState的原理,PureComponent优化React性能,ref获取类组件与函数组件
文章目录 一、全局事件总线二、setState的原理1. 为什么要使用setState修改数据2. setState的三种用法(1) 基本使用(2) 传入回调函数(3) setState是一个异步调用 3. setState为什么要设置成异步 二、PureComponent优化性能1. React的diff算法以及Key的优化(扩展)(1) diff算法(2…...
Java学习-JVM
目录 1. 基本常识 1.1 JVM是什么 1.2 JVM架构图 1.3 Java技术体系 1.4 Java与JVM的关系 2. 类加载系统 2.1 类加载器种类 2.2 执行顺序 2.3 类加载四个时机 2.4 生命周期 2.5 类加载途径 2.6 双亲委派模型 3. 运行时数据区 3.1 运行时数据区构成 3.2 堆 3.3 栈…...
leed认证分几个级别
LEED(Leadership in Energy and Environmental Design)认证是一个评估建筑项目可持续性的严格框架,其级别主要分为以下四个: LEED认证(Certified):这是最低级别的认证,要求建筑项目…...
3.C++经典实例-计算一个数的阶乘
阶乘(factorial)是基斯顿卡曼于1808年发明的运算符号,用于表示一个正整数n的所有小于及等于该数的正整数的积。自然数n的阶乘写作n!。例如,5的阶乘表示为5! 1 2 3 4 5 120。 阶乘在数学和计算机科学中有广泛的应用。例如…...
深入理解Qt中的QTableView、Model与Delegate机制
文章目录 显示效果QTableViewModel(模型)Delegate(委托)ITEM控件主函数调用项目下载在Qt中,视图(View)、模型(Model)和委托(Delegate)机制是一种非常强大的架构,它们实现了MVC(模型-视图-控制器)设计模式。这种架构分离了数据存储(模型)、数据展示(视图)和数据操作(委托),使…...
解读《ARM Cortex-M3 与Cortex-M4 权威指南》——第1章 ARM Cortex-M处理器简介
1. 三级流水线设计 解释:三级流水线设计意味着处理器在执行指令时可以同时处理多个步骤。这些步骤通常包括取指(Fetch)、译码(Decode)和执行(Execute)。好处:这种设计提高了指令的执行效率,使得处理器能够在每个时钟周期内完成更多的工作,从而提升整体性能。2. 哈佛总…...
java集合类的框架体系
1.集合的好处 相比数组,他可以存储多种类型的元素,并且可以动态新增; 2. 集合分类 3.Collection接口 3.1常用方法 3.2迭代器-遍历 collection接口继承了Interable接口,collection的子类可以使用迭代器; 注意事项…...
基于SpringBoot+Vue+Uniapp家具购物小程序的设计与实现
详细视频演示 请联系我获取更详细的演示视频 项目运行截图 技术框架 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念,提供了一套默认的配置,让开发者可以更专注于业务逻辑而…...
什么是模糊测试?
近年来,随着信息技术的发展,各种新型自动化测试技术如雨后春笋般出现。其中,模糊测试(fuzz testing)技术开始受到行业关注,它尤其适用于发现未知的、隐蔽性较强的底层缺陷。这里,我们将结合AFL开…...
3.C++经典实例-奇数还是偶数
要判断一个数是奇数还是偶数,只需要判断这个数是否能被2整除即可,如果要判断是否能整除,则要判断当前数除以2的余数是否为0,在C中,余数,使用%号,因此,程序为: #include …...
真牛啊!全球人工智能标准教科书,斯坦福、麻省理工、加州大学等十多所顶尖机构为它点赞!!
这本《人工智能:计算代理基础》堪称全球人工智能标准教科书!它因其前沿的技术融合、丰富的实践案例以及理论深度与实践并重的特点而成为人工智能领域的热门书籍。 该书已经赢得了斯坦福大学、佐治亚理工学院、谷歌大脑、麻省理工学院、加州大学、微软研究…...
Android——通过MediaStore查询图片
查询图片: private void loadImageList() {String[] columns new String[]{MediaStore.Images.Media._ID, // 编号MediaStore.Images.Media.TITLE, // 标题MediaStore.Images.Media.SIZE, // 文件大小MediaStore.Images.Media.DATA, // 文件路径};Cursor cursor g…...
手写Spring IOC-简易版
目录 项目结构entitydaoIUserDaoUserDaoImpl serviceIUserServiceUserServiceImpl ApplicationContext 配置文件初始化 IOC 容器RunApplication 注解初始化 IOC 容器BeanAutowired Reference 项目结构 entity User Data NoArgsConstructor AllArgsConstructor Accessors(chai…...
基于算法竞赛的c++编程(28)结构体的进阶应用
结构体的嵌套与复杂数据组织 在C中,结构体可以嵌套使用,形成更复杂的数据结构。例如,可以通过嵌套结构体描述多层级数据关系: struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...
React Native 开发环境搭建(全平台详解)
React Native 开发环境搭建(全平台详解) 在开始使用 React Native 开发移动应用之前,正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南,涵盖 macOS 和 Windows 平台的配置步骤,如何在 Android 和 iOS…...
Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)
概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...
系统设计 --- MongoDB亿级数据查询优化策略
系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log,共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题,不能使用ELK只能使用…...
Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具
文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...
基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...
12.找到字符串中所有字母异位词
🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...
什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南
文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果
1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中,其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下: 初始判断与哈希计算: 首先,putVal 方法会检查当前的 table(也就…...
Spring是如何解决Bean的循环依赖:三级缓存机制
1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间互相持有对方引用,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...
