37_U-Net网络详解
1.U-Net 网络概述
U-Net 是一种深度学习模型,广泛用于图像的语义分割任务。U-Net 网络的结构特别适合医学影像分割,尤其在少量训练数据的情况下表现优异。该网络由一个编码器-解码器架构组成,具有对称的“U”形结构,因此得名为 U-Net。
1. U-Net的背景和提出
- 作者:U-Net 是由 Olaf Ronneberger、Philipp Fischer 和 Thomas Brox 提出的。
- 论文标题:U-Net: Convolutional Networks for Biomedical Image Segmentation
- 发表时间:2015年
- 会议:论文发表在 MICCAI 2015(Medical Image Computing and Computer-Assisted Intervention Conference)上。
2. U-Net的结构
U-Net 网络的结构可以分为两个主要部分:
1) 编码器(Contracting Path)
编码器部分通常由一系列的卷积层(卷积 + 激活函数 + 池化层)组成,逐步减小图像的空间尺寸,同时增加特征图的深度。通过这些操作,编码器能够提取图像中的特征。
- 在每一层中,首先使用卷积操作提取特征,然后通过 ReLU 激活函数增加非线性,接着通过最大池化(Max Pooling)操作逐渐减小空间分辨率。
- 编码器的最后,通常会得到一系列抽象的高维特征表示。
2) 解码器(Expansive Path)
解码器部分的目标是将编码器提取到的低分辨率、高维特征映射恢复到与输入图像相同的尺寸。解码器通过一系列的上采样(反卷积或转置卷积)、卷积操作,将图像逐渐还原成与输入图像相同尺寸的分割图。
-
每一步解码操作通常会进行“跳跃连接”操作(Skip Connection),即将编码器中的特征图与解码器的特征图进行拼接(concatenation),以保留细节信息,避免在下采样过程中丢失重要的空间信息。
-
通过这种跳跃连接,解码器可以更好地恢复图像的细节,从而提高分割的精度。
3) 对称结构(U形结构)
U-Net 的最显著特点是其对称的结构,形成了一个 "U" 形。网络的下半部分(编码器)逐渐降低图像分辨率并提取高层次特征,而上半部分(解码器)通过反卷积操作逐步恢复图像分辨率,同时结合编码器的特征图信息。这种对称结构使得网络既能捕捉到全局上下文信息,又能保留局部细节信息。
3. U-Net的跳跃连接(Skip Connections)
U-Net 的跳跃连接是该网络的一个关键创新。跳跃连接将编码器层的输出与解码器层的输出直接连接,这样做的目的是防止特征信息的丢失,并有助于保留更多的空间信息,特别是在医学图像分割任务中,细节非常重要。跳跃连接不仅有助于恢复图像的空间分辨率,还能减少训练过程中的梯度消失问题。
- 通过跳跃连接,网络能够更好地结合低级别的细节信息和高级别的语义信息,从而使分割结果更加准确。
4. U-Net的应用
U-Net 最初是为医学图像分割设计的,尤其是在细胞、组织或器官的分割任务中表现突出。它的结构使其能够在标注数据较少的情况下仍然具有很好的泛化能力,因此也广泛应用于其他需要精细分割的图像任务,如卫星图像分割、道路检测、自动驾驶中的物体检测等。
5. U-Net的优点
- 高效性:U-Net 的对称结构可以非常高效地利用计算资源,尤其是在图像分割任务中,即使只有相对较小的数据集,U-Net 也能表现出很好的性能。
- 少量数据需求:U-Net 在数据集较小的情况下仍然能够学习到有效的分割特征,尤其是通过数据增强(如旋转、平移、缩放等)可以进一步提高其性能。
- 精确的分割:跳跃连接和解码器的上采样操作,使得 U-Net 能够保留图像中的细节信息,特别适合于医学图像分割中对精度要求很高的任务。
6. U-Net的变体和扩展
自 U-Net 提出以来,许多基于 U-Net 的变体和扩展相继出现,以下是一些主要的变体和扩展:
- 3D U-Net:将 U-Net 应用于三维医学图像分割,尤其适用于 CT 和 MRI 等三维医学影像的分割。
- Attention U-Net:引入注意力机制,提升对重要区域的聚焦能力,进一步提高分割精度。
- Nested U-Net (U-Net++):通过引入多级跳跃连接,进一步提升网络的表达能力,改善分割效果。
- ResU-Net:结合 ResNet 架构与 U-Net,用残差网络替代传统卷积层,以帮助解决深度网络中的梯度消失问题。
- V-Net:一个类似于 U-Net 的网络架构,用于 3D 图像的分割任务,采用卷积和转置卷积进行三维卷积操作。
2. U-Net的网络结构
1. 总体架构
U-Net 的网络结构呈对称的 "U" 形,由 编码器(Contracting Path) 和 解码器(Expansive Path) 两个主要部分构成,网络的整体结构是下采样(编码器)和上采样(解码器)交替进行,同时在解码器中使用跳跃连接来增强网络的表现。
1.1 编码器(Contracting Path)
编码器部分的目标是从输入图像中提取有用的特征,并逐步降低图像的空间分辨率,同时增加特征图的深度。
- 卷积层:每个编码器层包含两个卷积层(通常使用 3x3 卷积),通过卷积操作提取特征。
- 激活函数:通常使用 ReLU(Rectified Linear Unit)作为激活函数,增加非线性。
- 最大池化(Max Pooling):卷积操作后,使用 2x2 的最大池化操作对特征图进行下采样,以减少空间维度。
在每一层中,随着网络的深入,特征图的数量逐渐增多,空间分辨率逐渐减小。例如:
- 第1层:输入图像(例如 128x128x3) -> 卷积(3x3) -> 激活(ReLU) -> 池化(2x2) -> 输出特征图(64x64x64)。
- 第2层:特征图尺寸进一步缩小,特征数量增加(128x128x128),如此反复。
编码器的作用是提取输入图像中的语义特征,通常采用深层次的卷积和池化操作。
1.2 解码器(Expansive Path)
解码器部分的目标是将编码器提取到的低分辨率、高维特征映射恢复到原始图像的分辨率,同时将每个像素分类为目标类别。
- 上采样(Up-convolution 或 Transposed Convolution):通过反卷积操作(或转置卷积)将特征图的空间分辨率逐步增大。
- 跳跃连接(Skip Connections):在解码过程中,解码器会与编码器相应层的特征图进行拼接,以保留低级别的细节信息。即每个解码层都会连接一个来自编码器的特征图,避免空间信息的丢失。
- 卷积层:上采样后,解码器会继续通过卷积层提取特征,进一步提高分辨率。
解码器的关键思想是通过反卷积将特征图逐步恢复到原始输入图像的尺寸,同时通过跳跃连接保留编码器中的低级别特征,确保分割的精度。
例如:
- 第1层:编码器的最后一层输出特征图(例如 8x8x256) -> 反卷积(上采样到 16x16x128) -> 跳跃连接拼接编码器的相应层(例如拼接 16x16x128 特征图) -> 卷积(3x3) -> 激活(ReLU) -> 输出特征图(16x16x128)。
- 重复这种过程,直到恢复到与输入图像相同的尺寸。
1.3 最终输出层
在解码器部分的最后,网络会有一个 1x1 卷积层,该层将解码器输出的多通道特征图压缩成最终需要的类别数量(对于二分类,类别数量为 1,对于多分类任务,类别数量为类别的总数)。例如,输入的图像是 RGB 图像(3 通道),经过 U-Net 后,输出为与输入图像大小相同的图像,但每个像素点的标签由网络分配,输出图像的每个像素的类别为每个目标类别中的最大概率。
2. 跳跃连接(Skip Connections)
U-Net 最具创新性和优势的部分就是其跳跃连接,它通过将编码器中的低级别特征直接传递到解码器中,显著提高了网络的分割精度,尤其是在处理精细结构时。跳跃连接能够帮助恢复丢失的空间信息,使得解码器在重建图像时可以更好地保留局部细节信息,避免图像的细节部分被丢失。
例如,在解码器中每次上采样后,都会与编码器对应层的特征图进行拼接,然后通过卷积和激活函数提取特征,这样可以避免在下采样过程中丢失重要的空间信息。
3. 网络的层次结构总结
- 输入层:接收原始图像(通常为固定尺寸的图像,常见为 256x256 或 128x128 的大小)。
- 编码器(Contracting Path):由多个卷积层、ReLU 激活、最大池化层组成。每经过一层,图像的空间尺寸减少,特征图的数量增多。
- 瓶颈层:编码器和解码器的连接部分,通常是网络的最深层次,包含高维特征。
- 解码器(Expansive Path):由上采样(反卷积)层、跳跃连接和卷积层组成,每经过一层,图像的空间尺寸逐步恢复到原始尺寸,特征图的数量逐渐减少。
- 输出层:最终的 1x1 卷积层,输出与输入图像同样大小的分割图。
注意在最底部56x56x1024处,左侧有一个灰色的箭头,意为copy and crop,箭头右侧为56x56,而左侧却为64x64,这是无法拼接的,因此需要将左侧的64x64裁剪为56x56。其他的灰色箭头都是以此类推。
U-Net最后会得到388x388x2的分割图,并不是原来的572x572的图像。
但是GITHUB上主流的实现方式一般灰色箭头左右都是宽高一样的,而且输出和输入也是一致的。主要是因为使用了padding(原论文没有使用)。
在原论文当中,细胞与细胞之间的边界背景比较难分割,作者就将细胞间的边界采用大权重进行分割,其他的背景区域用比较小的权重去分割。
附:如果分割的图像分辨率特别大怎么办?
当使用 U-Net 进行图像分割时,如果图像的分辨率非常大,可能会面临以下几个问题:
- 内存消耗过大:大分辨率图像会导致网络在训练时需要消耗大量的内存和计算资源,尤其是当图像尺寸较大时,卷积层和池化层的计算量以及中间特征图的大小都非常庞大,可能导致内存溢出。
- 训练速度慢:大图像的处理时间较长,尤其是在使用标准的 GPU 进行训练时,计算和数据传输的延迟会显著增加训练时间。
- 梯度消失和梯度爆炸:由于图像尺寸大,特征图的空间维度也相应增大,这可能使得梯度消失或梯度爆炸等问题更加严重,影响训练的稳定性。
为了有效处理大分辨率的图像,常用的策略有以下几种:
1. 图像分块(Patch-based Training)
一种常见的解决方法是将大分辨率图像拆分为多个小的图像块进行处理。这种方法通过将大图像分割成更小的子图像块来减少计算负担,同时可以提高网络训练的效率。
-
具体做法:
- 将输入的大图像按照一定的大小(比如 256x256 或 512x512)切割成多个小块。
- 对每个小块分别进行前向传播和反向传播,进行训练。
- 在训练时,可以采取随机裁剪(Random Crop)来保证每个图像块的多样性。
- 对于测试阶段,可以通过滑动窗口的方式(Sliding Window)将预测结果拼接在一起,得到完整图像的分割结果。
-
优点:
- 减少了内存的使用,允许在有限的硬件资源下处理大图像。
- 训练时每个小块独立计算,计算效率更高。
-
缺点:
- 分割结果的边界可能会受到影响,尤其是在图像块之间存在明显过渡的情况下。为了解决这个问题,可以采用重叠裁剪(Overlap Cutting),即在切割时让相邻的图像块有一定的重叠区域,然后在拼接时去除重叠部分的预测结果。
- overlap效果图示:
2. 下采样(Downsampling)
另一种常用的方法是通过 下采样 来减少图像的分辨率,降低计算负担,尤其是在训练阶段。可以通过减少图像的分辨率来减小输入图像的尺寸,使得计算量更小,内存消耗也减少。
-
具体做法:
- 在输入图像送入 U-Net 之前,先对图像进行下采样,常见的方法是使用 双线性插值(Bilinear Interpolation)或 最近邻插值(Nearest-Neighbor Interpolation)将大分辨率图像缩小到适合网络处理的尺寸。
- 分割完成后,再使用上采样恢复图像到原始尺寸,或使用图像放大技术(如双线性插值)进行细节恢复。
-
优点:
- 减少计算量和内存占用。
- 训练速度加快。
-
缺点:
- 可能会损失部分细节信息,特别是在较小物体或细节较多的图像中,缩小分辨率可能会导致图像细节丢失,影响分割精度。
3. 逐步下采样(Progressive Downsampling)
逐步下采样是一种渐进式的训练策略,适用于大分辨率图像。这种方法在训练过程中逐步降低输入图像的分辨率,开始时使用低分辨率图像进行训练,随着训练的进行,逐渐提高输入图像的分辨率。
-
具体做法:
- 从较低分辨率的图像开始训练,这时网络处理较少的细节信息,计算量和内存消耗较低。
- 经过若干轮训练后,逐步将图像分辨率提高,直到达到目标图像分辨率。这可以通过重新调整图像大小来实现。
-
优点:
- 逐步训练可以帮助网络从简单的特征学习开始,减少过拟合的风险,同时提高训练效率。
- 高分辨率的图像不会直接影响训练初期的稳定性。
-
缺点:
- 需要额外的训练步骤,可能会使得训练时间变长。
- 对高分辨率图像的准确分割可能需要更多的训练迭代。
4. 硬件优化
除了改变网络架构或训练策略外,还可以通过更强的硬件来解决大分辨率图像带来的问题:
- 使用更大的 GPU 显存:更强大的硬件(例如具有较大显存的 GPU)可以处理更大的输入图像,避免由于内存不足导致的训练失败。
- 分布式训练:对于非常大的数据集和图像,分布式训练是另一种解决方案。可以通过多个 GPU 或服务器来并行处理数据,分摊计算和内存负担。
5. 图像金字塔(Image Pyramid)
图像金字塔是一种多尺度的图像处理方法,可以有效地处理大分辨率图像。通过构建图像金字塔(不同分辨率的图像集合),网络可以从低分辨率的图像开始训练,并逐步处理高分辨率的图像。这个方法类似于逐步下采样,但更加灵活,能够处理图像中的不同尺度特征。
-
具体做法:
- 将输入的大分辨率图像生成一系列分辨率逐渐降低的图像金字塔。
- 在不同的尺度下对图像进行处理,可以避免在某些尺度上丢失重要信息。
-
优点:
- 能够从多个尺度上捕捉图像信息,提高分割精度。
-
缺点:
- 训练和推理过程较为复杂,需要更多的计算资源和时间。
6. 小尺寸窗口(Sliding Window Approach)
在测试阶段,可以采用滑动窗口(sliding window)的方法来对大分辨率图像进行分割。在这种方法中,网络在一个小的窗口区域内进行分割,并将这些分割结果拼接起来。
-
具体做法:
- 设定一个固定大小的窗口(如 512x512),在大图像上进行滑动。
- 每次滑动时,对窗口中的图像块进行预测,然后将预测结果合并到最终的输出中。
-
优点:
- 可以处理任意大小的图像,不受图像分辨率的限制。
- 可以避免内存溢出问题。
-
缺点:
- 需要处理窗口之间的重叠区域,以避免边缘效应。
- 滑动窗口的计算速度较慢,特别是在图像分辨率非常大的情况下。
7. 混合方法
实际上,很多情况下可以结合上述方法,例如通过 分块训练 和 下采样,或结合 逐步下采样 和 图像金字塔,以实现更高效、更稳定的训练过程。
总结
当处理大分辨率图像时,可以采用多种策略来减少计算量、内存消耗和提高训练效率,包括:
- 图像分块:将大图像切割成小块进行处理。
- 下采样:降低图像分辨率来减少计算负担。
- 逐步下采样:逐步提高图像分辨率,逐步训练网络。
- 硬件优化:使用更强的硬件来处理大图像。
- 滑动窗口:使用滑动窗口方法对大图像进行逐部分处理。
相关文章:
37_U-Net网络详解
1.U-Net 网络概述 U-Net 是一种深度学习模型,广泛用于图像的语义分割任务。U-Net 网络的结构特别适合医学影像分割,尤其在少量训练数据的情况下表现优异。该网络由一个编码器-解码器架构组成,具有对称的“U”形结构,因此得名为 U…...
fastapi入门
好的,我将为您生成一个更详细、易于理解的 FastAPI 入门学习文档,特别是对复杂概念(如依赖注入)进行深入解释,帮助您在没有太多基础的情况下也能顺利学习和掌握 FastAPI。 FastAPI 入门学习文档 目录 简介环境搭建 2…...
RabbitMQ 之 死信队列
一、死信的概念 先从概念解释上搞清楚这个定义,死信,顾名思义就是无法被消费的消息,字面意思可以这样理 解,一般来说,producer 将消息投递到 broker 或者直接到 queue 里了,consumer 从 queue 取出消息进行…...
Android-如何实现Apng动画播放
01 Apng是什么 Apng(Animated Portable Network Graphics)顾名思义是基于 PNG 格式扩展的一种动画格式,增加了对动画图像的支持,同时加入了 24 位图像和8位 Alpha 透明度的支持,并且向下兼容 PNG。 Google封面图 02 A…...
微服务系统架构图
微服务架构是一种将单一应用程序开发为一组小型服务的架构风格。每个服务都在自己的进程中运行,它们之间采用轻量级的通信机制(如 HTTP/REST 或消息队列)进行相互协作。以下是关于微服务系统架构的简要介绍:一、核心特点独立部署 …...
04 —— Webpack打包CSS代码
加载器css-loader :解析css代码 webpack 中文文档 | webpack中文文档 | webpack中文网 加载器style-loader:把解析后的css代码插入到DOM style-loader | webpack 中文文档 | webpack中文文档 | webpack中文网 准备css代码,放到src/login目…...
【数据结构专栏】二叉搜索树(Binary Search Tree)的剖析?
文章目录 🧨前言1、二叉搜索树的基本概念?2、二叉搜索树的节点结构组成?3、二叉搜索树的插入操作?4、二叉搜索树的删除操作?5、二叉搜索树的遍历? 6、二叉搜索树的性能分析? 🎉完整代…...
SSM全家桶 1.Maven
或许总要彻彻底底地绝望一次 才能重新再活一次 —— 24.11.20 maven在如今的idea中已经实现自动配置,不需要我们手动下载 一、Maven的简介和快速入门 Maven 是一款为 Java 项目构建管理、依赖管理的工具(软件),使用 Maven 可以自动化构建测试、打包和发…...
前端三剑客(二):CSS
目录 1. CSS 基础 1.1 什么是 CSS 1.2 语法格式 1.3 引入方式 1.3.1 行内样式 1.3.2 内部样式 1.3.3 外部样式 1.4 CSS 编码规范 2. 选择器 2.1 标签选择器 2.2 id 选择器 2.3 class 选择器(类选择器) 2.4 复合选择器 2.5 通配符选择器 3. 常用 CSS 样式 3.1 c…...
解析html将表格插入word文档
用到依赖包 <dependency><groupId>org.jsoup</groupId><artifactId>jsoup</artifactId><version>1.15.2</version></dependency><dependency><groupId>org.aspectj</groupId><artifactId>aspectjweav…...
Java核心知识详解:String类、StringBuffer、数组及日期时间的全面解析
🚀 作者 :“码上有前” 🚀 文章简介 :Java 🚀 欢迎小伙伴们 点赞👍、收藏⭐、留言💬 标题 Java核心知识详解:String类、StringBuffer、数组及日期时间的全面解析 摘要 在Java中…...
唯一设备序列号(UID)、唯一产品识别码(UPI)和备份寄存器BKP
文章目录 一、唯一设备序列号UID二、唯一产品识别码UPI三、备份寄存器BKP 一、唯一设备序列号UID MCU 系列产品内置两个不同长度的唯一设备序列号,分别为 96 位的 UID(Unique device ID)和 128 位的UCID(Unique Customer ID),这两个设备序列号存放在闪存…...
Kafka - 消费者程序仅消费一半分区消息的问题
1. 问题描述 修改安全服务状态有时逻辑正常有时候逻辑不正常,排查incident服务的日志发现消息可以正常发送到 kafka topic ,但是incident-cron 服务有时候有拉取消息的日志有时候没有日志。 kafka 生产者可以将消息正常发送到 kafka topic ,…...
养老院管理系统+小程序项目需求分析文档
智慧综合养老服务平台是以业务为牵引、场景为驱动,围绕“老人”业务域,持续沉淀和打磨形成适应不同养老业务发展需要的业务能力,推动业务模式升级,为养老服务提供数字化解决方案,并依托实体站点与养老机构实现线上线下…...
K8s 下通过prometheus监控 nginx
k8s 下有两个版本的nginx ingress 分别是 ingress nginx 以及 nginx ingress Ingress-nginx 与 Nginx-ingress - LeoZhanggg - 博客园 这里我讨论的是 nginx ingress Nginx Ingress 使用Prometheus 导出数据 nginx ingress 本身支持通过支持这个提供prometheus 格式的…...
基于SpringBoot的京东绿谷旅游信息服务平台设计与实现(源码+定制+开发)
博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…...
使用Redis生成全局唯一id
为了生成一个符合要求的分布式全局ID,我们可以使用 StringRedisTemplate 来实现。这个ID由三部分组成: 符号位(1 bit):始终为0,表示正数。时间戳(31 bit):表示从某个起始…...
pytorch自定义算子导出onnx
文章目录 1、为什么要自定义算子?2、如何自定义算子3、自定义算子导出onnx4、example1、重写一个pytorch 自定义算子(实现自定义激活函数)2、现有算子上封装pytorch 自定义算子(实现动态放大超分辨率模型) 1、为什么要…...
从搭建uni-app+vue3工程开始
技术栈 uni-app、vue3、typescript、vite、sass、uview-plus、pinia、axios 一、项目搭建 1、创建以 typescript 开发的工程 npx degit dcloudio/uni-preset-vue#vite-ts my-vue3-project2、安装sass npm install -D sass// 安装sass-loader,注意需要版本10&…...
波点音乐自动点击
波点音乐 import uiautomator2 as u2 import time import sys import os# 动态点击时间,打印剩余时间 def dynamic_sleep(seconds):wait_time secondsfor i in range(wait_time):print(f"Waiting... {wait_time - i} seconds remaining")sys.stdout.flu…...
【一篇搞定配置】wget 下载与安装(Window)
🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏: 🏀各种软件安装与配置_十二月的猫的博客-CSDN博客 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 目录 1.…...
2025年春招修订版《C/C++笔面试系列》(1) C语言经典笔面试题(上)
C语言是嵌入式开发的常用语言,也是主要语言,很多企业在招聘嵌入式软件工程师时,C语言的熟练程度是一个重要考察点。笔试也是以C语言为主,所以想要拿到面试机会,还得通过C语言笔试,本专题总结了各大企业C语言…...
【042C】基于51RFID门禁系统(LCD12864显示)【Proteus仿真+Keil程序+报告+原理图】
☆、设计硬件组成:51单片机最小系统RFID读卡器4*4矩阵键盘AT24C02存储芯片LCD12864液晶显示继电器蜂鸣器LED灯。 1、设计采用STC89C52、AT89C52、AT89S52作为主控芯片,采用LCD12864液晶显示屏实时显示门禁系统; 2、系统集成两种解锁方式&am…...
scratch二次开发:blockly工作区垃圾桶和进度条的隐藏和显示
大家好,我是小黄。 本期给大家介绍的内容是实现blockly工作区的垃圾桶和进度条的显示和隐藏实现。 本次基于的项目源码大家可以关注小黄回复垃圾桶自行获取。 一.垃圾桶的显示和实现。 在blockly中,我们进行块的删除的时候最常用的两种方法是…...
【STM32】MPU6050初始化常用寄存器说明及示例代码
一、MPU6050常用配置寄存器 1、电源管理寄存器1( PWR_MGMT_1 ) 此寄存器允许用户配置电源模式和时钟源。 DEVICE_RESET :用于控制复位的比特位。设置为1时复位 MPU6050,内部寄存器恢复为默认值,复位结束…...
LDR6020驱动的Type-C接口显示器解决方案
一、引言 随着科技的飞速发展,Type-C接口凭借其高速数据传输、强大的电力传输能力以及便捷的正反可插设计,正逐渐成为现代电子设备的主流接口标准。在显示器领域,Type-C接口的引入不仅简化了线缆连接,还为用户带来了更丰富的功能…...
Spring Boot + Android 实现登录功能
在移动互联网的今天,许多应用需要通过移动端实现与服务器的交互功能,其中登录是最常见且基础的一种功能。通过登录,用户可以获得独特的身份标识,从而访问特定的资源或服务。本篇博客将详细介绍如何使用 Spring Boot 和 Android 实…...
【通俗理解】边际化技巧在概率论中的应用——从公式到实例
【通俗理解】边际化技巧在概率论中的应用——从公式到实例 关键词提炼 #边际化技巧 #概率论 #联合概率 #条件概率 #积分计算 #概率分布 #贝叶斯推断 第一节:边际化技巧的类比与核心概念【尽可能通俗】 边际化技巧,就像是你在一个复杂的概率迷宫中&am…...
Chen_AdaMV-MoE_Adaptive_Multi-Task_Vision_Mixture-of-Experts 译文
摘要 稀疏激活的专家混合(MoE)正在成为多任务学习(MTL)的一个有前途的范例。 MoE 不是将多个任务的知识压缩到单个模型中,而是分离参数空间,仅利用给定任务类型及其输入的相关模型片段,从而提供…...
多线程下使用数据库 - 20241124
问题 并发性较低,每秒千次但是较高一致性,比如利用数据库中的数据进行判断是否执行某个操作 存在的问题是,如何只锁定判断相关的数据,而不影响数据库操作无关数据。脏读/不可重复读/幻读 解决方案 利用数据InnoDB引擎的LBCC和…...
GMAN解读(论文+代码)
一、注意力机制 注意力机制与传统的卷积神经网络不同的是,前者擅长捕获全局依赖和长程关系,权重会动态调整。而后者对于所有特征都使用同一个卷积核。关于更多注意力机制内容,详见: 注意力机制、自注意力机制、多头注意力机制、通…...
《文件操作》
一 . 文本文件和二进制文件 根据数据的组织形式,数据文件被分为了二进制文件和文本文件 数据在内存中是以二进制的形式存储,如果不加转换的输出到外存的文件中,就是二进制文件。 如果要求在外存上以ASCII 码的形式存储,则需要再存…...
【君正T31开发记录】8.了解rtsp协议及设计模式
前边搞定了驱动,先不着急直接上手撸应用层的代码,先了解一下大致要用到的东西。 设计PC端先用vlc rtsp暂时H264编码(vlc好像不支持h265,这个后边我试试)的视频流,先需要支持上rtsp server,了解rtsp协议是必…...
C++菜鸟教程 - 从入门到精通 第三节
上节课的题 上节课的题,大家都做出来了吗? 看一下这道题: 题目描述 N!1*2*...*N; 例5!1*2*3*4*5120. 编程求1!2!3!...N!. 输入 输入一行,只有一个整数n (1<n<10) 输出 输出只有一行(这意味着末尾有一个回车符号),包括1…...
原生JS和CSS,HTML实现开屏弹窗
开屏弹窗常应用于打开游戏,或者打开网站的时候,跳出来在正中间,来显示一些信息,并可以设置今日不再显示 CSS代码如下 <style>#box {width: 100vw;height: 100vh;background-color: rgba(0, 0, 0, 0.2);position: relative…...
微软发布Win11 24H2系统11月可选更新KB5046740!
系统之家11月22日报道,微软针对Win11 24H2系统推出2024年11月最新可选更新补丁KB5046740,更新后系统版本后升至26100.2454,此次更新后修复当应用程序以PDF和XLSX格式导出图表对象时停止响应、无法使用API查找旋转信息等问题。以下小编将给大家…...
【Rabbitmq篇】高级特性----TTL,死信队列,延迟队列
目录 一.TTL 1.设置消息的TTL 2.设置队列的TTL 3.俩者区别 二.死信队列 定义: 消息成为死信的原因: 1.消息被拒绝(basic.reject 或 basic.nack) 2.消息过期(TTL) 3.队列达到最大长度 编辑 …...
【Linux】gcc/g++使用
编译 我们知道,gcc只能编译C,g既能编译C,也能编译C。 由于两者的选项是相同的,这里我们使用gcc来说明。 这就是一个我们在linux中gcc编译一段代码后会自动生成一个a.out为名的可执行文件,然后我们./a.out,…...
IDEA2023 SpringBoot整合MyBatis(三)
一、数据库表 CREATE TABLE students (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(100) NOT NULL,age INT,gender ENUM(Male, Female, Other),email VARCHAR(100) UNIQUE,phone_number VARCHAR(20),address VARCHAR(255),date_of_birth DATE,enrollment_date DATE,cours…...
Java网络编程 - cookiesession
cookie 之前学习了 Okhttp3 库可以调用API、抓取网页、下载文件。但是这些操作都是不要求登录的,如果 API、网页、文件等内容要求登录才能访问,就需要学习新的 cookie 相关的知识。 下面以豆瓣为例,使用 Java 程序读取“我的豆瓣”页面内容…...
100.【C语言】数据结构之二叉树的堆实现(顺序结构) 1
目录 1.顺序结构 2.示意图 编辑 从物理结构还原为逻辑结构的方法 3.父子节点编号的规律 4.顺序存储的前提条件 5.堆的简介 堆的定义 堆的两个重要性质 小根堆和大根堆 6.堆的插入 7.堆的实现及操作堆的函数 堆的结构体定义 堆初始化函数HeapInit 堆插入元素函…...
《Python基础》之循环结构
目录 简介 一、for循环 1、基本语法与作用 2、使用 range() 函数配合 for 循环 3、嵌套的for循环 二、while循环 1、基本语法与作用 2、while 循环嵌套 (1)、while循环与while循环嵌套 (2)、while循环与for循环嵌套 简介 …...
使用JDBC操作数据库
文章目录 使用JDBC操作数据库1. JDBC访问数据库步骤2. Statement与PreparedStatement区别3. JDBC的内容4. JDBC封装4.1 为什么进行JDBC封装4.2 实现JDBC封装4.3 什么是DAO4.4 配置数据库访问参数4.5 配置数据库连接池使用之JNDI的方式 5. 单例模式5.1 懒汉模式5.2 饿汉模式 使用…...
轻松解析 PDF 文档:深入了解 Python 的 pdfplumber 库
轻松解析 PDF 文档:深入了解 Python 的 pdfplumber 库 PDF 是一种常见的文件格式,广泛用于报告、文档、表单等领域。然而,如何高效解析 PDF 内容(尤其是文本和表格),一直是开发者面临的挑战。pdfplumber 是…...
实验五 时域采样与频域采样
时域采样理论的验证 【实例3-1】近似绘制x (n) R4n 在(0,2 π \pi π ) 上的幅频响应曲线( F T [ x ( n ) ] FT[x(n)] FT[x(n)] )。 x [1, 1, 1, 1]; N 64; xk fft(x, N); figure; subplot(2, 1, 1); stem(0:3, x, .); subplot(2, 1, 2); k 0:N-1; plot(2*k/N, abs(x…...
爬虫cookie反爬------加速乐(jsl)
加速乐 反爬虫技术:加速乐采用了包括OB混淆、动态加密算法和多层Cookie获取等高级反爬虫技术,确保整体校验的严密性。关键校验字段位于Cookie中的 __jsl_clearance_s,其验证过程通常涉及三次关键的请求,有效抵御恶意爬虫的侵扰。…...
设计模式——解释器模式
定义: 解释器模式是一种行为设计模式,它给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。在这种模式中,通常会将一个复杂的表达式(如数学表达…...
sorted()函数
sorted(iterable, keyNone, reverseFalse)iterable: 需要排序的可迭代对象(如列表、元组、字符串等)。 key: 一个函数,用于从每个元素中提取排序的依据。如果未指定,默认直接比较元素本身。 reverse: 一个布尔值,Tru…...
动静态分析
静态分析 获取哈希值: 查壳: 导出函数: 获取资源信息: 通过发现dos头和pe头,来确定它是个可执行程序。 动态分析...
2024年信号处理与神经网络应用国际学术会议(SPNNA 2024)
重要信息 会议时间:2024年12月13-15日 会议地点:中国武汉 会议官网:www.spnna.org 会议简介 2024年信号处理与神经网络应用国际学术会议(SPNNA 2024)将于2024年12月13日至15日在中国武汉召开。本次会议旨在为全球研…...