
算法
文章平均质量分 76
纪录经典的算法
lqjun0827
一个有梦想的程序员......
展开
-
相机标定和图像配准
相机的内参和外参。原创 2024-08-13 15:46:39 · 1009 阅读 · 0 评论 -
PyTorch实现NMS算法
NMS 算法源码实现Python实现NMS(非极大值抑制)对边界框进行过滤。目标检测算法(主流的有 RCNN 系、YOLO 系、SSD 等)在进行目标检测任务时,可能对同一目标有多次预测得到不同的检测框,非极大值抑制(NMS) 算法则可以确保对每个对象只得到一个检测,简单来说就是“消除冗余检测”。原创 2024-06-20 19:31:03 · 714 阅读 · 0 评论 -
Delaunay三角剖分与Voronoi图生成
Delaunay三角剖分Delaunay三角剖分是一种用于二维和三维空间的特殊类型的三角剖分。给定一组在平面上的点,Delaunay三角剖分将这些点连接成三角形,使得在所有可能的三角形中,这些三角形的最小角最大,外接圆最小。创建一个超级三角形,包含所有的点。依次添加点到三角剖分中,对于每个添加的点:找到包含此点的三角形。删除此三角形,并创建三个新的三角形,新的三角形由旧的三角形的每条边和新添加的点组成。修复Delaunay条件。新加入的点可能会导致Delaunay条件不成立。原创 2024-02-19 13:05:33 · 1332 阅读 · 0 评论 -
仿射变换--getAffineTransform和wrapAffine
wrapAffine。原创 2023-12-29 20:08:01 · 748 阅读 · 0 评论 -
指数移动平均EMA
指数移动平均(Exponential Moving Average,简称EMA)是一种常用的平滑方法,通常用于时间序列数据的平滑处理。EMA 可以减小噪声的影响,使得数据更加平滑,并且能够自适应地调整权重,更好地反映时间序列的趋势。EMAtx0t0αxt1−αEMAt−1t0EMAtx0αxt1−αEMAt−1t0t0其中,xtx_txt表示时间ttt的观测值,EMAt。原创 2023-10-11 17:16:44 · 1279 阅读 · 0 评论 -
知识蒸馏(Knowledge Distillation)
知识蒸馏(Knowledge Distillation)是一种模型压缩技术,旨在将一个较大的、已经训练好的模型(通常被称为教师模型)的知识转移到一个较小的、目标模型(学生模型)中。这样,学生模型就可以获得与教师模型相当的泛化能力,同时减少了参数量和计算复杂性,使其更适合在移动设备或嵌入式设备上运行。知识蒸馏的核心思想是通过让学生模型学习教师模型的“软目标”,来获得更好的泛化能力。知识蒸馏的原理是,教师模型在大量数据上的训练使其具有了很好的泛化能力,而这种泛化能力可以通过对目标模型的训练来转移。原创 2023-09-03 20:29:29 · 426 阅读 · 0 评论 -
图像结构相似性指数(SSIM)
SSIM(结构相似性指数)是一种用于衡量两个图像之间结构相似性的指标。它是一种全参考图像质量评价指标,用于衡量两个图像在亮度、对比度和结构方面的相似程度。SSIM 被广泛应用于图像处理领域,尤其在图像压缩、图像恢复、图像质量评价等方面具有重要作用。与传统的 PSNR(峰值信噪比)相比,SSIM 考虑了人眼对图像感知的特性,更能反映人眼感知到的图像质量。SSIM 的计算基于以下三个方面的信息:亮度相似性(Luminance Similarity):衡量两个图像的亮度是否相似。原创 2023-08-29 19:25:16 · 2491 阅读 · 0 评论 -
Sinkhorn算法
Sinkhorn算法是一种用于解决最优传输问题的迭代算法。最优传输问题是指在给定两个概率分布μ\muμ和ν\nuν的情况下,找到一个最优的转移方案,使得从μ\muμ到ν\nuν的转移成本最小。Sinkhorn算法通过迭代的方式逐步优化转移方案,以达到最优传输的目标。Sinkhorn算法的核心思想是通过交替地更新行和列的缩放因子,来逐步逼近最优转移方案。具体来说,算法的步骤如下:初始化转移方案:首先,我们需要初始化一个转移方案P\mathbf{P}P,其中P\mathbf{P}原创 2023-08-27 11:03:22 · 4387 阅读 · 0 评论 -
模仿学习(Imitation Learning)
Imitation Learning(模仿学习)是一种机器学习方法,通过观察专家(或者已知的行为数据)的行为来学习一个策略,以在类似任务中模仿专家的行为。它的目标是让机器学习从专家的经验中获取知识,从而在未来的任务中表现出类似的行为。专家策略和学习算法。专家策略:专家策略是已经经过训练或者是领域专家提供的一个策略,用来指导模型的学习。专家策略可以是人类专家在该任务上的行为数据,或者是通过其他强化学习算法等方式获得的一组良好的策略。学习算法:学习算法用来从专家的行为数据中学习一个策略模型。原创 2023-08-26 15:25:16 · 2413 阅读 · 0 评论 -
强化学习系列--演员-评论员算法(Actor-Critic Algorithm)
演员-评论员算法(Actor-Critic Algorithm)是一种结合了值函数估计和策略梯度方法的强化学习算法。该算法同时训练一个策略网络(演员)和一个值函数网络(评论员)。演员根据当前策略选择动作,评论员根据当前状态估计值函数,并作为基准线来计算策略梯度的更新。初始化策略网络的参数θ\thetaθ和值函数网络的参数ω\omegaω。对于每个回合:初始化状态sss。根据策略网络,选择动作aaa。执行动作aaa,观察奖励rrr和下一个状态s′s's′。原创 2023-08-25 22:39:46 · 802 阅读 · 1 评论 -
强化学习系列--带基准线的REINFORCE算法
在强化学习中,带基准线的REINFORCE算法是一种用于求解策略梯度的方法。REINFORCE算法(也称为蒙特卡洛策略梯度算法)可以用于训练能够从环境中学习的策略。带基准线的REINFORCE算法是对经典REINFORCE算法的改进,通过引入一个基准线来减小方差,加速学习的过程。REINFORCE算法通过采样轨迹并利用蒙特卡洛方法来估计策略梯度。该算法的目标是最大化期望回报,即最大化累积奖励的期望值。原创 2023-08-25 22:35:14 · 1125 阅读 · 0 评论 -
强化学习系列--深度Q网络(DQN算法)
深度Q网络(Deep Q-Network,DQN)是一种强化学习算法,通过结合深度神经网络和Q-learning算法,用于解决具有高维状态空间的强化学习问题。DQN是由DeepMind提出的,并在解决Atari游戏中取得了显著的成功。在传统的Q-learning算法中,我们使用一个Q表来存储每个状态动作对的动作值函数。然而,当状态空间非常大时,使用Q表变得非常困难,甚至不可行。DQN通过使用一个深度神经网络来逼近动作值函数,解决了这一问题。DQN的核心思想是。原创 2023-08-25 18:40:34 · 883 阅读 · 0 评论 -
强化学习系列--时序差分学习方法(SARSA算法)
SARSA(State-Action-Reward-State-Action)是一种强化学习算法,用于解决马尔可夫决策过程(MDP)中的问题。SARSA算法属于基于值的强化学习算法,用于学习最优策略。在SARSA算法中,智能体通过与环境进行交互来学习。它基于当前状态、选择的动作、获得的奖励、下一个状态和下一个动作来更新价值函数(或者动作值函数),并根据更新后的价值函数选择下一个动作。原创 2023-08-25 17:05:20 · 1099 阅读 · 0 评论 -
强化学习系列--值迭代算法
值迭代算法使用贝尔曼最优方程来更新状态值函数。贝尔曼最优方程表示最优状态值函数的递归关系,一个状态的最优值等于在该状态下采取最优动作后获得的即时奖励加上下一个状态的最优值的折现值。对于一个状态 s,其最优状态值函数 V(s)* 和最优状态-动作值函数 Q(s, a)* 的更新公式如下:其中,P(s’|s, a) 是在状态 s 执行动作 a 后转移到状态 s’ 的概率,R(s, a) 是在状态 s 执行动作 a 后的即时奖励,γ 是折扣因子,用于权衡当前奖励和未来奖励的重要性。原创 2023-08-25 15:01:59 · 593 阅读 · 0 评论 -
LSTM原理及Pytorch使用
LSTM(Long Short-Term Memory)是一种循环神经网络(RNN)的变体,用于处理序列数据。LSTM 的设计目的是解决传统 RNN 面临的短期记忆和梯度消失的问题。LSTM 通过引入门控机制来有效地捕捉和传递长期依赖关系。LSTM 的核心思想是引入了一个称为细胞状态(cell state)的中间变量,用于保存和传递信息。细胞状态可以选择性地更新和忘记信息,从而在处理序列数据时更好地控制信息的流动。输入门遗忘门输出门(output gate)和细胞状态。原创 2023-08-09 03:36:33 · 226 阅读 · 0 评论 -
nn.InstanceNorm2d和nn.BatchNorm2d比较
和都是 PyTorch 中常用的归一化层,用于提高神经网络的训练稳定性和泛化能力。原创 2023-08-06 15:02:51 · 4021 阅读 · 0 评论 -
变分自编码器——pytorch实现VAE
变分自编码器(Variational Autoencoder,VAE)是一种生成模型,结合了自编码器和变分推断的思想。它可以用于学习数据的潜在表示,并用于生成新的样本。VAE的目标是学习一个潜在空间(latent space),使得原始数据可以通过从该潜在空间中采样并解码重构出来。编码器(encoder)和解码器(decoder)。编码器将输入数据映射到潜在空间中的一组潜在变量(latent variables)。编码器将输入数据xxx映射到潜在变量zzz的概率分布qz∣x。原创 2023-08-04 21:59:27 · 3511 阅读 · 1 评论 -
ROI Align原理介绍
是PyTorch的一个操作函数,用于在给定的RoIs(感兴趣区域)上执行空间变换网络。该操作函数可以被用于目标检测和物体识别等计算机视觉任务中,通常在RoI池化之前被执行。RoI Align(Region of Interest Align)是RoI池化的一种改进,它可以更加精确地对齐RoI中的特征,避免了RoI池化过程中的信息损失。具体来说,RoI Align操作首先将RoI区域划分为若干个小的网格,然后在每个网格内执行双线性插值,最终得到固定大小的特征图。原创 2023-07-14 15:09:26 · 3716 阅读 · 0 评论 -
最大权值匹配算法(Hungarian算法)
基本思想:左边有节点n个,右边有节点m个,每个节点之间有一条边,每条边有一个权值,求一个匹配,使得匹配的边的权值和最大。原创 2023-06-18 21:40:59 · 569 阅读 · 0 评论 -
最大权值匹配算法
具体来说,我们从该左部节点开始,依次考虑与它相邻的右部节点,如果该右部节点未匹配或存在未访问过的增广路径,就将其匹配到当前左部节点,否则我们尝试沿着当前右部节点已匹配的边继续寻找增广路径,直到找到一条新的未匹配的右部节点为止。如果找到了一条增广路径,就将该路径上所有已匹配的边反转成未匹配的边,将该路径上所有未匹配的边匹配起来,然后返回步骤2。在一个二分图中,每个节点都被划分为左右两个部分,我们需要在左部节点和右部节点之间建立一一对应的匹配,使得匹配边的权值之和最大。常用的算法有两种:匈牙利算法和KM算法。原创 2023-04-07 02:21:25 · 1579 阅读 · 0 评论 -
最短路径算法
在以上代码中,我们使用一个一维数组d来存储起点到各个顶点的最短距离,使用一个一维数组used来存储每个顶点是否已经被确定了最短距离。首先对距离数组d和used数组进行初始化,然后在每次循环中选择尚未确定最短距离的点中距离最小的点作为当前的起点v,通过更新与v相邻的点来更新起点到其他点的最短距离。最后返回终点的最短距离即可。使用迪杰斯特拉算法,先将起点加入一个集合S中,然后对于与S相邻的点,更新到起点的距离(松弛操作),每次将距离最小的点加入S中直到所有点都被加入S中,最终得到两点之间的最短路径。原创 2023-04-01 11:16:46 · 130 阅读 · 0 评论 -
背包最大价值问题
首先对边界条件进行初始化,然后根据状态转移方程进行逐步求解,在每个位置上,如果当前背包容量小于第i件物品的重量,则最大价值等于去掉这件物品后的前i-1件物品的最大价值;否则,最大价值等于去掉这件物品后的前i-1件物品的最大价值和去掉前i-1件物品而多放这件物品的价值的最大值。最后返回n个物品和V个容量下的最大价值即可。使用动态规划,设dp[i][j]表示前i个物品放入容量为j的背包中所能获得的最大价值,则有dp[i][j] = max(dp[i-1][j], dp[i-1][j-wi] + vi)。原创 2023-03-30 20:36:07 · 196 阅读 · 1 评论 -
最长公共子序列问题
首先对边界条件进行初始化,然后根据状态转移方程进行逐步求解,在每个位置上,如果A和B的当前字符相等,则当前位置上的最长公共子序列长度等于其左上角位置(即去掉A和B当前字符后的两个子串的最长公共子序列长度)加1;否则,最长公共子序列长度等于其上方或左方位置的长度(即去掉A或B当前字符后的两个子串的最长公共子序列长度的最大值)。使用动态规划,设dp[i][j]表示A的前i个字符和B的前j个字符的最长公共子序列的长度,如果A[i] == B[j],则dp[i][j] = dp[i-1][j-1] + 1;原创 2023-03-30 19:22:15 · 202 阅读 · 0 评论 -
最小生成树算法
在以上代码中,我们首先定义了一个边的结构体Edge,然后按照边的权值从小到大对边进行排序,接着使用并查集来判断两个顶点是否在同一棵树中,若不在,则将它们合并,并输出这个边。使用克鲁斯卡尔算法,先将所有的边按权值从小到大排序,然后对于每条边,判断这两个点是否在同一个连通分量中,若不在则将这条边加入最小生成树,并将这两个点所在的连通分量合并。最小生成树——克鲁斯卡尔算法:给定一个有权无向图,求其最小生成树。给定一些边的信息,每条边有一个权值,求由这些边组成的最小生成树的权值和。原创 2023-03-30 18:50:19 · 84 阅读 · 0 评论