- 博客(1826)
- 资源 (16)
- 收藏
- 关注
原创 【OpenCV 】copyMakeBorder 详解
cv::copyMakeBorder 是 OpenCV 中用于为图像添加边框的函数,广泛应用于图像处理中的边缘扩展、卷积操作前的边界处理以及图像对齐等场景。函数接受输入图像、输出图像、各边边框宽度、边框类型(如BORDER_CONSTANT、BORDER_REFLECT等)及填充颜色等参数。边框类型决定了填充方式,例如常数填充、镜像填充或复制边缘像素。该函数支持多通道图像,输出图像的尺寸会根据边框宽度自动调整。
2025-05-19 08:53:30
204
原创 【OpenCV 】Rect 类详解
cv::Rect 是 OpenCV 中用于表示矩形区域的核心数据结构,广泛应用于图像处理中的区域截取(ROI)、目标检测框和几何运算等场景。其核心成员变量包括矩形的左上角坐标(x, y)、宽度(width)和高度(height)。cv::Rect 提供了多种构造函数,支持通过坐标、尺寸、对角点等方式创建矩形。常用成员函数包括计算面积、判断矩形是否为空、获取角点坐标等。
2025-05-19 08:50:07
288
原创 Soft NMS(非极大值抑制改进算法)详解
SoftNMS是对传统非极大值抑制(NMS)算法的改进,旨在解决密集目标检测中因固定IoU阈值导致的误删问题。传统NMS直接删除重叠框,而SoftNMS通过动态衰减重叠框的置信度,保留更多潜在的正确检测结果,从而提升检测精度。
2025-05-18 17:31:05
110
原创 深度学习中的特征图详解
特征图(FeatureMap)是卷积神经网络(CNN)中的核心组成部分,记录了输入数据在不同层次上的特征提取结果。它通过卷积核的滑动计算生成,每个特征图对应一个卷积核,反映了输入局部区域与该卷积核模式的匹配程度。特征图的生成过程包括卷积操作、激活函数、填充和步长控制,逐步从浅层提取低级特征(如边缘、纹理)到深层组合高级语义(如物体形状)。
2025-05-18 17:22:04
29
原创 【YOLO】标准NMS(Non-Maximum Suppression)详解
非极大值抑制(NMS) 是目标检测中用于消除冗余检测框的后处理算法,其核心目的是在多个重叠的候选框中保留对同一目标的最佳预测结果,同时剔除其他低质量的重复框。
2025-05-18 08:47:33
17
原创 【YOLO】深度学习中的置信度概念详解
在深度学习中,置信度(Confidence) 是模型对自身预测结果确定性程度的量化表达。与传统统计学中的置信区间不同,深度学习置信度直接关联模型输出的概率分布,是模型自我评估的“可信度标尺”。
2025-05-18 08:43:30
22
原创 【算能】BMCV枚举bm_image_data_format_ext详解
bm_image_data_format_ext 是算能(Sophgo)BMCV(BITMAIN Computer Vision Library) 中用于定义图像数据存储格式与数据类型的枚举类型,直接关联 TPU 硬件加速的图像处理逻辑。
2025-05-18 07:20:57
16
原创 【设计模式】工厂模式之模板工厂模式详解
模板工厂模式(Template Factory)是泛型编程与工厂模式的完美结合,利用C++模板特性实现编译期多态和零开销抽象,尤其适合高性能、强类型场景。
2025-05-18 07:20:28
729
原创 【YOLO】NCHW与NHWC格式区别
在深度学习中,NCHW(Batch-Channel-Height-Width)和NHWC(Batch-Height-Width-Channel)是两种主要的数据排布格式,它们对模型的计算效率、内存占用和硬件适配性有显著影响。NCHW格式以通道优先,适合GPU上的并行计算,尤其在卷积运算中表现优异;而NHWC格式以空间优先,更适合CPU的缓存优化,减少内存访问延迟。不同深度学习框架对这两种格式的支持各异,如PyTorch和Caffe默认使用NCHW,TensorFlow则倾向于NHWC。
2025-05-17 11:10:19
95
原创 【Pytorch】API之from_blob函数
torch::from_blob 是 PyTorch C++ API (LibTorch) 中的一个函数,用于从已有的内存块(Blob)直接创建一个张量(Tensor),无需复制数据。这在需要高效处理已有内存数据(例如从其他库或硬件获取的数据)时非常有用。
2025-05-17 10:22:39
237
原创 【OpenCV】cv::Range 类详解
cv::Range 是 OpenCV 中用于表示连续整数序列范围的类,常用于指定矩阵(cv::Mat)的行或列范围,或定义图像处理的操作区域。
2025-05-17 06:01:45
544
原创 【OpenCV】cv::exp函数详解
cv::exp 是 OpenCV 中用于对矩阵中的每个元素进行自然指数运算的函数,适用于图像增强、概率计算和机器学习中的激活函数(如 Softmax)。
2025-05-17 05:59:14
306
原创 【Python】取整函数专题详解
Python提供了多种取整函数,适用于不同的数据处理和计算需求。内置函数round()采用银行家舍入法,适用于一般近似计算;int()直接截断小数,适合快速取整。math模块提供了floor()(向下取整)和ceil()(向上取整),分别用于资源分配和容量规划等场景。numpy模块的取整函数支持数组操作,适合批量数据处理。对于高精度需求,decimal模块的quantize()方法可避免浮点数误差,常用于财务和工程计算。掌握这些函数的行为差异,有助于在数据分析和科学计算中精确控制数值精度。
2025-05-17 05:19:51
782
原创 【C++】std::max_element 详解
通过灵活使用 std::max_element,可高效解决极值查找问题,尤其适用于需要自定义比较逻辑或处理复杂对象的场景。
2025-05-17 05:03:03
379
原创 【算能】BMCV结构体bmcv_convert_to_attr详解
bmcv_convert_to_attr 是算能(Sophgo)BMCV(BITMAIN Computer Vision Library) 中用于配置图像格式转换参数的核心结构体。它定义了如何将输入的 bm_image(TPU 图像对象)转换为目标格式、数据类型和内存布局,是调用 bmcv_image_convert_to 等图像处理接口的关键参数。
2025-05-17 05:02:34
11
原创 【YOLO】目标检测中NMS综述
NMS及其变体的核心目标是在保证检测精度的同时消除冗余框。选择方法需权衡场景特点(如目标密度、遮挡程度)和计算效率。随着目标检测技术的发展,NMS的改进仍是一个活跃的研究领域。
2025-05-16 15:08:57
89
原创 【PyTorch】张量(Tensor)核心操作解析
张量是深度学习框架(如 PyTorch、TensorFlow)的核心数据结构,其操作涵盖数学运算、形状调整、索引切片、广播机制等。
2025-05-16 08:21:03
915
原创 BCEBlurWithLogitsLoss与BCEWithLogitsLoss对比
BCEWithLogitsLoss是PyTorch原生实现的标准二元交叉熵损失,适用于标签完整且准确的常规分类任务。而BCEBlurWithLogitsLoss是YOLOv5中提出的改进版本,针对标签缺失和假阳性样本进行优化,适用于目标检测中的标注噪声问题。
2025-05-16 08:19:58
27
原创 【pytorch】张量(Tensor)的详解
张量是深度学习和科学计算中的核心数据结构,本质上是多维数组的泛化形式,包括标量、向量、矩阵和高维数组。在PyTorch、TensorFlow等框架中,张量支持高效数值计算和自动微分。张量的核心特性包括维度、数据类型、设备和梯度。创建张量可以通过直接定义、特殊初始化或从其他数据转换。
2025-05-15 20:54:56
419
原创 【YOLO】YOLOv12 损失函数解析
YOLOv12 作为 YOLO 系列的最新迭代,通过 动态标签分配、多任务协同优化 和 几何建模增强 等关键技术,进一步提升了目标检测的精度与鲁棒性。其损失函数在继承 YOLO 系列经典设计的基础上,引入了多项创新性改进,
2025-05-15 08:33:56
453
原创 【算能】bmodel 文件功能模块标识
在算能(Sophgo)的 .bmodel 文件(编译后的 TPU 模型文件)中,功能模块标识是模型内部对独立计算单元或子网络结构的命名与分类机制。这些标识通过 bmrt_get_network_names 等接口对外暴露,是模型模块化设计的核心体现。
2025-05-15 05:42:44
110
原创 【YOLO】YOLOv5选择BCE而非CE作为分类损失的解析
YOLOv5采用二元交叉熵损失,是目标检测任务特性(多标签、类别独立、背景主导)与工程实践(效率、稳定性、可扩展性)的最优权衡。这一设计使其在复杂场景中保持高精度与高效率,成为工业级目标检测的首选
2025-05-15 05:42:10
161
原创 【算能】BMCV 库中bm_tensor_t 结构体详解
bm_tensor_t 是算能(Sophgo)BMRuntime 和 BMCV 库中用于表示 多维张量数据 的核心结构体,专为 TPU 硬件加速设计。它封装了张量的形状、数据类型、设备内存指针等关键信息,是模型推理、数据预处理和后处理的核心数据结构。
2025-05-14 20:50:10
24
原创 【算能】BMRuntime C API函数之bmrt_get_network_names详解
bmrt_get_network_names 是算能(Sophgo)BMRuntime C API 中用于获取已加载模型中所有网络名称列表的关键函数。它常用于处理多网络模型(如级联模型或多任务模型),
2025-05-14 05:31:33
144
原创 【C++】std::sort算法的详解
本文详细介绍了C++中std::sort的使用方法、底层实现原理及优化策略。std::sort默认采用升序排序,支持自定义排序规则,如降序排序或Lambda表达式。其底层算法为Introsort,结合了快速排序、堆排序和插入排序,确保时间复杂度为O(NlogN)。
2025-05-14 05:30:43
415
原创 【算能】bmruntime结构体bm_stage_info_t详解
bm_stage_info_t 是算能(Sophgo)BMRuntime C API 中用于描述 模型推理阶段(Stage)配置信息 的核心结构体。它通常与 bm_net_info_t 配合使用,用于管理动态形状适配、多阶段推理流程及显存预分配等场景。
2025-05-13 15:14:51
27
原创 【算能】bmruntime结构体bm_net_info_t详解
bm_net_info_t 是 算能(Sophgo)BMRuntime C API 中用于描述加载的神经网络模型信息的核心结构体。它包含了模型的输入/输出张量的元数据(如形状、数据类型、内存占用等),是模型部署过程中配置输入输出、预分配内存和动态调整模型的关键依据。
2025-05-13 11:17:10
220
原创 【YOLO】单标签多分类、多标签分类及二分类概念区分
在机器学习和深度学习中,分类任务根据样本与标签的关联方式可分为三种主要类型:二分类、单标签多分类和多标签分类。二分类适用于预测样本属于两个互斥类别中的一个,如垃圾邮件检测,使用Sigmoid函数和二元交叉熵损失。单标签多分类用于预测样本属于多个互斥类别中的一个,如图像分类,使用Softmax函数和交叉熵损失。多标签分类则用于预测样本可能属于多个非互斥类别,如医学影像诊断,使用Sigmoid函数和二元交叉熵扩展损失。
2025-05-13 08:08:47
18
原创 【C++】命名空间(Namespace)详解
C++的命名空间(Namespace)是一种用于组织代码和防止命名冲突的重要机制。其核心作用包括避免命名冲突、增强代码模块化以及支持标准库扩展。
2025-05-12 20:50:42
708
原创 二元交叉熵损失详解
二元交叉熵损失(BinaryCross-EntropyLoss)是二分类任务中常用的损失函数,用于衡量模型预测概率分布与真实标签之间的差异。其数学表达式基于真实标签和模型预测概率,通过平均所有样本的损失来计算总损失。
2025-05-12 09:19:24
250
原创 【YOLO】解析train2017.cache
YOLOv5中的train2017.cache文件是训练过程中自动生成的标签缓存文件,主要用于加速数据加载并确保数据一致性。该文件存储了预处理后的标签数据(如边界框坐标、类别ID)、图像原始尺寸及数据统计信息,避免了重复解析原始标签文件。缓存文件采用字典结构的二进制格式保存,包含版本号、哈希值、标签数组、图像尺寸等字段。
2025-05-12 09:03:33
20
原创 【RKNN】RKNN-Toolkit2 Python API之hybrid_quantization_step1 函数详解
hybrid_quantization_step1 是 RKNN-Toolkit2 中用于 混合量化(混合精度量化)的第一步,通过分析模型各层的量化敏感度,生成建议的量化策略文件(CSV 格式)。开发者可基于此文件手动调整关键层的量化精度(如将敏感层设为 FP16),以在精度和性能之间取得平衡。
2025-05-11 13:39:16
19
原创 标签平滑(Label Smoothing)技术详解
标签平滑是一种正则化技术,通过软化目标标签的表示形式,减少模型对训练数据的过度自信,从而提升泛化能力并缓解过拟合。其核心原理是将传统的one-hot标签替换为“软标签”,即正确类别的概率调整为1-α,其他类别的概率均匀分配为α/(K-1)。这种方法能够提升模型的泛化性能、缓解过拟合,并改善模型校准,适用于多分类任务、易混淆类别任务及噪声标签数据集。实现上,标签平滑通过调整交叉熵损失函数中的标签分布来实现,平滑系数α通常取0.1,但需根据任务特性进行调整。尽管标签平滑在提升模型鲁棒性方面效果显著,但其超参数敏
2025-05-11 05:53:36
31
原创 Circular Smooth Label(CSL)损失函数解析
CircularSmoothLabel(CSL)损失函数是旋转目标检测中的关键技术,通过将角度预测转化为分类任务并引入平滑标签策略,有效解决了角度周期性的边界问题。CSL的核心原理包括角度离散化、平滑标签生成和损失函数结构,其中损失函数由目标分类损失、角度分类损失和回归损失三部分构成。窗口函数的选择(如高斯函数、矩形函数、三角函数)及其半径的调整对模型性能有显著影响。CSL在实际应用中表现出色,尤其在遥感检测和自动驾驶等高精度场景中,通过联合训练框架和轻量化策略,进一步提升了检测精度和效率。实验表明,CSL
2025-05-11 05:53:11
34
原创 【RKNN】RKNN-Toolkit2 Python API之get_sdk_version函数详解
rknn.get_sdk_version() 是 RKNN-Toolkit2 中用于 获取当前 NPU 工具链及硬件驱动的版本信息 的关键接口,帮助开发者验证开发环境与硬件驱动的兼容性。
2025-05-10 18:39:06
29
原创 【YOLO】标签缓存机制详解
通过标签缓存机制,YOLOv5 在保证数据一致性的前提下,显著提升了数据加载效率,尤其适用于大规模或高频次训练场景。用户需理解其原理,合理管理缓存文件以发挥最大效用。
2025-05-10 15:35:04
137
原创 IOU(Intersection over Union)发展综述
IOU的演进史是目标检测领域追求更高精度、更强鲁棒性的缩影。从几何约束到概率建模,从静态计算到动态适应,其发展始终围绕“如何更全面地描述目标匹配”这一核心问题展开。未来,随着多模态学习、自适应优化等技术的融合,IOU衍生方法将继续推动检测模型在复杂场景中的性能边界。
2025-05-10 10:28:28
241
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人