- 博客(92)
- 收藏
- 关注
原创 实践教程|GPU利用率低常见原因分析及优化
本文的 GPU 利用率主要指 GPU 在时间片上的利用率,即通过 nvidia-smi 显示的 GPU-util 这个指标。统计方式为:在采样周期内,GPU 上面有 kernel 执行的时间百分比。
2025-03-28 23:01:11
589
原创 YOLOv8-v12的评估指标转为COCO评估指标详细过程
在学术界与工业界,COCO指标因其标准化和多粒度评价能力(如小目标检测AP_s、中等目标AP_m等)被广泛采纳为通用基准。希望能给各位小伙伴带来帮助。
2025-03-28 23:00:28
963
原创 使用傅里叶变换进行图像边缘检测
如前所述,在经过FFT变换的图像中,在中心处发现低频,而在周围散布了高频,我们可以创建一个掩码数组,该掩码数组的中心是一个圆,其余全部为零。例如,首先通过叠加具有不同频率的两个或更多个正弦函数而生成信号f(x),之后,仅查看f(x)的图像缺无法了解使用哪种或多少原始函数来生成f(x)。从图中可以看出,由于原始函数是由两个不同频率的输入函数组成的,因此经过傅立叶变换后的相应频率图显示了两个不同频率的尖峰。例如下图,该图中有f(x)函数合成时的两个不同频率的原函数和对应的傅里叶变换结果F(x)。
2025-01-19 16:29:46
684
原创 深度学习中的特征到底是什么?
如何想让网络模型生成的图像具有更多的边缘纹理信息,除了损失函数数用sobel作边缘损失以外,最。常见的图像特征,如sobel边缘算子,提取出来的是图像的边缘特征信息,表示的是图像中像素有突。如何设计损失函数,直接作L1L2损失,加个鉴别器(网络)是概率分布相关的损失,加个深度检测。网络是检测目标显著性的损失,加个语义分割+网络是检测语义信息的损失。以上,有图像、边缘、概率分布等信息域,因为损失是没办法完全为0的,只能尽可能的趋近于,因。VGG19的感知损失+是将图像在VGG19的不同层次的特征上趋于一致。
2024-12-24 21:01:58
484
原创 Transformer的细节到底是怎么样的?连环18问!
为什么是512*512?从输入输出角度,N个Transformer Encoder block中的第一个Encoder block的输入为一组向量 X = (Embedding + Positional Embedding),向量维度通常为512*512,其他N个TransformerEncoder block的输入为上一个 Transformer Encoder block的输出,输出向量的维度也为512*512(输入输出大小相同)。在Test阶段,下一个时刻的输入时是前一个时刻的输出,如图9所示。
2024-12-22 15:19:48
937
原创 fatal error:boostdesc_bgm.i:no such file or directory
解压后把所有文件复制粘贴到ubuntu文件夹:opencv/opencv_contrib/modules/xfeatures2d/src。下面,重新编译:sudo make -k。
2024-12-01 23:48:04
247
原创 OpenCV编译make过程踩坑日记
不管你cpu几核,还是老老实实用make命令比较好。当然也可以一开始使用-j,说不定运气好可以一遍过。也可以第一遍用make -j6 -k,这样-k就能够让编译出现问题时不中断,直到程序完全编译完成。第二遍就能减少很多依赖问题,这样重复几遍就能完成全部编译任务。编译时最好不要用make -j,这样容易造成依赖冲突,也就是线程2需要编译好的A文件,而负责编译A文件的线程2还没完成,因此线程2编译失败。总之这种基于玄学的多线程命令还是少用为好。当然Nvidia官方还是建议用单线程更安全一些。
2024-12-01 16:35:34
129
原创 自动帮你完成物体检测标注?这个工具你必须了解一下
首先,我们将仔细查看数据,这可以帮助我们发现问题(例如,对象彼此太近,或照明条件与我们想象的不同)并确定模型约束。除此之外,数据集的简化版本通常用于超参数调整和神经架构搜索,因此这可能是尝试找到最适合我们的问题的模型配置的好时机。如果我们使用此工具生成的全新标签重新训练我们的初始模型,我们将假设监督很弱,因为我们会在标签/注释中发现一些噪音。如果一切正常,我们将看到数据集注释的进度条。也就是说,一旦我们标注了一些图像并训练了一个初始模型,我们就可以使用自动注释工具来加速我们数据集的其余部分的这个过程!
2024-11-30 14:10:01
651
原创 一文让你通俗理解奇异值分解
奇异值分解是一个有着很明显的物理意义的一种方法,它可以将一个比较复杂的矩阵用更小更简单的几个子矩阵的相乘来表示,这些小矩阵描述的是矩阵的重要的特性。假设A是一个N * M的矩阵,那么得到的U是一个N * N的方阵(里面的向量是正交的,U里面的向量称为左奇异向量),Σ是一个N * M的矩阵(除了对角线的元素都是0,对角线上的元素称为奇异值),V’(V的转置)是一个N * N的矩阵,里面的向量也是正交的,V里面的向量称为右奇异向量),从图片来反映几个相乘的矩阵的大小可得下面的图片。如下是一张25*15的图像。
2024-11-27 21:17:19
844
原创 Failed to build insightfaceERROR: ERROR: Failed to build installable wheels for some pyproject.toml
下载与自己版本匹配的whl包。
2024-10-14 17:17:48
557
原创 特征提取:传统算法 vs 深度学习
特征点是图像中梯度变化较为剧烈的像素,比如:角点、边缘等。FAST(Features from Accelerated Segment Test)是一种高速的角点检测算法;而尺度不变特征变换SIFT(Scale-invariant feature transform)仍然可能是最著名的传统局部特征点。也是迄今使用最为广泛的一种特征。特征提取一般包含特征点检测和描述子计算两个过程。
2024-10-13 11:39:21
1654
1
原创 TGRS 2024 面向雾天遥感图像的定向目标检测算法
目前,大量工作集中在航空目标检测上,并取得了良好的结果。尽管这些方法在传统数据集上取得了有希望的结果,但在恶劣天气条件下捕获的低质量图像中定位对象仍然具有挑战性。目前,结合航空目标检测和雾天条件的方法有限,并且很少有基于真实雾天天气的航空图像的公开可用数据集。为此,我们提出了一个数据集HRSI,真实世界中的雾天遥感图像,主要分为三类:机场、大型车辆和船只。HRSI中的所有图像都来自真实的雾天条件。此外,我们提出了一个目标检测模型DFENet,适用于雾天的雾天遥感图像的去雾特征增强模型。
2024-10-13 11:38:46
1187
原创 神经网络训练不收敛或训练失败的原因总结
对数据扩增也能够实现正则化的效果,最好的避免过拟合的方法就是有大量的训练数据。如果只是validate set上不收敛那就说明overfitting了,这时候就要考虑各种anti-overfit的trick了,比如dropout,SGD,增大minibatch的数量,减少fc层的节点数量,momentum,finetune等。在自己训练新网络时,可以从0.1开始尝试,如果loss不下降的意思,那就降低,除以10,用0.01尝试,一般来说0.01会收敛,不行的话就用0.001. 学习率设置过大,很容易震荡。
2024-10-10 20:42:37
734
原创 来了,使用YOLOv11目标检测教程
*更少的参数,更高的准确度:**YOLO11m 在 COCO 数据集上实现了比 YOLOv8m 更高的 mAP,参数减少了 22%,提高了计算效率,同时不牺牲准确度。**注意:**在训练模型时,回顾 Ultralytics 文档中“训练设置”部分的参数是有益的。**增强的特征提取:**YOLO11 使用改进的主干和颈部架构来增强特征提取,以实现更精确的目标检测和复杂任务的性能。**针对效率和速度优化:**精细的架构设计和优化的训练流程在保持准确性和性能之间最佳平衡的同时,提供更快的处理速度。
2024-10-08 13:33:35
2186
1
原创 详解Batch Normalization及其反向传播
这就意味着,在训练过程中,随着某一层分类器的参数的改变,其输出的分布也会改变,这就导致下一层的输入的分布不稳定。正向过程的参数x是一个mini-batch的数据,gamma和beta是BN层的参数,bn_param是一个字典,包括 的取值和用于inference的 和 的移动平均值,最后返回BN层的输出y,会在反向过程中用到的中间变量cache,以及更新后的移动平均。除此之外,一般的神经网络的梯度大小往往会与参数的大小相关(仿射变换),且随着训练的过程,会产生较大的波动,这就导致学习率不宜设置的太大。
2024-10-08 13:33:04
957
原创 什么是目标检测中的旋转敏感度错误?
当角度达到其范围边界时,损失值将会跳跃,如图,将水平矩形分别顺时针和逆时针旋转1度,得到地面真值框和检测框。参考矩形的位置只是略有变化,但它的角度变化很大,高度和蓝色、红色和绿色的矩形分别代表参考框、真实框和预测框。上述三个框用五个参数来描述:参考框(0,0,10,25,-90°)、真实框(0,0,25,10,-1°)和预测框(0,0,10,25,-89°)。网络预测的偏移量为(0 , 0 , 0 , 0 , 1 ° ) ,将参考框转为预测框。
2024-10-08 13:32:23
706
原创 自动驾驶 车道检测实用算法
直方图应该有两个尖峰,各代表一条车道线,左边的尖峰是左边的车道线,右边的尖峰是右边的车道线。为了 正确的识别图像中的车道,首先需要消除图像中的径向偏差。在前面的各步骤中,我们进行了图像的二元阈值化和视角变换,最终获得一个黑白图像,其中白色的像素代表我们试图检测的车道线的部分。最后,利用两个检测到的车道线的位置,并假设摄像头位于图像的中心位置,可以计算出汽车相对于车道的位置。在上图中,最左边的图像显示了原始的失真图像,最右侧的图可以看出图像顶部的角度扭曲,中间的图像是经过摄像头校准后的未失真图像。
2024-10-07 09:54:33
2478
1
原创 工业缺陷检测深度学习方法
工业缺陷检测深度学习方法基于深度学习的工业缺陷检测方法可以降低传统人工质检的成本, 提升检测的准确性与效率, 因而在智能制造中扮演重要角色, 并逐渐成为计算机视觉领域新兴的研究热点之一. 其被广泛地应用 于无人质检、智能巡检、质量控制等各种生产与运维场景中. 本综述旨在对工业缺陷检测的任务定义、 难点、挑战、主流方法、公共数据集及评价指标等进行全面归纳, 以帮助研究人员快速了解该领域. 具 体而言, 本文首先介绍工业缺陷检测的背景与特点. 接着, 按照实际数据标注情况, 划分出缺陷模式已 知、缺陷模式未
2024-10-07 09:54:00
1863
原创 OpenCV:图像直方图计算
图像直方图为图像中像素强度的分布提供了有价值的见解。通过了解直方图,你可以获得有关图像对比度、亮度和整体色调分布的信息。这些知识对于图像增强、图像分割和特征提取等任务非常有用。本文旨在为学习如何使用 OpenCV 执行图像直方图计算提供清晰且全面的指南。通过理解和应用直方图分析技术,你可以提高图像质量、执行阈值操作、分析颜色成分、提取有用的特征以及更有效地可视化和理解图像。
2024-10-07 09:53:29
1783
原创 深入了解卡尔曼滤波:最优状态估计的数学神器
通过结合传感器数据,如激光雷达、摄像头和惯性测量单元(IMU),可以对目标位置、速度和方向进行估计,并实现高精度的导航和运动控制。其中x表示状态向量,z表示观测向量,F、H是状态转移矩阵和观测矩阵,B是控制矩阵,u是控制向量,w和v是系统和观测噪声。这些公式是卡尔曼滤波中关键的计算步骤,通过它们可以将预测的状态估计与实际观测值结合起来,从而更新并优化状态的估计值。在更新步骤中,我们将系统的测量值与预测的状态进行比较,从而校正状态估计值和协方差矩阵。线性动态模型:系统的状态转移和观测模型是线性的。
2024-10-07 09:52:54
543
原创 异常检测从入门到应用
关于上面模型训练部分,一般来说我们有个“验证集”来调节模型的超参数,在“训练集”中,所有的样本都是“正样本“且有各自的标签(如都是辛普森和他们的人物名字),而在”验证集“中就没必要每个样本都有其“人物标签”,只需要判断其“是否属于辛普森家族”就行了(两个标签:属于、不属于)。如下图的Testing阶段,对比原图和重构图,我们可以看到,编码器提取到的应该是“黄色”和“棕色”这两个特征,然而编码器用两个特征构建出来的图片,显然和原图相差甚远,这时候就可以识别为“异常值”。这一部分,就是得到了没有标签的数据。
2024-09-26 17:53:12
908
原创 为什么算法这么难???
为什么算法这么难???广大码农同学们大多都有个共识,认为算法是个硬骨头,很难啃,悲剧的是啃完了还未必有用——除了面试的时候。实际工程中一般都是用现成的模块,一般只需了解算法的目的和时空复杂度即可。不过话说回来,面试的时候面算法,包括面项目中几乎不大可能用到的算法,其实并不能说是毫无道理的。算法往往是对学习和理解能力的一块试金石,难的都能掌握,往往容易的事情不在话下。志于高者得于中。反之则不成立。另一方面,虽说教科书算法大多数都是那些即便用到也是直接拿模块用的,但不幸的是,我们这群搬砖头的有时候还非得做些
2024-09-18 17:00:54
710
原创 几种常见的机器学习分类模型及代码实现
逻辑回归是一种广泛应用于分类问题的线性模型。它的基本思想是,将特征与权重相乘并加上偏置项,得到一个线性函数,然后将其转化为一个概率值,使用sigmoid函数将线性函数映射到[0, 1]区间,表示样本属于某个类别的概率。逻辑回归可以用于二分类问题和多分类问题,常用的优化算法包括梯度下降和牛顿法。
2024-09-17 12:05:01
651
原创 如何使用cmake打包C++项目
请注意,这只是一个基本的示例,对于更复杂的项目,可能需要更多的CMake配置,例如处理依赖关系、添加测试等。这将根据你配置的CPack生成器创建相应的安装包(如。等),其中包含了你的库文件和头文件。创建一个构建目录(例如。
2024-09-13 17:19:28
524
原创 经典CNN卷积神经网络架构全解析:LeNet、AlexNet、GoogleNet、ResNet、DenseNet
是深度学习中的一种神经网络架构,用于从结构化数组中识别模式。然而,多年来,。基本 CNN 架构的许多变体已经开发出来,从而为不断发展的深度学习领域带来了惊人的进步。下面,让我们讨论一下 CNN 架构是如何随着时间的推移而发展和成长的。
2024-09-06 10:57:53
1289
原创 深度学习Dataloader踩坑日记
dataloader的目的是将dataset这个类返回的image和标签的tensor进行打包,具体一个step传入多少个图片和标签是由batchsize决定的,而dataloader负责将返回的图片和标签的tensor进行打包放入trainer进行训练。而dataloader对tensor进行打包的前提就是tensor的大小必须是一样的,如果不一样就会报错。因此在传入图片时必须先对图片进行处理,将图片尺寸调整到指定范围。YOLO一般是对图片进行裁剪或填充,当然也可以对tensor进行操作。
2024-08-26 19:45:25
150
原创 AttributeError: module ‘cog‘ has no attribute ‘Predictor‘ #58属性错误:模块‘cog‘没有属性‘Predictor‘
pip install -e "git+https://github.com/replicate/cog.git@v0.0.20#egg=cog&subdirectory=python/"
2024-08-16 22:23:17
656
原创 解决OSError: [WinError 126] 找不到指定的模块。 Error loading “E:\Environment\Python\Python310\lib\site-packages
在卸载visio studio之后就出现一系列怪事,首先pytorch在import的时候就会报错缺少fbgemm.dll,然后我在网上搜了很多解决方案都没找到方法,最后只找到这一篇文章。2、把文件解压后的libomp140.x86_64.dll文件复制到C://windows/system32文件夹内即可。但这篇文章没有直接给出解决方案,还得自己去下载文件。所以我决定自己整理一下,把所有需要用到的文件都放在一起。1、先下载文件libomp140.dll。文件大小:315.5 K|
2024-08-13 15:57:18
1791
原创 基于OpenCV的图像梯度与边缘检测!
严格的说,梯度计算需要求导数。但是图像梯度的计算,是通过计算像素值的差得到梯度的近似值。图像梯度表示的是图像变化的速度,反映了图像的边缘信息。边缘是像素值快速变化的地方。所以对于图像的边缘部分,其灰度值变化较大,梯度值也较大;对于图像中较平滑的部分,其灰度值变化较小,梯度值也较小。为了检测边缘,我们需要检测图像中的不连续性,可以使用图像梯度来检测不连续性。但是,图像梯度也会受到噪声的影响,因此建议先对图像进行平滑处理。本文目录:1. 图像梯度与几种算子Sobel算子Scharr算子。
2024-08-03 11:35:09
990
1
原创 (20240521)昙花一现的神经网络从_NeRF_到_3DGS_Double7
这篇文章是我在组内学术分享报告内容,原应该辅以我的口头报告,但是会议忘记录屏了,就只能添加少量备注以供参考了。另外我也不是CV和图形学专业的,可能也有一些理解不够充分的地方。
2024-06-20 13:29:38
584
原创 混合精度训练原理总结
而这里备份的权重增加的主要是静态内存。例如GEMM和CNN卷积操作对于FP16操作特别友好的计算,会把输入的数据和权重转换成FP16进行运算,而softmax、batchnorm等标量和向量在FP32操作好的计算,则是继续使用FP32进行运算,另外还提供了动态损失缩放(dynamic loss scaling)。混合精度训练有很多有意思的地方,不仅仅是在深度学习,另外在HPC的迭代计算场景下,从迭代的开始、迭代中期和迭代后期,都可以使用不同的混合精度策略来提升训练性能的同时保证计算的精度。
2024-06-12 16:41:50
1284
原创 从0到1实现神经网络(Python)
这个网络有两个输入,一个有两个神经元( 和 )的隐藏层,以及一个有一个神经元( ) )的输出层。要注意, 的输入就是 和 的输出,这样就组成了一个网络。我们会使用名为随机梯度下降法的优化算法来优化网络的权重和截距项,实现损失的最小化。我们继续用前面图中的网络,假设每个神经元的权重都是 ,截距项也相同 ,激活函数也都是S型函数。简单来说,就是把(−∞, +∞)压缩到(0, 1) ,很大的负数约等于0,很大的正数约等于1。在训练网络之前,我们需要量化当前的网络是『好』还是『坏』,从而可以寻找更好的网络。
2024-06-10 17:03:29
1050
原创 pywinauto,一款Win自动化利器!
键盘操作主要是按下键盘上的按键,相关方法在keyboard模块,最最主要的是send_keys()方法,第一个参数keys就是我们需要按下的按键,其他参数比如说with_spaces、with_tabs、with_newlines、turn_off_numlock、set_foreground、vk_packet,一看就知道作用,而且都是布尔值,此处不进行举例。鼠标点击肯定离不开点击的位置,桌面就是一个坐标,左上角为坐标原点,往右是X轴正向,往下是Y轴正向。Inspect和Spy++需要自己安装一下。
2024-05-13 15:48:27
376
原创 self-attention 的 CUDA 实现及优化 (上)
self-attention 是 Transformer 中最关键、最复杂的部分,也是 Transformer 优化的核心环节。理解 self-attention ,对于深入理解 Transformer 具有关键作用,本篇主要就围绕 self-attention 展开,由于该部分比较复杂,故分为上下两篇,本篇为上篇。self-attention 的原理非常常见,在之前的文章中也分析很多,因此不在此介绍介绍其原理,仅解读代码。
2024-05-07 20:37:52
1353
1
原创 使用 YOLO 进行自定义对象检测
Colaboratory,简称“Colab”,是谷歌研究院的一款产品。Colab 允许任何人通过浏览器编写和执行任意 python 代码,特别适合机器学习、数据分析和教育。GPU 训练比 CPU 训练更快。不要忘记安装 OpenCV 和所需的库。然后运行“yolo_object_detection.py”文件!import cv2boxes = []检测实例最后,你可以看到我们的检测成功了。现在我们的系统可以检测到坦克。
2024-05-04 16:21:08
807
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人