大数据深度学习卷积神经网络CNN:CNN结构、训练与优化一文全解
文章目录
- 大数据深度学习卷积神经网络CNN:CNN结构、训练与优化一文全解
- 一、引言
- 1.1 背景和重要性
- 1.2 卷积神经网络概述
- 二、卷积神经网络层介绍
- 2.1 卷积操作
- 卷积核与特征映射
- 卷积核大小
- 多通道卷积
- 步长与填充
- 步长
- 填充
- 空洞卷积(Dilated Convolution)
- 分组卷积(Grouped Convolution)
- 2.2 激活函数
- ReLU激活函数
- 优势与劣势
- Leaky ReLU
- Sigmoid激活函数
- 优势与劣势
- Tanh激活函数
- 优势与劣势
- Swish激活函数
- 其他激活函数
- 激活函数的选择
- 2.3 池化层
- 最大池化(Max Pooling)
- 优势与劣势
- 平均池化(Average Pooling)
- 优势与劣势
- 全局平均池化(Global Average Pooling)
- 池化窗口大小和步长
- 池化的替代方案
- 池化层的选择
- 2.4 归一化层
- 批量归一化(Batch Normalization)
- 优势与劣势
- 层归一化(Layer Normalization)
- 实例归一化(Instance Normalization)
- 组归一化(Group Normalization)
- 归一化层的选择
- 三、训练与优化
- 3.1 训练集准备与增强
- 数据预处理
- 数据增强
- 常见增强技巧
- 训练集分割
- 3.2 损失函数
- 回归任务
- 分类任务
- 优化损失函数
- 3.3 优化器
- 随机梯度下降(SGD)
- 自适应优化器
- 优化器选择注意事项
- 3.4 学习率调整
- 固定学习率
- 学习率调度
- 预定调整
- 自适应调整
- 学习率预热
- 3.5 正则化技巧
- L1和L2正则化
- Dropout
- Batch Normalization
- 数据增强
- 3.6 模型评估与调优
- 交叉验证
- 调参技巧
- 早停技巧
- 模型集成
- 4. 总结
大数据深度学习卷积神经网络CNN:CNN结构、训练与优化一文全解
本文全面探讨了卷积神经网络CNN,深入分析了背景和重要性、定义与层次介绍、训练与优化,详细分析了其卷积层、激活函数、池化层、归一化层,最后列出其训练与优化的多项关键技术:训练集准备与增强、损失函数、优化器、学习率调整、正则化技巧与模型评估调优。
一、引言
卷积神经网络(Convolutional Neural Networks, CNN)的复杂性和灵活性使其成为深度学习领域的核心研究主题之一。在本引言部分中,我们将深入探讨CNN的历史背景、基本原理、重要性以及其在科学和工业领域的影响。
1.1 背景和重要性
卷积神经网络的灵感源自人类视觉系统,特别是视觉皮层中的神经元结构。自Hubel和Wiesel在1962年的开创性工作以来,这一理念已经引发了一系列研究和发展。
- 早期发展: 由Yann LeCun等人在上世纪80年代末到90年代初开发的LeNet-5被视为第一个成功的卷积神经网络。LeNet-5在手写数字识别方面取得了令人印象深刻的结果。
- 现代崛起: 随着硬件的快速进展和大数据的涌现,CNN在21世纪初开始重新崛起,并在各个领域实现了突破性进展。
CNN的重要性不仅体现在其精度和效率上,而且还体现在其理论洞见上。例如,卷积层通过共享权重减少了参数数量,这有助于更有效地训练模型,还增强了模型对平移不变性的理解。
1.2 卷积神经网络概述
卷积神经网络是一种前馈神经网络,它的人工神经元可以响应周围单元的局部区域,从而能够识别视觉空间的部分结构特征。以下是卷积神经网络的关键组成部分:
- 卷积层: 通过卷积操作检测图像的局部特征。
- 激活函数: 引入非线性,增加模型的表达能力。
- 池化层: 减少特征维度,增加模型的鲁棒性。
- 全连接层: 在处理空间特征后,全连接层用于进行分类或回归。
卷积神经网络的这些组件协同工作,使得CNN能够从原始像素中自动学习有意义的特征层次结构。随着深度增加,这些特征从基本形状和纹理逐渐抽象为复杂的对象和场景表现。
卷积神经网络的独特优势在于其能够自动化许多传统机器学习中需要人工干预的特征工程部分。这一点不仅使其在许多任务中取得了优越性能,还激发了广泛的学术和工业界的兴趣。
二、卷积神经网络层介绍
卷积神经网络由多个层组成,每个层具有特定的目的和功能。这一部分将探讨卷积操作、激活函数、池化层、归一化层基本概念。
2.1 卷积操作
卷积操作是卷积神经网络的核心,涉及多个复杂的概念和细节。我们将逐一介绍它们。
卷积核与特征映射
卷积核是一个小型的矩阵,通过在输入上滑动来生成特征映射。每个卷积核都能捕获不同的特征,例如边缘、角点等。
卷积核大小
卷积核的大小影响了它能捕获的特征的尺度。较小的卷积核可以捕获更细致的特征,而较大的卷积核可以捕获更广泛的特征。
# 使用3x3的卷积核
conv_layer_small = nn.Conv2d(3, 64, 3)
# 使用5x5的卷积核
conv_layer_large = nn.Conv2d(3, 64, 5)
多通道卷积
在多通道输入下进行卷积,每个输入通道与一个卷积核进行卷积,然后所有的结果相加。这允许模型从不同的通道捕获不同的特征。
步长与填充
步长和填充控制卷积操作的几何属性。
步长
步长定义了卷积核在输入上移动的速度。较大的步长可以减少输出的尺寸,而较小的步长则保持尺寸不变。
# 使用步长2
conv_layer_stride2 = nn.Conv2d(3, 64, 3, stride=2)
填充
填充通过在输入边缘添加零来控制输出的尺寸。这有助于控制信息在卷积操作中的丢失。
# 使用填充1,使得输出尺寸与输入尺寸相同(假设步长为1)
conv_layer_padding1 = nn.Conv2d(3, 64, 3, padding=1)
空洞卷积(Dilated Convolution)
空洞卷积是一种扩展卷积核感受野的方法,它在卷积核的元素之间插入空白。这允许网络捕获更广泛的信息,而不增加卷积核的大小或计算量。
# 使用空洞率2的卷积核
conv_layer_dilated = nn.Conv2d(3, 64, 3, dilation=2)
分组卷积(Grouped Convolution)
分组卷积通过将输入通道分组并对每组使用不同的卷积核来扩展卷积操作。这增加了模型的容量,并使其能够学习更复杂的表示。
# 使用2个分组
conv_layer_grouped = nn.Conv2d(3, 64, 3, groups=2)
2.2 激活函数
激活函数在神经网络中起到了至关重要的作用。它们增加了模型的非线性,从而使其能够学习和逼近复杂的函数。
ReLU激活函数
ReLU(Rectified Linear Unit)是现代深度学习中最流行的激活函数之一。它是非线性的,但计算非常高效。
优势与劣势
ReLU的主要优点是计算效率高和促进稀疏激活。然而,它可能会导致"死亡ReLU"现象,其中某些神经元永远不会被激活。
# 使用PyTorch定义ReLU激活函数
relu = nn.ReLU()
Leaky ReLU
Leaky ReLU是ReLU的一种变体,允许负输入值的小正斜率。这有助于缓解"死亡ReLU"问题。
# 使用PyTorch定义Leaky ReLU激活函数
leaky_relu = nn.LeakyReLU(0.01)
Sigmoid激活函数
Sigmoid激活函数可以将任何值压缩到0和1之间。
优势与劣势
Sigmoid用于输出层可以表示概率,但在隐藏层中可能会导致梯度消失问题。
# 使用PyTorch定义Sigmoid激活函数
sigmoid = nn.Sigmoid()
Tanh激活函数
Tanh是另一个类似于Sigmoid的激活函数,但它将输出压缩到-1和1之间。
优势与劣势
Tanh通常优于Sigmoid,因为它的输出范围更大,但仍可能导致梯度消失。
# 使用PyTorch定义Tanh激活函数
tanh = nn.Tanh()
Swish激活函数
Swish是一种自适应激活函数,可能会自动调整其形状以适应特定问题。
# 使用PyTorch定义Swish激活函数
class Swish(nn.Module):def forward(self, x):return x * torch.sigmoid(x)
其他激活函数
还有许多其他激活函数,例如Softmax、Mish、ELU等,各有各的优点和适用场景。
激活函数的选择
激活函数的选择取决于许多因素,例如模型架构、数据类型和特定任务的需求。通过实验和调整,可以找到适合特定问题的最佳激活函数。
2.3 池化层
池化层(Pooling Layer)在卷积神经网络中扮演了重要角色,通常用于降低特征映射的维度,从而减少计算需求,并增加特征检测器的感受野。
最大池化(Max Pooling)
最大池化是最常用的池化技术之一。它通过选择窗口中的最大值来降低特征映射的尺寸。
# 使用PyTorch定义2x2的最大池化层
max_pooling = nn.MaxPool2d(2)
优势与劣势
最大池化的主要优点是它能保留窗口中的最显著特征。然而,它会丢失一些细节信息。
平均池化(Average Pooling)
与最大池化不同,平均池化使用窗口中所有值的平均值。
# 使用PyTorch定义2x2的平均池化层
average_pooling = nn.AvgPool2d(2)
优势与劣势
平均池化可以减轻最大池化可能导致的过于突出某些特征的问题,但可能会淡化一些重要特征。
全局平均池化(Global Average Pooling)
全局平均池化是一种更复杂的池化策略,它计算整个特征映射的平均值。这常用于网络的最后一层,直接用于分类。
# 使用PyTorch定义全局平均池化层
global_average_pooling = nn.AdaptiveAvgPool2d(1)
池化窗口大小和步长
池化窗口的大小和步长会直接影响输出的尺寸。较大的窗口和步长会更显著地降低尺寸。
池化的替代方案
池化层已经有了一些现代替代方案,例如使用卷积层的步长大于1,或使用空洞卷积。这些方法可能提供更好的特征保存。
池化层的选择
选择特定类型的池化层取决于任务需求和特定数据特性。深入理解各种池化技术如何工作,可以帮助深入理解它们是如何影响模型性能的。
2.4 归一化层
归一化层在训练深度神经网络时扮演了关键角色,主要用于改善训练的稳定性和速度。通过将输入数据缩放到合适的范围,归一化层有助于缓解训练过程中的梯度消失和梯度爆炸问题。
批量归一化(Batch Normalization)
批量归一化通过对每个特征通道的输入进行归一化,将输入缩放到零均值和单位方差。
# 使用PyTorch定义批量归一化层
batch_norm = nn.BatchNorm2d(num_features=64)
优势与劣势
- 优势:它允许更高的学习率,提供了一些正则化效果,通常导致更快的训练。
- 劣势:在小批量上的统计估计可能会导致训练和推理间的不一致。
层归一化(Layer Normalization)
层归一化是在单个样本上对所有特征进行归一化的变体。它在句子处理和循环神经网络中特别流行。
# 使用PyTorch定义层归一化
layer_norm = nn.LayerNorm(normalized_shape=64)
实例归一化(Instance Normalization)
实例归一化主要用于样式转换任务,归一化是在每个样本的每个通道上独立进行的。
# 使用PyTorch定义实例归一化
instance_norm = nn.InstanceNorm2d(num_features=64)
组归一化(Group Normalization)
组归一化是批量归一化和层归一化之间的一种折衷方案,将通道分为不同的组,并在每个组内进行归一化。
# 使用PyTorch定义组归一化
group_norm = nn.GroupNorm(num_groups=32, num_channels=64)
归一化层的选择
归一化层的选择应基于特定的任务和模型架构。例如,在视觉任务中,批量归一化可能是首选,而在NLP任务中,层归一化可能更有用。
三、训练与优化
卷积神经网络的训练和优化涉及许多关键组件和技术,它们共同决定了模型的性能和可用性。下面详细介绍这些方面。
3.1 训练集准备与增强
有效的训练数据是深度学习成功的基础。为了使卷积神经网络有效学习,训练集的选择和增强至关重要。
数据预处理
预处理是训练集准备的关键步骤,包括:
- 标准化:将输入缩放到0-1范围。
- 中心化:减去均值,使数据以0为中心。
- 数据清洗:消除不一致和错误的数据。
数据增强
数据增强是一种通过应用随机变换增加数据量的技术,从而增加模型的泛化能力。
常见增强技巧
- 图像旋转、缩放和剪裁
- 颜色抖动
- 随机噪声添加
# 使用PyTorch进行多种图像增强
from torchvision import transforms
transform = transforms.Compose([transforms.RandomRotation(10),transforms.RandomResizedCrop(224),transforms.ColorJitter(brightness=0.2, contrast=0.2, saturation=0.2, hue=0.1)
])
训练集分割
通常将数据分为训练集、验证集和测试集,以确保模型不会过拟合。
3.2 损失函数
损失函数衡量模型预测与真实目标之间的差距。选择适当的损失函数是优化模型性能的关键步骤。
回归任务
对于连续值预测,通常使用:
- 均方误差(MSE):衡量预测值与真实值之间的平方差。
# 使用PyTorch定义MSE损失
mse_loss = nn.MSELoss()
- 平滑L1损失:减少异常值的影响。
分类任务
对于类别预测,常见的损失函数包括:
- 交叉熵损失:衡量预测概率分布与真实分布之间的差异。
# 使用PyTorch定义交叉熵损失
cross_entropy_loss = nn.CrossEntropyLoss()
- 二元交叉熵损失:特别用于二分类任务。
- 多标签损失:适用于多标签分类。
优化损失函数
选择适当的损失函数不仅取决于任务类型,还与模型架构、数据分布和特定的业务指标有关。有时,自定义损失函数可能是必要的,以便捕捉特定问题的核心挑战。
3.3 优化器
优化器用于更新神经网络的权重,以便最小化损失函数。每种优化器都有其特定的数学原理和应用场景。
随机梯度下降(SGD)
SGD是最基本的优化算法。
- 基本SGD: 按照负梯度方向更新权重。
- 带动量的SGD: 引入动量项,积累之前的梯度,以便更平稳地收敛。
# 使用PyTorch定义带动量的SGD优化器
optimizer_sgd_momentum = torch.optim.SGD(model.parameters(), lr=0.01, momentum=0.9)
自适应优化器
自适应优化器能自动调整学习率。
- Adam: 结合了Momentum和RMSProp的优点。
# 使用PyTorch定义Adam优化器
optimizer_adam = torch.optim.Adam(model.parameters(), lr=0.001)
- Adagrad、RMSprop等: 针对不同参数有不同的学习率。
优化器选择注意事项
- 任务相关性: 不同优化器在不同任务和数据上可能有不同的效果。
- 超参数调优: 如学习率、动量等可能需要调整。
3.4 学习率调整
学习率是优化器中的关键超参数,其调整对模型训练有深远影响。
固定学习率
最简单的方法是使用固定学习率。但可能不够灵活。
学习率调度
更复杂的方法是在训练过程中动态调整学习率。
预定调整
- 步骤下降: 在固定步骤处降低学习率。
- 余弦退火: 周期性调整学习率。
# 使用PyTorch定义余弦退火调度器
scheduler = torch.optim.lr_scheduler.CosineAnnealingLR(optimizer_adam, T_max=50)
自适应调整
- ReduceLROnPlateau: 基于验证损失降低学习率。
学习率预热
训练初期逐渐增加学习率。
- 线性预热: 初始阶段线性增加学习率。
3.5 正则化技巧
正则化是防止过拟合和提高模型泛化能力的关键技术。
L1和L2正则化
- L1正则化:倾向于产生稀疏权重,有助于特征选择。
- L2正则化:减小权重,使模型更平滑。
# 使用PyTorch添加L1和L2正则化
l1_lambda = 0.0005
l2_lambda = 0.0001
loss = loss + l1_lambda * torch.norm(weights, 1) + l2_lambda * torch.norm(weights, 2)
Dropout
随机关闭一部分神经元,使模型更鲁棒。
- 普通Dropout:随机丢弃神经元。
- Spatial Dropout:在卷积层中随机丢弃整个特征图。
Batch Normalization
通过标准化层输入,加速训练并减轻初始化的敏感性。
数据增强
如前所述,数据增强是一种重要的正则化手段。
3.6 模型评估与调优
模型评估是衡量模型性能的过程,调优则是改进性能。
交叉验证
使用交叉验证来估计模型的泛化能力。
- k-折交叉验证:将数据分为k个部分,轮流使用其中一个作为验证集。
调参技巧
- 网格搜索:尝试不同超参数组合。
- 随机搜索:随机选择超参数,更高效。
早停技巧
如果验证损失不再下降,则停止训练,以防止过拟合。
模型集成
通过结合多个模型来提高性能。
- Bagging:训练多个模型并平均预测。
- Boosting:在先前模型的错误上训练新模型。
- Stacking:使用新模型组合其他模型的预测。
4. 总结
通过上面文章内容我们全面探讨了卷积神经网络CNN,深入分析了背景和重要性、定义与层次介绍、训练与优化,详细分析了其卷积层、激活函数、池化层、归一化层,最后列出其训练与优化的多项关键技术:训练集准备与增强、损失函数、优化器、学习率调整、正则化技巧与模型评估调优。
相关文章:

大数据深度学习卷积神经网络CNN:CNN结构、训练与优化一文全解
文章目录 大数据深度学习卷积神经网络CNN:CNN结构、训练与优化一文全解一、引言1.1 背景和重要性1.2 卷积神经网络概述 二、卷积神经网络层介绍2.1 卷积操作卷积核与特征映射卷积核大小多通道卷积 步长与填充步长填充 空洞卷积(Dilated Convolution&…...

RabbitMQ(九)死信队列
目录 一、简介1.1 定义1.2 何时进入死信队列?1.3 死信消息的变化1.4 死信队列的应用场景1.5 死信消息的生命周期 二、代码实现2.1 死信队列的配置步骤2.2 配置类2.3 配置文件2.4 生产者2.5 业务消费者2.6 死信消费者2.7 测试结果 三、总结四、补充4.1 启动报错 ineq…...

KEI5许可证没到期,编译却出现Error: C9555E: Failed to check out a license.问题解决
一、编译出现如下报错 二、检查一下许可证 三、许可证在许可日期内,故应该不是许可证的问题 四、检查一下编译器,我用的是这个,这几个编译器的区别其实我不太明白,但我把问题解决是选的这个 五、找到编译器的路径,去复…...

南京观海微电子----时序图绘制工具
Wavedrom 是一款功能强大且简单易用的文本转图表工具,被广泛应用于生成时序图、波形图等交互式波形。其特点在于使用简单的文本语法,使得开发人员能够以可视化的方式表示数字信号和时间序列数据。Wavedrom 的优势在于其高度灵活性和可扩展性,…...

Gin CORS 跨域请求资源共享与中间件
Gin CORS 跨域请求资源共享与中间件 文章目录 Gin CORS 跨域请求资源共享与中间件一、同源策略1.1 什么是浏览器的同源策略?1.2 同源策略判依据1.3 跨域问题三种解决方案 二、CORS:跨域资源共享简介(后端技术)三 CORS基本流程1.CORS请求分类2.基本流程 四、CORS两种…...

TS:.d.ts 文件 和 declare 的作用
1 declare 做外部声明1.1 声明外部类型1.2 声明外部模块1.2.1 解决引入资源模块报错1.2.2 跳过对第三方库的类型检查 1.3 声明外部变量1.4 声明外部命名空间(作用域) 2 .d.ts 文件做外部声明3 declare global {} 在模块中做外部声明 先说一下我对 .d.ts文…...

JavaScript-jQuery2-笔记
1.获取元素文本、属性、内部结构、表单中的值 获取标签中所夹的文本内容:text() 获取标签的属性值:prop(属性名) 获取表单元素的内容:如 文本框中的内容 val() 获取元素的内部html结构:html() 2.筛选选择器 筛选选择器࿱…...

设计模式之多线程版本的if------Balking模式
系列文章目录 设计模式之避免共享的设计模式Immutability(不变性)模式 设计模式之并发特定场景下的设计模式 Two-phase Termination(两阶段终止)模式 设计模式之避免共享的设计模式Copy-on-Write模式 设计模式之避免共享的设计模…...

mybatis核心配置文件介绍
mybatis核心配置文件 1. properties配置介绍 properties标签:加载外部的资源配置文件 属性:resource 指定要引入的配置文件路径 在核心配置文件中,通过:${key}方式引入外部配置文件的数据 jdbc.peroperties 的文件内容…...

Linux完全卸载Anaconda3和MiniConda3
如何安装Anaconda3和MiniConda3请看这篇文章: 安装Anaconda3和MiniConda3_minianaconda3-CSDN博客文章浏览阅读474次。MiniConda3官方版是一款优秀的Python环境管理软件。MiniConda3最新版只包含conda及其依赖项如果您更愿意拥有conda以及超过720个开源软件包&…...

Apache Answer,最好的开源问答系统
Apache Answer是一款适合任何团队的问答平台软件。无论是社区论坛、帮助中心还是知识管理平台,你可以永远信赖 Answer。 目前该项目在github超过10K星,系统采用go语言开发,安装配置简单,界面清洁易用,且开源免费。项目…...

【C】内存分配
首先,回顾一下内存分配。所有程序都必须预留足够的内存来存储程序使用的数据。这些内存中有些是自动分配的: float x; int place[100]; 这些声明预留了足够的空间,还为内存提供了一个标识符,可以使用x或place识别数据。 1、mal…...

MySQL 从零开始:03 基本入门语句
文章目录 1、连接数据库1.1 命令提示符登陆1.2 MySQL 8.0 Command Line Client 登陆1.3 MySQL Workbench 登陆 2、基本语句2.1 查看所有库2.2 创建库2.3 删除库2.4 选择数据库2.5 查看表2.6 创建表2.7 删除表2.8 改表名2.9 清空表 在上一小节中介绍了 MySQL 数据库的安装&#…...

井盖异动传感器,守护脚下安全
随着城市化进程的加速,城市基础设施的安全问题日益受到关注。其中,井盖作为城市地下管道的重要入口,其安全问题不容忽视。然而,传统的井盖监控方式往往存在盲区,无法及时发现井盖的异常移动。为此,我们推出…...

复合机器人作为一种新型的智能制造装备高效、精准和灵活的生产方式
随着汽车制造业的快速发展,对于高效、精准和灵活的生产方式需求日益增强。复合机器人作为一种新型的智能制造装备,以其独特的优势在汽车制造中发挥着越来越重要的作用。因此,富唯智能顺应时代的发展趋势,研发出了ICR系列的复合机器…...

重置 Docker 中 Gitlab 的账号密码
1、首先进入Docker容器 docker exec -it gitlab bash 2、连接到 gitlab 的数据库 需要谨慎操作 gitlab-rails console -e production 等待加载完后会进入控制台 ------------------------------------------------------------------------------------------------------…...

任务类型划分
以下内容来自于ChatGPT内存密集型应用和IO密集型应用是两种不同类型的计算应用,它们在资源需求和性能特点上有所不同。 内存密集型应用(Memory-Intensive Applications): 特点: 这类应用主要依赖大量的内存资源来执行任…...

docker搭建部署mysql并挂载指定目录
Docker是一种轻量级、可移植的容器化平台,可以简化应用程序的部署和管理。在本文中,我们将探讨如何使用Docker来搭建和部署MySQL数据库,并将数据和配置文件挂载到外部目录,以实现数据持久化和方便的配置管理。 1: 安装Docker 首…...

即将推出的 OpenWrt One/AP-24.XY:OpenWrt 和 Banana Pi 合作路由器板
OpenWrt开发人员正在与Banana Pi合作开发OpenWrt One/AP-24.XY路由器板。OpenWrt 是一个轻量级嵌入式 Linux 操作系统,支持近 1,800 个路由器和其他设备。然而,这将是第一块由 OpenWrt 直接开发的路由器板。 该主板将基于 MediaTek MT7981B (Filogic 82…...

【uniapp-小程序-分享图5/4】
utils.js //裁剪分享的图片为5:4 const makeCanvas (imgUrl) > {console.log("imgUrl",imgUrl);return new Promise((resolve, reject) > {// 获取图片信息,小程序下获取网络图片信息需先配置download域名白名单才能生效uni.getImageInfo({src: imgUrl,succe…...

【响应式编程】前置知识和相关技术的总结
前置知识 这些概念都与响应式编程密切相关。🦌 1. 并发和多线程编程:响应式编程需要处理并发性,它允许多个操作独立地并行执行。这使得应用程序可以在不同的线程、进程或设备上处理多个事件。 2. 事件驱动编程:响应式编程是一种…...

K8S--安装MySQL8(单机)
原文网址:K8S--安装MySQL8(单机)-CSDN博客 简介 本文介绍K8S部署MySQL8(单机)的方法。 ----------------------------------------------------------------------------------------------- 分享Java真实高频面试题…...

CMake+QT+大漠插件的桌面应用开发
文章目录 CMakeQT大漠插件的桌面应用开发说明环境项目结构配置编译环境代码 CMakeQT大漠插件的桌面应用开发 说明 在CMake大漠插件的应用开发——处理dm.dll,免注册调用大漠插件中已经说明了如何免注册调用大漠插件,以及做了几个简单的功能调用&#x…...

OpenCV-24双边滤波
一、概念 双边滤波对于图像的边缘信息能够更好的保存。其原理为一个与空间距离相关的高斯函数与一个灰度距离相关的高斯函数相乘。 空间距离:指的是当前点与中心点的欧式距离。空间域的高斯函数及其数学形式为: 其中(xi,yi&…...

AI智能分析网关V4:太阳能+4G智慧水库远程可视化智能监管方案
一、背景需求分析 由于水库位置分散的原因,水库视频监控建设在立杆、布线等方面都存在一定的难度,且需要人力、物力的前期投入和后期维护。目前水库的监管存在一定的问题,管理人员工作强度大但管理质量并不高,人为巡检无法实时发…...

第8章-第8节-Java中的文件类File的简单介绍
1、我们已经写过File的相关代码: BufferedReader bf new BufferedReader(new FileReader(new File("aa.txt"))); 2、其实FIle这个类自身也是非常强大的,封装了很多操作文件/目录的方法,今天我们就需要去详细的学习这个类&#x…...

CTF-PWN-沙箱逃脱-【seccomp和prtcl-2】
文章目录 沙箱逃脱prtcl题HITCON CTF 2017 Quals Impeccable Artifact libc 2.24flag文件对应prctl函数检查源码思路exp 沙箱逃脱prtcl题 HITCON CTF 2017 Quals Impeccable Artifact libc 2.24 flag文件 此时的flag文件在本文件夹建一个即可 此时的我设置的flag为 对应prc…...

【Docker篇】使用Docker操作镜像
文章目录 🛸镜像🌺基本操作⭐docker --help⭐docker pull [ 参数 ]⭐docker images⭐docker save -- 导出⭐docker rmi -- 删除⭐docker load -- 导入 🛸镜像 镜像是指在计算机领域中,通过复制和创建一个与原始对象相似的副本的过…...

css宽度适应内容
废话不多说,看如下demo,我需要将下面这个盒子的宽度变成内容自适应 方法有很多,如下 父元素设置display:flex 实现子元素宽度适应内容 如下给父元素设置flex能实现宽度自适应内容 <!DOCTYPE html><html lang"en"><head><meta charset"U…...

粒子物理和原子核物理的理论在模拟和分析电路中的粒子束和辐射效应中的应用
粒子物理和原子核物理的理论可以应用于模拟和分析电路中的粒子束和辐射效应,特别是在粒子加速器和辐射探测器的设计和优化方面。通过这些理论的应用,可以提高加速器和探测器的性能,推动粒子物理和原子核物理的研究进展。粒子物理和原子核物理…...