
知识积累
文章平均质量分 82
千天夜
一个热爱算法的码农
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
数据结构与算法整理复习(二)栈
数据结构,栈、顺序栈、共享栈、链栈原创 2025-01-22 08:30:00 · 212 阅读 · 0 评论 -
无监督<视觉-语言>模型中的跨模态对齐
跨模态对齐指的是将来自不同模态的数据(如图像和文本)映射到一个共享的表示空间,使得同一实体在不同模态下具有相似的语义表示。例如,当给定一张图片和一段描述这张图片的文字时,我们希望模型能够将图像和文本映射到一个相似的向量空间,使得图像和文本之间的语义关系能够被正确地捕捉。在无监督学习环境下,这一任务面临着很多挑战。我们没有像传统的监督学习那样,有丰富的人工标注数据来指导模型学习,因此,需要模型自己从未标注的数据中发现图像和文本之间的潜在关系。原创 2025-01-20 20:51:15 · 1148 阅读 · 0 评论 -
YOLO系列正传(五)YOLOv4论文精解(上):从CSPNet、SPP、PANet到CSPDarknet-53
至此,我们详细讲解了CSPNet、SPP、PANet的相关重点,以及YOLOv4模型网络CSPDarknet-53的模型结构内容!原创 2024-12-28 21:53:14 · 1878 阅读 · 0 评论 -
多源多点路径规划:基于启发式动态生成树算法的实现
启发式动态生成树算法的核心思想是通过建立一棵动态生成树,其中每个节点代表一个路径选择的状态。在搜索过程中,算法递归地生成子节点,并通过启发式函数评估每个节点的优劣。每当我们到达一个叶子节点时,就计算其启发式值,并将这一值反向传递给父节点。最终,树的根节点会选择具有最小启发式值的子节点作为最佳路径。启发式函数在此过程中的作用至关重要。它通过结合路径的距离、货物状态等多个因素,动态地评估每个节点的优劣,进而引导路径的选择。原创 2024-12-25 20:03:41 · 1361 阅读 · 0 评论 -
数据增强之从对抗训练(AT)到自对抗训练(SAT)
对抗训练和自对抗训练是提升模型鲁棒性的关键技术。在对抗样本生成的质量和效率之间,需要根据实际需求进行权衡。希望本文能帮助初学者理解这两种方法的核心思想与实现过程,并在实践中探索适合的改进策略!原创 2024-12-25 15:05:36 · 1680 阅读 · 0 评论 -
深入理解批量归一化(BN):原理、缺陷与跨小批量归一化(CmBN)
批量归一化(BN)是一种在神经网络的训练过程中对每一层输入进行标准化的技术。具体来说,BN对每一层的输入数据进行均值为0、方差为1的归一化处理,从而消除了数据分布的变化(即内部协变量偏移BN的核心目标是加速网络训练过程,并提高网络的稳定性。简而言之,BN就是将每层的输入数据进行标准化处理,使其具有相同的尺度,这样可以避免某些层的输出值过大或过小,从而加速训练的收敛。跨小批量归一化(CmBN)通过跨多个小批量数据计算全局均值和方差,从而避免了单个小批量的统计量可能存在的误差。原创 2024-12-24 22:17:55 · 1624 阅读 · 0 评论 -
深度学习中的残差网络、加权残差连接(WRC)与跨阶段部分连接(CSP)详解
本文介绍了残差网络(ResNet)加权残差连接(WRC)和跨阶段部分连接(CSP)这三种网络架构,它们通过不同的方式提升了深度网络的训练效率、表达能力和计算效率。ResNet通过残差连接解决了深层网络训练中的梯度消失问题,使得深层网络的训练变得更加稳定。WRC通过引入可学习的加权机制,使得残差连接可以更灵活地调整输入和输出的贡献,从而提高了网络的表达能力。CSP通过跨阶段的部分连接,减少了冗余的信息传递和计算开销,提高了网络的效率。原创 2024-12-24 15:58:20 · 2108 阅读 · 0 评论 -
YOLO模型分布式训练:步骤与操作方式
分布式训练是将模型训练的任务分配到多个计算节点上,通过并行计算加速训练过程。数据并行(Data Parallelism):将数据切分成多个小批次(mini-batches),每个计算节点处理不同的数据,并同步更新模型参数。模型并行(Model Parallelism):将模型分成多个子模型,分配到不同的计算节点上进行计算。对于YOLO模型,分布式训练通常使用数据并行方式。每个GPU节点加载数据集的一部分,计算梯度,并通过一定的同步机制共享梯度,从而更新全局模型参数。原创 2024-12-22 22:36:00 · 1408 阅读 · 0 评论 -
深入理解YOLO系列目标检测头的设定方式
版本检测头结构关键技术优势缺点YOLOv1全连接层(FC)无速度快,设计简单,适合实时检测精度低,定位不准确,小物体检测能力差YOLOv2多卷积层 + passthrough更好的精度,适应不同尺寸物体,改进了小物体检测计算复杂度增加,锚框选择依赖数据YOLOv3多卷积层 + 跨层特征融合多尺度预测,特征金字塔(FPN)多尺度检测,精度更高,尤其是小物体检测计算开销大,推理速度较慢通过YOLOv1到YOLOv3。原创 2024-12-18 20:43:41 · 1216 阅读 · 0 评论 -
深入解读FPN中的横向连接:从细节到优化
尽管整体设计看似简单——上采样、高低层特征相加、卷积处理,但在实际应用中,这些步骤蕴含了许多细节与潜在的优化空间。今天我们以一个更细微的切入点,聚焦横向连接中的核心环节,探讨实现中的小技巧与优化方向。从特征对齐到权重分配,从卷积设计到上采样选择,细节的精雕细琢决定了FPN的性能上限。横向连接中,低层特征通常具有更高的通道数,而高层特征的通道数较低。特征融合后,可能存在高频噪声或边界不连续的问题,使用3×3卷积进一步处理融合特征,可以缓解混叠效应,提高特征的表达能力。使用可学习参数对高低层特征赋予不同权重。原创 2024-12-09 23:49:15 · 1107 阅读 · 0 评论 -
代码架构编写规范:多线程操作与多文件、多包设计
在多线程编程中,代码架构的设计不仅影响系统的性能,还决定了系统的可维护性、扩展性和可调试性。在多线程环境下,设计良好的架构可以有效避免竞态条件、死锁以及其他并发问题,同时提高系统的稳定性和可扩展性。本文将聚焦于如何在多线程操作中编写规范的代码架构,涵盖多文件、多线程、多包的交互设计,并提供线程机制的规范和保活机制的实现。原创 2024-12-05 23:46:20 · 1105 阅读 · 0 评论 -
YOLO系列正传(一)类别损失与MSE损失函数、交叉熵损失函数
随着YOLOv11版本的发布,YOLO算法在视觉检测领域独领风骚,本系列旨在从小白出发,给大家讲解清楚视觉检测算法的前世今生,并讲清楚YOLOv11版本算法的所有模块功能!在YOLOv1中,作者对所有的数值采用的都是均方差损失函数,即MSE。然而在YOLOv3中,作者使用了交叉熵损失函数来表示分类回归损失。原创 2024-12-05 23:41:01 · 2152 阅读 · 0 评论 -
YOLO系列基础合集——小白也看得懂的论文精解
随着YOLOv11版本的发布,YOLO算法在视觉检测领域独领风骚,本系列旨在从小白出发,给大家讲解清楚视觉检测算法的前世今生,并讲清楚YOLOv11版本算法的所有模块功能!在本系列的内容中,我们主要讲解YOLO系列的基础内容。从卷积神经网络基础原理到YOLOv2的论文精解,涵盖了YOLOv1到YOLOv2的所有理论基础,这也是后续YOLO系列的基础内容。敬请期待,YOLO系列的正传!原创 2024-12-04 17:58:27 · 738 阅读 · 0 评论 -
YOLO系列基础(十)YOLOv2论文及原理详解(下)Darknet-19网络结构
batch norm 归一化层anchor boxes 锚框PassThrough直通层multi-scale 多尺度训练高分辨率分类器预训练 Darknet-19网络综上,我们针对YOLO9000进行了全面的学习和回顾!接下来就是YOLOv3了!原创 2024-12-03 11:32:38 · 1601 阅读 · 0 评论 -
YOLO系列基础(五)从神经元共适应性到模型Dropout层
在神经网络中,每个神经元通常被设计为独立的特征检测器。然而,在实际训练过程中,可能会出现两个或多个神经元开始检测相同或高度相似的特征。这种现象被称为共适应性(coadaptation)。共适应性意味着神经网络并没有充分利用其全部的计算资源,而是浪费资源来计算激活冗余的神经元。用人话说就是有神经元是完全没用的东西,因为和其他神经元高度相似。原创 2024-11-12 16:17:10 · 943 阅读 · 0 评论 -
YOLO系列基础(九)YOLOv2论文及原理详解(上)
随着YOLOv11版本的发布,YOLO算法在视觉检测领域独领风骚,本系列旨在从小白出发,给大家讲解清楚视觉检测算法的前世今生,并讲清楚YOLOv11版本算法的所有模块功能!在YOLO(You Only Look Once)系列算法的演进中,YOLOv1作为开山之作,奠定了实时目标检测的基础框架。但是YOLOv1仍然存在诸多缺陷,且同期的其他检测算法也在蒸蒸日上抢夺最强检测算法的宝座,本文从YOLOv1的缺陷出发,详解YOLOv2的原理和改进措施。原创 2024-11-22 08:30:00 · 1317 阅读 · 0 评论 -
YOLO系列基础(八)从检测框坐标值直接预测到锚框偏移量
从YOLOv1直接预测检测框坐标到Fast R-CNN引入锚框,目标检测算法在精度和泛化能力上取得了显著进步。锚框的引入不仅解决了YOLOv1在边界框预测上的局限性,也为后续的目标检测算法(如YOLOv2及以后版本)提供了重要的启示。在YOLOv2及后续版本中,锚框的概念得到了进一步的优化和应用,使得YOLO系列算法在保持实时性的同时,不断提升检测精度和泛化能力。原创 2024-11-20 13:46:04 · 1362 阅读 · 0 评论 -
YOLO系列基础(七)从数据增强到图像线性变换
过拟合(Overfitting)是机器学习中的一个常见问题,指的是模型在训练数据上表现得过于出色,以至于它开始捕捉并学习训练数据中的噪声和随机波动,而不是学习数据的潜在规律或模式。这种情况发生时,模型在训练集上的性能(如准确率、召回率等指标)通常非常高,但在未见过的数据(如测试集或实际应用中的数据)上的性能却显著下降。过拟合的模型往往过于复杂,它们包含了大量的参数和细节,这些参数和细节对于训练数据是有效的,但对于新的、类似的数据则不再有效。原创 2024-11-15 15:04:36 · 991 阅读 · 0 评论 -
激活函数解析:神经网络背后的“驱动力”
在神经网络中,每个神经元都会接收来自前一层神经元的输入信号,这些输入信号经过加权和求和后,需要通过激活函数进行处理。激活函数的作用是决定神经元是否应该被激活,从而影响输出值。简单来说,激活函数决定了一个神经元对其输入信号的反应程度。激活函数是神经网络中不可或缺的组成部分,它们让网络能够学习复杂的非线性关系。不同的激活函数具有不同的特点,适用于不同的任务和数据集。在实际应用中,ReLU 和其变种(如 Leaky ReLU)因其简单高效而成为深度学习中最常用的激活函数。原创 2024-11-13 23:04:23 · 1266 阅读 · 0 评论 -
YOLO系列基础(六)YOLOv1论文原理详解,清晰明了!
经过前面几个栏目的学习与掌握,我们已经具备理解和掌握YOLOv1的基本能力。今天,我们来精讲YOLOv1的原理!网络结构、算法流程、损失函数详解!原创 2024-11-13 16:27:02 · 3366 阅读 · 5 评论 -
YOLO系列基础(四)从归一化层(BN层)到CBS模块
在我们实际讲解BN层操作之前,我们需要对BatchSize进行一个说明,BatchSize就是模型在单次训练的时候同时训练的图片数量,batchsize = 2 意味着单次训练2张图片,就这么简单。BacthSize主要是为了加速模型拟合、减少模型过拟合、缓解loss跳变引入的。并非本文重点,我们下篇再详解此部分。原创 2024-11-12 10:36:45 · 1867 阅读 · 0 评论 -
LangChain学习与开发实战合集
从新手出发,进行大模型应用开发入门。适合新手小白的大模型学习之路!原创 2024-11-11 15:20:00 · 1829 阅读 · 0 评论 -
YOLO系列基础(三)从ResNet残差网络到C3层
每过一层,神经网络就会对数据进行进一步的抽象,神经网络的深度越深,网络就能对数据的更深层特征进行提取和识别。但是有一个关键的现象是,每一次的抽象都不可避免的会损失数据,无论是卷积、池化都一样,这就导致了这个深层特征是存在上限的,进行过多层级的特征提取,提取的特征可能会过于抽象以至于毫无意义。此外,多增加的一个Conv层大大提高了模型的拟合速度,因为不管怎么说,好歹是做了一次特征提取的操作。博主想要表达的是,仅仅是单纯的神经网络层级过长,就足以导致模型效果的急剧下降。可惜的是,似乎并不能如此武断的下定结论。原创 2024-11-11 15:18:22 · 1501 阅读 · 1 评论 -
YOLO系列基础(一)卷积神经网络原理详解与基础层级结构说明
卷积神经网络(CNN)是一类包含卷积计算且具有深度结构的前馈神经网络(Feedforward Neural Networks),是深度学习(deep learning)的代表算法之一,在自然语言处理和图像领域中有广泛的应用。本文将详细讲解卷积神经网络的原理,并重点探讨卷积核及其有效性。原创 2024-11-08 14:22:52 · 2453 阅读 · 0 评论 -
YOLOv8相较于YOLOv5有哪些改进?
综上所述,YOLOv8相比YOLOv5在算法上进行了多项改进,这些改进使得YOLOv8在目标检测任务中表现出更高的性能和准确性。原创 2024-11-07 16:20:20 · 2385 阅读 · 0 评论 -
EasyOCR(二)如何使用本地检测模型craft?手撕官方代码!
最近在进行开发的时候,需要针对craft模型进行模型迁移操作,然而针对模型迁移训练后的模型却无法直接被EasyOCR调用。本文针对上诉问题进行深入探索,并解决。固有此文。若想直接知晓答案的,可以跳转到部分。原创 2024-11-05 10:25:13 · 1266 阅读 · 0 评论 -
多信号多信号范围的遍历策略——N进位器策略
最近在进行开发的时候,遇到一个问题:不同的功能,对应的触发信号不同,不同的信号对应的信号范围也不同。如何在功能测试的时候测试到所有的信号呢?例如:功能A,受信号S1S2控制,S1信号值范围为[0,4]S2值范围为[0,255]功能B,受信号S3控制,S3信号值范围为[0,4]功能C,受信号S1……Sn控制,S1信号值范围为[0,4]……Sn值范围为[0,n]原创 2024-10-24 13:26:02 · 350 阅读 · 0 评论 -
EasyOCR(一)超强超便捷的OCR开源算法介绍与文本检测模型CRAFT微调方法
EasyOCR——超强超便捷的OCR开源算法介绍与文本检测模型CRAFT微调方法原创 2024-10-16 16:43:27 · 2335 阅读 · 1 评论 -
YOLO系列——数据采集策略对模型效果的影响分析
最近在开发实践中,需要用到YOLO强大的图片检测能力,然而总是会遇到一些待检测物体没有成功检测出来的情况。发现并非过拟合现象,本次的情况实际是本次的数据采集没有考虑光圈和光照条件、没有考虑多样化背景干扰。导致模型在不同光照条件下效果差异明显,在不同背景下出现误识别背景的情况。原创 2024-10-15 09:11:11 · 771 阅读 · 0 评论 -
多线程紧密循环带来的子线程阻塞问题----问题积累
最近在开发实践中,遇到一个问题。即:明明采用了多线程编程的方式,但是子线程总是是莫名其妙的阻塞一段时间,由此开始了大约1小时的debug……原创 2024-10-11 14:27:57 · 604 阅读 · 0 评论 -
Qt开发中多线程并发QThread子循环需要刷新主循环如何实现?
针对Qthread中需要刷新主循环UI的场景进行设计原创 2024-09-23 10:44:11 · 1021 阅读 · 4 评论 -
python本地进程通讯----共享内存变量
最近在开发实践中,接触到了需要多进程开发的场景。。对于多进程开发来说,每一个进程都占据一块独立的虚拟内存空间,想要在多进程之间交互难道只能选择管道(PIPE)、套接字(sokect)、远程过程调用(RPC)这种麻烦的东西吗?实际上在本地进行多进程开发的时候,只要本进程处于你的系统之下,你可以在自己的父进程中设定共享内存区域,使得子进程可以访问该共享内存变量。原创 2024-09-18 19:16:01 · 1326 阅读 · 0 评论 -
Python进程间网络远程通讯方式:socket、pipe、RPC详解!
最近在进行开发工作的时候,遇到了一个场景:pc程序需要和安卓设备进行通讯和接口调用。此时就需要进行远程调用方法。然而大学时代有关于远程过程调用的知识都还给了老师……所以在此进行一个复习,并进行实战演练!原创 2024-09-09 14:52:57 · 1420 阅读 · 0 评论 -
cv.VideoCapture()的摄像头ID究竟是如何编码的?为什么有的是从700开始编码??彻底读懂它!
cv.VideoCapture()的摄像头ID究竟是如何编码的?为什么有的是从700开始编码??彻底读懂它!原创 2024-09-03 09:50:19 · 749 阅读 · 0 评论 -
LangChain(九)让大模型稳定返回JSON格式的方法!
最近在验证系统功能的时候,分类大模型总是没法返回正式的JSON格式输出导致信息解析失败。查阅了有关知识,Prompt工程还挺复杂。CRISPE框架Zero-ShotFew-ShotsCOT SCTOTStep-Back等多种方法。但是实际上我尝试后发现效果均不佳。总是有偶尔几次,大模型没有按照要求返回。一次偶然的机会,我发现JSON Schema这种东西,这个是针对JSON格式的数据格式进行的格式化描述。更关键的是几乎所有大模型都针对这个东西进行了专门的训练。原创 2024-08-06 16:31:03 · 5656 阅读 · 4 评论 -
JSON Schema详解!JSON格式
JSON Schema 是一种用于描述和验证 JSON 数据结构的规范。它定义了 JSON 数据中各个元素的类型、格式、约束和关系,确保了数据的一致性和可靠性。在软件开发、API 设计以及数据交换过程中,JSON Schema 发挥着重要作用。本文将详细介绍 JSON Schema 的格式、关键字段以及具体案例。原创 2024-08-06 15:56:55 · 1816 阅读 · 0 评论 -
LangChain(八)构建多Agent的AI系统-实战!
好久没有更新LangChian系列的文章了,最近一直在给我们的项目进行集成工作。代码集成、系统优化、多线程操作等等……交给一个算法工程师真的好吗……不得已恶补了一下这方面的知识,写了很多有关于系统集成、代码规范、多线程编程方面的文章。时至今日终于告一段落……针对项目中实际编写的有关多链路由多Agent的模块,总结后也有了一些心得体悟,遂有此文。本篇对于多链路由、工具调用、大模型构建方式进行了复习,并给出实战代码!最合适的函数,不是官网现成的函数,而是你自己搭建的啊。原创 2024-08-02 16:04:23 · 3230 阅读 · 3 评论 -
python 线程只能start一次,如何解决?
在Python中,如果你尝试对一个已经启动的线程(Thread对象)再次调用.start()方法,会抛出异常,提示“thread already started”。这是因为Python的线程模型不允许一个线程被启动多次。每个线程实例只能执行一次其run()方法,而.start()方法用于启动线程,实际上是调用该线程的run()方法。原创 2024-07-31 11:12:11 · 1179 阅读 · 0 评论 -
Python多线程开发:竞态条件(Race Conditions)、死锁(Deadlocks)、活锁(Livelocks)、线程饥饿(Thread Starvation)、以及线程安全问题
在多线程开发中,会遇到多种问题,主要包括但不限于竞态条件(Race Conditions)、死锁(Deadlocks)、活锁(Livelocks)、线程饥饿(Thread Starvation)、以及线程安全问题等。原创 2024-07-30 13:41:59 · 1249 阅读 · 0 评论 -
Log日志生成太多?自动分开存储吧!python logging
RotatingFileHandler 是 Python 标准库中模块的一个类,用于实现日志文件的滚动和管理。在软件开发中,日志记录是非常重要的部分,它可以帮助开发者追踪代码的执行过程、排查错误和了解系统的运行情况。然而,随着时间的推移,日志文件可能会变得非常庞大,处理起来变得困难,甚至可能占用大量的磁盘空间。RotatingFileHandler 正是为了解决这一问题而设计的,它能够根据文件大小或时间自动创建新的日志文件,并删除旧的日志文件,从而保持日志文件的大小和数量在可控范围内。原创 2024-07-30 11:10:55 · 1115 阅读 · 0 评论