如何穿透模糊,还原图片真实面貌

目录

图像清晰化的魔法棒:AI如何穿透模糊,还原图片真实面貌

前言

论文背景

论文思路

模型介绍

复现过程

演示视频

使用方式

本文所涉及所有资源均在传知代码平台可获取。

图像清晰化的魔法棒:AI如何穿透模糊,还原图片真实面貌

在我们日常生活中,照片是记录美好瞬间、传递情感与记忆的重要载体。然而,由于拍摄环境、设备限制或手抖等因素,许多珍贵的照片往往伴随着模糊与不清晰,让那份本应清晰可见的回忆变得朦胧。但如今,随着人工智能技术的飞速发展,图像去模糊技术就像一把神奇的“魔法棒”,能够穿透这些生活中的“迷雾”,让模糊的照片重获新生,还原其真实而动人的风采。 想象一下,你珍藏的家庭聚会照片,因为光线不足或快门速度不够快,导致人物面部模糊,笑容变得难以辨认。又或是你精心捕捉的风景照,却因一阵突如其来的风或相机的微小晃动,让原本壮丽的景色变得模糊不清。这些遗憾,在过去可能只能成为心中永远的叹息。但现在,有了AI图像去模糊技术,一切都可以改变。 AI通过其强大的学习和分析能力,能够识别出模糊图像中的关键特征和信息,并利用先进的算法对其进行重建和优化。它不仅能够消除因运动、失焦或噪声等原因造成的模糊,还能在一定程度上恢复图像的细节和色彩,使照片看起来更加清晰、生动。 当你使用这把“魔法棒”对模糊的照片进行清晰化处理时,就像是时间倒流,让你重新置身于那个被模糊所掩盖的瞬间。你会发现,家人的笑容变得更加灿烂,风景的色彩更加鲜明,那些曾经因模糊而错过的细节,如今都一一展现在你的眼前。

前言

图像去模糊,如同施展了一场视觉的魔法,将原本朦胧、不清晰的图像画面逐渐变得清晰锐利。这项技术利用先进的算法和强大的计算能力,深入图像的本质,分析并恢复因拍摄条件不佳、传输损失或人为处理等原因导致的模糊细节。随着处理过程的推进,图像中的线条和轮廓逐渐鲜明,色彩层次更加丰富,原本难以辨识的信息也变得一目了然。图像去模糊不仅提升了视觉体验,更在多个领域发挥着重要作用,如法律取证、医学影像分析、安全监控等,确保关键信息的准确传递与验证。

下面两张图片左图是模糊图片,右图是对应的清晰图片,可以看出在视觉效果上差别还是挺大的。

那么如何将一个模糊图片恢复成一个较清晰的图片呢?下面我以2022年的cvpr上的一篇图像恢复的文章Restormer: Efficient Transformer for High-Resolution Image Restoration来详细介绍如何把给定的源码跑通,并且动手使用demo恢复自己想恢复的模糊图像。

论文背景

对于传统 CNN 中,其基本操作是“卷积”,卷积操作为 CNN 提供了局部连接和平移不变性的特性,这些特性为 CNN 带来了效率和泛化性,但它们也产生了两个主要问题:

  • 无序列表卷积算子的感受野有限,无法对长距离像素依赖性进行建模;
  • 无序列表卷积滤波器在推理时具有静态权重,不能灵活地适应输入内容。

为了解决上述缺点,一种更强大和动态的替代方案是自注意力 (SA) 机制,它通过所有其他位置的加权和来计算给定像素的输出特征。在本文中,作者提出了一种用于图像复原的高效 Transformer,它能够对全局连接进行建模,并且仍然适用于大图像。作者从自注意力(SA)、前馈网络(FN)对 transformer 进行改进,并使用一种渐进性学习策略来训练模型。

论文思路

引入多 Dconv 头转置注意力(multi-Dconv head transposed attention,MDTA)块来代替具有线性复杂性的普通多头 SA。它跨特征维度而不是空间维度应用 SA,即,MDTA 不是显式建模成对像素交互,而是计算跨特征通道的交叉协方差,以从(关键和查询投影)输入特征获取注意力图。所提出的 MDTA 块的一个重要特征是特征协方差计算之前的局部上下文混合。这是通过使用 1×1 卷积的跨通道上下文的像素级聚合和使用有效的深度卷积(depthwise convolution)的局部上下文的通道级聚合来实现的。这种策略提供了两个关键优势。首先,它强调空间局部上下文,并在通道中引入卷积运算的互补强度。其次,它确保在计算基于协方差的注意力图时隐式建模像素之间的上下文全局关系。

使用门控机制重新制定常规 FN 的第一个线性变换层,以改善通过网络的信息流。该门控层被设计为两个线性投影层的逐元素乘积,其中一个被 GELU 非线性激活。所提出的门控 Dconv FN (GDFN) 也基于局部内容混合(与 MDTA 模块类似)来同样强调空间上下文。GDFN 中的门控机制控制着哪些互补特征应该向前流动,并允许网络层次结构中后续的层专门关注更精细的图像属性,从而产生高质量的输出。

这篇文章的主要贡献总结如下:

  1. 提出了一种用于高分辨率图像多尺度局部-全局表示学习的编码器-解码器Transformer,该编码器-解码器Transformer无需将高分辨率图像分解成局部窗口,从而利用远程图像上下文;
  2. 提出了一种能够聚合局部和非局部像素交互的多Dconv头转置注意力( MDTA )模块,该模块足以处理高分辨率图像;
  3. 提出了一种新的门控Dconv前馈网络( GDFN ),该网络执行受控的特征转换,即抑制信息量较小的特征,仅允许有用的信息通过网络层次结构进一步传递。

模型介绍

  • 算法框图

  • 上图Transformer模块的核心模块是:( a )多Dconv头转置注意力( Multi-Dconv Head Transpose Attention,MDTA ),它执行跨通道而不是空间维度的查询关键特征交互;( b )门控Dconv前馈网络( Gated-Dconv Feeding Network,GDFN ),它执行受控的特征变换,即允许有用信息进一步传播。多Dconv头转置注意力(Multi-Dconv Head Transpose Attention,MDTA)

与一般 Transformer 不同的是,论文在自注意力模板进行 token 计算时不是常见的 卷积操作,而是利用深度卷积操作,首先利用 11 卷积升维,再使用 33 分组卷积将特征分为三块,最后进行经典的自注意力计算。

多头注意力模块的核心代码:

## Multi-DConv Head Transposed Self-Attention (MDTA)
class Attention(nn.Module):
    def __init__(self, dim, num_heads, bias):
        super(Attention, self).__init__()
        self.num_heads = num_heads
        self.temperature = nn.Parameter(torch.ones(num_heads, 1, 1))
        #深度卷积dconv代替普通conv
        self.qkv = nn.Conv2d(dim, dim*3, kernel_size=1, bias=bias)
        self.qkv_dwconv = nn.Conv2d(dim*3, dim*3, kernel_size=3, stride=1, padding=1, groups=dim*3, bias=bias)
        self.project_out = nn.Conv2d(dim, dim, kernel_size=1, bias=bias)    def forward(self, x):
        b,c,h,w = x.shape        qkv = self.qkv_dwconv(self.qkv(x))
        q,k,v = qkv.chunk(3, dim=1)           q = rearrange(q, 'b (head c) h w -> b head c (h w)', head=self.num_heads)
        k = rearrange(k, 'b (head c) h w -> b head c (h w)', head=self.num_heads)
        v = rearrange(v, 'b (head c) h w -> b head c (h w)', head=self.num_heads)        q = torch.nn.functional.normalize(q, dim=-1)
        k = torch.nn.functional.normalize(k, dim=-1)        attn = (q @ k.transpose(-2, -1)) * self.temperature
        attn = attn.softmax(dim=-1)        out = (attn @ v)        out = rearrange(out, 'b head c (h w) -> b (head c) h w', head=self.num_heads, h=h, w=w)        out = self.project_out(out)
        return out

  • 门控Dconv前馈网络(Gated-Dconv Feeding Network,GDFN)

作者提出了双路门控网络来取代 FFN,分别进行 11 升维,再利用 33 分组卷积提取特征,随后使用 GELU 激活函数门控,最后 1*1 卷积降维输出。

门控前反馈网络的核心代码:

## Gated-Dconv Feed-Forward Network (GDFN)
class FeedForward(nn.Module):
    def __init__(self, dim, ffn_expansion_factor, bias):
        super(FeedForward, self).__init__()
        hidden_features = int(dim*ffn_expansion_factor)
        self.project_in = nn.Conv2d(dim, hidden_features*2, kernel_size=1, bias=bias)
        self.dwconv = nn.Conv2d(hidden_features*2, hidden_features*2, kernel_size=3, stride=1, padding=1, groups=hidden_features*2, bias=bias)
        self.project_out = nn.Conv2d(hidden_features, dim, kernel_size=1, bias=bias)    def forward(self, x):
        x = self.project_in(x)
        x1, x2 = self.dwconv(x).chunk(2, dim=1)
        x = F.gelu(x1) * x2
        x = self.project_out(x)
        return x

使用深度卷积dconv代替传统卷积conv原理(下图是我自己查阅和整理后所绘制的深度卷积如何代替传统卷积的图片)

复现过程

下载附件后按照最下面的使用方式一步一步操作

1.代码目录文件介绍:

basicsr是最主要的(模型的框架,损失函数,数据的预处理等等)都在这个文件包里面

demo文件包是在使用demo就行图像恢复操作时候的模糊图像存放位置以及清晰图像恢复出来的位置

Motion_Deblurring包下面的pretrained_models放预训练模型

basicsr包里面:

restormer_arch.py文件是模型的主要框架GDFN,MDTA代码都在里面

losses文件包是损失函数

train.py 是训练文件

test.py 是测试文件2.数据集和预训练模型下载:

数据集和预训练模型过大,下载链接已经放到附件READ.ME里面,对应位置在演示视频中已展示出。3.预训练模型存放位置:

4.修改配置文件

主要是修改数据集位置

5.运行train.py

6.测试demo图像恢复效果

下图左边是元素模糊图片,下图中间是模糊图片对应的清晰图片,下图右边是恢复出来的清晰图片

演示视频

演示视频中是我在demo文件包下面degraded包下面放了20张模糊图片,然后运行demo.py后生成了20张较清晰的图片在restored包下。

使用方式

1.创建conda环境并且激活

conda create -n xxx python=3.7

conda activate xxx

2.安装依赖

conda install pytorch=1.8 torchvision cudatoolkit=10.2 -c pytorch

pip install matplotlib scikit-learn scikit-image opencv-python yacs joblib natsort h5py tqdm

pip install einops gdown addict future lmdb numpy pyyaml requests scipy tb-nightly yapf lpips

3.安装basicsr(最主要的)

python setup.py develop --no_cuda_ext

4.测试demo命令

python demo.py --task motion_deblurring --input_dir '输入地址' --result_dir '输出地址'

github链接:源码

感觉不错,点击我,立即使用

如何穿透模糊,还原图片真实面貌

目录

图像清晰化的魔法棒:AI如何穿透模糊,还原图片真实面貌

前言

论文背景

论文思路

模型介绍

复现过程

演示视频

使用方式

本文所涉及所有资源均在传知代码平台可获取。

图像清晰化的魔法棒:AI如何穿透模糊,还原图片真实面貌

在我们日常生活中,照片是记录美好瞬间、传递情感与记忆的重要载体。然而,由于拍摄环境、设备限制或手抖等因素,许多珍贵的照片往往伴随着模糊与不清晰,让那份本应清晰可见的回忆变得朦胧。但如今,随着人工智能技术的飞速发展,图像去模糊技术就像一把神奇的“魔法棒”,能够穿透这些生活中的“迷雾”,让模糊的照片重获新生,还原其真实而动人的风采。 想象一下,你珍藏的家庭聚会照片,因为光线不足或快门速度不够快,导致人物面部模糊,笑容变得难以辨认。又或是你精心捕捉的风景照,却因一阵突如其来的风或相机的微小晃动,让原本壮丽的景色变得模糊不清。这些遗憾,在过去可能只能成为心中永远的叹息。但现在,有了AI图像去模糊技术,一切都可以改变。 AI通过其强大的学习和分析能力,能够识别出模糊图像中的关键特征和信息,并利用先进的算法对其进行重建和优化。它不仅能够消除因运动、失焦或噪声等原因造成的模糊,还能在一定程度上恢复图像的细节和色彩,使照片看起来更加清晰、生动。 当你使用这把“魔法棒”对模糊的照片进行清晰化处理时,就像是时间倒流,让你重新置身于那个被模糊所掩盖的瞬间。你会发现,家人的笑容变得更加灿烂,风景的色彩更加鲜明,那些曾经因模糊而错过的细节,如今都一一展现在你的眼前。

前言

图像去模糊,如同施展了一场视觉的魔法,将原本朦胧、不清晰的图像画面逐渐变得清晰锐利。这项技术利用先进的算法和强大的计算能力,深入图像的本质,分析并恢复因拍摄条件不佳、传输损失或人为处理等原因导致的模糊细节。随着处理过程的推进,图像中的线条和轮廓逐渐鲜明,色彩层次更加丰富,原本难以辨识的信息也变得一目了然。图像去模糊不仅提升了视觉体验,更在多个领域发挥着重要作用,如法律取证、医学影像分析、安全监控等,确保关键信息的准确传递与验证。

下面两张图片左图是模糊图片,右图是对应的清晰图片,可以看出在视觉效果上差别还是挺大的。

那么如何将一个模糊图片恢复成一个较清晰的图片呢?下面我以2022年的cvpr上的一篇图像恢复的文章Restormer: Efficient Transformer for High-Resolution Image Restoration来详细介绍如何把给定的源码跑通,并且动手使用demo恢复自己想恢复的模糊图像。

论文背景

对于传统 CNN 中,其基本操作是“卷积”,卷积操作为 CNN 提供了局部连接和平移不变性的特性,这些特性为 CNN 带来了效率和泛化性,但它们也产生了两个主要问题:

  • 无序列表卷积算子的感受野有限,无法对长距离像素依赖性进行建模;
  • 无序列表卷积滤波器在推理时具有静态权重,不能灵活地适应输入内容。

为了解决上述缺点,一种更强大和动态的替代方案是自注意力 (SA) 机制,它通过所有其他位置的加权和来计算给定像素的输出特征。在本文中,作者提出了一种用于图像复原的高效 Transformer,它能够对全局连接进行建模,并且仍然适用于大图像。作者从自注意力(SA)、前馈网络(FN)对 transformer 进行改进,并使用一种渐进性学习策略来训练模型。

论文思路

引入多 Dconv 头转置注意力(multi-Dconv head transposed attention,MDTA)块来代替具有线性复杂性的普通多头 SA。它跨特征维度而不是空间维度应用 SA,即,MDTA 不是显式建模成对像素交互,而是计算跨特征通道的交叉协方差,以从(关键和查询投影)输入特征获取注意力图。所提出的 MDTA 块的一个重要特征是特征协方差计算之前的局部上下文混合。这是通过使用 1×1 卷积的跨通道上下文的像素级聚合和使用有效的深度卷积(depthwise convolution)的局部上下文的通道级聚合来实现的。这种策略提供了两个关键优势。首先,它强调空间局部上下文,并在通道中引入卷积运算的互补强度。其次,它确保在计算基于协方差的注意力图时隐式建模像素之间的上下文全局关系。

使用门控机制重新制定常规 FN 的第一个线性变换层,以改善通过网络的信息流。该门控层被设计为两个线性投影层的逐元素乘积,其中一个被 GELU 非线性激活。所提出的门控 Dconv FN (GDFN) 也基于局部内容混合(与 MDTA 模块类似)来同样强调空间上下文。GDFN 中的门控机制控制着哪些互补特征应该向前流动,并允许网络层次结构中后续的层专门关注更精细的图像属性,从而产生高质量的输出。

这篇文章的主要贡献总结如下:

  1. 提出了一种用于高分辨率图像多尺度局部-全局表示学习的编码器-解码器Transformer,该编码器-解码器Transformer无需将高分辨率图像分解成局部窗口,从而利用远程图像上下文;
  2. 提出了一种能够聚合局部和非局部像素交互的多Dconv头转置注意力( MDTA )模块,该模块足以处理高分辨率图像;
  3. 提出了一种新的门控Dconv前馈网络( GDFN ),该网络执行受控的特征转换,即抑制信息量较小的特征,仅允许有用的信息通过网络层次结构进一步传递。

模型介绍

  • 算法框图

  • 上图Transformer模块的核心模块是:( a )多Dconv头转置注意力( Multi-Dconv Head Transpose Attention,MDTA ),它执行跨通道而不是空间维度的查询关键特征交互;( b )门控Dconv前馈网络( Gated-Dconv Feeding Network,GDFN ),它执行受控的特征变换,即允许有用信息进一步传播。多Dconv头转置注意力(Multi-Dconv Head Transpose Attention,MDTA)

与一般 Transformer 不同的是,论文在自注意力模板进行 token 计算时不是常见的 卷积操作,而是利用深度卷积操作,首先利用 11 卷积升维,再使用 33 分组卷积将特征分为三块,最后进行经典的自注意力计算。

多头注意力模块的核心代码:

## Multi-DConv Head Transposed Self-Attention (MDTA)
class Attention(nn.Module):
    def __init__(self, dim, num_heads, bias):
        super(Attention, self).__init__()
        self.num_heads = num_heads
        self.temperature = nn.Parameter(torch.ones(num_heads, 1, 1))
        #深度卷积dconv代替普通conv
        self.qkv = nn.Conv2d(dim, dim*3, kernel_size=1, bias=bias)
        self.qkv_dwconv = nn.Conv2d(dim*3, dim*3, kernel_size=3, stride=1, padding=1, groups=dim*3, bias=bias)
        self.project_out = nn.Conv2d(dim, dim, kernel_size=1, bias=bias)    def forward(self, x):
        b,c,h,w = x.shape        qkv = self.qkv_dwconv(self.qkv(x))
        q,k,v = qkv.chunk(3, dim=1)           q = rearrange(q, 'b (head c) h w -> b head c (h w)', head=self.num_heads)
        k = rearrange(k, 'b (head c) h w -> b head c (h w)', head=self.num_heads)
        v = rearrange(v, 'b (head c) h w -> b head c (h w)', head=self.num_heads)        q = torch.nn.functional.normalize(q, dim=-1)
        k = torch.nn.functional.normalize(k, dim=-1)        attn = (q @ k.transpose(-2, -1)) * self.temperature
        attn = attn.softmax(dim=-1)        out = (attn @ v)        out = rearrange(out, 'b head c (h w) -> b (head c) h w', head=self.num_heads, h=h, w=w)        out = self.project_out(out)
        return out

  • 门控Dconv前馈网络(Gated-Dconv Feeding Network,GDFN)

作者提出了双路门控网络来取代 FFN,分别进行 11 升维,再利用 33 分组卷积提取特征,随后使用 GELU 激活函数门控,最后 1*1 卷积降维输出。

门控前反馈网络的核心代码:

## Gated-Dconv Feed-Forward Network (GDFN)
class FeedForward(nn.Module):
    def __init__(self, dim, ffn_expansion_factor, bias):
        super(FeedForward, self).__init__()
        hidden_features = int(dim*ffn_expansion_factor)
        self.project_in = nn.Conv2d(dim, hidden_features*2, kernel_size=1, bias=bias)
        self.dwconv = nn.Conv2d(hidden_features*2, hidden_features*2, kernel_size=3, stride=1, padding=1, groups=hidden_features*2, bias=bias)
        self.project_out = nn.Conv2d(hidden_features, dim, kernel_size=1, bias=bias)    def forward(self, x):
        x = self.project_in(x)
        x1, x2 = self.dwconv(x).chunk(2, dim=1)
        x = F.gelu(x1) * x2
        x = self.project_out(x)
        return x

使用深度卷积dconv代替传统卷积conv原理(下图是我自己查阅和整理后所绘制的深度卷积如何代替传统卷积的图片)

复现过程

下载附件后按照最下面的使用方式一步一步操作

1.代码目录文件介绍:

basicsr是最主要的(模型的框架,损失函数,数据的预处理等等)都在这个文件包里面

demo文件包是在使用demo就行图像恢复操作时候的模糊图像存放位置以及清晰图像恢复出来的位置

Motion_Deblurring包下面的pretrained_models放预训练模型

basicsr包里面:

restormer_arch.py文件是模型的主要框架GDFN,MDTA代码都在里面

losses文件包是损失函数

train.py 是训练文件

test.py 是测试文件2.数据集和预训练模型下载:

数据集和预训练模型过大,下载链接已经放到附件READ.ME里面,对应位置在演示视频中已展示出。3.预训练模型存放位置:

4.修改配置文件

主要是修改数据集位置

5.运行train.py

6.测试demo图像恢复效果

下图左边是元素模糊图片,下图中间是模糊图片对应的清晰图片,下图右边是恢复出来的清晰图片

演示视频

演示视频中是我在demo文件包下面degraded包下面放了20张模糊图片,然后运行demo.py后生成了20张较清晰的图片在restored包下。

使用方式

1.创建conda环境并且激活

conda create -n xxx python=3.7

conda activate xxx

2.安装依赖

conda install pytorch=1.8 torchvision cudatoolkit=10.2 -c pytorch

pip install matplotlib scikit-learn scikit-image opencv-python yacs joblib natsort h5py tqdm

pip install einops gdown addict future lmdb numpy pyyaml requests scipy tb-nightly yapf lpips

3.安装basicsr(最主要的)

python setup.py develop --no_cuda_ext

4.测试demo命令

python demo.py --task motion_deblurring --input_dir '输入地址' --result_dir '输出地址'

github链接:源码

感觉不错,点击我,立即使用

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

算法:[递归/搜索/回溯]二叉树的深搜

目录 题目一:计算布尔二叉树的值 题目二:求根节点到叶节点数字之和 题目三:二叉树剪枝 题目四:验证二叉搜索树 题目五:二叉搜索树中第k小的元素 题目六:二叉树的所有路径 题目一:计算布尔…

springboot整合 knife4j 接口文档

第一步&#xff1a;引入依赖 <dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-openapi2-spring-boot-starter</artifactId><version>4.4.0</version></dependency> 第二步&#xff1a;写入配置 方…

猫头虎分享 || 最全Python的Scapy库基础知识点汇总

&#x1f431;‍&#x1f464; 猫头虎分享 || Python的Scapy库基础知识点汇总 摘要 Scapy 是一个强大的Python库&#xff0c;用于网络数据包的生成、解析和操作。通过Scapy&#xff0c;开发者可以轻松地创建自定义数据包&#xff0c;捕获网络流量&#xff0c;并执行网络扫描。…

二叉树的链式结构和顺序结构的增删查改

树的概念 树是一种非线性的数据结构&#xff0c;它是一个n个节点组成的具有层次关系的集合&#xff0c;一棵树由一个根节点和若干个其余节点构成&#xff0c;除了根节点外&#xff0c;其他的节点都由一个前驱和多个后继&#xff0c;而根节点可以有多个后继&#xff0c;但没有前…

探索 Blockly:自定义积木实例

3.实例 3.1.基础块 无输入 , 无输出 3.1.1.json var textOneJson {"type": "sql_test_text_one","message0": " one ","colour": 30,"tooltip": 无输入 , 无输出 };javascriptGenerator.forBlock[sql_test_te…

没打印机怎么打印东西?

在日常生活中&#xff0c;我们经常会遇到需要打印文件的情况&#xff0c;无论是学习资料、工作文档&#xff0c;还是个人兴趣的资料收集。然而&#xff0c;并不是每个人家里都有打印机&#xff0c;或者打印机出现了故障。在这种情况下&#xff0c;寻找一个高效、经济的打印途径…

通过 C# 写入数据到Excel表格

Excel 是一款广泛应用于数据处理、分析和报告制作的电子表格软件。在商业、学术和日常生活中&#xff0c;Excel 的使用极为普遍。本文将详细介绍如何使用免费.NET库将数据写入到 Excel 中&#xff0c;包括文本、数值、数组、和DataTable数据的输入。 文章目录 C# 在Excel单元格…

Spring AOP(概念、实战、原理)

文章目录 1. 什么是AOP2. AOP体系图3. 术语解释3.1 Aspect&#xff08;切面&#xff09;3.2 Join point&#xff08;连接点&#xff09;3.3 Advice&#xff08;通知&#xff09;3.4 Pointcut&#xff08;切入点&#xff09;3.5 Target&#xff08;目标&#xff09;3.6 Proxy&am…

文本解码原理--MindNLP

前言 根据前文预测下一个单词 一个文本序列的概率分布可以分解为每个词基于其上文的条件概率的乘积 Greedy search 在每个时间步&#x1d461;都简单地选择概率最高的词作为当前输出词: &#x1d464;&#x1d461;&#x1d44e;&#x1d45f;&#x1d454;&#x1d45a;&am…

【泛微E9】统一待办中心集成

1、什么是统一待办中心集成 概述&#xff1a;目前有很多第3方系统都有流程&#xff0c;操作人都会有待办事宜、已办事宜。但这些待办流程都分散在不同系统中&#xff0c;用户操作不方便&#xff0c;对相应流程也无法及时处理。客户希望能在泛微OA中对所有的第3方流程做统一展示…

LlamaIndex:向 LLM 添加个人数据

LlamaIndex 是您构建基于 LLM 的应用程序的友好数据助手。您可以使用自然语言轻松地获取、管理和检索私有数据和特定领域的数据。 LlamaIndex 是一个针对大型语言模型 (LLM) 应用程序的数据框架。GPT-4 等 LLM 在海量的公共数据集上进行预训练&#xff0c;开箱即用即可实现令人…

【.NET 6 实战--孢子记账--从单体到微服务】--开发环境设置

在这一小节&#xff0c;我们将设置开发环境。 一、安装SDK 咱们的项目使用的是 .NET6&#xff0c;开发前我们需要从官网上下载.NET6 SDK&#xff08;点击下载&#xff09;&#xff0c;这里要注意的是我们需要下载.NET6 SDK&#xff0c;而不是 .NET6 Runtiem 。SDK 包含 Runti…

PyCharm 常用 的插件

Material Theme UI Lite&#xff1a;‌提供多种不同的页面风格&#xff0c;‌为PyCharm界面增添个性化元素。‌Chinese (Simplified) Language Pack&#xff1a;‌为中文用户提供简体中文的界面、‌菜单、‌提示信息&#xff0c;‌提升使用体验。‌Tabnine&#xff1a;‌基于人…

C# 开发监控方法执行耗时

MethodTimer.Fody 是一个功能强大的库,可以用于测量 .NET 应用程序中的方法的执行时间。允许你在不修改代码的情况下,自动地测量和记录方法的执行时间。 这个工具是基于.NET的 weaving 技术,通过修改IL(Intermediate Language,中间语言)代码来插入计时逻辑,从而在方法调…

Mac应用快速启动器:Alfred 5 for Mac 激活版

Alfred 5 是一款专为 macOS 系统设计的效率提升工具。这款软件以其快速启动和高效操作功能著称&#xff0c;通过使用快捷键来呼出输入界面&#xff0c;用户可以快速完成各种任务。 最新版本 Alfred 5.5 引入了一些新功能。其中包括整合了 ChatGPT 和 DALL-E&#xff0c;这意味…

ROS2入门到精通—— 2-13 ROS2实战:实现机器人多目标点导航(附ROS C++代码以及脚本实现)

0 前言 实现机器人多目标点导航是非常常见的需求,本文将介绍ROS2和Shell脚本两个方法实现多目标点导航,读者可以根据需求对接仿真和实车。 1 yaml-cpp介绍 YAML是专门用来写配置文件的语言,实质上是一种通用的数据串行化格式 1.1 yaml-cpp安装 git clone https://github…

kail-linux如何使用NAT连接修改静态IP

1、Contos修改静态IP vi /etc/sysconfig/network-scripts/ifcfg-ens33&#xff0c; 标记红色处可能序号会变动 参考linux配置网络不通解决方案_kylinv10sp2 网关不通-CSDN博客https://tanrt06.blog.csdn.net/article/details/132430485?spm1001.2014.3001.5502 Kail时候NAT连…

Java SE 文件上传和文件下载的底层原理

1. Java SE 文件上传和文件下载的底层原理 文章目录 1. Java SE 文件上传和文件下载的底层原理2. 文件上传2.1 文件上传应用实例2.2 文件上传注意事项和细节 3. 文件下载3.1 文件下载应用实例3.2 文件下载注意事项和细节 4. 总结&#xff1a;5. 最后: 2. 文件上传 文件的上传和…

ElasticSearch(三)—文档字段参数设置以及元字段

一、 字段参数设置 analyzer&#xff1a; 指定分词器。elasticsearch 是一款支持全文检索的分布式存储系统&#xff0c;对于 text类型的字段&#xff0c;首先会使用分词器进行分词&#xff0c;然后将分词后的词根一个一个存储在倒排索引中&#xff0c;后续查询主要是针对词根…

模拟实现c++中的vector模版

目录 一vector简述&#xff1a; 二vector的一些接口函数&#xff1a; 1初始化&#xff1a; 2.vector增长&#xff1a; 3vector增删查改&#xff1a; 三vector模拟实现部分主要函数&#xff1a; 1.size,capacity,empty,clear接口&#xff1a; 2.reverse的实现&#xff1…