- 博客(233)
- 资源 (2)
- 收藏
- 关注
原创 Modbus通信协议
Modbus是一个Bus,即总线协议。目前被工业电子领域广泛应用。它具备以下三个优点:1、公开发表并且无版权要求2、易于部署和维护3、对供应商来说,修改移动本地的比特或字节没有很多限制。
2024-08-14 14:14:43
701
原创 强化学习——学习笔记3
先上图:在上述流程图中所说的Q表即为下表:假设我们在玩一个小游戏,该游戏有上下左右不同的动作,同时也会有不同的状态,比如游戏结束等。Q表也可以称为状态-价值函数QsaQ(s,a)Qsa:这个表格的每一行代表每个 state上述例子中的游戏结束等,每一列代表每个 action上述例子中的上下左右,表格的数值就是在各个 state 下采取各个 action 时能够获得的最大的未来期望奖励。
2024-05-29 14:23:25
1898
原创 强化学习——学习笔记2
动态规划法(DP):动态规划法离不开一个关键词,拆分 ,就是把求解的问题分解成若干个子阶段,前一问题的结果就是求解后一问题的子结构。在求解任一子问题时,列出各种可能的局部解,通过决策保留那些有可能达到最优的局部解,丢弃其他局部解。依次解决各子问题,最后一个子问题就是初始问题的解。举一个简单的例子:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问第n个月的兔子总数为多少?
2024-05-28 16:26:04
1133
原创 强化学习——学习笔记
强化学习问题通常可以建模为一个马尔可夫决策过程,包括以下几个要素:1、状态集合 (State Set):S;2、动作集合 (Action Set):A;Ps′∣saPs′∣sa,描述在状态s下执行动作a后转移到状态s′s^′s′的概率;Rsas′Rsas′,描述在状态s 下执行动作a并转移到状态s′后获得的奖励。πa∣sπ (a∣s)πa∣s,描述智能体在状态s下选择动作a 的概率。
2024-05-27 16:46:38
1735
原创 YOLOv10: Real-Time End-to-End Object Detection
在过去的几年里,由于在计算成本和检测性能之间取得了有效的平衡,YOLO系列算法已经成为实时目标检测领域的主导范式。研究人员已经对YOLO的架构设计、优化目标、数据增强策略等进行了探索,并取得了显著进展。然而,对非最大抑制(NMS)的后处理依赖阻碍了YOLO的端到端部署,并对推理延迟产生不利影响。此外,YOLO中各部件的设计缺乏全面彻底的检查,导致计算冗余明显,限制了模型的能力。
2024-05-27 10:14:14
1048
原创 Designing Network Design Spaces
近期特斯拉自动驾驶技术大火,经过对技术发布会的了解,特斯拉基于纯视觉技术所用的特征提取骨干为:RegNet,因此对相关的论文进行了研读。论文下载:论文代码:在这项工作中,作者提出了一种新的网络设计范式。目标是帮助提高对网络设计的理解,并发现跨设置的设计原则。此文不是专注于设计单独的网络实例,而是设计网络设计空间,使网络群体参数化。整个过程类似于经典的手工网络设计,但提升到设计空间层面。作者探索网络设计的结构方面,并到达一个低维的设计空间,由简单,规则的网络组成,称之为RegNet。
2024-04-30 14:10:38
1008
原创 GPU占用显存,但看不到PID进程(已解决)
awk 命令来处理 fuser 的输出,遍历每一行输出,以 "kill -9 " 开头,后面跟着每个进程的PID。直接使用sudo kill pid,kill指定pid进程,本文案例为22131,则为以下命令。当我们使用nvidia-smi查看显卡占用时发现显存被占用,但是看不到pid进程。fuser 命令来查找哪些进程正在使用 /dev/nvidia* 文件。
2024-04-19 09:46:06
2241
原创 Linux 利用mount挂载移动硬盘(亲测有效)
若是挂载u盘,输入如下指令,其余与上几个步骤一致。第三步,创建挂载点(按照自己喜好创建文件夹)第一步cd到自己想要挂载数据的根目录。
2024-04-09 15:09:41
895
原创 Windows10/11 D盘 安装 WSL2
WSL2适用场景:嵌入式系统等需要gnu交叉编译工具链linux服务器端开发跨平台应用开发需要linux环境的其他开发在Window10/Windows11上安装WSL2,即可替代虚拟机,远程登陆等传统开发方式。Windows11 默认可以采用 PowerShell 中的命令 wsl --install -d Ubuntu 直接安装最新版本的Ubuntu-LTS。并且可以在ubuntu中通过 sudo do-release-upgrade 保持更新。
2024-03-13 16:10:25
2455
原创 windows server 2019 服务器配置的方法步骤
在【服务器管理器上】点击【工具】–》【Remote Desk service】 -->> 【远程桌面授权管理】,打开远程桌面授权管理器,选择未激活的服务器,右击选择属性。依次点击展开【计算机配置】>>>【管理模板】>>>【Windows 组件】>>>【远程桌面服务】>>>【远程桌面会话主机】>>>【连接】右键点击【此电脑】–【属性】,进入“【控制面板\系统和安全\系统】”,点击-【远程设置】(计算机找不到就使用【win+E】快捷键)在连接项右侧找到【限制连接的数量】,并启用,设置最大用户数目。
2024-03-11 15:25:03
1871
原创 YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information
paper:code。
2024-03-06 15:57:00
1299
原创 jvm实践
通过增大Eden区的大小,来减少GC发生的次数,但有时我们发现,虽然次数减少了,但Eden区满的时候,由于占用的空间较大,导致释放缓慢,此时STW的时时间较长,因此需要按照程序情况调优。堆太小,可能会频繁的导致年轻代和老年代的垃圾回收,会产生stw,暂停用户线程堆内存大肯定是好的,存在风险,假如发生了fullgc,它会扫描整个堆空间,暂停用户线程的时间长设置参考推荐:尽量大,也要考察一下当前计算机其他程序的内存使用情况。4、jstat统计检测工具,用于显示垃圾回收信息,类加载信息,新生代的统计等。
2023-11-07 15:31:58
445
原创 Segment Anything Model(SAM)论文解读
在这项工作中,作者的目标是建立一个图像分割的基础模型。也就是说,寻求开发一个提示模型,并使用一个能够实现强大泛化的任务在广泛的数据集上对其进行预训练。有了这个模型,使用即时工程解决新数据分布上的一系列下游分割问题。该计划的成功取决于三个组成部分:任务、模型和数据。为了开发它们,作者解决了以下关于图像分割的问题:1、什么任务可以实现zero-shot泛化?2、相应的模型体系结构是什么?3、哪些数据可以为这项任务和模型提供支持?这些问题纠缠在一起,需要综合解决。
2023-09-12 09:42:49
1264
原创 C++四种强制类型转换
type必须是一个类类型,在第一种形式中,type必须是一个有效的指针,在第二种形式中,type必须是一个左值,在第三种形式中,type必须是一个右值。static_cast相当于传统的C语言里的强制转换,该运算符把expression转换为new_type类型,用来强迫隐式转换,例如non-const对象转为const对象,编译时检查,用于非多态的转换,可以转换指针及其他,但没有运行时类型检查来保证转换的安全性。在类层次间进行上行转换时,dynamic_cast和static_cast的效果是一样的;
2023-08-18 14:49:16
558
原创 C++ 中 const 和 static 关键字(定义,用途)
const 作用:限制可读性1、const修饰基础数据类型const 在基础数据类型前、后结果一样,在使用这些常量的时候不能改变常量的值。修饰符 const 可以⽤在类型说明符前,也可以用在类型说明符后,其结果是一样的。在使用这些常量的时候,只要不改变这些常量的值即可。常量不可修改//Min = 2;常量只读性2、修饰指针变量和引用变量如果const 在 * 左侧 ,则const修饰指针所指向的变量 ,即指针指向常量。
2023-08-16 15:18:33
450
原创 C++中重载(overload)、重写(override,也叫做“覆盖”)和重定义(redefine,也叫作“隐藏”)的区别?
指派生类的函数屏蔽了与其同名的基类函数。特点:①函数名称相同,但是返回值可以不同。②作用域分别位于基类和派生类之中;①如果派生类的函数和基类的函数同名,但是参数不同,此时,不管有无virtual,基类的函数被隐藏。②如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有vitual关键字,此时,基类的函数被隐藏。所以,此处只要求是同名函数,不管参数列表是否相同,基类函数都会被隐藏。
2023-08-15 21:14:10
1751
原创 C++智能指针
C++程序设计中使用堆内存是非常频繁的操作,堆内存的申请和释放都由程序员自己管理。程序员自己管理堆内存可以提高程序的效率,但是整体来说堆内存的管理是麻烦的,C++11中引入了智能指针的概念,方便管理堆内存。使用普通指针,容易造成堆内存泄露(忘记释放),二次释放,程序发生异常时内存泄露等问题等,使用智能指针能更好的管理堆内存。头文件:#include < memory>
2023-08-15 20:13:56
136
原创 匈牙利算法详解
匈牙利算法(Hungarian Algorithm)是一种组合优化算法(combinatorial optimization algorithm),用于求解指派问题(assignment problem),算法时间复杂度为O(N^3)。Harold Kuhn发表于1955年,由于该算法基于两位匈牙利数学家的早期研究成果,所以被称作“匈牙利算法”。假设有三位工人A,B和C,需要分配他们每人完成一件工作;对于不同的工作他们所需要花费的时间不同,如下表所示。问题就是要找到一套耗时最小的指派方案。
2023-08-08 17:02:43
9170
原创 机器学习指标计算
现在我们指定一个阈值为0.9,那么只有第一个样本(0.9)会被归类为正例,而其他所有样本都会被归为负例,因此,对于0.9这个阈值,我们可以计算出FPR为0,TPR为0.1(因为总共10个正样本,预测正确的个数为1),那么我们就知道曲线上必有一个点为(0, 0.1)。对于不同的模型在相同数据集上的预测效果,我们可以画出一系列的PR曲线。其中,该曲线的横坐标为假阳性率(False Positive Rate, FPR),N是真实负样本的个数,FP是N个负样本中被分类器预测为正样本的个数,P是真实真样本的个数。
2023-07-13 21:39:12
521
原创 计算机视觉中的感受野
感受野(ReceptiveField)的定义是卷积神经网络每一层输出的特征图(featuremap)上的像素点在原始输入图片上映射的区域大小。再通俗点的解释是,特征图上的一个点对应原始输入图片上的区域,如下图所示。
2023-07-11 08:38:16
1870
原创 深度学习之权重初始化
的初始化则显得至关重要,一个好的权重初始化虽然不能完全解决梯度消失和梯度爆炸的问题,但是对于处理这两个问题是有很大的帮助的,并且十分有利于模型性能和收敛速度。而言,损失函数的导数都是相同的,因此在随后的迭代过程中所有权重都具有相同的值,这会使得隐藏单元变得对称,并继续运行设置的。初始化方式一样,都希望初始化使得正向传播时,状态值的方差保持不变,反向传播时,关于激活值的梯度的方差保持不变。后每层的激活函数输出值的分布,从图中我们可以看出,深层的激活函数输出值还是非常服从标准高斯分布。下面代码为权重初始化为。
2023-07-10 22:21:23
1105
原创 深度学习调参技巧
过拟合是一个需要解决的问题,因为它会让我们无法有效地使用现有数据。有时我们也可以在构建模型之前,预估到会出现过拟合的情况。通过查看数据、收集数据的方式、采样方式,错误的假设,错误表征能够发现过拟合的预兆。为避免这种情况,请在建模之前先检查数据。但有时在预处理过程中无法检测到过拟合,而是在构建模型后才能检测出来。我们可以使用上述方法解决过拟合问题。
2023-07-09 20:49:11
991
原创 深度学习各类优化器大总结
深度学习中的优化算法采用的原理是梯度下降法,即最小化目标函数Jθ,最优化的求解过程,首先求解目标函数的梯度∇Jθ,然后将参数θ向负梯度方向更新,θtθt−1−η∇Jθη为学习率,表明梯度更新的步伐的大小,最优化的过程依赖的算法称为优化器,可以看出深度学习优化器的两个核心是梯度与学习率,前者决定参数更新的方向,后者决定参数的更新程度。我们定义θ为待优化的参数,Jθ为目标函数,初始学习率为η。再进行一次梯度下降过程中优化算法的执行框架如下:gt∇。
2023-07-09 20:33:05
1174
原创 标签平滑知识点
标签平滑(Label smoothing),像L1、L2和dropout一样,是机器学习领域的一种正则化方法,通常用于分类问题,目的是防止模型在训练时过于自信地预测标签,改善泛化能力差的问题。Label smoothing将hard label转变成soft label,使网络优化更加平滑。标签平滑是用于深度神经网络(DNN)的有效正则化工具,该工具通过在均匀分布和hard标签之间应用加权平均值来生成soft标签。它通常用于减少训练DNN的过拟合问题并进一步提高分类性能。
2023-07-04 14:40:14
409
原创 算法与数据结构(五)
1)、首先,我们需要知道每一个节点的层数:每一个节点的层数是其父节点层数+1所以,我们在push一个节点的孩子节点进入队列时,可以保存其孩子节点的层级:当前层级+1。从上图可以看出,在中序遍历中,所有结点都是升序的,即为搜索二叉树。2、弹出队列中的第一个结点,然后打印该结点,并将该节点的左右子节点先后放到队列中(没有左或者右则直接跳过放另外一个结点)。1、将压入结点下的每颗子树整棵树左边界进栈(第一次先从根节点开始),对于下图,进栈的为(1,2,4)宽度优先遍历输出为:1,2,3,4,5,6,7,8,9。
2023-06-09 21:32:28
899
原创 算法与数据结构(三)——排序算法大总结
但我们并不能确定待排元素中究竟哪一部分是有序的,所以我们一开始只能认为第一个元素是有序的,依次将其后面的元素插入到这个有序序列中来,直到整个序列有序为止。在待排序的元素中,假设前n-1个元素已有序,现将第n个元素插入到前面已经排好的序列中,使得前n个元素有序。实际上,我们可以一趟选出两个值,一个最大值一个最小值,然后将其放在序列开头和末尾,这样可以使选择排序的效率快一倍。5.tem插入到该元素的后面,如果已排序所有元素都大于tem,则将tem插入到下标为0的位置。左边大于右边交换一趟排下来最大的在右边。
2023-06-01 22:04:42
510
原创 opencv_c++学习(三十)
model:模型文件名称config:配置文件名称framework:框架种类blob:新的输入数据,数据类型为CV_32F或CV_8U。name:输入网络层的名称。scalefactor:可选的标准化比例(尺寸缩放)。mean:可选的减数数值(平移)。
2023-05-30 10:36:31
928
原创 opencv_c++学习(二十九)
首先给出一个阈值k,后寻找距离黑色圆点最近的k个元素,占据比例大的元素即为黑色所属的类别。如图所示,即k=3时,黑色圆属于三角形,k=5时圆点属于正方形。trainData:训练时使用的数据,数据为Ptr类型。flags:构建模型方法标志,例如UPDATE_MODEL表示对使用新数据对模型进行更新。samplcs:输入数据矩阵,矩阵数据类型必须是cV_32。results:对输入数据预测结果的输出矩阵。flags:模型方法标志,取决于具体模型。
2023-05-29 21:58:17
889
原创 opencv_c++学习(二十八)
如上图所示,根据图像的情况反推相机的运动情况。如实现上述功能则需要拍摄当前物体的图像,然后拍摄一段时间之后物体的图像,然后联合两张图像则可以获取两个时刻的相机位姿关系。objectPoints:前一时刻世界坐标系中的3D点的三维坐标。imagePoints: 3D点在图像中对应的像素点的二维坐标。cameraMatrix:相机的内参矩阵。distCoeffs:相机的畸变系数矩阵。rvec:世界坐标系变换到相机坐标系的旋转向量。tvec:世界坐标系变换到相机坐标系的平移向量。
2023-05-29 16:45:31
1301
原创 opencv_c++学习(二十七)
上图为针孔相机成像原理,蓝色坐标中的O即为镜头光心。成像原理与小孔成像相同。单目相机映射关系如下:将上式进行变换,就可以从三位空间映射到2维平面的公式。
2023-05-28 17:17:11
1876
原创 opencv_c++学习(二十六)
Step1:选择某个像素点作为中心点P,其像素值为I。Step2:设置判定FAST角点(其方法比较两个像素之间的差值)的像素阈值,例如Tp20%∗IpStep3:比较中心点的像素值与半径为3的圆周上所有像素的像素值进行比较,如果存在连续N个像素的像素值大于(IpTp)或者小于(Ip−Tp),则将中心点设置为FAST角点。Step4:遍历图像中每个像素点,重复上述步骤,计算图像中的FAST角点。nfeatures:检测ORB特征点的数目。
2023-05-27 22:22:57
1566
原创 opencv_c++学习(二十五)
1、海瑞斯角点不可能出现在图像平滑的区域(上图1);2、图像边缘的支线出不可能出现海瑞斯角点(上图2);3、海瑞斯角点会出现在顶点处。(上图3);上图中的下半部分红色圆圈内就是海瑞斯角点常出现的地方。如上图第一个式子,海瑞斯角点就是将窗口移动后的数值与移动前的数值之差乘一个权重而获得。src:待检测Harris角点的输入图像,图像必须是CV_8U或者CV_32F的单通道灰度图像。dst:存放Harris评价系数的R矩阵,数据类型为CV_32F的单通道图像,与输入图像具有相同的尺寸。
2023-05-27 16:06:48
1185
原创 opencv_c++学习(二十四)
积分图像是对原图像进行积分操作的算法。如上图左所示,不同颜色代表不同区域。当我们想求取一个像素点的积分值时,我们需要求取该点左上方区域的数据之和,如P0的积分值是浅蓝色区域的数据之和。P1的积分值为蓝色和橙色区域的数值之和。上图展示的是倾斜求和积分方式。src:输入图像,图像数据类型可以是CV_8U、CV_32F或者CV_64F。sum:输出标准求和积分图像,图像的数据类型可以是CV_32S、CV_32F或者CV_64F。
2023-05-26 15:41:26
1173
原创 opencv_c++学习(二十三)
拟合含义如上图,即为通过已知点去拟合一条直线或者一个多边形。points:输入待拟合直线的2D或者3D点集。line:输出描述直线的参数,2D点集描述参数为Vec4f类型,3D点集描述参数为Vec6f类型。distType: M-estimator算法使用的距离类型标志。param:某些类型距离的数值参数©。如果数值为0,则自动选择最佳值。reps:坐标原点与直线之间的距离精度,数值0表示选择自适应参数,一般常选择0.01。
2023-05-26 09:53:28
914
原创 opencv_c++学习(二十二)
图中左侧为边缘检测的效果,中间为图像经过二值化的效果,右图为凸包检测效果。points:输入的2D点集。hull:输出凸包的顶点。clockwise:方向标志,当参数为true时,凸包顺序为顺时针方向,否则为逆时针方向。returnPoints:输出数据的类型标志,当参数为true时第二个参数输出的结果是凸包顶点的坐标,否则第二个参数输出的结果是凸包顶点的索引。
2023-05-25 20:40:36
1535
原创 opencv_c++学习(二十一)
image:输入图像,数据类型为CV_8U的单通道灰度图像或者二值化图像。contours:检测到的轮廓,每个轮廓中存放着像素的坐标。mode:轮廓检测模式标志。method:轮廓逼近方法标志。offset:每个轮廓点移动的可选偏移量。这个函数主要用在从ROI图像中找出的轮廓并基于整个图像分析轮廓的场景中。image:绘制轮廓的目标图像。contours:所有将要绘制的轮廓。contourldx:要绘制的轮廓的参数,如果是负数,则绘制所有的轮廓。color:绘制轮廓的颜色。
2023-05-24 22:28:55
959
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人