自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 cv::Mat::reshape 与手动构造 cv::Mat + 转置的差异

【摘要】在处理YOLO系列模型输出时,reshape操作与转置操作存在本质区别。模型输出通常为[116,8400]格式(116个属性×8400个候选框),但后处理需要按框组织数据。reshape仅改变内存解释方式,会导致属性错位(如将连续x坐标误解析为多属性组合);而转置.t()则真正重排数据,使每行对应一个候选框的全部属性。实验表明,错误使用reshape会导致检测结果混乱,正确做法是:先构造[116,8400]矩阵再转置为[8400,116],确保数据按框组织。关键点在于理解模型按属性存储数据的特性与后

2025-09-04 18:25:15 241

原创 U-Net图像语义分割中梯度下降的直观解释

本文介绍了图像语义分割的基本原理与方法。语义分割通过对图像每个像素进行分类,输出与输入同尺寸的mask。以U-Net为例,其编码器-解码器结构和跳跃连接能有效融合低层细节与高层语义特征。使用二分类交叉熵损失函数衡量预测与真实标签的差异,通过计算梯度指导模型参数更新:预测错误时梯度较大,促使参数快速调整;预测正确时梯度较小,保持稳定。通过梯度下降迭代优化,模型最终能准确完成像素级分类任务。

2025-08-26 11:04:00 529

原创 基于 ONNX Runtime 的 YOLOv8 高性能 C++ 推理实现

本文介绍了一个基于ONNXRuntime和OpenCV的YOLOv8 C++推理模块,支持Windows/Linux平台,具有轻量高效、可扩展性强等特点。项目核心文件inference.cpp实现了完整的推理流程,包括模型加载、图像预处理、推理执行和后处理。系统支持CPU和CUDA加速,提供检测和分类两种任务模式,通过模板化设计实现了FP32/FP16的灵活切换。预处理采用Letterbox缩放策略,后处理包含NMS非极大值抑制。项目还提供了完善的错误处理和性能分析功能,通过WarmUp机制避免首次推理延迟

2025-08-18 19:34:46 1157

原创 YOLOv8 级联检测:在人脸 ROI 内检测眼镜(零改源码方案)

摘要:本文提出一种基于YOLOv8的两级目标检测方法,通过先检测人脸区域再在ROI内进行眼镜检测,有效提升了小目标检测精度。方法利用官方Python API实现串联推理,无需修改源码,兼容性强。流程包括人脸检测、ROI裁剪、眼镜检测和坐标回填,支持多种输入源。实验表明该方法能准确识别人脸和眼镜,代码运行稳定。关键参数可调,适用于不同场景需求。

2025-08-13 15:57:47 334

原创 Visual Studio中VC++目录、C/C++和链接器配置的区别与最佳实践

本文对比了Visual Studio中两种配置第三方库(如OpenCV)的方法:1)在VC++目录中设置包含/库目录,并在链接器中添加依赖项;2)在C/C++中添加包含目录,在链接器中添加库目录和依赖项。虽然两种方式都能成功运行,但方案二更优:它将头文件路径、库路径和库清单明确区分,作用范围限定在当前项目,配置直观且易于团队协作。建议优先使用方案二,在C/C++和链接器页面进行配置,避免使用VC++目录的默认路径宏方式,以提高项目可维护性和迁移性。

2025-08-12 19:18:41 1195

原创 YOLOv8 结构化剪枝:Torch-Pruning + C2f_v2 + Ultralytics 微调全流程

本篇博客基于与,记录了一次完整的流程。由于(好像是8.1),所以记录了踩的各种坑,自己搭建了一个YOLO系列通用的剪枝模型,用于学习记录。

2025-07-31 20:15:17 1206

原创 yolov8通道级剪枝讲解(超详细思考版)

为了提升推理速度并降低部署成本,模型剪枝已成为关键技术。本文将结合实践操作,讲解YOLOv8模型剪枝的方法原理、实施步骤及注意事项。虽然YOLOv8n版本本身参数量少、推理速度快,能满足大多数工业检测需求,但谷歌研究表明:通过对大模型进行裁剪得到的小模型往往性能更优。本文基于其他博客的剪枝方法的代码实现,专门针对YOLOv8模型进行剪枝优化,能够理解模型剪枝的底层操作。其核心创新点在于利用BN层(Batch Normalization)的特性,实现高效的通道级剪枝操作。

2025-07-25 19:11:23 1185

原创 YOLOv8 剪枝模型加载踩坑记:解决 YAML 覆盖剪枝结构的问题

模型剪枝是实现模型轻量化、加速推理的关键步骤。然而,在 Ultralytics YOLOv8 的生态中,在成功剪枝后,进行微调(Fine-tuning)时会遇到一个令人困惑的现象:明明加载的是剪枝后的模型(例如 20M 参数),但训练启动时打印的日志却显示为标准版模型的参数(例如 25M)。并且经过验证,微调后的模型参数就是标准的yolo模型。加载代码如下:原因是Ultralytics 的 仍会先依据 原始 YAML 构建标准结构(约 25M 参数)。随后仅将 文件中的权重加载到这张标准结构中。问

2025-07-24 19:16:34 1117

原创 在离线环境中安装 Python 包及其相关依赖

安装 Python 包及其依赖。这种情况常发生在企业内部、实验室、保护性环境或特定硬件平台上。在机器学习、数据科学以及其他 Python 项目中,较为常见的需求是在。为了方便直接复制相关命令,写篇博客作为记录。虽然直接复制虚拟环境中的库文件看似简便。方法,以确保包的完整性和兼容性。不访问在线包索引,避免网络请求。因此,在离线环境中,推荐使用。指定当前目录查找已经下载的包。没有网络连接的环境中。

2025-07-23 16:53:13 664

原创 YOLOv8中YAML自定义结构加载预训练权重深度解析

于是看了一下源码来记录一下。

2025-07-17 13:35:05 1156

原创 NMS代码详解(数据维度变换解析)

本文详解了目标检测中非极大值抑制(NMS)的代码实现,包括置信度筛选、类别处理、IOU计算等关键步骤。NMS通过置信度阈值筛选候选框,按类别分组后,保留每个类别中置信度最高的框,并删除与其IOU超过阈值的重叠框。代码解析了输入特征图格式、维度变换过程,以及核心的迭代抑制逻辑,最终输出保留框的坐标和类别信息。该算法能有效消除重复检测,提升检测精度。

2025-07-16 14:12:27 978

原创 YOLOv8 预测结果添加面积过滤以及检测框坐标如何是从针对缩放转换为针对原图大小

本文详细解析了目标检测预测器类DetectionPredictor的核心功能,重点探讨了postprocess方法的工作流程。该方法首先对模型原始输出进行非最大抑制处理,随后通过scale_boxes将预测坐标从缩放图像转换至原始图像尺寸。文章特别提出了在结果处理阶段添加面积过滤的优化方案,通过创建布尔掩码并计算边界框面积,有效剔除了小于设定阈值(如60000像素)的小目标检测。值得注意的是,研究发现仅需过滤boxes.data属性即可同步更新其他相关属性(如cls、conf等),这一特性简化了实现过程。

2025-07-15 16:35:19 459

原创 YOLO标准分割数据集转labelme进行可视化

LabelMe是进行图像分割的标注软件,但不支持YOLO格式的分割数据集。,会将新的json标签存在labelme_annotations目录下。在我们的YOLO标准数据集中,目录结构如下所示(本文将探讨如何将YOLO标准分割数据集转换为。: 该文件夹包含所有待处理的图像文件,图片的。,方便在训练和可视化时进行类别的识别和标注。只要给出images所在的目录就可以。格式,以便进行可视化和进一步分析。图片目录、标签目录和一个类别文件。: 此文件夹存储与图像对应的标签。得到如下json标签。

2025-07-09 09:03:42 344

原创 YOLOv8直接利用分割数据集进行检测的运行原理(结合项目结构进行代码讲解YOLOv8数据加载和处理的流程)

常规而在任务中,标签则是多边形顶点(直觉告诉我们:若想用分割数据集跑检测任务,应该先将多边形“降级”成 bbox。.txt,而且效果毫无偏差。YOLOv8 为什么分割标签能被当成检测标签无缝使用?网上几乎搜索不到资料,于是开启了自己的debug之旅,作为记录,也希望大家能少走弯路。

2025-07-08 10:51:45 775

原创 Anaconda换源与hosts文件配置指南

Anaconda作为一个流行的Python发行版,提供了强大的包管理和环境管理功能。然而,由于网络环境的限制,直接使用Anaconda的默认源可能会遇到下载速度慢或不稳定的问题。此外,在某些情况下,我们可能需要,避免访问conda官方平台造成某些麻烦(懂得都懂)。本文将详细介绍如何通过更换源和配置hosts文件来优化Anaconda环境。

2025-07-04 09:01:42 816

原创 离线迁移 Conda 环境到 Windows 服务器:用 conda-pack 摆脱硬路径限制

在进行深度学习算法的环境部署时,由于生产服务器被彻底隔离外网,只能把conda中env文件夹中的虚拟环境文件夹从开发机直接拷到Windows 服务器,但在运行labelimg等工具时可能报错,因此用conda-pack来解决。

2025-07-03 20:05:22 791

原创 YOLOv8 模块添加与修改讲解:从源码修改到配置文件配置

YOLOv8 的模块(如。

2025-06-12 18:55:39 967 2

原创 YOLOv8损失函数代码详解(示例展示数据变换过程)

如果传入形如 (B, N, 1, 4) × (B, 1, M, 4) 的高维张量,上面所有逐元素运算依靠 PyTorch 广播机制 依旧能得到 (B, N, M) 的 IoU 矩阵。YOLOv8的损失函数计算代码位于'ultralytics/utils/loss.py'文件中(如下所示),我在代码中的注释提供了详细解析。本文将展示YOLOv8中损失函数计算的完整代码解析,注释中提供了详尽的解释,并结合示例演示了数据维度的转换,以帮助更好地理解。__init__和preprocess的代码如下。

2025-05-24 22:22:30 779

原创 YOLOv8检测头代码详解(示例展示数据变换过程)

由于在不同阶段,检测头的输出有所不同,因此在讲解损失函数的计算之前,我们需要先理解检测头的输出内容以及相关参数的定义。例如输入图像640x640生成80x80特征图(stride=8时,特征图每个单元格对应输入图像8x8区域, 锚点坐标为(i+0.5, j+0.5),最终输出形状为(N,2)的锚点坐标和(N,1)的步长张量, N为所有特征图层网格点总数(如80x80+40x40+20x20=8400)。,这也是我们所说的大目标检测头和小目标检测头的区别(即20x20和80x80的区别)。

2025-05-23 18:48:29 1384

原创 YOLO中的DFL损失函数的理论讲解与代码分析

如图所示:由于遮挡、阴影、模糊等原因,许多目标的边界并不清晰,因此真实标签(白色框)有时并不可靠,仅用狄拉克δ分布难以表示这些情况(狄拉克δ分布是一种理想的、只在单一点概率为1,其他地方概率为0的数学分布,表示完全确定的情况)。相反,提出的边界框泛化分布学习方法能够通过分布形状体现边界信息,其中较为平坦的分布表示边界不清晰或模糊的情况(见红色圆圈标记),而尖锐的分布表示边界明确的情况。,由中间的anchor负责预测,那么预测框边界到中心点的距离最大为10,所以16足够了。的特征图,16表示离散区间数(

2025-05-02 15:58:49 2961 2

原创 YOLOV8加载预处理数据并前向传播代码模块逐行调试

模型训练类的初始化结束也没有找到相关步骤,那么就可能不在初始化过程中进行数据预处理,回到一开始点进去的model.train(data="ultralytics/cfg/datasets/coco.yaml", epochs=2),发现在self.trainer初始化结束后调用了self.trainer.train()。框起来的方法是处理数据集的,但是都得主动调用,然而目前只实现了模型训练的构造,并没有主动调用什么方法。在_do_train中调用了_setup_train,点击进去。

2025-05-01 11:05:13 707 2

原创 YOLOV8模型配置文件加载解析代码逐行详解

本文详细解析了YOLOv8模型的配置文件加载与训练过程,重点介绍了DetectionModel和DetectionTrainer的角色及其调用关系。首先,通过YOLO类加载模型配置,创建DetectionModel实例。接着,使用DetectionTrainer进行模型训练,管理数据加载和损失计算,并在训练过程中调用验证逻辑。

2025-04-26 22:54:13 1069

原创 在 Windows 上使用 Anaconda 创建 配置 YOLOv8虚拟环境,并更改 pip 源以及以 可编辑模式 安装ultralytics

前往 NVIDIA cuDNN 下载页面,下载与您安装的 CUDA 版本匹配的 cuDNN 版本。:根据您的系统和 CUDA 版本,选择适当的 whl 文件。如下12.7,表示最高可装12.7版本CUDA,与上图中的支持的最高cuda版本一致。,无需重新安装,从而大幅提升开发效率,适用于项目开发、调试或依赖本地未发布的版本时使用,但需确保当前目录包含。:访问 NVIDIA 官方网站,下载与您的显卡和操作系统兼容的 CUDA 版本。首先,确保NVIDIA 显卡支持 CUDA,并安装相应版本的驱动程序。

2025-04-16 17:10:03 1455

原创 免费 课堂行为/人体姿态 数据集汇总,带标签

有些数量没统计是因为百度网盘下载太慢了,就没写上去。Multi_all 计算机视觉项目。自己在学习过程中搜集的免费可使用的。免费,包含举手、阅读、写作三类。S.B.C 计算机视觉项目。数据集,亲测都可以使用。智慧课堂学生行为数据集。标签和边框存在一些错误。类监控计算机视觉项目。

2025-01-19 11:15:26 703

原创 YOLOv8正样本匹配和损失函数(全网最详细讲解)

作为标签,是因为bbox与gtbox并非完全重合,让bbox的类别得分直接逼近1不合适,因为预测的那区域并不完全是gtbox所属类别,所以使用norm_align_metric。当目标边界在图像中不清晰(如遮挡、低对比度等),DFL 能通过学习分布,避免模型陷入局部最优,从而更好地对边界进行合理预测。在学习过程中记录整理下对yolov8的样本匹配和损失的理解,便于记忆。Step 2 中往往会粗筛出上百个正样本,太多了,所以需要细筛。计算出的shi的某一个偏移量,比如t,是计算加权和。

2025-01-14 17:40:28 454

原创 小目标检测难点分析和解决策略

迁移学习适用于数据稀缺、标注成本高的任务,可广泛应用于小目标检测及其他机器学习任务(如情感分类、缺陷检测等)。

2025-01-11 22:18:08 3906 1

原创 头部姿态估计与作弊检测代码

本代码采用Python开发,可调用摄像头或读取本地视频,精准检测人脸关键点,计算头部俯仰角、偏航角和滚转角,依据头部转动角度变化判断转头作弊,适用于在线考试监考、远程面试等场景。代码经过精心优化,附有详细中文注释,初学者也能迅速掌握功能与原理,轻松二次开发或项目拓展。代码配套解释文档,包括依赖安装和代码分析。已在多台电脑上成功运行,稳定性有保障!

2025-01-06 17:09:18 538

原创 基于transformer的目标检测:DETR

在深度学习和计算机视觉领域,目标检测一直是一个核心问题。传统方法依赖于复杂的流程和手工设计的组件,如非极大值抑制(nms)和锚点(anchor)生成,这些都需要对任务有深入的先验知识。然而,DETR的出现,为我们提供了一种全新的视角,将目标检测视为一个直接的集合预测问题,实现了端到端的检测。DETR,即DEtection TRansformer,是一种创新的框架,它通过简化检测流程,消除了对许多手工设计组件的需求。

2025-01-02 21:51:26 1661 2

原创 解决 Docker 中 DataLoader 多进程错误:共享内存不足

在容器化环境(如)中使用深度学习框架进行训练时,通常会使用的DataLoader来加载数据。在使用DataLoader的多进程数据加载时,当这时,我们的训练任务无法正常进行,系统也没有给出详细的错误信息,导致我们难以快速定位问题。

2024-12-24 11:21:02 1149

原创 网络断开导致SSH会话和服务端任务终止的原因及使用screen详解

在进行深度学习任务时,常常在本地通过ssh连接远程服务器进行炼丹任务。当我在pycharm上远程连接到服务器上进行训练时,由于网络不稳定使得SSH断开连接,我原以为服务器不会受影响。通过nvidia-smi命令发现GPU占用为0,这才发现任务终止了。于是查阅了一些资料,整理至此。

2024-10-14 16:16:18 1748

原创 pycharm连接远程linux服务器上的docker进行深度学习训练

实进行深度学习时,由于GPU都在服务器上,编辑代码很麻烦。并且服务器上配置了docker的环境,所以用pycharm连接远程服务器的docker进行深度学习,这样在本地调用远程服务器的GPU和环境,更方便一点,将这个过程记录下来,希望对大家有所帮助。

2024-09-18 17:59:30 2066 1

原创 将.xml格式转换为YOLO所需的.txt文件格式

这段Python代码的主要功能是从XML格式的标注文件中提取边界框数据,并将其转换为YOLOv5模型所需的.txt文件格式。对代码加了详细解释。

2024-09-02 16:16:11 2284

原创 P(查准率) R(查全率) AP mAP最通俗准确的讲解

学习YOLO的过程中遇到了mAP指标,在网上看了很多关于mAP的讲解,不是很理解其计算过程,于是总结了各个帖子及自己的理解,给出mAP计算的规律,这样就能作为笔记很好的记忆。

2024-08-22 21:16:58 2282

原创 结构体为什么可以包含指向其自身类型的指针

不完全类型允许在类型定义过程中引用自身类型的指针。

2024-08-08 15:22:31 534

原创 torch.nn.Linear的维度变换过程详解(有图有公式有代码)

当初在学习nn.Linear时了解到的博客都是关于一维变换的,比如输入3通道,输出6通道;又比如得到(3,4,4)的特征图,需要进行拉平为(48,)的向量,然后通过nn.Linear(48,10)得到10个输出(分类任务很常见)。nn.Linear除了可以进行分类,主要的作用就是改变维度便于下一个卷积层或线形层的输入。但是在实际代码中,nn.Linear的输入往往都是多维数据,一样可以正常输出。所以经过查阅手册和各个帖子,给出了自己的理解,作为笔记。

2024-08-05 15:23:39 4832 6

原创 Pytorch中reshape,view,transpose以及permute的详细原理及应用

在深度学习中,我们经常会遇到需要对张量进行形状变换的情况。PyTorch 提供了多种方法来改变张量的形状,包括 reshape, view, transpose和permute 。本文总结了其它博客的精华,详细介绍这些方法的原理和应用场景。

2024-07-28 17:06:02 1002 1

原创 Ubuntu上安装anaconda创建虚拟环境(各种踩坑版)

踩坑包括:1.anaconda下载失败 2.anaconda安装权限 3.换conda和pip的源

2024-07-24 19:07:28 5222

原创 GPU驱动、CUDA 、cuDNN 和CUDA Toolkit之间的关系(深度学习小白必懂)

GPU驱动、CUDA、cuDNN和CUDA Toolkit之间有着紧密的关系,它们共同构成了一个完整的GPU编程和深度学习开发环境。在最初配置anaconda环境时一直搞不明白它们之间的关系。所以根据自己的理解,通俗详细解释它们各自的角色和相互间的关系,并且列举了一些在anaconda虚拟环境中的例子。不对的地方希望大家指正。

2024-07-23 10:08:05 5057 4

原创 ViT(Vision Transformer)网络结构详解

本文在transformer的基础上对ViT进行讲解,transformer相关部分可以看我另一篇博客(

2024-07-22 16:34:27 9800 4

原创 YOLOv2小白精讲

所以不用调整网络结构就可以输入不同分辨率的图像而得到相同的输出维度。

2024-07-21 23:56:47 1792 1

空空如也

空空如也

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

TA关注的人

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