基于深度学习的多焦点图像融合系统【数据集+深度学习模型+源码+PyQt5界面】

在这里插入图片描述

深度学习多焦点聚焦图像融合

文章目录

  • 研究背景
  • 代码下载链接
  • 一、效果演示
    • 1.1 界面设计
    • 1.2 图像融合演示1
    • 1.3 图像融合演示2
    • 1.4 图像融合演示3
  • 二、技术原理
    • 2.1 引言
    • 2.2 融合策略
    • 2.3 深度特征的提取
    • 2.4 融合策略
      • 2.4.1 利用深度特征计算模糊度
      • 2.4.2 去噪与平滑
      • 2.4.3 图像融合
  • 三、实验分析
    • 3.1实验设置
      • 3.1.1 硬件环境
      • 3.1.2 软件环境
      • 3.1.3 数据集
      • 3.1.4 系统设计与实现
      • 3.1.5 主界面
      • 3.1.6 融合效果
  • 代码下载链接
  • 参考文献
  • 结束语


研究背景

  人们在用相机拍照时,由于相机景深问题,难以确保每个细节都清晰。相机不能将镜头内所有景物拍摄清楚,导致拍摄出的照片不能完全满足需求。为此,多焦点图像融合技术应运而生。它巧妙地将两张在同一取景地但聚焦位置不同的源图像融合,得到一张整体聚焦的融合图,从而巧妙地突破了传统技术景深限制,为摄影艺术带来新的可能性。这样的融合图像不仅更符合人类的视觉感知习惯,而且也便于后续的数字图像处理,提高了处理效率。此外,多聚焦图像融合技术还有助于提高图像的细节保留和清晰度,使得图像在视觉上更加美观,同时也能更好地满足各种计算分析的需求。
  信息融合技术已发展四十余年,成为许多学者研究的热门领域。到目前,它已成为众多图像系统中不可缺少的关键预处理技术。信息融合技术的很多方面都用到图像融合技术,该技术能有效地将不同传感器获得的两个或多个图像融合在一起,生成内容更丰富、更符合人类视觉感知的图像[1][2]。在军事应用中,图像融合助力整合不同传感器(如红外、可见光、雷达等)的图像信息,提高对战场环境的感知能力,实现目标检测、跟踪、识别等功能,增强部队的作战效能。在医疗领域,CT(计算机断层扫描)技术能够精确展示骨骼结构,而MRI(磁共振成像)则擅长清晰地描绘软组织。通过融合这两种不同模态的医学图像,可以获得更为全面的医疗影像资料。在遥感领域,多光谱图像因其蕴含丰富的光谱信息而备受重视,尽管其空间分辨率通常不如全色图像。相比之下,全色图像在空间分辨率上表现更佳,但光谱信息则较为有限。为发挥这两种图像各自优势,通过融合生成一张高空间分辨率且富含光谱信息的图像,可更精确地解读所观测场景。这种融合技术不仅能够提高图像的清晰度,还能够增强对地物细节的识别能力,从而在遥感分析和应用中发挥重要作用。此外,图像融合技术也用于增强现实、图像编辑、视频合成等应用,丰富了人们的视觉体验。
  在军事领域,无人机经常用于执行敌方侦察任务。作为一种先进的军事技术装备,无人机通常会搭载多种传感器,如重力传感器、红外线探测器、激光雷达(Lidar)以及可见光摄像头等。集成了这些传感器后,无人机能够在战场多变环境中收集和利用大量信息,提高执行任务效率。为了实现这些传感器捕获数据的最大化利用,关键在于采用图像融合技术来综合处理和整合这些多元信息。图1-1展示了可见光与红外图像的组合。在可见光图像中,由于人物与背景颜色接近,难以迅速辨识人物,但场景细节清晰。而在红外图像中,人物轮廓突出,但场景细节模糊。通过融合这两种图像的显著信息,对无人机执行精确的目标检测和识别任务极具助益。

代码下载链接

关注博主工忠浩【小蜜蜂视觉】,回复【图像融合】即可获取


一、效果演示

  本文构建的基于深度学习的多焦点图像融合系统基于PyQt5构建。

1.1 界面设计

在这里插入图片描述

1.2 图像融合演示1

在这里插入图片描述

1.3 图像融合演示2

在这里插入图片描述

1.4 图像融合演示3

在这里插入图片描述

二、技术原理

2.1 引言

  在过去的几年里,深度卷积网络(CNN)在图像处理方面取得了显著的成就。Yu Liu率先将CNN应用于多焦点图像融合[16]。Ram Prabhakar提出了一种无监督的深度学习方法,称为DeepFuse,用于解决曝光融合问题[23]。该算法通过加速融合图像的构建,并采用12种人工设计的掩模来构建数据集。算法中包括对决策图的后处理步骤。训练图像包含了聚焦和散焦的部分,但由于使用了人工设计的掩模,与真实的多聚焦图像数据存在差异。此外,还提出了一种基于深度学习的算法,用于处理不同类型的图像融合任务[24]。H. Li提出了DenseFuse方法,用于融合红外和可见光图像[25]。该方法采用编码器-解码器无监督策略来提取有用特征,并利用L1范数将这些特征融合。在红外图像中,由于热辐射物体的存在,其像素强度通常高于可见光图像。该算法强调的是像素强度而非像素梯度,因为L1范数更适合于红外和可见光图像的融合。当热辐射物体较大时,红外图像中的相应区域可能全白,而可见光图像中的对应区域可能全黑,这会导致两者在梯度上的相似性。在这种情况下,基于梯度的指标(如空间频率)可能会引入检测误差,因此不适用。
  在本文中,利用基于编码器-解码器网络架构的无监督学习框架训练模型。编码器负责从输入图像抽取关键特征,而解码器则负责从抽象特征集中重新捕获原始图像。通过这种方式,能够学习到图像中的关键特征,并利用这些特征进行后续处理。为了生成源图像的模糊度和对应掩码图,利用处理模糊度作为融合规则。这一方法的核心假设是,只有位于景深内的物体才会呈现出清晰的外观。一些研究人员对此进行了改进,并提出了将深度学习和梯度信息结合的新思路,这有望进一步提升多聚焦图像融合的性能。韩旭提出了一种基于梯度和连通区域的融合方法(GCF)[26],该方法利用编码器-解码器结构生成梯度关系图来创建决策图,并利用深度学习模型隐式计算梯度信息。与此相比,本文直接使用编码器-解码器输出原始图像,并通过模糊度显式计算深层特征中的梯度信息来生成掩码图。本文推测,相较于隐式解码器映射,本文的方法可能更为稳健。

2.2 融合策略

  本节将详细阐述本文所提出的融合策略。经过在海量数据上的训练,CNN模型成功萃取了图像中多种特征,如边缘轮廓、边角细节以及纹理结构等。这些特征在图像聚焦状态或散焦程度的评估中扮演着关键角色。本文所提出的多焦点图像融合方法,如图3-1所示,其核心在于利用无监督的深度特征提取技术,先对源图像进行特征解码,接着利用基于梯度的方法对模糊度进行评估,初步生成融合掩码图后,为调整和修改掩码图本文使用去噪与平滑策略进行修整,最后实现多源图像信息的有效整合。
在训练阶段提取了高维特征。在推理阶段,利用编码器的深层特征来计算图像模糊度,并最终生成掩码图以融合两个多聚焦的源图像。本文的算法专门设计用于融合两个源图像。对于多图像融合,它可以直接将多个图像依次串联进行融合。
在这里插入图片描述

在这里插入图片描述

2.3 深度特征的提取

  本文使用编码器和解码器架构来重建原始输入图像并在训练阶段丢弃融合操作。在网络完成训练且参数固定后,推理阶段采用模糊度的处理来评估编码器提取的深层特征活跃度。该架构如图3-2所示,编码器由四个级联的卷积层组成,各层输出相互连接,这种设计不仅增强了特征传播,还实现了参数的高效利用,在特征图的上方或下方标注了其内核编号。为了更精确地重建图像,移除了池化层。本研究引入了挤压和激励(SE)机制,如下图所示,该机制在图像识别和分割任务中展现出卓越性能。
在这里插入图片描述
  SE模块通过自适应微调通道或空间特征响应,显著提高了空间特征编码的保真度[27]。如图3-2所示,本文使用SE模块来增强深层特征的鲁棒性和代表性。本文使用三个版本的SE模块,空间挤压和通道激励(sSE),通道挤压和空间激励(cSE),以及并发空间和通道挤压和通道激励(scSE),这种架构为网络提供了学习更具意义和表达力的空间及通道特征图的机会[28]。具体而言,sSE利用配备1x1卷积核的层来产生投影张量,这个张量中的每个元素都封装了在不同空间位置的所有通道C的信息合成,随后利用这些信息对空间域中的原始特征图进行细化,sSE在单个通道的粒度级别上对特征映射进行重新校准。scSE则是sSE和cSE的逐元素相加,它能够同时优化输入的空间和通道级信息。损失函数L与像素损失L_p和结构相似性(SSIM)损失L_ssim有关:
在这里插入图片描述

L被最小化来训练编码器和解码器。λ是权重常数,用来平衡两个损失的重要性。像素损耗L_p是输出(O)和输入(I)之间的欧氏距离:
在这里插入图片描述

SSIM损失L_ssim是O和I之间的结构差异,
在这里插入图片描述
其中:
在这里插入图片描述
SSIM表示结构相似性操作。亮度、对比度和结构相似度的表达式在公式的右边,μ是平均值,σ是标准差,C1、C2和C3是常数[29]。

2.4 融合策略

  在推理阶段,从编码器中获得了图像的两个深度特征。通过利用模糊度的计算生成初始掩码图,使用传统的去噪与平滑技术对其进行细化,以减少较小差异。该改进的方法最终生成了一个复合掩码图,该图无缝地集成了来自两个多焦点源图像的基本特征。

2.4.1 利用深度特征计算模糊度

  在本文中采用了与DenseFuse不同的方法来计算模糊度。与DenseFuse中使用的L1-范数不同,本文使用特征梯度而不是特征强度来计算模糊度。特征梯度能够反映图像中特征的变化率,从而更好地指示哪些部分是清晰的。为了执行这一任务,本文利用编码器为图像中的每个像素产生多维深度特征。然而,传统的空间频率计算是为单通道灰度图像量身定制的,这意味着直接将深度特征应用于空间频率计算是不太准确的。作为回应,创新了一种计算这些深层特征模糊度的方法。设F是由编码器块输出的深度特征,F_((x,y))表示一个特征向量,(x, y)是这些向量的位置,通过以下公式计算模糊度(BF)。
在这里插入图片描述

2.4.2 去噪与平滑

  尽管基于深度特征构建的掩码图展现出了显著的鲁棒性,能够准确地指出图像中的聚焦区域,在掩码流程中,图像自身的不稳定性或成像系统引入的噪声可能会导致误差的产生。例如,成像过程中可能会随机出现高斯噪声或椒盐噪声,这些噪声会对模糊度的精确计算产生干扰,特别是椒盐噪声,它对模糊度的测量有着显著的影响。为了弥补这一缺陷,本文使用一种去噪与平滑策略。通过形态学操作,如开运算和闭运算,以及移除小区域的方法,可以有效清除掩码图中的错误聚焦像素,从而提高掩码图的准确性。
为了精细调整和修正掩码图,本算法采用了形态学运算(开运算和闭运算),作为后处理步骤,开运算对应去噪而闭运算对应平滑,并使用了小磁盘形状的结构元素[30]。这种结构元素的半径与模糊度核的半径相匹配,能够有效地识别和修正错误,同时确保相邻区域之间的正确连接。针对二元掩码图的每个通道,本文实施了一项小区域移除策略,以消除那些小于特定区域阈值(0.01 * H * W,其中H和W分别代表原始输入图像的高度和宽度)[16]的区域,从而逆转错误掩码图。
  为了削弱边界附近的伪影,本文运用引导滤波器来优化聚焦与散焦区域的过渡[31][30]这一高效的边缘保留滤波技术。在图像融合过程中,引导滤波器(Guided Filter)采用初始融合图像作为其计算的引导图,以实现对后续掩码图的优化。引导滤波器通过将初始融合图像作为引导,可以更准确地调整融合图像中的细节,提高图像的整体质量。引导滤波器(Guided Filter)中,经过一系列实验测试和优化,确定了窗口半径r为4和正则化参数ε为0.1的参数设置,以实现最佳的处理效果。这些参数的选择对滤波器的性能有重要影响,通过实验确定这些参数值,可以确保滤波器在处理图像时能够达到预期的效果。

2.4.3 图像融合

  通过采用像素级加权融合规则,得到最终融合图像F。输入图像Imgk表示已完成预注册的源图像,
在这里插入图片描述
在这里插入图片描述

三、实验分析

3.1实验设置

3.1.1 硬件环境

  1. CPU:Intel Core i7
  2. GPU:NVIDIA GeForce RTX 2060

3.1.2 软件环境

  1. 操作系统:Windows 10
  2. Python版本:3.8
  3. 深度学习框架:PyTorch 1.9.0
  4. 其他依赖库:torch、opencv-python、numpy、skimage
  5. 编程环境:Anaconda Powershell Prompt(Miniconda3)

  新人安装Anaconda环境可以参考博主写的文章Anaconda3与PyCharm安装配置保姆教程

  新人安装PyTorch GPU版本可以参考博主写的文章基于conda的PyTorch深度学习框架GPU安装教程

3.1.3 数据集

  本文使用公开的300多对公开的多焦点图像作为评估的测试集。由于本文采用无监督策略,首先使用MS-COCO来训练编码器-解码器网络[32],以其中100对图像作为训练集,并用其中的部分图像来验证每个时期的重建能力。接下来借助OpenCV库提前对数据进行处理,如缩放、裁剪、旋转等操作。
在这里插入图片描述

3.1.4 系统设计与实现

  1. 创建界面
      通过编写Python代码以创建GUI界面。利用QMainWindow类提供的框架,构建多焦点图像融合系统界面。
class MyMainWindow(QMainWindow):def __init__(self, parent=None):# 调用父类构造函数,创建窗体super().__init__(parent)# 创建UI对象self.ui = Ui_MainWindow()# 构造UI界面self.ui.setupUi(self)self.set_centre()self.image1_file_path = Noneself.image2_file_path = Noneself.ui.pushButton_select_image_1.clicked.connect(self.image_select_1_slot)self.ui.pushButton_select_image_2.clicked.connect(self.image_select_2_slot)self.ui.pushButton_image_fusion.clicked.connect(self.pushButton_image_fusion_slot)def pushButton_image_fusion_slot(self):image_fusion(self.image1_file_path, self.image2_file_path)self.show_image(image_read_from_chinese_path('out.png'), self.ui.label_imageRes)def set_centre(self):screen = QDesktopWidget().screenGeometry()size = self.geometry()self.move(int((screen.width() - size.width()) / 2), int((screen.height() - size.height()) / 2))def image_select_1_slot(self):self.ui.label_imageRes.clear()self.ui.label_image1.clear()self.ui.label_image2.clear()self.image1_file_path, ret = QFileDialog.getOpenFileName(None, '选择图像', "./data/multi_focus","图像文件 (*.jpg *.png)")if self.image1_file_path:self.show_image(image_read_from_chinese_path(self.image1_file_path), self.ui.label_image1)def image_select_2_slot(self):self.image2_file_path, ret = QFileDialog.getOpenFileName(None, '选择图像', "./data/multi_focus","图像文件 (*.jpg *.png)")if self.image2_file_path:self.show_image(image_read_from_chinese_path(self.image2_file_path), self.ui.label_image2)@staticmethoddef show_image(img_src, label):try:ih, iw, _ = img_src.shapew = label.geometry().width()h = label.geometry().height()# 保持纵横比# 找出长边if iw > ih:scal = w / iwnw = wnh = int(scal * ih)img_src_ = cv2.resize(img_src, (nw, nh))else:scal = h / ihnw = int(scal * iw)nh = himg_src_ = cv2.resize(img_src, (nw, nh))frame = cv2.cvtColor(img_src_, cv2.COLOR_BGR2RGB)img = QImage(frame.data, frame.shape[1], frame.shape[0], frame.shape[2] * frame.shape[1],QImage.Format_RGB888)label.setPixmap(QPixmap.fromImage(img))except Exception as e:print(repr(e))
  1. 集成模型
      用torch包中的model = torch.load(‘path_to_model.pth’)加载已训练好的模型,并用库提供的函数对数据进行预处理。
  2. 信号与槽函数绑定
      在PyQT5中,信号与槽函数的关系类似报文段的发送关系,控件发出信号通知,槽函数接受信号并作出相应。绑定二者是实现GUI响应性的关键,比如,用户点击界面的按钮时,会触发对应信号,从而调用与之绑定的槽函数。
    在这里插入图片描述

3.1.5 主界面

在这里插入图片描述

3.1.6 融合效果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

代码下载链接

关注博主工忠浩【小蜜蜂视觉】,回复【图像融合】即可获取


  若您想获得博文中涉及的实现完整全部程序文件(包括系统UI设计文件,测试数据集、py文件,模型权重文件,调试说明等),代码获取与技术指导,具体见可参考博客与视频,已将所有涉及的文件同时打包到里面,软件安装调试有具体说明
在这里插入图片描述

参考文献

[1] Chen Y, Guan J, Cham W K. Robust multi-focus image fusion using edge model and multi-matting[J]. IEEE Transactions on Image Processing,2018,27(3):1526-1541.
[2] Liu Y, Chen X, Wang Z, et al. Deep learning for pixel-level image fusion: Recent advances and future prospects[J]. Information Fusion,2018,42:158-173.
[3] Liu Z, Tsukada K, Hanasaki K, et al. Image fusion by using steerable pyramid[J]. Pattern Recognition Letters,2001,22(9):929-939.
[4] Hill P, Al-Mualla M E, Bull D. Perceptual image fusion using wavelets[J]. IEEE Transactions on Image Processing,2017,26(3):1076-1088.
[5] Mu N, Xu X, Zhang X, et al. Discrete stationary wavelet transform based saliency information fusion from frequency and spatial domain in low contrast images[J]. Pattern Recognition Letters,2018,000:1-8.
[6] Zhang Q, Guo B L. Multifocus image fusion using the nonsubsampled contourlet transform[J]. Signal Processing,2009,89(7):1334-1346.
[7] Burt P J, Adelson E H. The laplacian pyramid as a compact image code[J]. Readings in Computer Vision,1987,31(4):671-679.
[8] Li H, Manjunath B S, Mitra S K. Multi-Sensor image fusion using the wavelet transform[C]// image processing, 1994. Proceedings. ICIP-94. IEEE International Conference. IEEE,1994.
[9] Chandana, M., S. Amutha, and N. Kumar, A hybrid multi-focus medical image fusion based on wavelet transform. International Journal of Research & Reviews in Computer Science,2011.
[10] Zhang Q, Fu Y, Li H, et al. Dictionary learning method for joint sparse representation-based image fusion[J]. Optical Engineering,2013,52(5):057006.
[11] Li Q, Du J, Song F, et al. Region-based multi-focus image fusion using the local spatial frequency[C]. In 2013 25th Chinese control and decision conference(CCDC),2013:3792–3796.
[12] Yang B, Guo L. Superpixel based fusion and demosaicing for multi-focus Bayer images[J]. Optik,2015,126(23):4460–4468.
[13] Liu Y, Liu S, Wang Z. Multi-focus image fusion with dense SIFT[J]. Information Fusion,2015,23:139–155.
[14] Li S, Kang X, Hu J, et al. Image matting for fusion of multi-focus images in dynamic scenes[J]. Information Fusion,2013,14(2):147–162.
[15] Zhang X, Li X, Liu Z, et al. Multi-focus image fusion using image-partition-based focus detection[J]. Signal Processing,2014,102:64–76.
[16] Liu Y, Chen X, Peng H, et al. Multi-focus image fusion with a deep convolutional neural network[J]. Information Fusion, 2017, 36:191-207.
[17] Du C, Gao S. Image segmentation-based multi-focus image fusion through multi-scale convolutional neural network[J]. IEEE access,2017,5:15750-15761.
[18] Tang H, Li W, et al. Pixel convolutional neural network for multi-focus image fusion[J]. Information Sciences,2018,433:125-141.
[19] LeCun Y, Bengio Y, Hinton G. Deep learning[J].nature,2015,521(7553): 436.
[20] Han J, Moraga C. The influence of the sigmoid function parameters on the speed of backpropagation learning[C]//International Workshop on Artificial Neural Networks. Springer, Berlin, Heidelberg,1995:195-201.
[21] Krizhevsky A, Sutskever I, Hinton G E. Imagenet classification with deep convolutional neural networks[C]//Advances in neural information processing systems.2012:1097-1105.
[22] He K, Zhang X, Ren S, et al. Deep residual learning for image recognition[C]//Proceedings of the IEEE conference on computer vision and pattern recognition.2016:770-778.
[23] Prabhakar R (2017) Deepfuse: A deep unsupervised approach for exposure fusion with extreme exposure image pairs. In: The IEEE international conference on computer vision (ICCV).
[24] Zhang Y, Liu Y, Sun P, Yan H, Zhao X, Zhang L (2020) IFCNN: a general image fusion framework based on convolutional neural network. Inf Fusion 54:99-118.
[25] Li H, Wu X (2019) Densefuse: A fusion approach to infrared and visible images. IEEE Trans Image Process 28(5):2614-2623.https://doi.org/10.1109/TIP.2018.2887342.
[26] Xu H, Fan F, Zhang H, Le Z, Huang J(2020) A deep model for multi-focus image fusion based on gradients and connected regions. IEEE Access 8:26316-26327.
[27] Hu J, Shen L, Sun G (2018)Squeeze-and-excitation networks. In: The IEEE conference on computer vision and pattern recognition(CVPR).
[28] Roy AG, Navab N, Wachinger C (2018) Concurrent spatial and channel squeeze and excitation in fully convolutional networks. In: International conference on medical image computing and computer-assisted intervention. Springer, pp 421-429.
[29] Wang Z, Bovik AC, Sheikh HR, Simoncelli EP (2004) Image quality assessment: from error visibility to structural similarity. IEEE Trans Image Process 13(4):600-612.
[30] De I, Chanda B, Chattopadhyay B (2006) Enhancing effective depth-of-field by image fusion using mathematical morphology. Image Vision Comput 24(12):1278-1287. https://doi.org/10.1016/j.imavis.2006.04.005.
[31] He K, Sun J, Tang X (2013) Guided image filtering. IEEE Trans Pattern Anal Mach Intell 35(6):1397-1409. https://doi.org/10.1109/TPAMI.2012.213.
[32] Lin TY, Maire M, Belongie S, Hays J, Perona P, Ramanan D, Dollar P, Zitnick CL(2014) Microsoft coco: common objects in context. In: Fleet D, Pajdla T, Schiele B, Tuytelaars T (eds) Computer vision-ECCV 2014.Springer, Cham, pp 740-755.
[33] Ellmauthaler A, Pagliari C L, da Silva E A B. Multiscale image fusion using the undecimated wavelet transform with spectral factorization and nonorthogonal filter banks[J]. IEEE Transactions on Image Processing,2013, 22(3):1005-1017.

结束语

   由于博主能力有限,博文中提及的方法即使经过试验,也难免会有疏漏之处。希望您能热心指出其中的错误,以便下次修改时能以一个更完美更严谨的样子,呈现在大家面前。同时如果有更好的实现方法也请您不吝赐教。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/441035.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【MYSQL】mysql约束---自增长约束(auto_increment)

1、概念 在Mysql中,当主键为自增长后,这个主键的值就不再需要用户输入数据了,而由数据库系统根据定义自动赋值。每增加一条记录,主键会自动以相同的步长进行增长。 注意:自增长约束通常与主键放在一起使用。 通过给…

【CKA】十七、集群故障排查-node节点kubelet服务异常

17、集群故障排查-node节点kubelet服务异常 1. 考题内容: 2. 答题思路: 1、考试环境就是:kubelet这个服务没有设置开机自启,导致node节点状态异常。 2、只需要切换环境,登录到指定主机,获取root权限后&am…

LeetCode 54 Spiral Matrix 解题思路和python代码

题目: Given an m x n matrix, return all elements of the matrix in spiral order. Example 1: Input: matrix [[1,2,3],[4,5,6],[7,8,9]] Output: [1,2,3,6,9,8,7,4,5] Example 2: Input: matrix [[1,2,3,4],[5,6,7,8],[9,10,11,12]] Output: [1,2,3,4,8,1…

73.【C语言】C/C++的内存区域划分

目录 1.内存里的几个区域 2.示意图 3.解释 1.内存里的几个区域 除了耳熟能详的栈区,堆区,静态区,还有内核空间,内存映射段,数据段,代码段 2.示意图 3.解释 栈区(stack area):局部变量,函数参数,返回数据,返回地址 内存映射段:将文件映射到内存 映射的含义: 如果看过李忠…

【python实操】python小程序之对象的属性操作

引言 python小程序之对象的属性操作 文章目录 引言一、对象的属性操作1.1 题目1.2 代码1.3 代码解释 二、思考2.1 添加属性2.2 获取属性 一、对象的属性操作 1.1 题目 给对象添加属性 1.2 代码 class Cat:# 在缩进中书写⽅法def eat(self):# self 会⾃动出现,暂不管print(f…

OpenAI 推出全新 “Canvas” 工具的系统提示词泄露

OpenAI 推出了一款叫做 Canvas 的新工具,用来帮助用户更好地与 ChatGPT 协作写作和编程。 Canvas 允许用户和 ChatGPT 在一个独立的窗口中协作,实时修改内容。这个工具可以帮助改进文本、调整语言、审查和修复代码,甚至转换成不同编程语言。…

大模型之RAG-关键字检索的认识与实战(混合检索进阶储备)

前言 按照我们之前的分享(大模型应用RAG系列3-1从0搭建一个RAG:做好文档切分): RAG系统搭建的基本流程 准备对应的垂域资料文档的读取解析,进行文档切分将分割好的文本灌入检索引擎(向量数据库&#xff…

【单例模式】

单例模式是指在内存中只会创建且仅创建一次对象的设计模式。 一、实现方式 1. 饿汉式 在类加载的时候就创建实例,无论是否使用,实例都会被创建。优点是实现简单,线程安全。缺点是可能造成资源浪费,而程序可能不一定会使用这个实例…

【Linux】自主shell编写

如果学习了常见的Linux命令,exec*函数,环境变量,那你就可以尝试一下写一个简单的shell; 下面跟着我的步骤来吧!!🤩🤩 输入命令行 既然要写一个shell,我们第一步先把这个输入命令行…

Java中数组的应用

Java中数组的应用 数组数组的使用使用方式1-动态初始化数组的定义:数组的引用(使用/访问/获取数组元素):快速入门案例 使用方式2-动态初始化**先声明**数组**再创建**数组使用方式1和2的比较 使用方式3-静态初始化初始化数组快速入…

【AI知识点】残差网络(ResNet,Residual Networks)

残差网络(ResNet,Residual Networks) 是由微软研究院的何凯明等人在 2015 年提出的一种深度神经网络架构,在深度学习领域取得了巨大的成功。它通过引入残差连接(Residual Connection) 解决了深层神经网络中…

数学公式编辑器免费版下载,mathtype和latex哪个好用

选择适合自己的公式编辑器需要考虑多个因素。首先,您需要确定编辑器支持的功能和格式是否符合您的需求,例如是否可以插入图片、导出各种文件格式等。其次,您可以考虑编辑器的易用性和界面设计是否符合您的个人喜好。另外,您还可以…

蓝桥杯【物联网】零基础到国奖之路:十八. 扩展模块之光敏和AS312

蓝桥杯【物联网】零基础到国奖之路:十八.扩展模块之光敏和AS312 第一节 硬件解读第二节 CubeMX配置第二节 代码 第一节 硬件解读 光敏和AS312如下图: 光敏电阻接到了扩展模块的5号引脚,5号引脚接了2个电阻,R8和光敏电阻。我们通过ADC读取这…

Excel实现省-市-区/县级联

数据准备 准备省份-城市映射数据,如下: 新建sheet页,命名为:省-市数据源,然后准备数据,如下所示: 准备城市-区|县映射数据,如下: 新建sheet页,命名为&#x…

C语言的柔性数组

目录 柔性数组1.柔性数组的特点:2.柔性数组的使用3.柔性数组的优势 柔性数组 也许你从来没有听说过柔性数组(flexible array)这个概念,但是它确实是存在的。 C99 中,结构体中的最后⼀个元素允许是未知⼤⼩的数组&…

分治算法(2)_快速排序_排序数组

个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 分治算法(2)_快速排序_排序数组 收录于专栏【经典算法练习】 本专栏旨在分享学习算法的一点学习笔记,欢迎大家在评论区交流讨论💌 目录 …

消息称苹果iPhone系列将完全放弃LCD屏幕

近日,据日经亚洲消息,苹果公司将于明年初推出搭载OLED显示屏的 iPhone SE 4,标志其整个iPhone系列已进入从 LCD 过渡到 OLED 技术的最后阶段,2025年及之后销售的所有iPhone机型均将搭载OLED屏幕。 由此,两家日本面板供…

【STM32开发环境搭建】-4-在STM32CubeMX中新增Keil(MDK-ARM) 5的工程目录(包含指定路径的C和H文件)

案例背景: 由于Keil(MDK-ARM)5工程:DEMO_STM32F030C8T6.uvprojx是由STM32CubeMX工具生成的,如果我们在Keil工程中手动添加了一些c文件和h文件的Include Path包含路径,会在STM32CubeMX下一次生成uvprojx文件时,被删除&…

【韩顺平Java笔记】第8章:面向对象编程(中级部分)【272-284】

272. 包基本介绍 272.1 看一个应用场景 272.2 包的三大作用 272.3 包的基本语法 273. 包原理 274. 包快速入门 在不同的包下面创建不同的Dog类 275. 包命名 276. 常用的包 一个包下,包含很多的类,java 中常用的包有: java.lang.* //lang 包是基本包,默认引入&…

hdfs伪分布式集群搭建

1 准备 vmware 虚拟三台centos系统的节点三台机器安装好jdk环境关闭防火墙(端口太多,需要的自行去开关端口)hadoop压缩包解压至三台服务器 可在一台节点上配置完成后克隆为三台节点 2 host修改 vi /etc/hosts在每个节点上添加三台机器的i…