当前位置: 首页 > news >正文

Memory-augmented Deep Autoencoder for Unsupervised Anomaly Detection 论文阅读

Memorizing Normality to Detect Anomaly: Memory-augmented Deep Autoencoder for Unsupervised Anomaly Detection

  • 摘要
  • 1.介绍
  • 2.相关工作
    • 异常检测
    • Memory networks
  • 3. Memory-augmented Autoencoder
    • 3.1概述
    • 3.2. Encoder and Decoder
    • 3.3. Memory Module with Attention-based Sparse Addressing
      • 3.3.1 Memory-based Representation
      • 3.3.2 Attention for Memory Addressing
      • 3.3.3 Hard Shrinkage for Sparse Addressing
    • 3.4. Training
  • 4.实验
    • 4.1. Experiments on Image Data
    • 4.2. Experiments on Video Anomaly Detection
    • 4.3. Experiments on Cybersecurity Data
    • 4.4. Ablation Studies
  • 5.总结
  • 6.阅读总结

文章信息:
在这里插入图片描述

发表于ICCV 2019
原文链接:https://openaccess.thecvf.com/content_ICCV_2019/papers/Gong_Memorizing_Normality_to_Detect_Anomaly_Memory-Augmented_Deep_Autoencoder_for_Unsupervised_ICCV_2019_paper.pdf
源码链接:https://github.com/donggong1/memae-anomaly-detection

摘要

提出了一种改进的自编码器(Memory-Augmented Autoencoder,MemAE),用于异常检测。传统的深度自编码器在正常数据上训练,期望对于异常输入产生更高的重构误差,以此作为鉴别异常的标准。然而,在实践中,这个假设并不总是成立,有时自编码器的“泛化”效果很好,甚至可以很好地重构异常数据,导致漏检。为了克服这一自编码器异常检测方法的缺陷,文章提出了将自编码器与内存模块相结合的MemAE

MemAE的基本思想是在训练阶段通过memory来存储和表示正常数据的原型元素,从而引入了对正常数据的更深层次的学习。具体而言,对于给定的输入,MemAE首先通过编码器获取编码,然后将其用作查询以检索用于重构的最相关的memory项。在训练阶段,memory内容会被更新,并被鼓励表示正常数据的原型元素。在测试阶段,学到的memory将保持固定,重构将从少数选择的正常数据的memory记录中获得。因此,重构将倾向于接近正常样本,从而增强了对异常的检测。

MemAE摆脱了对数据类型的假设,因此具有广泛适用性,可应用于不同的任务。实验证明了MemAE在各种数据集上的出色泛化能力和高效性。通过引入内存模块,MemAE在异常检测中取得了更好的性能,克服了传统自编码器在某些情况下过度泛化的问题。

1.介绍

异常检测是一项具有关键应用的重要任务,例如在视频监控领域。在无监督异常检测中,任务是仅根据正常数据示例学习正常模式,然后识别不符合正常模式的样本作为异常。这是一项具有挑战性的任务,因为缺乏人为监督。特别是当数据点位于高维空间(例如视频)时,问题变得更加困难,因为对高维数据建模通常非常具有挑战性。

深度自编码器(AE)是在无监督设置中对高维数据进行建模的强大工具。它包括一个编码器,用于从输入中获取压缩编码,以及一个解码器,可以从编码中重构数据。编码实质上充当了信息瓶颈,迫使网络提取高维数据的典型模式。在异常检测的背景下,AE通常通过最小化正常数据上的重构误差进行训练,然后使用重构误差作为异常的指标。通常假设重构误差对于正常输入会更低,因为它们接近训练数据,而对于异常输入则会更高。然而,这个假设并不总是成立,有时AE的“泛化”效果很好,甚至可以很好地重构异常输入。

为了缓解AE的缺点,文章提出了通过memory模块增强深度自编码器的方法,并引入了一种新模型,即Memory-Augmented Autoencoder(MemAE)。在MemAE中,给定一个输入,不直接将其编码馈送到解码器,而是将其用作查询以检索memory中最相关的项目。这些项目然后被聚合并传递给解码器。具体来说,这个过程通过使用基于注意力的memory寻址实现。作者进一步提出使用可微分的硬收缩运算符来引入memory寻址权重的稀疏性,这隐含地鼓励memory项在特征空间中接近查询。在MemAE的训练阶段,memory内容将与编码器和解码器一起进行更新。由于稀疏寻址策略,MemAE模型被鼓励以最优和高效的方式使用有限数量的内存槽,使memory记录充当正常训练数据中原型正常模式的记录,从而获得低平均重构误差。在测试阶段,学到的memory内容是固定的,重构将使用少数选择的正常内存项进行,这些项被选为输入编码的邻域。由于重构是从memory中的正常模式获得的,因此它倾向于接近正常数据。因此,如果输入与正常数据不相似,即异常,重构误差趋于突出。

提出的MemAE不受数据类型的假设限制,因此可以广泛应用于解决不同任务。在各种来自不同应用领域的公共异常检测数据集上,作者进行了广泛的实验证明了MemAE的出色泛化能力和高效性。

总结:通过memory模块自编码器,同时memory使用稀疏寻址的方式,简单来说就弱化一些特征,只取强的特征。
在这里插入图片描述
图1:MemAE架构(在训练完之后,memory记录了正常视频的正常模式)

2.相关工作

异常检测

这个不多说了

Memory networks

记忆增强网络已经引起了越来越多的关注,用于解决不同的问题[8, 38, 32]。Graves等人[8]使用外部memory扩展神经网络的能力,其中使用基于内容的注意力来寻址内存。考虑到memory可以稳定地记录信息,Santoro等人[32]使用memory网络来处理一次性学习的问题。外部memory还被用于多模态数据生成[14, 20],以规避模式崩溃问题并保留详细的数据结构。

3. Memory-augmented Autoencoder

3.1概述

提出的MemAE模型由三个主要组件组成 - 编码器(用于对输入进行编码和生成查询),解码器(用于重构)和memory模块(带有内存和相关内存寻址运算符)。如图2所示,给定一个输入,编码器首先获取输入的编码。通过使用编码表示作为查询,memory模块通过基于注意力的寻址运算符检索memory中最相关的项目,然后将它们传递给解码器进行重构。在训练期间,编码器和解码器被优化以最小化重构误差。同时更新memory内容以记录编码正常数据的原型元素。给定一个测试样本,模型仅使用memory中记录的有限数量的正常模式进行重构。因此,重构倾向于接近正常样本,导致正常样本的重构误差较小,而异常样本的误差较大,这将被用作检测异常的标准。

在这里插入图片描述

图2:拟建MemAE示意图。存储器寻址单元以编码z作为查询,得到软寻址权值。内存槽可以用于对整个编码或编码的一个像素上的特征进行建模(如图所示)。请注意 w ^ \widehat{w} w 在硬收缩操作之后被归一化。

3.2. Encoder and Decoder

在这里插入图片描述
结合图2: f e ( ⋅ ) f_e(·) fe()表示编码器, f d ( ⋅ ) f_d(·) fd()表示解码器。x为输入, z ^ \widehat{z} z 为z经过memory处理过后的结果, θ e θ_e θe θ d θ_d θd分别为编码器和解码器的参数。

3.3. Memory Module with Attention-based Sparse Addressing

所提出的存储器模块由一个用于记录原型编码模式的存储器和一个用于访问存储器的基于注意力的寻址算子组成。
在这里插入图片描述

3.3.1 Memory-based Representation

在这里插入图片描述
给定一个查询),经过存储器网络得到 z ^ \widehat{z} z
其中w是具有和为1的非负条目的行向量, w i w_i wi表示w的第i个条目。根据z计算权重向量w。如等式(3)所示,访问存储器需要寻址权重w。超参数N定义了存储器的最大容量。作者的实验表明,MemAE对N,也就是memory的存储大小并不是很敏感。

3.3.2 Attention for Memory Addressing

在MemAE中,存储器M被设计为明确记录训练期间的原型正常模式。我们将存储器定义为具有寻址方案的内容可寻址存储器[38,29],该寻址方案基于存储器项和查询z的相似性来计算注意力权重w。如图1所示,我们通过softmax运算来计算每个权重 w i w_i wi
在这里插入图片描述
d ( ⋅ , ⋅ ) d(·,·) d是余弦相似度,定义如下:
在这里插入图片描述
在训练阶段,MemAE中的解码器被限制为仅使用极少数被寻址的存储器项来执行重构,从而满足了对存储器项的有效利用的要求。因此,重建监督迫使存储器记录输入正常模式中最具代表性的原型模式
在测试阶段,给定训练过的存储器,只能检索存储器中的正常模式进行重建。因此,正常样本自然可以很好地重建。相反,异常输入的编码将被检索到的正常模式所取代,从而导致异常的显著重建错误。

3.3.3 Hard Shrinkage for Sparse Addressing

一些异常可能依旧会重构的非常好,对此作者对w采用了稀疏压缩策略,如公式所示:
在这里插入图片描述
就是将权重向量 w i w_i wi如果小于等于 λ \lambda λ,则置为。排除一些特征。如图,抹去一些相关性低的特征:
在这里插入图片描述
w ^ i \widehat{w}_i w i为压缩后的权重向量。
考虑到w都是非负的,使用RULE函数更简单,公式变成下面的了:
在这里插入图片描述
这种寻址方式只需要前向传播就可以更新了,而不需要反向传播。

3.4. Training

损失函数有两部分组成
重构误差
在这里插入图片描述
最小化 w ^ i \widehat{w}_i w i的熵
在这里插入图片描述
目的是:通过调整或优化 w ^ i \widehat{w}_i w i的值,使得相关的概率分布变得更加确定或不那么随机。

4.实验

作者做了三个实验,一个是在图像上异常检测,一个是在视频上的异常检测、还有一个实在网络安全方面的异常检测,这个不太了解。

4.1. Experiments on Image Data

分别在MNIST和CIFAR-10两个数据集上进行了测试。具体实验设置参考原论文,效果如下:
在这里插入图片描述

4.2. Experiments on Video Anomaly Detection

分别在Ped2、CUHK、SH.Tech三个数据集上进行了测试。效果如下
在这里插入图片描述

4.3. Experiments on Cybersecurity Data

4.4. Ablation Studies

作者对自己提出的模块进行了消融实验,分别对memory和稀疏压缩、熵loss进行了控制变量,结果如下:
在这里插入图片描述

5.总结

  • 提出了一个memory moudle模块
  • 提出了一个稀疏性压缩
  • 使用了熵减loss

6.阅读总结

这篇和前面的两篇思想都是有很大相似性的:引入memory moudle模块,在memory moudle所在的位置和更新策略上有不同的点,损失函数也有一些变化。
2020 cvpr Learning Memory-guided Normality for Anomaly Detection 论文阅读
2021 cvpr Learning Normal Dynamics in Videos with Meta Prototype Network 论文阅读

相关文章:

Memory-augmented Deep Autoencoder for Unsupervised Anomaly Detection 论文阅读

Memorizing Normality to Detect Anomaly: Memory-augmented Deep Autoencoder for Unsupervised Anomaly Detection 摘要1.介绍2.相关工作异常检测Memory networks 3. Memory-augmented Autoencoder3.1概述3.2. Encoder and Decoder3.3. Memory Module with Attention-based S…...

Mac端 DevEco Preview 窗口无法展示,提示文件中的node.dir错误

语雀知识库地址:语雀HarmonyOS知识库 飞书知识库地址:飞书HarmonyOS知识库 DevEco版本:Build Version: 3.1.0.501, built on June 20, 2023 环境信息 问题描述 打开 Preview 标签窗口后,提示Preview failed。 Run窗口提示如下 F…...

TIMO后台管理系统 Shiro 反序列化漏洞复现

0x01 产品简介 TIMO 后台管理系统,基于SpringBoot2.0 + Spring Data Jpa + Thymeleaf + Shiro 开发的后台管理系统,采用分模块的方式便于开发和维护,支持前后台模块分别部署,目前支持的功能有:权限管理、部门管理、字典管理、日志记录、文件上传、代码生成等,为快速开发后…...

3.4_1 java自制小工具 - pdf批量转图片

相关链接 目录参考文章:pdf转图片(apache pdfbox)参考文章:GUI界面-awt参考文章:jar包转exe(exe4j)参考文章:IDEA导入GIT项目参考文章:IDEA中使用Gitee管理代码gitee项目链接:pdf_2_image网盘地址&#xf…...

vue中实现数字+英文字母组合键盘

完整代码 <template><div class"login"><div click"setFileClick">欢迎使用员工自助终端</div><el-dialog title"初始化设置文件打印消耗品配置密码" :visible.sync"dialogSetFile" width"600px&quo…...

Centos服务器上根据端口号查询jar包,根据jar包查端口号

在开发springboot服务器时&#xff0c;经常会遇到其他人部署的java服务&#xff0c;需要自己维护&#xff0c;留下的信息又非常少。经常面临找不到jar包位置&#xff0c;或者不知道占用端口&#xff0c;不知道启动命令的问题。这里记录一下常用的centos服务器上的命令&#xff…...

数据仓库与数据挖掘复习资料

一、题型与考点[第一种] 1、解释基本概念(中英互译解释简单的含义)&#xff1b; 2、简答题(每个10分有两个一定要记住)&#xff1a; ① 考时间序列Time series(第六章)的基本概念含义解释作用&#xff08;序列模式挖掘的作用&#xff09;&#xff1b; ② 考聚类(第五章)重点考…...

限流算法,基于go的gRPC 实现的

目录 一、单机限流 1、令牌桶算法 3、固定窗口限流算法 4、滑动窗口 二、集群限流 1、分布式固定窗口 &#xff08;基于redis&#xff09; 2、分布式滑动窗口 一、单机限流 1、令牌桶算法 令牌桶算法是当流量进入系统前需要获取令牌&#xff0c;没有令牌那么就要进行限…...

Shell中HTTP变量和文本处理

在Shell中&#xff0c;HTTP变量和文本处理是常见的任务之一。Shell是一个命令行解释器&#xff0c;可以用来自动化执行各种系统任务。在Shell中&#xff0c;我们可以使用各种命令和工具来处理HTTP变量和文本。 首先&#xff0c;让我们来看看如何在Shell中处理HTTP变量。HTTP变…...

java学习part39map

159-集合框架-Map不同实现类的对比与HashMap中元素的特点_哔哩哔哩_bilibili 1.Map 2.Entry 个人理解是c的pair&#xff0c;代表一个键值对。Map就是entry的叠加 3.常用方法 4.TreeMap 5.Properties...

使用sqoop操作HDFS与MySQL之间的数据互传

一&#xff0c;数据从HDFS中导出至MySQL中 1&#xff09;开启Hadoop、mysql进程 start-all.sh/etc/init.d/mysqld start/etc/init.d/mysqld status 2&#xff09;将学生数据stu_data.csv传到HDFS的/local_student目录下 在hdfs中创建目录 hdfs dfs -mkdir /local_student 上…...

Kafka使用指南

Kafka简介架构设计Kafka的架构设计关键概念Kafka的架构设计关键机制 Partition介绍Partition工作机制 应用场景ACK机制介绍ACK机制原理ACK机制对性能的影响ACK控制粒度Kafka分区数对集群性能影响调整分区优化集群性能拓展Kafka数据全局有序 Kafka简介 Kafka是由Apache软件基金…...

HarmonyOS4.0从零开始的开发教程03初识ArkTS开发语言(中)

HarmonyOS&#xff08;二&#xff09;初识ArkTS开发语言&#xff08;中&#xff09;之TypeScript入门 浅析ArkTS的起源和演进 1 引言 Mozilla创造了JS&#xff0c;Microsoft创建了TS&#xff0c;Huawei进一步推出了ArkTS。 从最初的基础的逻辑交互能力&#xff0c;到具备类…...

西工大计算机学院计算机系统基础实验一(函数编写1~10)

还是那句话&#xff0c;千万不要慌&#xff0c;千万不要着急&#xff0c;耐下性子慢慢来&#xff0c;一步一个脚印&#xff0c;把基础打的牢牢的&#xff0c;一样不比那些人差。回到实验本身&#xff0c;自从​​​​​​按照西工大计算机学院计算机系统基础实验一&#xff08;…...

VMware 虚拟机 电脑重启后 NAT 模式连不上网络问题修复

问题描述&#xff1a; 昨天 VMware 安装centos7虚拟机&#xff0c;网络模式配置的是NAT模式&#xff0c;配置好后&#xff0c;当时能连上外网&#xff0c;今天电脑重启后&#xff0c;发现连不上外网了 检查下各个配置&#xff0c;都没变动&#xff0c;突然就连不上了 网上查了…...

【桑基图】绘制桑基图

绘制桑基图 一、绘制桑基图&#xff08;1&#xff09;方法一&#xff1a;去在线网站直接绘制&#xff08;2&#xff09;方法二&#xff1a;写html之后在vscode上运行 二、遇到的问题&#xff08;1&#xff09;当导入一些excel的时候&#xff0c;无法绘制出桑基图 一、绘制桑基图…...

ACM32F403/F433 12 位多通道,支持 MPU 存储保护功能,应用于工业控制,智能家居等产品中

ACM32F403/F433 芯片的内核基于 ARMv8-M 架构&#xff0c;支持 Cortex-M33 和 Cortex-M4F 指令集。芯片内核 支持一整套DSP指令用于数字信号处理&#xff0c;支持单精度FPU处理浮点数据&#xff0c;同时还支持Memory Protection Unit &#xff08;MPU&#xff09;用于提升应用的…...

7. 从零用Rust编写正反向代理, HTTP及TCP内网穿透原理及运行篇

wmproxy wmproxy是由Rust编写&#xff0c;已实现http/https代理&#xff0c;socks5代理&#xff0c; 反向代理&#xff0c;静态文件服务器&#xff0c;内网穿透&#xff0c;配置热更新等&#xff0c; 后续将实现websocket代理等&#xff0c;同时会将实现过程分享出来&#xff…...

UE4.27-UE5.1设置打包Android环境

打包Android配置文件 1. 配置打包Android的SDK需求文件位于下面文件中&#xff1a; 2. 指定了对应的SDK环境变量名字以及NDK需求等&#xff1a; UE4.27-UE5.1--脚本自动配置 安装前提 1. 务必关闭虚幻编辑器和Epic Games Launcher&#xff0c;以确保NDK组件的安装或引擎环境…...

MySQL授权密码

mysql> crate databases school charcter set utf8; Query OK, 1 row affected, 1 warning (0.00 sec) 2.在school数据库中创建Student和Score表 mysql> use school Database changed mysql> create table student-> -> (id int(10) primary key auto_incremen…...

0X05

打开题目 点击完登录和注册都没有什么反应&#xff0c;所以先扫一下看看 在出现admin.php后就截止了&#xff0c;访问看看,进入后台。。 尝试一下弱口令 admin/12345 或者是demo/demo 设计中-自定义->右上角导出主题 找到一个导出的点&#xff0c;下载了一个1.zip压缩包…...

Doris优化总结

1 查看QueryProfile 利用查询执行的统计结果,可以更好的帮助我们了解Doris的执行情况,并有针对性的进行相应Debug与调优工作。 FE将查询计划拆分成为Fragment下发到BE进行任务执行。BE在执行Fragment时记录了运行状态时的统计值,并将Fragment执行的统计信息输出到日志之中。…...

案例059:基于微信小程序的在线投稿系统

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SSM JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序…...

利用STM32内置Bootloader实现USB DFU固件升级

本文将介绍如何利用STM32内置的Bootloader来实现USB DFU&#xff08;Device Firmware Upgrade&#xff09;固件升级功能。首先&#xff0c;我们会介绍USB DFU的原理和工作流程。然后&#xff0c;我们将详细讲解如何配置STM32芯片以支持USB DFU&#xff0c;并提供相应的代码示例…...

Centos7如何安装MySQL

目录 一、卸载mysql 二、安装mysql 注&#xff1a;本文主要是看了这位大佬安装MySQL&#xff0c;才想着写一篇记录一下。 一、卸载mysql 安装mysql之前一定要将之前安装的mysql相关文件删除干净&#xff0c;防止出现错误。 &#xff08;1&#xff09;关闭mysql 开启了mysql就…...

VR远程带看,助力线下门店线上化转型“自救”

VR远程带看&#xff0c;因自身高效的沉浸式在线沟通功能&#xff0c;逐渐走进了大众的视野。身临其境的线上漫游体验以及实时同屏互联的新型交互模式&#xff0c;提升了商家同用户之间的沟通效率&#xff0c;进一步实现了远程线上一对一、一对多的同屏带看&#xff0c;用户足不…...

算法通关村第十七关-白银挑战贪心算法高频题目

大家好我是苏麟 , 今天说说贪心算法的高频题目 . 大纲 区间问题判断区间是否重叠合并区间插入区间 区间问题 判断区间是否重叠 描述 : 给定一个会议时间安排的数组 intervals &#xff0c;每个会议时间都会包括开始和结束的时间intervalsl[i] [start, end] &#xff0c;请你…...

【数据结构】动态规划(Dynamic Programming)

一.动态规划&#xff08;DP&#xff09;的定义&#xff1a; 求解决策过程&#xff08;decision process&#xff09;最优化的数学方法。 将多阶段决策过程转化为一系列单阶段问题&#xff0c;利用各阶段之间的关系&#xff0c;逐个求解。 二.动态规划的基本思想&#xff1a; …...

Redis key过期删除机制实现分析

文章目录 前言Redis key过期淘汰机制惰性删除机制定时扫描删除机制 前言 当我们创建Redis key时&#xff0c;可以通过expire命令指定key的过期时间(TTL)&#xff0c;当超过指定的TTL时间后&#xff0c;key将会失效。 那么当key失效后&#xff0c;Redis会立刻将其删除么&#…...

ElasticSearch 谈谈分词与倒排索引的原理

ElasticSearch是一个基于Lucene的搜索服务器。Lucene是Java的一个全文检索工具包&#xff0c;而ElasticSearch则是一个分布式搜索和分析引擎。下面&#xff0c;我们将详细讨论ElasticSearch中的分词和倒排索引的原理。 分词&#xff1a; 在ElasticSearch中&#xff0c;分词是…...

【Java】Java8重要特性——Lambda函数式编程以及Stream流对集合数据的操作

【Java】Java8重要特性——Lambda函数式编程以及Stream流对集合数据的操作 前言Lambda函数式编程Stream流对集合数据操作&#xff08;一&#xff09;创建Stream流&#xff08;二&#xff09;中间操作之filter&#xff08;三&#xff09;中间操作之map&#xff08;四&#xff09…...

大话数据结构-查找-散列表查找(哈希表)

注&#xff1a;本文同步发布于稀土掘金。 8 散列表查找&#xff08;哈希表&#xff09; 8.1 定义 散列技术是在记录的存储位置和它的关键字之间建立一个确定的对应关系f&#xff0c;使得每个关键字key对应一个存储位置f(key)。查找时&#xff0c;根据这个确定的对应关系找到给…...

持续集成交付CICD:Sonarqube自动更新项目质量配置

目录 一、实验 1.Sonarqube手动自定义质量规则并指定项目 2.Sonarqube自动更新项目质量配置 一、实验 1.Sonarqube手动自定义质量规则并指定项目 &#xff08;1&#xff09;自定义质量规则 ①新配置 ②更多激活规则③根据需求激活相应规则④已新增配置 ⑤ 查看 &#x…...

Linux设置Docker自动创建Nginx容器脚本

文章目录 前言一、本地新建脚本二、复制本地脚本到服务器三、执行服务器脚本总结如有启发&#xff0c;可点赞收藏哟~ 前言 一、本地新建脚本 在本地新建nginx-generator.sh脚本文件&#xff0c;并保存以下内容 主要动态定义两个变量&#xff08;容器名称/服务器本地文件名、端…...

技术博客:Vue中各种混淆用法汇总

技术博客&#xff1a;Vue中各种混淆用法汇总 摘要 本文主要介绍了在Vue中使用的一些常见混淆用法&#xff0c;包括new Vue()、export default {}、createApp()、Vue.component、Vue3注册全局组件、Vue.use()等&#xff0c;以及如何使用混淆器对代码进行加固&#xff0c;保护应…...

【python】Python生成GIF动图,多张图片转动态图,pillow

pip install pillow 示例代码&#xff1a; from PIL import Image, ImageSequence# 图片文件名列表 image_files [car.png, detected_map.png, base64_image_out.png]# 打开图片 images [Image.open(filename) for filename in image_files]# 设置输出 GIF 文件名 output_g…...

python/matlab图像去雾/去雨综述

图像去雾和去雨是计算机视觉领域的两个重要任务&#xff0c;旨在提高图像质量和可视化效果。本文将综述图像去雾和去雨的算法、理论以及相关项目代码示例。 一、图像去雾算法 基于暗通道先验的方法&#xff1a; 这是广泛应用于图像去雾的经典算法之一。该方法基于一个观察&…...

Docker+jenkins+gitlab实现持续集成

1.安装环境 服务器ip虚拟机版本192.168.5.132centos7.6192.168.5.152centos7.6 2. 安装docker 安装必要的一些系统工具 yum install -y yum-utils device-mapper-persistent-data lvm2添加软件源信息&#xff0c;要确保centos7能上外网 yum-config-manager --add-repo http:…...

Web前端JS如何获取 Video/Audio 视音频声道(左右声道|多声道)、视音频轨道、音频流数据

写在前面&#xff1a; 根据Web项目开发需求&#xff0c;需要在H5页面中&#xff0c;通过点击视频列表页中的任意视频进入视频详情页&#xff0c;然后根据视频的链接地址&#xff0c;主要是 .mp4 文件格式&#xff0c;在进行播放时实时的显示该视频的音频轨道情况&#xff0c;并…...

MySQL生成UUID并去除-

uuid()函数 uuid() 函数可以使mysql生成uuid,但是uuid中存在-,如下图&#xff1a; 去除uuid的- 默认生成的uuid含有-&#xff0c;我们可以使用replace函数替换掉-&#xff0c;SQL如下 select replace(uuid(),"-","") as uuid;Insert语句中使用UUID 如果…...

包与字符串

包是分类管理的需要&#xff0c;建立包用:package&#xff0c;包中类的引用import 学习使用javaAPI中的字符串类String&#xff0c;学会其成员方法的使用 &#xff08;必看&#xff09;eclipse包的分层等级结构设置 因为eclipse的包的结构默认是平行等级的&#xff0c;所以要手…...

【Gradle】mac环境安装Gradle及配置

官网安装说明&#xff1a;Gradle | Installation 由于Gradle运行依赖jvm&#xff0c;所以事先需要安装jdk&#xff0c;并确认你的jdk版本和gradle版本要求的对应关系&#xff0c;这个官网上有说明&#xff0c;但是我试了一下不太准确&#xff0c;供参考&#xff0c;链接如下&a…...

使用C语言操作kafka ---- librdkafka

1 安装librdkafka git clone https://github.com/edenhill/librdkafka.git cd librdkafka git checkout v1.7.0 ./configure make sudo make install sudo ldconfig 在librdkafka的examples目录下会有示例程序。比如consumer的启动需要下列参数 ./consumer <broker> &…...

误用STM32串口发送标志位 “USART_FLAG_TXE” “USART_FLAG_TC”造成的BUG

当你使用串口发送数据时是否出现过这样的情况&#xff1a; 1.发送时第一个字节丢失。 2.发送时出现莫名的字节丢失。 3.各种情况字节丢失。 1.先了解一下串口发送的流程图&#xff08;手动描绘&#xff09;&#xff1a; 可以假想USART_FLAG_TXE是用于检测"弹仓"&…...

指针(三)

函数指针 定义&#xff1a;整型指针是指向整形的指针,数组指针式指向数组的指针,其实函数指针就是指向函数的指针。 函数指针基础&#xff1a; &#xff08;&#xff09;优先级要高于*&#xff1b;一个变量除去了变量名&#xff0c;便是它的变量类型&#xff1b;一个指针变量…...

labelimg遇到的标签修改问题:修改一张图像的标签时,保存后导致classes.txt改变

问题描述&#xff1a;修改一张图像的标签时候&#xff0c; classes.txt 会同步更新&#xff0c;导致重新生成了 classes.txt 但是这个 classes.txt 只有你现在写的那个类别名&#xff0c;以前的没有了。 解决&#xff1a;设置一个 predefined_classes.txt&#xff0c;内容和模…...

Spring Cloud Gateway使用和配置

Spring Cloud Gateway是Spring官方基于Spring 5.0&#xff0c;Spring Boot 2.0和Project Reactor等技术开发的网关&#xff0c;Spring Cloud Gateway旨在为微服务架构提供一种简单而有效的统一的API路由管理方式。Spring Cloud Gateway作为Spring Cloud生态系中的网关&#xff…...

RT-Thread 时钟管理

时钟管理 时钟是非常重要的概念&#xff0c;和朋友出去游玩需要约定时间&#xff0c;完成任务也需要花费时间&#xff0c;生活离不开时间。 操作系统也一样&#xff0c;需要通过时间来规范其任务的执行&#xff0c;操作系统中最小的时间单位是时钟节拍&#xff08;OS Tick&…...

User: zhangflink is not allowed to impersonate zhangflink

使用hive2连接进行添加数据是报错&#xff1a; [08S01][1] Error while processing statement: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask. User: zhangflink is not allowed to impersonate zhangflink 有些文章说需要修…...

深入理解Sentinel系列-1.初识Sentinel

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱吃芝士的土豆倪&#xff0c;24届校招生Java选手&#xff0c;很高兴认识大家&#x1f4d5;系列专栏&#xff1a;Spring源码、JUC源码、Kafka原理、分布式技术原理&#x1f525;如果感觉博主的文章还不错的话&#xff…...