- 博客(490)
- 问答 (5)
- 收藏
- 关注

原创 HA4算法(Hardware Accelerated 4-connected CCL / CCA algorithm)
HA4是基于two-pass的算法,两遍扫描使得递归完全展开更好的适应GPU并行架构,算法首先将图像切割为条带,然后使用循环网格横向处理图像,每个条带中存在不同的段,不同的段由段头保存标记信息,接着再纵向合并。HA4是一个非常出名的GPU连通域标记/分析算法,但是由于在分析的时候需要新建很多特征张量,是一种以空间换时间的典型做法,所以导致将结果组成序列化的形式是非常耗时的,当然后续在2023年的时候已经有人发表了新的文章解这些传输以及合并结果上的问题。
2025-02-01 21:32:24
1006

原创 Detectron2的入门学习
文章目录前言一、Detectron2的安装二、简单的运行案例1.利用已有的模型进行各种测试2.训练自己的模型总结前言 detectron2是Facebook的一个机器视觉相关的库,建立在Detectron和maskrcnn-benchmark基础之上,可以进行目标检测、语义分割、全景分割,以及人体体姿骨干的识别。这个项目在GitHub上已经有超过了20k的星星。一、Detectron2的安装 在Detectron2的官网上已经给出了Linux平台的安装方法。在这里介绍另外一个常用的平台即wi
2022-05-02 13:00:17
12448
9

原创 遗传算法的简单介绍以及模式定理的简单证明
遗传算法 遗传算法(Genetic Algorithm,GA),最早是由美国的John holland在20世纪70年代提出。算法通过模拟达尔文生物进化论的自然选择以及遗传学机理的生物进化过程来搜索问题的最优解。 遗传算法是靠大规模数据演变来得到问题的最优解,当然在实际过程中可能受限于数据规模等因素往往得到的结果并不是最优解而是一个相对比较好的结果,这其实也是演化类算法的一大通病。为什么说遗传算法是靠大规模数据演变来得到问题的最优解?这就要提到算法所需要的数据构成了。算法的数据构成也是仿生而来,首先
2022-02-11 04:22:59
1752

原创 深入理解BP神经网络的细节
神经网络之BP算法文章目录神经网络之BP算法前言一、BP算法的流程二、搭建神经网络总结前言 BP神经网络是Back Propagation的简写,它是最简单的前馈神经网络之一通常用于初学者对于深度学习的入门。何为深度学习呢?简单来说就是隐藏层超过两层的神经网络。本文将会采用最常用的优化方法以及最细致的过程来复现BP神经网络的搭建。一、BP算法的流程 首先简单介绍一下BP神经网络之前的典型模型MP模型。MP神经元是由两个人名组成命名的模型。最早以前的神经网络涉及n个输入以及两种计算
2022-01-18 20:57:51
1144

原创 AdaBoost
AdaBoostAdaBoost是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器,然后把这些分类器集合起来,构成一个更强的最终分类器。抛出问题:给定一些弱的分类器、一个训练集和一个测试集。要求利用训练集训练分类器,然后给测试集分类。我们该如何去做?解决的方案有如下:方案一:将每个分类器都试一下,挑出最好的那个。方案二:先用一个分类器分类随机部分训练集数据,再用其他训练器分类随机分部分训练集数据,得到的结果进行取平均值或者多数投票获取最终结果。方案三:先用一个分类器分类随机部分训.
2021-03-21 20:22:04
1335

原创 ES算法
ES(Evolutionary Strategy)在20世纪60年代初,柏林工业大学的I. Rechenberg和H.-P. Schwefel等在进行风洞实验时,由于在设计中描述物体形状的参数难以用传统的方法进行优化,从而他们利用生物变异的思想来随机地改变参数值并获得了较好的结果。随后,他们便对这种方法进行了深入的研究和发展,形成了演化计算的另一个分支—演化策略。关键理念:“演化的演化”以个体的变异算子为主,重组算子为辅认为变异强度是演化的关键,称为演化策略参数将演化策略参数纳入演化本身,不.
2021-03-14 09:29:53
4889

原创 EP算法
EP(Evolutionary Programming)演化规划是由L.J.FogeI等在20世纪60年代提出的。当时演化规划的目标是通过模拟进化来获得智能行为。 他们将智能视为能够预测其所在环境的状态,并按照预定目标作出适当响应的能力。对环境的预测能力是智能行为的一个重要特征。关键理念:个体的变异是产生新个体的唯一方式认为变异参数是演化的关键强调用自适应方式不断优化变异参数演化规划的基本框架个体表示:(x1,x2,…,xn,σ1,σ2,…,σn),前面的x为一个个体n维,而后面.
2021-03-14 09:28:59
2281
1

原创 DE算法
DE(Differential Evolution)差分进化算法是一种新兴的进化计算技术。它是由Storn等人于1995年提出的,和其它演化算法一样,DE是一种模拟生物进化的随机模型,通过反复迭代,使得那些适应环境的个体被保存了下来。但相比于进化算法,DE保留了基于种群的全局搜索策略,采用实数编码、基于差分的简单变异操作和一对一的竞争生存策略,降低了遗传操作的复杂性。关键理念:初为GA的变种,后自称一派和GA,EP,ES不同,DE不是生物学启发的。差分演化的基本框架个体表示:一般用.
2021-03-13 19:42:08
9688
8

翻译 DBSCAN聚类
DBSCANDensity-Based Spatial Clustering of Applications with Noise一种基于密度,对噪声鲁棒的空间聚类算法。DBSCAN算法可以找到样本点的全部密集区域,并把这些密集区域当做一 个一个的聚类簇通常情形下,密度聚类算法从样本密度的角度来考察样本之间的可连接性, 并基于可连接样本不断扩展聚类簇以获得最终的聚类结果。DBSCAN算法基于一组“领域”参数(ε,MinPts)来刻画样本分布的紧密程度。ε:领域半径;MinPts:密度阈值.
2021-03-13 19:41:25
300

原创 AGNES算法
层次凝聚算法——AGNESAGNES算法是一种基于层次凝聚的聚类算法,它的思想十分朴素。假设现在有一个待聚类的数据集,那么根据分而治之的思想我们可以首先将每一个样本点看成是一个类,然后根据一定的规则将这些比较“小”的类进行合并,进而达到最终想要的结果。那么这个合并的规则是什么?通常我们将样本点之间的距离看成相似度。在两个小类中,第一个类和第二个类中的点它们之间的距离有很多,如果第一个类有n个样本点,第二个类有m个样本点,那么不同的类点和点之间的距离就会有m*n个,到底如何定义这个规则呢? 一般而.
2021-03-13 19:32:00
3194

原创 KMeans聚类
k均值算法(k-means clustering algorithm)k均值算法是一种基于距离的聚类算法,需要人为事先规定数据分类的数目。这里的k指的就是数据将要分的类的数目。 k均值算法的步骤也比较简单基本可以概括为两个步骤,第一步,选择k个点作为初始质心。第二步,将其余的每个点都分配给最近的质心所属的类别,形成k个簇, 然后重新计算质心,直到质心不再发生明显的变化。 这里的质心初始生成可以是随机也可以指派,如果第一次选择的质心就比较能凸显出分类情况那么这个算法将会极快的收敛, 重新计算质心往往..
2021-03-13 19:31:29
197

原创 GA算法
遗传算法(genetic algorithm)是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程计算模型,是一种通过模拟自然进化过程搜索最优解的方法。下面我将分享自己在做GA模型的心得与困惑。先来整理一下GA的基本步骤:随机生成一定数量的种群。对种群的个体进行编码与评估。选用合适的方法对现有种群中的个体做出选择。对选择出来的个体进行“交叉”并获得新的个体。对下一代进行”突变“操作。第一步:随机生成一定数量的种群。首先应该构思存储个体的数据结构。我选择的是嵌套的列表(list..
2021-03-13 19:30:59
4577

转载 FuzzyCMeans算法
FuzzyC-Means模糊c-均值聚类算法 fuzzy c-means algorithm(FCMA)或(FCM)。模糊c均值聚类算法,是当前模糊系统里表现比较好的算法之一 其特征与k-means相似,也是基于距离来判断分类。模糊c均值需要用户提供除数据之外至少一个参数,而这个参数与k-means中的k类似。模糊c-均值聚类算法意在求解一个最小化问题即:其中,uij为样本xj属于第i类的隶属度,故u是一个c×n的矩阵,xj就是第j个样本数据,ci为第i个聚类中心一共有c个,m则是一个大.
2021-03-13 19:29:19
3653

原创 PSO算法
Particle Swarm OptimizationPSO是一种基于种群的随机优化技术,由Eberhart和Kennedy于1995年提出。主要模仿昆虫、兽群、鸟群和鱼群等的集群行为。以鸟群觅食为例,粒子群算法中有粒子、粒子群、粒子的位置及飞行速度、最优解、粒子的适应度、最优粒子、粒子的个体经验及群体经验,它们可以类比于一只鸟、鸟群、鸟的位置与飞行速度、食物的位置、鸟与食物位置的距离、离食物最近的鸟、鸟的记忆能和学习能力。粒子群优化算法鸟群觅食粒子(问题的一个解)鸟(.
2021-03-13 19:24:44
2722

原创 学习向量量化LVQ
学习向量量化“学习向量量化”(Learning Vector Quantization,简称LVQ)是一种利用监督信息辅助的聚类算法,像K-Meas算法一样也是通过调整一组类似于质心的点来进行聚类。算法描述假设给定样本D={(X1,Y1),(X2,Y2),…,(Xm,Ym)},X表示样本的属性,Y表示样本的类别标记。LVQ目的是学习一组n维原型向量{P1,P2,…Pq},当样本点距离这组原型向量的某个分向量距离最近时那么它的类别标记应当与这个原型分向量一致。原型向量的训练过程和K-Mean.
2021-03-13 19:23:34
1350

原创 支持向量机SVM序列最小优化算法SMO
支持向量机(Support Vector Machine)由V.N. Vapnik,A.Y. Chervonenkis,C. Cortes 等在1964年提出。序列最小优化算法(Sequential minimal optimization)是一种用于解决支持向量机训练过程中所产生优化问题的算法。由John C. Platt于1998年提出。支持向量机的推导在西瓜书,各大网站已经有详细的介绍。本文主要依据John C. Platt发表的文章《Sequential Minimal Optimizat..
2021-03-13 19:19:56
959

原创 K近邻算法KNN
K近邻算法(KNN,K-NearestNeighbor)是一种十分简单的分类方法,也是“懒惰学习”的代表。KNN没有训练阶段,或者说训练成本为0。KNN只需要将已知的样本拿过来与需要测试的样本做一个简单的比较就能将未分类的样本分类。KNN的算法流程也十分简单,大致的思路就是,计算待测点与已知点的距离,选取与待测点距离最近的k个已知点,统计这k个已知点的类别,哪个类别最多那么这个待测点的类别就属于这个类。代码的简单实现(以鸢尾花数据集为例):import numpy as npfr..
2021-03-13 19:19:07
155
原创 直接线性变换法(DLT)
相机的模型本质上就是坐标空间的转换,可解释性比较强而且也有非常大的实用场景。在不考虑畸变的情况下得出的结果比较稳定,但是如果涉及到畸变则会有较大的出入,好在实际的畸变项参数是符合预期的,后续可能还要继续订正…
2024-11-18 22:11:07
995
原创 Rosenfeld labeling algorithm(首次使用等价表的Two-Pass算法)
当算法扫描到(1,3)时,E[1,3]=1;扫描到(2,3)时进入else分支,判断当前元素上面的1和左边的2谁是最小正整数,然后更新等价表为[0,1,1,3],E[2,3]=1;扫描到(3,2)时,判断当前元素上面的2和左边的3谁是最小正整数,然后更新等价表为[0,1,1,2],E[3,2]=2;通过肉眼可以判断此图中只有一个连通域,但是等价表中除了背景却有两个标记,此时需要进行等价传递(Transitive Closure),更新等价表为:[0,1,1,1],自此第一遍标记已经完成。
2024-11-03 23:50:02
497
原创 cuda-skimage的安装与简单入门
接在在python下的cucim文件夹里找到pyproject.toml文件,打开并查看安装所需要的环境。当环境符合的时候就可以cmd到python的cucim文件夹下执行安装命令python setup.py build和python setup.py install,至此cucim的安装应该是完成了。上将项目下载并解压,然后把cucim-branch下的version文件复制到python下的cucim文件夹中并覆盖,然后复制到src的cucim文件夹做同样操作即可。
2024-09-04 16:34:40
551
原创 哈夫曼树到最佳归并树python实现
一般来说一个好的编码方案会大大提升通信的效率,降低延迟!如果把编码中出现的频次当作权重,则越是频繁出现的通信语句应当是短小的,而不常用的语句应当是较为长的,这样才能保证我们通信中用的较多的语句占用不大的带宽。我们都知道正常的哈夫曼树只有度为0的节点和度为2的节点,同理最佳归并树也是这样,假设有一个k叉的归并树,那么这棵树应该只有度为0和度为k的节点,总结点数为。如果整除则可以说明给定的权重个数正好可以构成归并树,否则说明有。节点,并将新补充的节点权重置为0即可。节点是多余的,此时应当使用一个。
2024-01-01 21:10:40
1036
原创 LeetCode中等题之盛最多水的容器
在数组的头和尾分别设置一个指针,通过题目可以知道目的主要是找最大,直接比较两个指针指向的值大小,小的值的指针往中间靠即可在搜索中找到最大容量。给定一个长度为 n 的整数数组 height。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i])。解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。输入:[1,8,6,2,5,4,8,3,7]输入:height = [1,1]
2024-01-01 15:12:39
471
原创 图的深度优先和广度优先遍历
数据结构中链型结构,如链表,顺序表等,还有树形结构,如二叉树等都属于图的一种退化,链形结构通常是顺序遍历直接使用for循环即可,树形结构的访问相对比较复杂,对于二叉树有先序遍历,中序遍历等,而其中的层次遍历就是广度优先遍历,与广泛意义的图不一样的是,树的遍历往往从根节点开始,依照数据存储习惯不用孩子父亲表示法则很难往回访问,所以一般不能从任意节点开始遍历,而图则可以从任意起点开始!广度优先遍历则类似二叉树的层序遍历,从节点1开始,则检查1的出口临近所有节点,2和5,然后检查2和5的临近节点6…
2024-01-01 12:37:39
619
原创 主成分分析(Principal Component Analysis,PCA)
PCA是最为常见的降维方法,在近些年神经网络兴盛之前,主成分分析在各大高校的热度十分高。在MDS算法那一篇中,我们提到MDS的核心思想就是保持原先样本的距离不变然后尝试减少样本维度,而在PCA中则是尝试寻找一组基底,一组比当前维度更低的基底来表示所有的样本,这样基底中无关的向量组个数就成为了数据降维后所使用的维度了。
2023-10-09 17:49:15
180
原创 多维缩放(MDS)算法
降维算法是机器学习里非常重要的一个板块。在k近邻学习中一个样本的类别由当前样本的周围一些样本决定,但是也是一个比较小的范围去确定它的类别,通常在二维空间只需要x2y2x2y2的欧式距离,而在三维空间中则需要x2y2z2x2y2z2。
2023-09-30 00:04:11
654
原创 LeetCode简单题之到目标字符串的最短距离
形式上, words[i] 的下一个元素是 words[(i + 1) % n] ,而 words[i] 的前一个元素是 words[(i - 1 + n) % n] ,其中 n 是 words 的长度。输入:words = [“hello”,“i”,“am”,“leetcode”,“hello”], target = “hello”, startIndex = 1。输入:words = [“i”,“eat”,“leetcode”], target = “ate”, startIndex = 0。
2023-09-15 16:58:00
193
原创 LeetCode简单题之一最多的行
给你一个大小为 m x n 的二进制矩阵 mat ,请你找出包含最多 1 的行的下标(从 0 开始)以及这一行中 1 的数目。该行 1 的数量为 1。所以,答案为 [0,1]。解释:下标为 1 的行中 1 的数量最多。所以,答案为 [1,2]。解释:下标为 1 的行中 1 的数量最多。所以,答案为 [1,2]。输入:mat = [[0,0],[1,1],[0,0]]输入:mat = [[0,0,0],[0,1,1]]输入:mat = [[0,1],[1,0]]mat[i][j] 为 0 或 1。
2023-08-30 10:15:46
163
原创 LeetCode简单题之最小公共值
给你两个整数数组 nums1 和 nums2 ,它们已经按非降序排序,请你返回两个数组的 最小公共整数。在这个题目的最后又给出了一个非常友好的条件,如果nums1和nums2都是升序排列的话,那么我们只需要模拟归并排序的过程即可找到相等的最小值。输入:nums1 = [1,2,3,6], nums2 = [2,3,4,5]解释:两个数组中的公共元素是 2 和 3 ,2 是较小值,所以返回 2。输入:nums1 = [1,2,3], nums2 = [2,4]
2023-08-12 22:08:23
122
原创 LeetCode中等题之最长连续序列
先利用哈希进行去重,然后新建一个列表记录每个子序列的开头和结尾;新建一个标志位,标记每个元素是否被访问过。遍历开头结尾记录列表,并以当前值为开头和结尾分别向两边查找,对数列进行计长,最后根据更新后的开头结尾信息获取最大长度的子序列。给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。解释:最长数字连续序列是 [1, 2, 3, 4]。输入:nums = [0,3,7,2,5,8,4,6,0,1]输入:nums = [100,4,200,1,3,2]
2023-08-11 15:24:56
64
原创 LeetCode简单题之删除每行中的最大值
对于一个矩阵每次都需要在每行中找出当前行最大值删除,这样矩阵就会整体少一列,那么对于这样的问题,可以直接先对每行进行排序,然后每次取每列中的最大值相加即可。如果存在多个这样的值,删除其中任何一个。给你一个 m x n 大小的矩阵 grid ,由若干正整数组成。输入:grid = [[1,2,4],[3,3,1]]注意 每执行一次操作,矩阵中列的数据就会减 1。解释:上图展示在每一步中需要移除的值。解释:上图展示在每一步中需要移除的值。将删除元素中的最大值与答案相加。输入:grid = [[10]]
2023-08-11 13:50:35
66
原创 决策树模型(decision tree)
决策树是奠定机器学习基础的一类算法,著名的算法有ID3、C4.5、CART。模型理解起来较为简单,跟我们日常做决定类似。例如,你想要去商场买衣服,首先确定预算,这会过滤掉一大部分情况,随后确定款式,这又会导致你的选择范围更加小更加精确,接着,确定颜色等等,最终完成购买;当然决策树更常用的地方在分类上,就如同西瓜书上的西瓜判断一般,根据西瓜的特征一步一步去确定当前西瓜是否是好瓜。
2023-07-29 10:41:13
391
原创 对数几率回归(Logistic Regression)算法
Logistic Regression是一个非常典型的分类算法,通常又被称作对率回归或者"逻辑回归"(西瓜书的作者周志华似乎不认可这个别称)。正好就是对率回归所需要追求的目标函数,假如当前样本属于1(正例),那么正好前半部分生效,如果当前样本属于0(负例),那么后半部分生效。,任何分类算法所遵循的目标或者需要前进的方向一定是希望预测的类别和真实的类别是同一类,这里对率回归也不例外,如果真实情况是1那么预测的情况也要尽可能是1。正好是上面左边的形式,如果是0则是右边的形式!,而对率回归是这样的。
2023-07-28 10:27:02
554
原创 使用Python+PaddleOCR+PyUserInput实现桌面图标自动控制/傻瓜式程序一键启动
由于截取的屏幕上显示的字都是微软库中自带的十分标准的字体,所以我们只需要在PaddleOCR的官网上下载现成的中英文通用的。一般OCR的识别需要两步,第一步先用目标检测将带有文字的部分小图截取出来,第二步类似于分类,使用分类模型把图片分为不同的类别,类的标签就是所要检测的字。PIL库的ImageGrab是非常不错的截图软件,你可以通过指定xy的坐标以及框的长和宽来实现屏幕的自动化截图,便利快捷!PyUserInput库是一个非常优秀的键鼠自动化控制库,可以在不同的系统上运行,方法简单非常的容易上手!
2023-06-28 18:04:46
769
3
原创 Pyodbc如何向Sql Server数据库中存入图片?
一般情况下,我们把图片存入数据库只需要把图片的绝对或者相对路径存入数据库即可,但是很多时候客户并不喜欢这样做,他们希望数据库中可以把所有的信息都包含,所以这就导致尽管图片存入数据库很大,但还是需要入库的畸形需求!接下来我们以微软数据库为案例,使用Pyodbc实现把图片存入数据库。
2023-06-25 15:43:19
232
原创 LeetCode简单题之等差数列中缺失的数字
只需要三个数字即可算出来等差数列本来的间隔应该是多少,三个连续的数字中,用第二个数字减去第一个数字和第三个数字减去第二个数字中较小的那个值就是等差。最后只需要遍历数组按照正常等差数列模拟生成一个新的数列,如果过程中发现生成的数字和原本数组中的数字不等则已经发现了被删除的那个数。在某个数组 arr 中,值符合等差数列的数值规律:在 0
2023-04-20 16:50:55
309
原创 LeetCode简单题之单行键盘
给定一个长度为 26 的字符串 keyboard ,来表示键盘的布局(索引从 0 到 25 )。要输入一个字符,你必须把你的手指移动到所需字符的索引处。直接做一个简单的映射,把字母和下标分别做成key和value,然后每次移动都按照规则相加即可获得最终的结果。输入:keyboard = “pqrstuvwxyzabcdefghijklmno”, word = “leetcode”解释:从 0 号键移动到 2 号键来输出 ‘c’,又移动到 1 号键来输出 ‘b’,接着移动到 0 号键来输出 ‘a’。
2023-04-20 16:38:22
183
原创 LeetCode简单题之相似 RGB 颜色
现在,假如我们分别定义两个颜色 “#ABCDEF” 和 “#UVWXYZ”,则他们的相似度可以通过这个表达式 -(AB - UV)^ 2 - (CD - WX)^ 2 - (EF - YZ)^2 来计算。因为相似度计算得出 -(0x09 - 0x11)^ 2 -(0xf1 - 0xee)^ 2 - (0x66 - 0x66)^2 = -64 -9 -0 = -73。RGB 颜色 “#AABBCC” 可以简写成 “#ABC”。例如,“#15c” 其实是 “#1155cc” 的简写。输出:“#11ee66”
2023-04-20 16:24:26
380
王道计算机考研数据结构线性表代码
2022-10-03
Ubuntu远程虚拟桌面问题
2023-08-11
关于CNC铣削刀具的问题
2023-01-10
关于巴斯勒相机的问题
2022-10-29
Linux运行py文件卡顿
2022-10-10
Detectron2在测试的时候老是爆显存,如何解决?
2022-04-14
MFC在编译的时候发生的意外
2022-03-09
软件缺失HASP.dll怎么解决?
2022-03-07
关于vector的问题
2022-02-23
关于C/C++的问题。
2022-02-23
TA创建的收藏夹 TA关注的收藏夹
TA关注的人