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

【LLIE专题】基于Retinex理论的transformer暗光增强

在这里插入图片描述

Retinexformer: One-stage Retinex-based Transformer for Low-light Image Enhancement(2023,ICCV)

  • 专题介绍
  • 一、研究背景
  • 二、Retinexformer方法
    • 1. 通用Retinex理论
    • 2. 作者建立的Retinex理论
    • 3. ORF(one stage Retinex-based Framework)
    • 4. 网络结构
  • 三、实验结果
    • 1. 定量实验
    • 2. 定性实验
  • 四、总结
  • 五、个人思考

本文将对 Retinexformer: One-stage Retinex-based Transformer for Low-light Image Enhancement,这篇暗光增强算法进行讲解。参考资料如下:

[1] Retinexformer 文章

[2] Retinexformer 代码


专题介绍

在低光照环境下,传统成像设备往往因画面昏暗、细节丢失而受限。LLIE(低照度暗光增强)技术应运而生,它通过提升图像亮度、对比度,减少噪点并恢复色彩细节,让暗夜变得清晰可见。

LLIE技术从传统方法如直方图均衡化、Retinex模型等起步,近年来借助深度学习,尤其是卷积神经网络(CNN),GAN模型,扩散模型实现了质的飞跃。这些算法能自动学习图像特征,精准处理低光照图像,效果显著优于传统技术。

本专题将聚焦LLIE技术的核心原理、应用案例及最新进展,让我们一起见证LLIE如何点亮暗夜,开启视觉新视界!欢迎一起探讨交流!

系列文章如下
【1】ZeroDCE
【2】HVI
【3】CLIP-LIT
【4】GLARE


一、研究背景

Retinex理论是一种经典的图像增强理论,它将图像分解为反射分量和光照分量。通过分别对这两个分量进行处理,可以有效地改善图像的视觉效果。Retinex理论在低光照图像增强中得到了广泛应用,但传统的Retinex方法存在一些问题,如计算复杂度高、对噪声敏感等。因此,如何结合Transformer架构和Retinex理论的优势,设计一种高效的低光照图像增强方法,是本文研究的重点

二、Retinexformer方法

在这里插入图片描述
作者首先基于通用Retinex理论提出了自己优化的Retinex理论,基于该理论提出了一个亮度引导的Unet类型的Transformer网络结构用于图像增强。上图为整个模型的结构示意图。

1. 通用Retinex理论

I = R ⊙ L \mathbf{I}=\mathbf{R} \odot \mathbf{L} I=RL
其中 I ∈ R H × W × 3 I \in \mathbb{R}^{H \times W \times 3} IRH×W×3 为低照度图像, R ∈ R H × W × 3 R \in \mathbb{R}^{H \times W \times 3} RRH×W×3 为反射率图像, L ∈ R H × W × 1 L \in \mathbb{R}^{H \times W \times 1} LRH×W×1 为光照入射图。该理论假设在图像处理过程中,图像的结构和语义信息保持不变。然而,实际情况是,在低光照条件下进行拍摄时,通常需要使用高ISO和长曝光时间,这会导致图像中出现噪声和伪影。此外,在使用模型对低光照图像进行增强时,也可能会出现噪声和伪影的放大、图像过曝或欠曝以及色彩失真等问题。

2. 作者建立的Retinex理论

作者引入了干扰项,建立了更完善的理论。
I = ( R + R ^ ) ⊙ ( L + L ^ ) = R ⊙ L + R ⊙ L ^ + R ^ ⊙ ( L + L ^ ) \begin{align} \mathbf{I}&= (\mathbf{R}+\hat{\mathbf{R}}) \odot (\mathbf{L}+\hat{\mathbf{L}}) \\ &= \mathbf{R} \odot \mathbf{L} + \mathbf{R} \odot \hat{\mathbf{L}} + \hat{\mathbf{R}} \odot (\mathbf{L}+\hat{\mathbf{L}}) \end{align} I=(R+R^)(L+L^)=RL+RL^+R^(L+L^)
其中 R ^ ∈ R H × W × 3 , L ^ ∈ R H × W × 1 \hat{\mathbf{R}} \in \mathbb{R}^{H \times W \times 3}, \hat{\mathbf{L}} \in \mathbb{R}^{H \times W \times 1} R^RH×W×3,L^RH×W×1 ,分别代表反射率图和光照入射图的误差分量,为了简化上述公式,作者设置了一个点亮系数 L ˉ \bar{\mathbf{L}} Lˉ,令 L ˉ ⊙ L = 1 \bar{\mathbf{L}} \odot \mathbf{L} = \mathbf{1} LˉL=1 ,将 L ˉ \bar{\mathbf{L}} Lˉ和上述公式相乘可以得到以下公式。 I ⊙ L ˉ = R + R ⊙ ( L ^ ⊙ L ˉ ) + ( R ^ ⊙ ( L + L ^ ) ) ⊙ L ˉ \mathbf{I} \odot \bar{\mathbf{L}} = \mathbf{R} + \mathbf{R} \odot (\hat{\mathbf{L}} \odot \bar{\mathbf{L}}) + (\hat{\mathbf{R}} \odot (\mathbf{L} + \hat{\mathbf{L}})) \odot \bar{\mathbf{L}} ILˉ=R+R(L^Lˉ)+(R^(L+L^))Lˉ。简化上述公式可得, I l u = I ⊙ L ˉ = R + C \mathbf{I}_{lu} = \mathbf{I} \odot \bar{\mathbf{L}} = \mathbf{R} + \mathbf{C} Ilu=ILˉ=R+C,其中 I l u ∈ H × W × 3 \mathbf{I}_{lu} \in H \times W \times 3 IluH×W×3 为亮度提升后的图像, C C C为亮度提高后的总偏差(包括放大的噪声,伪影,颜色失真)。

3. ORF(one stage Retinex-based Framework)

作者通过所建立的retinex理论,建立了ORF,首先提升图像亮度,之后以亮度 I l u \mathbf{I}_{lu} Ilu以及亮度特征 F l u \mathbf{F}_{lu} Flu为参考,通过修复器 R \mathcal{R} R修复总偏差 C C C,总体描述为下列公式:

( I l u , F l u ) = E ( I , L p ) , I e n = R ( I l u , F l u ) (\mathbf{I}_{lu}, \mathbf{F}_{lu}) = \mathcal{E}(\mathbf{I}, \mathbf{L}_p), \quad \mathbf{I}_{en} = \mathcal{R}(\mathbf{I}_{lu}, \mathbf{F}_{lu}) (Ilu,Flu)=E(I,Lp),Ien=R(Ilu,Flu)
其中 E \mathcal{E} E为亮度预测器,目的是提高图像亮度; L p ∈ H × W × 1 \mathbf{L}_p \in H \times W \times 1 LpH×W×1 I \mathbf{I} I的亮度先验图,通过 L p = m e a n c ( I ) \mathbf{L}_p = \mathrm{mean}_c(\mathbf{I}) Lp=meanc(I)计算, m e a n c \mathrm{mean}_c meanc是在通道维度取平均; R \mathcal{R} R是复原修复器,作者设计了基于transformer的unet网络结构用于修复总偏差 C C C,最终得到增强后的结果 I e n \mathbf{I}_{en} Ien

4. 网络结构

网络结构其实非常简单,作者首先采用了卷积作为 E \mathcal{E} E亮度预测器,并且保留亮度特征作为后续的 R \mathcal{R} R(复原修复器)的引导输入。而 R \mathcal{R} R(复原修复器),采用了Unet类型网络结构,做了三次下采样,提取多尺度特征,并且每一层Unet结构中加入了Transformer网络结构用于提取全局特征,而Transformer结构中又采用了 E \mathcal{E} E亮度预测器输出的亮度特征作为引导(IGAB模块)。同时为了降低计算复杂度,Transformer是在通道维度上做的注意力计算。

总体来看,这篇文章的方案就是基于Retinex理论设计一个网络结构,首先基于卷积网络粗略估计出增强后的图像,然后基于这个粗略增强的图像,用Unet类型的网络结构(结合transformer结构)进行进一步的增强,得到最后结果

三、实验结果

1. 定量实验

在这里插入图片描述
如上表所示,作者在多个数据集上和多种方案做了定量对比实验,红色是最优效果,蓝色是次优效果,可以看出Retinexformer在多个数据集上均取得了最优或者次优效果。

2. 定性实验

在这里插入图片描述

在这里插入图片描述
从定性实验可以看出,之前的方法增强后存在多个问题,比如噪声、色彩损失、模糊、过曝欠曝等,而作者提出的方案则能够很好去除噪声并且能够重建出曝光良好的图像。

四、总结

Retinexformer通过结合Retinex分解和Transformer架构,有效提升了低光照图像的质量,同时保留了图像的细节信息并抑制了噪声和伪影的放大。在多个数据集上的实验结果证明了其有效性,为低光照图像增强领域提供了一种新的高效方法。该研究推动了低光照图像处理技术的发展,为相关应用提供了更优质的视觉数据支持。

五、个人思考

  1. Retinex分解是Retinexformer的基础,但其准确性对最终增强效果至关重要。在复杂场景下,Retinex分解可能会出现误差,例如光照分量和反射分量的分离不彻底或过度分离。如何进一步提高Retinex分解的准确性?或许是未来研究的一个方向。
  2. 本文由于考虑到计算效率问题,使用了通道方向的注意力机制;或许可以采用空间维度或者空间通道结合的注意力机制,进一步提升效果。

感谢阅读,欢迎留言或私信,一起探讨和交流。

相关文章:

【LLIE专题】基于Retinex理论的transformer暗光增强

Retinexformer: One-stage Retinex-based Transformer for Low-light Image Enhancement(2023,ICCV) 专题介绍一、研究背景二、Retinexformer方法1. 通用Retinex理论2. 作者建立的Retinex理论3. ORF(one stage Retinex-based Framework)4. 网…...

C++多态与虚函数详解——从入门到精通

C多态与虚函数详解——从入门到精通 引言 在C面向对象编程中,多态是一个核心概念,它赋予了程序极大的灵活性和扩展性。本文将通过六个精心设计的实例,深入浅出地讲解C中的多态、虚函数、继承和抽象类等概念,帮助初学者快速理解这…...

自适应Prompt技术:让LLM精准理解用户意图的进阶策略

开发|界面|引擎|交付|副驾——重写全栈法则:AI原生的倍速造应用流 来自全栈程序员 nine 的探索与实践,持续迭代中。 欢迎关注评论私信交流~ 一、核心挑战:传统Prompt的局限性 传统静态Prompt&…...

Java文件读写程序

1.引言 在日常的软件开发中,文件操作是常见的功能之一。不仅要了解如何读写文件,更要知道如何安全地操作文件以避免程序崩溃或数据丢失。这篇文章将深入分析一个简单的 Java 文件读写程序 Top.java,包括其基本实现、潜在问题以及改进建议&am…...

数字电子技术基础(六十)——使用Digital软件绘制脉冲触发的触发器

目录 1 使用Digital软件来绘制脉冲触发的触发器 1.1 使用Digital软件来绘制脉冲触发的SR触发器 1.2 使用Digitial软件绘制脉冲触发的JK触发器 1.3 使用Digital软件绘制脉冲触发D触发器 1 使用Digital软件来绘制脉冲触发的触发器 1.1 使用Digital软件来绘制脉冲触发的SR触发…...

C++学习:六个月从基础到就业——C++20:范围(Ranges)基础

C学习:六个月从基础到就业——C20:范围(Ranges)基础 本文是我C学习之旅系列的第五十一篇技术文章,也是第三阶段"现代C特性"的第十三篇,介绍C20引入的范围(Ranges)库的基础知识。查看完整系列目录了解更多内容。 引言 S…...

【AGI】模型性能评估框架EvalScope

【AGI】模型性能评估框架EvalScope 项目地址:https://github.com/modelscope/evalscope ​ EvalScope 是由阿里巴巴魔搭社区(ModelScope)推出的一款开源模型评估框架,旨在为大语言模型(LLM)和多模态模型提供…...

【老马】离线版金融敏感信息加解密组件开源项目 encryption-local

前言 你是否存在这样的苦恼,数据需要安全存储,但是每个系统大家自己写,很浪费时间。。 每一个子项目各自为政,加解密搞得也无法统一。也许下面这个开源项目可以帮助你。 encryption-local 一个离线版本的金融敏感信息加解密工具…...

利用systemd启动部署在服务器上的web应用

0.背景 系统环境: Ubuntu 22.04 web应用情况: 前后端分类,前端采用react,后端采用fastapi 1.具体配置 1.1 前端配置 开发态运行(启动命令是npm run dev),创建systemd服务文件 sudo nano /etc/systemd/…...

YOLOv5目标构建与损失计算

YOLOv5目标构建与损失计算 YOLOv5目标构建与损失计算构建目标关键步骤解析: 计算损失关键实现细节解析各损失分量说明 YOLOv5目标构建与损失计算 YOLOv5作为单阶段目标检测的经典算法,其高效的检测性能离不开精心设计的训练目标构建和损失计算策略。本文…...

【Linux】ELF与动静态库的“暗黑兵法”:程序是如何跑起来的?

目录 一、什么是库? 1. C标准库(libc) 2. C标准库(libstdc) 二、静态库 1. 静态库的生成 2. 静态库的使用 三、动态库 1. 动态库的生成 2. 动态库的使用 3. 库运行的搜索路径。 (1)原因…...

【图书管理系统】用户注册系统实现详解

引言 本系统允许用户输入用户名和密码,前端通过AJAX请求将数据发送到后端,后端验证并存储用户信息,同时为每个用户创建一个专属图书表。尽管这是一个基础实现,但它展示了前后端分离开发的核心思想。博客还将讨论潜在的优化点&…...

FastDFS分布式文件系统架构学习(一)

FastDFS分布式文件系统架构学习 1. FastDFS简介 FastDFS是一个开源的轻量级分布式文件系统,由淘宝资深架构师余庆设计并开发。它专为互联网应用量身定制,特别适合以中小文件(如图片、文档、音视频等)为载体的在线服务。FastDFS不…...

Oracle 内存优化

Oracle 的内存可以按照共享和私有的角度分为系统全局区和进程全局区,也就是 SGA和 PGA(process global area or private global area)。对于 SGA 区域内的内存来说,是共享的全局的。在 UNIX 上,必须为 Oracle 设置共享内存段(可以是一个或者多…...

算法题(149):矩阵消除游戏

审题: 本题需要我们找到消除矩阵行与列后可以获得的最大权值 思路: 方法一:贪心二进制枚举 这里的矩阵消除时,行与列的消除会互相影响,所以如果我们先统计所有行和列的总和,然后选择消除最大的那一行/列&am…...

AI:NLP 情感分析

💬 从零开始掌握情感分析:NLP 初学者实战指南 本文适合自然语言处理(NLP)入门者,聚焦于最热门应用之一——情感分析(Sentiment Analysis)。无论你是学生、工程师,还是数据爱好者,都可以通过本文了解情感分析的原理、方法和实现技巧。 🧠 一、什么是情感分析? 情感…...

LearnOpenGL---着色器

着色器的例子 文章目录 着色器的例子1.颜色变化的三角形2.构造三个顶点颜色不同的一个三角形 1.颜色变化的三角形 #include <glad/glad.h> #include <GLFW/glfw3.h>#include <iostream> #include <cmath>void framebuffer_size_callback(GLFWwindow* …...

计算机图形学编程(使用OpenGL和C++)(第2版)学习笔记 13.几何着色器(一)修改顶点

几何着色器 以下是OpenGL图像管线的主要阶段&#xff1a; 几何着色器&#xff08;Geometry Shader&#xff09; 几何着色器是OpenGL管线中的一个可选阶段&#xff0c;位于顶点着色器和片段着色器之间。它能够动态地生成或修改图元&#xff08;primitives&#xff09;。 主…...

如何利用 Java 爬虫获得某书笔记详情:实战指南

在知识分享和学习的领域&#xff0c;许多平台提供了丰富的书籍笔记和学习资源。通过 Java 爬虫技术&#xff0c;我们可以高效地获取这些笔记的详细信息&#xff0c;以便进行进一步的分析和整理。本文将详细介绍如何利用 Java 爬虫获取某书笔记详情&#xff0c;并提供完整的代码…...

【关联git本地仓库,上传项目到github】

目录 1.下载git2.绑定用户3.git本地与远程仓库交互4.github项目创建5.上传本地项目到github6.完结撒花❀❀❀&#xff01;&#xff01;&#xff01; 1.下载git git下载地址&#xff1a;https://git-scm.com/downloads 下载安装后创建快捷地址&#xff1a;&#xff08;此处比较…...

计算机科技笔记: 容错计算机设计05 n模冗余系统 TMR 三模冗余系统

NMR&#xff08;N-Modular Redundancy&#xff0c;N 模冗余&#xff09;是一种通用的容错设计架构&#xff0c;通过引入 N 个冗余模块&#xff08;N ≥ 3 且为奇数&#xff09;&#xff0c;并采用多数投票机制&#xff0c;来提升系统的容错能力与可靠性。单个模块如果可靠性小于…...

配置代理服务器访问github、google

配置代理服务器访问github、google 背景与原理配置环境配置步骤云主机配置Windows客户端创建SSH隧道安装 Windows 内置 OpenSSHssh config 配置文件创建动态代理隧道 浏览器代理设置 验证浏览器访问google、githubssh 访问github 背景与原理 由于网络政策限制&#xff0c;中国…...

Java API学习笔记

一.类 1. String 类 不可变性&#xff1a;String对象创建后不可修改&#xff0c;每次操作返回新对象 String str "Hello"; str.length(); str.charAt(0); str.substring(1, 4); str.indexOf("l"); str.equals("hel…...

C++ map容器: 插入操作

1. map插入操作基础 map是C STL中的关联容器&#xff0c;存储键值对(key-value pairs)。插入元素时有四种主要方式&#xff0c;各有特点&#xff1a; 1.1 头文件与声明 #include <map> using namespace std;map<int, string> mapStu; // 键为int&#xff0c;值…...

Linux SSH 远程连接全攻略:从加密原理到实战配置(含图解)

一、SSH 加密体系核心理论 &#xff08;一&#xff09;对称加密与非对称加密对比解析 1. 加密算法分类与应用场景 类型代表算法密钥数量加密速度安全性特点典型用途对称加密AES、3DES1 个★★★★☆密钥传输风险高会话数据加密非对称加密RSA、ECC2 个★★☆☆☆公钥可公开&a…...

项目制作流程

一、使用 CRA 创建项目 npx create-react-app name 二、按照业务规范整理项目目录 &#xff08;重点src目录&#xff09; 三、安装插件 npm install sass -Dnpm install antd --savenpm install react-router-dom 四、配置基础路由 Router 1. 安装路由包 react-router-dom …...

ctr查看镜像

# 拉取镜像到 k8s.io 命名空间 sudo nerdctl --namespace k8s.io pull nginx:1.23.4 # 验证镜像是否已下载 sudo nerdctl --namespace k8s.io images 下载镜像到k8s.io名称空间下 nerdctl --namespace k8s.io pull zookeeper:3.6.2 sudo ctr image pull --namespace k8s.io …...

【深度学习基础】从感知机到多层神经网络:模型原理、结构与计算过程全解析

【深度学习基础】从感知机到多层神经网络&#xff1a;模型原理、结构与计算过程全解析 1. 引言 神经网络的重要性&#xff1a; 作为人工智能的核心技术之一&#xff0c;神经网络通过模拟人脑神经元的工作机制&#xff0c;成为解决复杂模式识别、预测和决策任务的利器。从图像分…...

discuz X3.5批量新建用户

<?php define(IN_DISCUZ, true); require ./source/class/class_core.php; // 确保管理员权限&#xff08;可选&#xff0c;增加安全性&#xff09;删除这一段加粗则可以直接使用. if ($_G[adminid] ! 1) { exit(Access denied. Only admin allowed.); } C::app()->…...

symfonos: 1靶场

symfonos: 1 来自 <https://www.vulnhub.com/entry/symfonos-1,322/> 1&#xff0c;将两台虚拟机网络连接都改为NAT模式 2&#xff0c;攻击机上做namp局域网扫描发现靶机 nmap -sn 192.168.23.0/24 那么攻击机IP为192.168.23.182&#xff0c;靶场IP192.168.23.252 3&…...

C# String 格式说明符

标准格式说明符数字格式说明符C 或 c&#xff1a;货币格式D 或 d&#xff1a;十进制数字格式E 或 e&#xff1a;科学计数法格式。F 或 f&#xff1a;固定点格式G 或 g&#xff1a;常规格式N 或 n&#xff1a;数字格式P 或 p&#xff1a;百分比格式X 或 x&#xff1a;十六进制格…...

Python高级特性深度解析:从熟练到精通的跃迁之路

Python高级特性深度解析&#xff1a;从熟练到精通的跃迁之路 引言 对于已经掌握Python基础语法的开发者而言&#xff0c;如何突破瓶颈进入高手行列&#xff1f;本文将从Python的高级特性入手&#xff0c;深入剖析那些能让代码更优雅、效率更高的技术点&#xff0c;助你完成从…...

【微信小程序 + 高德地图API 】键入关键字搜索地址,获取经纬度等

前言 又到熟悉的前言&#xff0c;接到个需求&#xff0c;要引入高德地图api&#xff0c;我就记录一下&#xff0c;要是有帮助记得点赞、收藏、关注&#x1f601;。 后续有时间会慢慢完善一些文章&#xff1a;&#xff08;画饼时间&#xff09; map组件自定义气泡、mark标记点…...

贪心、分治和回溯算法

1. 贪心算法 1.1. 贪心算法的概念 定义&#xff1a;在求解过程中&#xff0c;始终做出当前状态下看起来“最优”的选择&#xff0c;不回退。核心思想&#xff1a;每一步都选择当前最优解&#xff0c;期望最后得到全局最优解。 适用问题的特征&#xff1a; 问题可以分解成多个…...

window自带截图快捷键

Win Shift S&#xff1a;按此组合键后&#xff0c;会出现截图模式选择框&#xff0c;可选择矩形截图、任意形状截图、窗口截图和全屏幕截图&#xff0c;然后使用 “Ctrl V” 粘贴截图内容...

简单使用Slidev和PPTist

简单使用Slidev和PPTist 1 简介 前端PPT制作有很多优秀的工具包&#xff0c;例如&#xff1a;Slidev、revealjs、PPTist等&#xff0c;Slidev对Markdown格式支持较好&#xff0c;适合与大模型结合使用&#xff0c;选哟二次封装&#xff1b;revealjs适合做数据切换&#xff0c…...

1.2.2

某智慧养老平台的心率监测模块目前存在数据准确性不高、异常预警响应慢等问题&#xff0c;影响了老年人健康监测的体验和服务质量。作为人工智能训练师&#xff0c;你需要结合业务知识和人工智能技术&#xff0c;对该模块进行优化设计与实现。 &#xff08;1&#xff09;列出心…...

LeeCode 101.对称二叉树

给你一个二叉树的根节点 root &#xff0c; 检查它是否轴对称。 提示&#xff1a; 树中节点数目在范围 [1, 1000] 内-100 < Node.val < 100 进阶&#xff1a;你可以运用递归和迭代两种方法解决这个问题吗&#xff1f; 答案 && 测试代码&#xff1a; #include &…...

面向GIS的Android studio移动开发(二)--在地图上绘制电子围栏

电子围栏&#xff0c;校园跑的常客&#xff0c;也是定位打卡必不可少的东西 主要代码&#xff1a; 创建电子围栏代码 // 添加多边形地理围栏&#xff08;兼容2023版SDK&#xff09;private void addPolygon(String fenceName, List<LatLng> points) {if (points null…...

《从零开始:Spring Cloud Eureka 配置与服务注册全流程》​

关于Eureka的学习&#xff0c;主要学习如何搭建Eureka&#xff0c;将order-service和product-service都注册到Eureka。 1.为什么使用Eureka? 我在实现一个查询订单功能时&#xff0c;希望可以根据订单中productId去获取对应商品的详细信息&#xff0c;但是产品服务和订单服…...

能力验证及大练兵活动第一期

计算机 请根据计算机检材&#xff0c;回答以下问题&#xff1a; (10道题&#xff0c;共19.0分) 1. 计算机中曾挂载的Bitlocker加密分区的恢复密钥后6位为&#xff1f;&#xff08;答案格式&#xff1a;6位数字&#xff09; (1.0分) 答案&#xff1a;700755 2. 请写出曾远程连…...

TASK03【Datawhale 组队学习】搭建向量知识库

文章目录 向量及向量知识库词向量与向量向量数据库 数据处理数据清洗文档分割 搭建并使用向量数据库 向量及向量知识库 词向量与向量 词向量&#xff08;word embedding&#xff09;是一种以单词为单位将每个单词转化为实数向量的技术。词向量背后的主要想理念是相似或相关的…...

ProfibusDP转ModbusRTU的实用攻略

ProfibusDP转ModbusRTU的实用攻略 在工业自动化领域中&#xff0c;Profibus DP和Modbus RTU是两种常见的通信协议。 Profibus DP是一种广泛应用于过程控制和工厂自动化的现场总线标准&#xff0c;具有高实时性和可靠性。 而Modbus RTU则是一种串行通信协议&#xff0c;常用于…...

基于开源AI智能名片链动2+1模式S2B2C商城小程序源码的去中心化商业扩散研究

摘要&#xff1a;本文探讨在去中心化商业趋势下&#xff0c;开源AI智能名片链动21模式S2B2C商城小程序源码如何助力企业挖掘数据价值、打破信息孤岛&#xff0c;实现商业高效扩散。通过分析该技术组合的架构与功能&#xff0c;结合实际案例&#xff0c;揭示其在用户关系拓展、流…...

iOS 工厂模式

iOS 工厂模式 文章目录 iOS 工厂模式前言工厂模式简单工厂案例场景分析苹果类优点缺点 小结 工厂模式客户端调用**优点****缺点** 抽象工厂模式三个模式对比 前言 笔者之前学习了有关于设计模式的六大原则,之前简单了解过这个工厂模式,今天主要是重新学习一下这个模式,正式系统…...

LaTeX OCR - 数学公式识别系统

文章目录 一、关于 LaTeX OCR1、项目概览架构图2、相关链接资源3、功能特性 二、安装配置基础环境要求Linux 安装Mac 安装 三、使用指南1、快速训练&#xff08;小数据集&#xff09;2、完整训练&#xff08;大数据集&#xff09; 四、可视化功能训练过程可视化预测过程可视化 …...

Go 语言即时通讯系统开发日志-日志day2-5:架构设计与日志封装

Go语言即时通讯系统开发日志day2 计划&#xff1a;学习go中MySQL&#xff0c;Redis的使用&#xff0c;使用MySQL和Redis完成一个单聊demo。 总结&#xff1a;现在每天下午用来开发这个项目&#xff0c;如果有课的话可能学习时间只有3-4个小时&#xff0c;再加上今天的学习效率不…...

@JsonProperty和@JSONField 使用

JsonProperty和JSONField注解的区别 1.底层框架不同 JsonProperty 是Jackson实现的 JSONField 是fastjson实现的 2.用法不同 &#xff08;1&#xff09;bean序列化为Json&#xff1a; JsonProperty&#xff1a; ObjectMapper().writeValueAsString(Object value) JSONField&…...

从代码学习深度学习 - 近似训练 PyTorch版

文章目录 前言负采样 (Negative Sampling)层序Softmax (Hierarchical Softmax)代码示例总结前言 在自然语言处理(NLP)领域,词嵌入(Word Embeddings)技术如Word2Vec(包括Skip-gram和CBOW模型)已经成为一项基础且强大的工具。它们能够将词语映射到低维稠密向量空间,使得…...

代码上传gitte仓库

把代码push上去就行...