自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(86)
  • 收藏
  • 关注

原创 基于FFmpeg进行rtsp推流

在Windows 11上安装FFmpeg并配置环境变量,可实现命令行调用。通过下载MediaMTX(RTSP服务器)并运行,启动本地RTSP服务(默认地址:rtsp://127.0.0.1:8554)。使用FFmpeg将视频文件推流至该地址,如ffmpeg -re -stream_loop -1 -i D:\test.mp4 -c:v libx264 -preset veryfast -tune zero-latency -f rtsp rtsp://127.0.0.1:8554/live。最后用VLC播放

2026-10-12 14:19:56 165

原创 Docker镜像导入、容器启动

将ptxl.tar导入并生成ptxl:latest镜像,通过docker run创建名为ptxl的容器,挂载SophonSDK、设备、数据目录及系统配置,映射多个端口,启用特权模式以访问硬件。使用docker exec进入容器进行操作。

2026-10-08 10:23:23 120

原创 深度学习基础:什么是上采样和下采样?

下采样通过减小特征图尺寸降低计算量、扩大感受野并提取高级语义特征,常用方法包括步长卷积和池化;上采样则用于恢复空间分辨率,常见方式有最近邻插值、双线性插值和转置卷积,后者可学习参数,常用于语义分割等任务。两者在目标检测与图像分割中协同作用,实现从低维到高维的特征重建。

2026-09-18 11:13:37 129

原创 Linux远程服务器网络访问优化:使用SSH反向端口转发共享本地HTTP代理

在日常开发过程中,经常会遇到这样的情况:本地电脑网络环境正常,但远程服务器由于网络出口限制、访问策略或者环境配置原因,无法正常访问部分外部软件仓库,导致 Git、pip、conda 等工具下载依赖失败。如果服务器不方便单独配置网络出口,可以利用 SSH 自带的端口转发功能,将本地已有的 HTTP 代理能力临时提供给远程服务器使用。该方法具有以下特点:- 不需要修改服务器网络配置;- 不需要安装额外软件;- 基于 SSH 加密连接;- 仅当前 SSH 会话有效,关闭连接后自动失效。

2026-09-10 17:19:43 202

原创 解决 Codex 启动时 Reconnecting 1/5~5/5:通过 .env 配置代理让 WebSocket 正常连接

相信不少人在使用 Codex 的时候都遇到过这种情况:然后过一会儿才能正常使用。虽然最终一般能够连接成功,但是每次启动都要先重连 5 次,体验确实比较难受。如果你不想禁用 WebSocket,希望 Codex 继续保持原来的连接方式,那么可以尝试通过 .env 文件显式配置代理地址,让 Codex 的网络连接,包括 WebSocket 握手,也能够正确经过代理。

2026-09-10 11:13:09 508

原创 ONNX 的核心原理

ONNX是一种标准计算图格式,将PyTorch等模型的网络结构和权重转换为统一描述,包含计算图、算子(Conv、Relu等)和参数。它非训练框架,而是中间翻译层,解决不同框架和硬件间转换麻烦。部署时,输入Tensor按图执行算子,读取权重生成中间结果,最终输出。

2026-09-01 11:12:54 221

原创 Python + OpenCV 实战:基于模板匹配识别信用卡卡号

本文介绍了一个基于Python和OpenCV的信用卡卡号识别项目。项目通过模板匹配技术,从信用卡图片中定位并识别卡号区域,最终输出卡号及发卡组织信息。 主要内容包括: 项目效果:能够识别特定字体(OCR-A)的信用卡号,并在原图上标记识别结果 处理流程:分为模板准备和卡号识别两个阶段 关键技术: 使用轮廓检测和排序制作0-9数字模板 通过顶帽运算、梯度计算和形态学处理定位卡号区域 模板匹配实现数字识别 该项目适合计算机视觉初学者,展示了传统图像处理技术(非深度学习)在特定场景下的应用。文中包含详细的处理步骤

2026-08-18 11:10:57 239

原创 Opencv之高斯金字塔

高斯金字塔(Gaussian Pyramid)是图像处理中一种多尺度表示方法。你可以简单理解成:把一张图片不断“高斯模糊 + 缩小”,得到一组从大到小的图片。比如原图是 512×512:第0层 512 × 512 原图↓ 高斯滤波 + 下采样第1层 256 × 256↓第2层 128 × 128↓第3层 64 × 64假设有一张 4×4 灰度图:向下采样不是简单地隔一个取一个,而是两步:原图↓① 高斯滤波:先平滑↓。

2026-08-12 15:38:35 250

原创 YOLO训练指标之Precision-Confidence

本文解读了精确率-置信度曲线(Precision-Confidence曲线)的核心含义与应用。该曲线横轴为置信度阈值(0-1),纵轴为精确率,反映模型在不同置信度下的预测准确度。关键发现包括:各类别表现差异显著(如火车检测始终准确,小动物易误判);当置信度阈值设为1时,精确率达100%但召回率骤降;曲线末端可能出现因样本过少导致的波动。该曲线特别适用于医疗、自动驾驶等"零误报"场景,可通过提高置信度阈值来优先保证准确率,与F1曲线形成互补决策参考。

2026-07-03 15:55:14 242

原创 yolo训练指标之BoxF1_curve

BoxF1_curve.png展示了目标检测模型(如YOLO)的F1-置信度曲线,用于确定最佳置信度阈值。该图横轴为置信度阈值(0-1),纵轴为F1分数(查准率和查全率的调和平均数)。关键信息包括:1)各类别的独立F1曲线(如红色的小动物类别表现较差);2)蓝色粗线表示所有类别的平均F1曲线,在置信度0.56时达到峰值0.92。曲线左侧(低阈值)查全率高但查准率低,右侧(高阈值)则相反。建议:0.56是最佳阈值,若需更高查全率(如安全关键场景),可适当降低至0.3-0.4,仍能保持0.9左右的F1分数。

2026-07-03 15:52:19 223

原创 YOLO26 架构深度讲解

YOLO26技术解析摘要 YOLO26(arXiv:2606.03748)在YOLO11基础上进行四项关键改进: 双头端到端设计:训练时并行使用密集头(NMS依赖)与一对一推理头(NMS-free),通过ProgressiveLoss动态调整两者权重,解决推理头欠训练问题,实现稳定延迟与简化部署。 去除DFL回归头:直接输出4标量边框回归,参数减少12%、FLOPs降低20%,突破DFL的距离上限,更适合高分辨率大物体检测。 训练优化三件套: MuSGD优化器:混合Muon正交化与SGD,加速收敛; STA

2026-07-03 11:15:04 444

原创 什么是 K 折交叉验证(K-Fold Cross Validation)?一文讲懂原理、优缺点及应用场景

K折交叉验证是一种稳健的模型评估方法,通过将数据集均分为K份,轮流用其中1份作为验证集、其余K-1份作为训练集,最终取K次结果的平均值。这种方法能有效降低数据划分随机性带来的偏差,特别适合小规模数据集(如医学影像等),但会显著增加K倍训练时间。对于目标检测任务,建议数据量超过3000张时采用固定划分,小样本场景(<1000张)才考虑K折验证。虽然该方法能提升评估可靠性,但需权衡计算成本,大规模数据集通常无需使用。

2026-07-02 14:39:29 465

原创 YOLO 数据集如何科学划分?Train/Val 划分方法与多标签分层详解

本文总结了目标检测数据集划分的最佳实践方案,重点针对YOLO系列模型训练。推荐采用80%/20%的Train/Validation划分比例,保持原始数据结构不移动。关键要点包括:1)按图片而非类别划分;2)背景图片需按比例分配;3)采用多标签分层划分保持类别分布均衡;4)固定随机种子保证可复现性。对于3000张左右的数据集,建议使用结构化组织方式(images/labels目录+路径文件),避免数据冗余。文中还提供了自动划分工具的详细设计需求,强调通过多标签分层和统计验证来确保数据划分质量。

2026-07-02 14:30:41 370

原创 【保姆级教程】基于 kohya-ss/sd-scripts 的 FLUX LoRA 拓扑训练指南(含 Accelerate 多卡/单卡通用配置)

本文详细介绍了如何在FLUX(Diffusion Transformer)架构下高效进行LoRA微调训练。主要内容包括:1. 环境配置:推荐使用Linux+Conda隔离环境,安装PyTorch及核心依赖;2. Accelerate配置:针对不同显卡环境(单卡/多卡)提供最优分布式策略设置建议,重点解析了NUMA优化和bf16混合精度的重要性;3. 数据集准备:说明多分辨率桶配置方法;4. 训练脚本编写:提供自适应不同显存配置的调参方案;5. 运行验证:指导模型产出和推理测试流程。文章特别强调了针对FLUX

2026-06-22 17:55:10 417

原创 低秩分解的原理

前几个甚至前几十个奇异值往往占据了整个矩阵总能量(F-范数)的 90% 以上,而后面的奇异值几乎趋近于 0(代表噪声或次要细节)。要理解低秩分解(Low-Rank Decomposition)的原理,最完美的起点正是奇异值分解(SVD, Singular Value Decomposition)。低秩分解的本质,就是从 SVD 中获得启发,剔除冗余信息,用极少的计算和存储成本去逼近原始矩阵。也就是说,低秩分解不是盲目的压缩,而是在保留最大信息量的前提下,做出的数学上的最优选择。

2026-06-22 16:05:21 271

原创 ComfyUI-CLIP

CLIP是AI绘画中的关键"翻译官",负责将人类自然语言提示词转换为数学特征向量,供K采样器理解。它生成正/负面条件指导图像生成过程,与K采样器(图像雕刻)和VAE(图像解码)构成Stable Diffusion三大核心组件。CLIP使AI能按文字描述精准作画,成为连接人类意图与AI创作的关键桥梁,赋予系统"理解"能力。

2026-06-12 14:57:50 273

原创 ComfyUI-VAE Encoder

VAEEncoder是AI绘画中处理图像压缩的关键组件,它将高分辨率像素图压缩为低维潜空间表示,大幅降低计算量。在Stable Diffusion等模型中,VAEEncoder会将512x512图像压缩至64x64的潜空间图像(数据量减少64倍),使AI能在计算友好的潜空间中进行去噪和创作。它主要用于图生图场景,而文生图则直接从潜空间噪点开始。与之配套的VAEDecoder负责将最终潜空间作品还原为可视像素图。这种编码-解码机制如同"压缩-创作-解压"的工作流程,使AI绘画在保持质量的同

2026-06-12 14:35:28 198

原创 ComfyUI—K采样器的参数说

ComfyUI的K采样器核心参数解析:种子(Seed)决定图像初始状态,固定种子可复现相同结果;步数(Steps)控制去噪迭代次数(推荐20-40步);CFG值(10.0)调节提示词遵循强度,过高易导致画面失真;采样器(dpmpp_2m)和调度器(normal)影响算法风格与去噪节奏;降噪值(1.0)为文生图标准设置,降低数值可实现图生图效果。这些参数共同控制AI从噪点到成图的生成过程,需平衡质量与效率。(149字)

2026-06-11 16:04:32 889

原创 DNS (Domain Name System,域名系统)

它是互联网的一项核心基础设施,最主要的功能是将人类容易记住的(例如)翻译成计算机网络设备能够理解的(例如你可以把它理解为“互联网的通讯录”。我们人类习惯通过名字来找人,而计算机在网络中路由和建立连接(如建立 TCP 或 UDP 连接)时,依赖的是数字组成的 IP 地址。DNS 就是负责在这两者之间进行自动转换的系统。

2026-06-11 10:02:21 250

原创 ICMP 协议

ICMP 全称是 Internet Control Message Protocol(互联网控制报文协议)。它是计算机网络中非常基础且重要的一个网络层协议,主要与 IP(互联网协议)配合使用。如果把 IP 协议比作负责运送包裹的“快递员”,那么 ICMP 就是一套异常报告与诊断系统。当快递(数据包)在运输过程中遇到问题,比如地址不存在、道路堵塞等时,系统就会通过 ICMP 给你发送一条反馈信息。ICMP 主要负责在网络设备,如路由器、主机,之间传递控制信息和错误报告。

2026-06-11 09:53:59 265

原创 随机访问(Random Access)

随机访问就是可以通过下标在 O(1) 时间直接访问任意元素;数组支持随机访问,链表不支持。

2026-06-09 11:09:42 235

原创 链表与数组

链表是一种由节点组成的数据结构,每个节点通过指针连接到下一个节点,适合频繁插入删除但不适合随机访问。

2026-06-09 11:06:08 234

原创 LeetCode :罗马数字转整数

本文介绍了将罗马数字转换为整数的方法。罗马数字遵循特定规则:一般情况下,数字从大到小排列直接相加(如VI=5+1=6);但有六种特殊情况需要减法处理,即I在V/X前、X在L/C前、C在D/M前时(如IV=5-1=4)。解题时通过比较相邻字符值决定加减:当前字符值小于后一个字符时减去当前值,否则加上当前值。Python实现使用哈希表存储字符对应关系,遍历字符串逐个处理,最后单独加上末尾字符。算法时间复杂度O(n),空间复杂度O(1)。示例展示了"MCMXCIV"如何转换为1994的过程。

2026-06-08 10:04:24 164

原创 LabelImg报错:IndexError: list index out of range 解决方法

LabelImg标注工具闪退问题通常由标签文件中的类别索引越界导致。当标注文件中的类别编号超过classes.txt中定义的类别数量时,程序会抛出"IndexError: list index out of range"错误。常见原因包括:修改类别数量未同步更新标签、合并数据集时编号冲突或导出工具异常。可通过Python脚本快速检测问题文件,方法为遍历标签文件检查类别编号是否超出classes.txt的类别总数。解决方案为修正异常文件中的类别编号,确保其索引值在合理范围内。该问题多发生于

2026-06-05 15:20:34 233

原创 LabelImg KeyError 错误解决方案

这是 LabelImg 的一个已知 bug,原代码在访问字典时缺少存在性检查。添加 shape in self.shapes_to_items条件判断后,可以避免因字典中找不到对应 key 而导致的崩溃问题。

2026-06-05 08:57:49 202

原创 LabelImg 标签字体大小修改教程

本文介绍了如何调整LabelImg图像标注工具中过大的标签字体大小。通过修改labelImg.py文件中的动态计算系数(默认0.02),可缩小高分辨率图片的标注字体。具体步骤包括:1)定位Python环境中的labelImg.py文件;2)修改第1165行附近的计算公式,将系数0.02调整为更小值(如0.01);3)重启软件生效。该方法简单直接,用户可根据实际需求调整系数优化标注体验。

2026-06-04 15:25:33 210

原创 时间复杂度和空间复杂度怎么计算

本文以「两数之和」问题为例,分析算法的时间与空间复杂度。哈希表解法的时间复杂度为O(n),因为进行了n次哈希表操作(O(1));空间复杂度为O(n),存储了n个元素。相比之下,暴力枚举法时间复杂度为O(n²)。这体现了"空间换时间"的优化思想:通过额外空间降低时间复杂度。文章还总结了常见算法的复杂度判断技巧,如单层循环O(n)、双层循环O(n²)、二分查找O(logn)和递归O(n)等。

2026-06-04 15:03:26 217

原创 图片哈希值

图片哈希值是用于表示图片视觉特征的固定长度字符串,对内容编码而非文件本身,具有抗缩放、压缩等特性。常见算法包括:1. aHash(快速,抗缩放,对亮度敏感);2. dHash(常用,亮度鲁棒,去重效果好,基于相邻像素比较);3. pHash(符合人眼感知,抗压缩强,利用DCT变换);4. wHash(精度高,抗模糊/压缩,基于小波变换)。示例显示相似图片哈希值接近,不同图片差异显著,适用于去重和相似性检测。Python库(如imagehash)可快速计算哈希值。

2026-06-02 10:45:24 236

原创 目标检测的分类原则

目标检测分类设计的关键在于合理性和实用性,而非类别数量。核心原则包括:类别必须互斥且视觉差异明显(如避免"鸟vs动物"或地域性细分)、同一类别需覆盖多样场景(如不同天气/距离的鸟类)、避免按尺寸分类。类别数量应根据数据规模调整(小数据集5-10类,大数据集可达100类)。判断标准是人类能否稳定区分(95%准确率)。需注意类别过多会导致数据不平衡、标签噪声和AP下降,尤其在检测任务中会影响分类和定位性能。最终应基于任务需求、视觉差异和数据特性来优化类别设计。

2026-06-01 10:48:12 353

原创 Inner-IoU: More Effective Intersection over Union Loss with Auxiliary Bounding Box

本文提出了一种新型边界框回归损失函数Inner-IoU,通过引入缩放因子ratio生成不同尺度的辅助边界框计算损失,有效解决了现有IoU损失泛化能力弱的问题。理论分析表明,较小辅助框可加速高IoU样本回归,较大辅助框则促进低IoU样本收敛。实验证明,将Inner-IoU集成到现有IoU损失中,在PASCAL VOC和AI-TOD数据集上分别实现了0.5%以上的AP提升,尤其在小目标检测任务中表现突出。该方法无需增加额外损失项,仅通过调整辅助框尺度即可提升检测性能,具有较强泛化能力。代码已开源。

2026-05-18 15:59:58 427

原创 TensorRT C++如何申请、使用、释放显存

TensorRT推理中的显存管理主要涉及三部分:用户手动管理的输入/输出Buffer、TensorRT内部Workspace和CUDA自动管理的Stream/Context。核心操作包括使用cudaMalloc申请显存和cudaFree释放显存,未释放会导致显存泄漏。完整生命周期包含创建engine/context、申请I/O Buffer、数据拷贝、推理执行和显存释放等步骤。优化建议包括Buffer复用和合理使用CUDA Stream,通过减少cudaMalloc/cudaFree调用提升性能。关键注意事

2025-12-21 16:08:57 611

原创 条件变量(Condition Variable)

本文介绍了C++中条件变量(ConditionVariable)在多线程同步中的应用。条件变量配合互斥量使用,可避免线程忙等待,实现高效线程间通信。通过生产者-消费者模型示例,展示了条件变量的核心使用流程:等待线程通过wait()阻塞,通知线程通过notify_one/all()唤醒等待线程。重点解析了wait()的内部机制:自动释放锁、条件检查、重新加锁的过程。文章还详细说明了生产结束时的处理方式,包括设置结束标志和使用notify_all()确保消费者线程安全退出。该机制有效解决了线程同步中的资源浪费问

2025-12-19 14:25:30 886

原创 C++中的互斥量(Mutex)

摘要:互斥量(Mutex)是C++多线程编程中防止数据竞争的核心同步机制,通过"上锁"确保同一时间只有一个线程访问共享资源。文章介绍了三种使用方式:1)基本lock/unlock方法(需注意异常安全);2)推荐使用的RAII风格lock_guard(自动管理锁生命周期);3)更灵活的unique_lock(支持手动控制)。通过计数器示例展示了Mutex的实际应用,并指出死锁风险及解决方案(统一加锁顺序或使用std::lock)。正确使用Mutex可确保多线程程序的数据一致性和稳定性。

2025-12-19 13:34:06 377

原创 C++中引用类型变量 int&

本文介绍了C++中引用的概念和使用。引用(int&)是变量的别名,必须初始化且不可更改指向,与指针不同。引用不占独立内存,修改引用即修改原变量。引用常用于函数参数传递,避免拷贝提高效率,const引用可实现只读访问。相比指针,引用更安全但灵活性较低。合理使用引用能提升代码效率和可读性。

2025-12-18 11:22:08 291

原创 YOLOv8 TensorRT C++ 保姆级教程

本文详细介绍了YOLOv8模型在Windows系统下的部署流程。主要内容包括:1)环境准备(CUDA、TensorRT、Visual Studio、CMake、OpenCV安装配置);2)YOLOv8模型转换(从PyTorch到ONNX再到TensorRT格式);3)使用C++实现模型推理,包括静态图片检测和实时摄像头检测两种方式。文章提供了完整的代码示例和详细的环境配置说明,重点解决了模型转换过程中可能遇到的兼容性问题,并展示了最终的目标检测效果。适合计算机视觉开发者参考实现高性能的YOLOv8部署方案。

2025-12-13 22:14:05 1310

原创 grad_norm(梯度范数)是什么?

摘要:梯度范数(grad_norm)是衡量神经网络训练状态的关键指标,计算所有参数梯度的L2范数。它帮助诊断训练问题:数值过大(>1000)可能预示梯度爆炸或学习率过高;趋近于零则可能是梯度消失或网络冻结;剧烈波动反映优化器不稳定;正常但loss不降则暗示数据或loss设计问题。PyTorch中可通过遍历参数梯度计算总范数。作为loss变化的"晴雨表",梯度范数是排查训练异常的首选诊断工具,能快速定位学习率设置、梯度稳定性等核心问题。

2025-12-07 16:55:47 1582

原创 Diffusion模型相比GAN优势与缺点?

摘要:Diffusion模型和GAN各有优劣。Diffusion训练稳定、生成质量高且多样,支持精细控制(如ControlNet),但推理速度慢、计算成本高。GAN训练难度大且易崩溃,但推理速度快,适合实时应用。当前主流图像生成(如Stable Diffusion)多采用Diffusion,而实时场景(如游戏)仍依赖GAN。选择取决于需求:高质量生成选Diffusion,实时性要求高则选GAN。

2025-12-07 16:43:00 624

原创 多模态模型(CLIP / BLIP / SAM)核心差异与适用范围

CLIP、BLIP和SAM是多模态AI领域的三大核心模型,各司其职又相互补充。CLIP专注于图文语义对齐,通过对比学习实现跨模态检索;BLIP擅长图像理解与文本生成,支持视觉问答和图像描述;SAM则专精像素级分割,实现精细可控的物体分割。三者形成"语义-理解-像素"的层级结构:CLIP建立语义关联,BLIP深化语义理解,SAM处理视觉细节。这种互补性使它们常被联合使用,共同构建更强大的多模态AI系统,覆盖从语义匹配到像素操作的全流程需求。

2025-12-07 16:35:08 373

原创 训练不稳定如何判断是优化器问题?

本文总结了判断训练不稳定是否由优化器引起的方法。首先分析不同优化器特性:Adam类收敛快但易抖动,SGD稳定但收敛慢。其次观察loss曲线形态:剧烈震荡通常源于Adam学习率过大,停滞不动则可能是SGD学习率太小。特别强调学习率和权重衰减配置的关键作用,指出Adam类对学习率敏感,需配合warmup使用。针对Transformer模型,推荐使用AdamW+小学习率+warmup的组合。最终结论指出:loss剧烈波动多因Adam配置不当,loss下降缓慢则常是SGD学习率不足所致。

2025-12-07 16:29:40 341

原创 传统池化层和 卷积 + 步幅区别

传统池化与卷积+步幅在目标检测中均可实现下采样,但原理不同。传统池化无参数、计算简单,但会丢失信息;卷积+步幅可学习下采样特征,计算开销大但更灵活。现代检测网络多采用卷积+步幅替代池化,但在FPN等模块中仍保留池化思想。两者各有优劣:池化侧重平移不变性,卷积+步幅兼具特征提取能力。

2025-09-06 11:19:38 312

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除