- 博客(50)
- 收藏
- 关注
原创 采样算法二:去噪扩散隐式模型(DDIM)采样算法详解教程
DDIM将反向过程定义为非马尔可夫链,允许从任意时间步( t )直接推断( x_{t-Δ} )(Δ为跳跃步长)。DDPM虽然生成效果优异,但其采样需迭代数百至数千次,效率较低。是对DDPM的改进,旨在。,例如均匀间隔或余弦调度。
2025-02-27 17:13:01
995
原创 采样算法一:去噪扩散概率模型(DDPM)采样算法详解
是一种基于概率论的生成模型,通过模拟数据的扩散和逆扩散过程生成样本。是一种经典的扩散模型,其采样算法是反向去噪过程的核心。的噪声,通过移除该噪声可逐步恢复数据。通过重参数化技巧,可直接从。预测的是前向过程中添加到。,化简后得到均值公式。DDPM 固定方差为。
2025-02-27 17:11:36
866
原创 PyTorch Lightning 的简单使用示例
PyTorch Lightning 的核心是继承,在这里我们通过子类化创建了一个简单的模型类LitModel。使用 LightningDataModule 能够使数据预处理、划分和加载更加模块化,便于在多个训练阶段(训练、验证、测试)中复用同一数据处理流程。模块化设计:利用 LightningModule 将模型、训练逻辑、验证逻辑和优化器配置集中在一个类中;而 LightningDataModule 则统一管理数据的下载、预处理、划分和加载。简化训练流程。
2025-02-27 16:41:01
960
原创 Transformer Encoder 详解
位置编码是 Transformer 模型的关键组件,用于向模型注入序列的位置信息(因自注意力机制本身是位置无关的)。其中 (\text{head}_i = \text{Attention}(Q W_i^Q, K W_i^K, V W_i^V))。通过位置编码,Transformer 能够明确感知序列中元素的顺序,这是其成功替代 RNN 的关键设计之一。维度保持为 (d_{\text{model}}),无需额外变换。Transformer Encoder 由。
2025-02-20 16:05:30
739
原创 windows + visual studio 2019 使用cmake 编译构建静、动态库并调用详解
windows下静态库和动态库构建和使用
2025-02-08 16:23:14
1423
原创 【小白看了都会】Anaconda3与Pycharm详细下载与安装,并在Pycharm中配置Anaconda3环境
Anaconda3的详细安装,与Pycharm如何配置Anaconda3创建的虚拟环境
2024-12-04 23:17:27
1472
原创 通俗易懂 VQ-GAN:结合向量量化与生成对抗网络的高效图像生成模型
目的是为了和各种生成算法统一。在来看VQ-GANVQ-GAN:既然VQ-VAE觉得随机采样的z不靠谱,那我一样,我的z采样也不在是直接采样,而是也构造一个网络来实现生成z的采样,然后你会发现比较好玩的是,把VQ-GAN前面的编码网络E去掉,他就是一个GAN,那如果是把D网络去掉,那就是VQ-VAE了。
2024-12-04 11:03:01
823
原创 yolov5详解(一):网络结构
以下是参考b站上作者以及yolov5官方代码画出的yolov5l v6.0版本的模型结构,v6.0版本的模型结构是目前yolov5版本的稳定版本,想必以后也不会有什么改变。l,m,n,s,x只是有些层以及输出通道数变化,整体架构是完全一样的,因此我们只拿一个l模型来说。其他的就不在一一介绍了。从上图可以看出,模型主要分为三个部分:backbone:主要用于图片的特征提取;neck:主要对特征图进行多尺度融合,传给detect层;detect:用来预测最终结果。
2024-08-14 22:32:20
2248
原创 VQ-VAE(Vector Quantized Variational Autoencoder)代码详解及实现
看这篇文章之前,希望能够熟知以下我写的一遍原理介绍,代码中的名称尽可能和原论文保持一致,如ze,z,zq这些名称等。理论不在重新介绍。同样仍然使用mnist数据集。
2024-07-30 15:47:37
1782
原创 深入探索VQ-VAE:原理、架构与应用实践全解析
我们知道作者做的一个假设是先验的离散分布p是均匀分布,但是实际上生成任务上并没有在均匀分布上采样,当然也可以,但是效果是很差的,所以引入了pixelcnn使得整个离散分布有了意义,这也是为什么说VQ-VAE是一个AE不是一个VAE的主要原因,后面在详细解释。但是为什么要有呢,你可别忘了,最终我们在生成图像的时候,只是用到decoder,要有一个采样过程,而这个采样就是在z上随机采样。,但是效果很差,原因是什么,原因就是VQ-VAE是一个AE啊,本身就不具备生成的能力,即使离散化的z也是有一定的意义的。
2024-07-30 15:19:07
1437
原创 YOLOv3深入解析与实战:实时目标检测的高效多尺度架构网络
网上有很多关于yolo的文章,有些东西没讲清楚,基于自己对论文的理解,也做一个按照自己的想法做的理解。
2024-06-02 23:13:50
1270
原创 YOLOv1深入解析与实战:目标检测算法原理
学习目标检测算法,yolov1是必看内容,不同于生成模型,没有特别多的理论,关键在于模型结构的构造。先直接从作者给的图,来解释yolo到底干了一件什么事情,为什么速度那么快。我们重点分析这几张图,搞明白图就明白了算法核心。输入:输入是一张完整的图片,不是说把一张图片分成S*S个网络输出S×S×B∗5CS×S×B∗5CS×SS\times SS×S相当于把原图分成S×SS\times SS×S个grid cell,这里是7x7;B∗5C。
2024-06-02 23:13:26
943
原创 深入解析与实现:变分自编码器(VAE)完整代码详解
VAE理论上一篇已经详细讲完了,虽然VAE已经是过去的东西了,但是它对后面强大的生成模型是很有指导意义的。接下来,我们简单实现一下其代码吧。
2024-05-20 22:29:07
2444
3
原创 VAE理论详解,从概率的角度出发,还原论文推导
如下图所示,生成模型的目标是在一个已只分布p(z)中随机采样z,经过网络G,生成的结果xGzxGz是满足训练数据p(x)的分布,我们假定生成的分布为pgp_gpg,训练样本的分布为pdatap_{data}pdata,一个非常麻烦的事是我们不知道,也无法去知道pdatap_{data}pdata的分布,无法去做损失函数求解G。你可以这样理解,我们生成网络的目的是要得到pgpdatapgpdata。
2024-05-09 14:30:01
1009
1
原创 使用pytorch构建GAN网络并实现FID评估
上一篇文章介绍了GAN的详细理论,只要掌握了GAN,对于后面各种GAN的变形都变得很简单,基础打好了,盖大楼自然就容易了。既然有了理论,实践也是必不可少的,这篇文章将使用mnist数据集来实现简单的GAN网络,并附带使用FID来评估生成质量。
2024-05-07 11:39:10
1975
1
原创 深度学习中的熵、交叉熵、相对熵(KL散度)、极大释然估计之间的联系与区别
熵的最初来源于热力学。在热力学中,熵代表了系统的无序程度或混乱程度,也可以理解为系统的热力学状态的一种度量。后来被广泛引用于各个领域中,如信息学、统计学、AI等,甚至社会学当中。接下来将大家领略一下深度学习中熵的应用。
2024-04-24 10:02:53
1684
原创 python 几种常见的音频数据读取、保存方式
soundfile库是一个Python库,主要用于读取和写入音频文件。它支持多种音频格式,包括WAV、AIFF、FLAC和OGG等。通过soundfile库,用户可以方便地将numpy数组存储到音频文件或者将音频文件加载到numpy数组中。此外,soundfile库还提供了一些函数,用于处理音频数据。它的使用简单且灵活,方便进行音频处理和分析的工作。
2024-02-22 18:18:46
7447
原创 opencv c++ (7):模糊与锐化
在图像处理中,模糊(也称为平滑)和锐化是两种常见的图像滤波技术,它们可以用来改变图像的外观和质量。在OpenCV中,模糊和锐化可以通过不同的滤波器来实现,如平均滤波、高斯滤波、拉普拉斯滤波等。根据具体的需求和应用场景,可以选择合适的滤波器来达到期望的效果。以下是一些具体方法。
2024-02-02 17:56:47
1144
原创 opencv c++ (6):直方图
在OpenCV C++中,直方图是一种用来表示图像亮度或颜色分布情况的工具。直方图可以帮助我们了解图像中不同亮度或颜色值的像素数量,从而可以进行图像增强、图像分割、特征提取等操作。在OpenCV C++中,我们可以使用cv::calcHist()函数来计算图像的直方图,使用cv::normalize()函数对直方图进行归一化处理。直方图可以用来进行直方图均衡化、直方图匹配、直方图反向投影等操作,以改善图像质量或实现特定的图像处理需求。
2024-02-02 15:22:20
1158
原创 opencv c++ (3):像素操作4
在OpenCV中,可以使用函数来计算图像中的最大值和最小值,使用cv::mean函数来计算图像的平均值,使用函数来计算图像的平均值和标准差。下面是相关代码使用。这里分别举例了data指针和ptr指针的用法。
2023-11-03 18:10:19
175
原创 opencv c++ (3):像素操作3
在 OpenCV 中,比特位操作主要用于图像处理和计算机视觉任务中。总的来说,比特位操作在 OpenCV 中有着广泛的应用,能够帮助实现图像处理、特征提取、压缩等功能,提高图像处理的效率和性能。位操作就是bit位的与或非等,很简单,直接给代码没什么可说的,直接看代码注释就明白了,主要是mask的理解,mask意思是,maks不为0的区域才进行操作,为0的区域就是黑色的。
2023-11-02 18:11:09
102
原创 opencv c++ (3):像素操作1
像素的遍历在图像处理中起着至关重要的作用,它可以用于实现各种图像处理算法和技术。以下是像素的遍历在图像处理中的一些常见应用:图像增强:通过遍历图像的每个像素,可以对像素进行各种操作,如调整亮度、对比度、色彩平衡等,从而实现图像的增强。滤波:通过遍历图像的每个像素及其周围像素,可以实现各种滤波操作,如均值滤波、高斯滤波、中值滤波等,用于去除噪声或模糊图像。特征提取:通过遍历图像的每个像素及其周围像素,可以实现特征提取算法,如边缘检测、角点检测、纹理分析等,用于识别和描述图像中的特征。
2023-11-01 16:12:14
204
原创 常用激活函数和loss函数详解
交叉熵损失对于错误分类的惩罚更严厉,能够更好地推动模型向正确的方向优化。Hinge Loss对于正确分类的样本不会产生损失,只有错误分类的样本才会产生损失,能够使得模型更加关注错误分类的样本。平滑损失(Smooth Loss)的优点: - 平滑损失可以在模型训练中平衡L1 Loss和L2 Loss的优点,既能够对异常值比较鲁棒,又能够在优化过程中收敛稳定。L1 Loss(绝对值损失)的优点: - 对异常值比较鲁棒,因为L1 Loss在异常值处的梯度不会特别大,相对于L2 Loss更不容易受到异常值的影响。
2023-11-01 09:47:00
126
1
原创 pytorch gpu推理、onnxruntime gpu推理、tensorrt gpu推理比较,及安装教程,有详细代码解释
onnx , tensorrt 安装推理比较,有代码
2023-10-30 18:04:15
6128
1
原创 diffusion model 常用参考链接
这种算法主要应用生成数据生成上,类型于VAE、GAN,比他们效果好。主要原理是通过对数据加噪和去噪实现数据生成,由于加噪过程是可以计算的,去噪过程很难计算,因此diffusion model就是设计一个去噪模型来训练噪声,模型的选择设计可任意。由于去噪是需要多步完成,这也导致diffusion model耗时比较长,很难达到实时效果。不需要看太多,这两篇足以,Top1里面讲解非常详细,包括理论推导,到代码实现非常详细;这篇综述很全,介绍了diffusion model 的原理和应用。
2023-09-27 11:22:41
153
1
原创 python通俗易懂的GIL、多进程、多线程
在Python中,有两种并发处理方式:多线程和多进程。这两种方式都可以用于实现并行处理,提高程序的性能。
2023-09-26 11:51:10
200
1
原创 torch.FloatTensor,torch.Tensor,torch.tensor,torch.as_tensor,torch.from_numpy的区别与连系总结
torch.FloatTensor: 类, 深copy。可更改类型,devicetorch.Tensor: 同torch.FloatTensortorch.tensor: 函数,深copy。可更改类型,devicetorch.as_tensor: 函数,浅copy。不可更改类型,devicetorch.from_numpy: 函数,浅copy。不可更改类型,device共同点:最终都创建一个torch.Tensor对象。
2023-09-25 18:11:04
336
1
原创 git 的常用操作详解
git clone url 获取远程代码git branch 查看当期分支git branch -a 查看所有分支git branch newBranch 创建分支git pull 拉取与本地分支名相同的远程分支到本地git pull origin 远程分支名 拉取指定的远程分支到本地git checkout 你的分支名称 切换本地分支git merge branchName 合并分支到当前分支git status 工作区的状态,让我们时刻掌握仓库当前的状态。
2023-07-07 18:13:12
336
1
ninja: error:multiple rules generate
2022-10-07
TA创建的收藏夹 TA关注的收藏夹
TA关注的人