- 博客(52)
- 收藏
- 关注
原创 【目标检测基础】——yolo学习
目录1 概念2 标注3 本质4 目标检测、图像分类、图像分割5 应用场景6 技术架构6.1 two-stage6.2 one-stage7 指标7.1 边界框7.2 交并比7.3 置信度7.4 混淆矩阵7.5 精确度和召回率7.6 mAP7.6.1 PR曲线7.6.2 AP7.6.3 AP计算7.6.4 绘制图形7.6.5 mAP8 NMS后处理技术9 检测速度9.1 前向传播耗时9.2 FPS9.3 FLOPS10 YOLO整体网络结构10.1 Backbone network10.2 Neck netw
2025-08-04 20:18:45
1081
原创 【图像轮廓特征查找】——图像预处理(OpenCV)
图像轮廓特征查找其实就是它的外接轮廓。应用:图像分割、形状分析、物体检测与识别根据轮廓点进行,所以要先找到轮廓。先灰度化、二值化。目标物体白色,非目标物体黑色,选择合适的二值化方式。有了轮廓点就可以找到最上、最下、最左、最右的四个坐标,。就可以绘制出矩形。
2025-07-29 18:49:19
666
原创 【凸包特征检测】——图像预处理(OpenCV)
一般来说,凸包都是伴随着某类点集存在的,也被称为某个点集的凸包。对于一个点集来说,如果该点集存在凸包,那么这个点集里面的所有点要么在凸包上,要么在凸包内。凸包检测等领域。穷举法QuickHull法。
2025-07-29 18:24:22
654
原创 【绘制图像轮廓】——图像预处理(OpenCV)
轮廓是一系列相连的点组成的曲线,代表了物体的基本外形。轮廓是连续的,边缘不一定连续。轮廓是一个闭合的、封闭的形状。轮廓的作用形状分析目标识别图像分割。
2025-07-29 17:12:53
1083
原创 【图像梯度处理】——图像预处理(OpenCV)
当组合为dx=1,dy=0时求x方向的一阶导数,在这里,设置为1意味着我们想要计算图像在水平方向(x轴)的梯度。当组合为 dx=0,dy=1时求y方向的一阶导数(如果同时为1,通常得不到想要的结果,想两个方向都处理的比较好 学习使用后面的算子)事实上,并没有规定,你可以用你自己的。:这是输入图像,通常应该是一个灰度图像(单通道图像),因为 Sobel 算子是基于像素亮度梯度计算的。当前列左右两侧的元素进行差分,由于边缘的值明显小于(或大于)周边像素,所以边缘的差分结果会明显不同,这样就提取出了垂直边缘。
2025-07-29 16:55:13
885
原创 【图像噪点消除】——图像预处理(OpenCV)
通常是由于图像采集设备、传输信道等因素造成的,表现为图像中随机的亮度。常见的噪声类型有高斯噪声和椒盐噪声。也叫卷积核,。分为线性滤波器和非线性滤波器,线性滤波器对领域中的像素进行线性运算,如在核的范围内进行加权求和。常见的线性滤波器有均值滤波、高斯滤波等。非线性滤波器则是利用原始图像与模板之间的一种逻辑关系得到结果,常见的非线性滤波器有中值滤波器、双边滤波器等/注意:椒盐噪声可以理解为斑点,随机出现在图像中的黑点或白点;高斯噪声可以理解为拍摄图片时由于光照等原因造成的噪声。
2025-07-29 16:14:33
1541
原创 【图像掩膜】——图像预处理(OpenCV)
具体来说,就是将两个图像中所有的对应像素值一一进行“与”运算,从而得到新的图像。前一个实验中,我们已经能够识别到图像中的某一种颜色,那么我们就可以对识别到的颜色进行一个操作,比如将其替换成别的颜色,其原理就是在得到原图的掩膜之后,对掩膜中的白色区域所对应的原图中的区域进行一个像素值的修改即可。通过这个掩膜,我们就可以对掩膜中的白色区域所对应的原图中的区域(也就是原图中的红色区域)进行像素值的修改,从而完成颜色替换的功能。通过这个掩膜,我们就可以对掩膜中的白色区域所对应的原图中的区域进行处理与操作。
2025-07-28 20:06:54
1024
原创 【图像二值化处理】——图像预处理(OpenCV)
直方图是一个柱状图,其中 x 轴表示灰度级(从 0 到 255),y 轴表示对应灰度级在图像中出现的次数(频率)。每个柱子的高度代表该灰度级在图像中出现的像素数量。OTSU算法是通过一个值将这张图分前景色和背景色,通过统计学方法(最大类间方差)来验证该值的合理性,当根据该值进行分割时,使用最大类间方差计算得到的值最大时,该值就是二值化算法中所需要的阈值。通常该值是从灰度图中的最小值加1开始进行迭代计算,直到灰度图中的最大像素值减1,然后把得到的最大类间方差值进行比较,来得到二值化的阈值。
2025-07-28 19:15:37
1318
原创 【灰度实验】——图像预处理(OpenCV)
将彩色图转为灰度图地过程称为灰度化。灰度图是单通道图像,。三种合并方法:最大值法,平均值法和加权均值法。
2025-07-28 17:24:07
554
原创 【图像矫正(透视变换)】——图像预处理(OpenCV)
则是一些旋转量和平移量,由于透视变换矩阵的推导涉及三维的转换,所以这里不具体研究该矩阵,只要会使用就行,而OpenCV里也提供了getPerspectiveTransform()函数用来生成该3*3的透视变换矩阵。该函数会返回一个透视变换矩阵,得到透视变化矩阵之后,使用warpPerspective()函数即可进行透视变化计算,并得到新的图像。如上图所示,图1在经过透视变换后得到了图2的结果,带入上面的话就是图像中的车道线(目标物体)的被观察视角从平视视角变成了俯视视角,这就是透视变换的作用。
2025-07-28 16:43:42
457
原创 【边缘填充】——图像预处理(OpenCV)
为什么需要填充边缘呢?我们以下图为例。可以看到,左图在逆时针旋转45度之后原图的四个顶点在右图中已经看不到了,同时,右图的四个顶点区域其实是什么都没有的,因此我们需要。右图就是对空出来的区域进行了像素值为(0,0,0)的填充,也就是黑色像素值的填充。除此之外,后续的一些图像处理方式也会用到边缘填充,这里介绍五个常用的边缘填充方法。
2025-07-28 16:25:17
444
原创 【插值方法】——图像预处理(OpenCV)
首先要了解线性插值,而双线性插值本质上就是在两个方向上做线性插值。还是给出目标点与原图像中点的计算公式比如我们根据上述公式计算出了新图像中的某点所对应的原图像的点P,其周围的点分别为Q12、Q22、Q11、Q21, 要插值的P点不在其周围点的连线上,这时候就需要用到双线性插值了。首先延申P点得到P和Q11、Q21的交点R1与P和Q12、Q22的交点R2,如下图所示:然后根据Q11、Q21得到R1的插值,根据Q12、Q22得到R2的插值,然后根据R1、R2得到P的插值即可,这就是双线性插值。
2025-07-24 10:48:43
873
原创 【图像翻转+图像的仿射变换】——图像预处理(OpenCV)
想象我们手上有一张矩形纸片,如果你固定纸片的一边,并沿着另一边施加一个平行于该边的力,这张纸片就会变形为一个平行四边形。剪切操作可以改变图形的形状,以便其在某个方向上倾斜,它将对象的形状改变为斜边平行四边形,而。二维空间中,图像点坐标为(x,y),仿射变换的目标是将这些点映射到新的位置 (x', y')。输入点的坐标被扩展为齐次坐标形式[x,y,1],以便能够同时处理线性变换和平移。相较于图像旋转中只能等比例的缩放,图像缩放更加灵活,可以在指定方向上进行缩放。是平移部分的系数,控制图像在平面上的移动。
2025-07-23 13:47:20
811
原创 【LeNet网络架构】——深度学习.卷积神经网络
LeNet-5模型是由杨立昆(Yann LeCun)教授于1998年在论文Gradient-Based Learning Applied to Document Recognition中提出的,是一种用于手写体字符识别的非常高效的卷积神经网络,其实现过程如下图所示。原论文的经典的LeNet-5网络结构如下:各个结构作用:卷积层:提取特征图的特征,浅层的卷积提取的是一些纹路、轮廓等浅层的空间特征,对于深层的卷积,可以提取出深层次的空间特征。
2025-07-22 16:12:08
1078
原创 【自定义一个简单的CNN模型】——深度学习.卷积神经网络
使用pytorch自定义一个简单的CNN模型return xprint("模型结构:\n", model)模型结构:SimpleCNN(上面代码虽然没有多大问题,但是看起来还是有点过于繁琐,推荐使用nn.Sequential 进行改进。是 PyTorch 中的一个容器类模块,用于按顺序组织多个神经网络层(nn.Module的子类),它会按照你添加的顺序依次执行这些层。是一个按顺序执行的神经网络模块容器,适合构建线性堆叠结构的模型,可以简化代码并使结构更清晰。# 定义简单的CNN模型。
2025-07-22 15:15:47
1499
原创 【池化层】——深度学习.卷积神经网络
池化(Pooling)是一种用于减少卷积神经网络(CNN)中特征图大小的操作。它通过将特征图上的局部区域进行聚合,得到一个更小的特征图。
2025-07-21 18:59:24
737
原创 【项目实战】——深度学习.全连接神经网络
2.使用全连接网络训练和验证CIFAR10数据集。思考:为什么CIFAR10数据集的准确率很低?1.使用全连接网络训练和验证MNIST数据集。
2025-07-21 16:15:21
185
原创 【模型的保存和加载】——深度学习.全连接神经网路
训练一个模型通常需要大量的数据、时间和计算资源。通过保存训练好的模型,可以满足后续的模型部署、模型更新、迁移学习、训练恢复等各种业务需要求。
2025-07-21 16:11:48
409
原创 【批量标准化】——深度学习.全连接神经网络
批量标准化(Batch Normalization, BN)是一种广泛使用的神经网络正则化技术,核心思想是对每一层的输入进行标准化,然后进行缩放和平移,旨在加速训练、提高模型的稳定性和泛化能力。批量标准化通常在或之后、激活函数之前应用。Batch Normalization(BN)通过对每一批(batch)数据的每个特征通道进行标准化,解决(Internal Covariate Shift)问题,从而:加速网络训练允许使用更大的学习率减少对初始化的依赖提供轻微的正则化效果。
2025-07-21 15:24:20
1089
原创 【过拟合和欠拟合】——深度学习.全连接神经网络
而是需要根据具体的数据集进行统计计算。这些值是 ImageNet 数据集的统计结果,已成为计算机视觉任务的默认标准。
2025-07-21 15:08:51
971
原创 【反向传播算法】——深度学习.全连接神经网络
梯度下降算法通过不断更新参数来最小化损失函数,是反向传播算法中计算权重调整的基础。在实际应用中,根据数据的规模和计算资源的情况,选择合适的梯度下降方式(批量、随机、小批量)及其变种(如动量法、Adam等)可以显著提高模型训练的效率和效果。Adam是目前最为流行的优化算法之一,因其稳定性和高效性,广泛应用于各种深度学习模型的训练中。Adam结合了动量法和RMSProp的优点,能够在不同情况下自适应调整学习率,并提供快速且稳定的收敛表现。# 定义模型和损失函数# 模拟数据# 训练循环xW_1b_1。
2025-07-21 11:20:23
699
原创 【无监督学习之K-means算法】——机器学习
{'k-means++', 'random'}, callable 或传入的数组,默认为'k-means++'。该算法的目标是将数据集中的样本划分为K个簇,使得簇内的样本彼此之间的差异最小化。无监督学习模型算法中,模型只需要使用特征矩阵X即可,不需要真实的标签y,聚类算法是无监督学习中的代表之一。K-means 算法输入的是 k 值和样本数据结合,输出的是 k 个簇的集合。个质心的距离(通常是欧氏距离),将样本点分配到最近的一个质心,生成。对于每个簇,计算所有被分该簇的样本点的平均值作为新的质心。
2025-07-18 17:21:03
654
原创 【逻辑回归】——机器学习
然后使用梯度下降算法,去减少损失函数的值,这样去更新逻辑回归前面对应算法的权重参数,提升原本属于1类别的概率,降低原本是0类别的概率.sigmoid函数的值是在[0,1]区间中的一个概率值,默认为0.5为阈值可以自己设定,大于0.5认为是正例,小于则认为是负例。逻辑回归(Logistic Regression)是机器学习中的一种分类模型,当y=1时,我们希望h\theta(x) 值越大越好。当y=0时,我们希望h\theta(x) 值越小越好。逻辑回归的输入是线性回归的输出。可以托付终身还是不可以。
2025-07-18 17:13:58
428
原创 【线性回归(欠拟合过拟合+岭回归Ridge+拉索回归Lasso)】——机器学习
第一个更好,因为下面的公式是上面的十倍,当w越小公式的容错的能力就越好。我们都知道人工智能中回归是有误差的,为了把误差降低而拟合出来的一个接近真实的公式,比如把一个测试数据[10,20]带入计算得到的值跟真实值会存在一定的误差,但是第二个方程会把误差放大,公式中y = W^Tx,当x有一点错误,这个错误会通过w放大。就像计算机软件在面临攻击、网络过载等情况下能够不死机不崩溃,这就是软件的鲁棒性,鲁棒性调优就是让模型拥有更好的鲁棒 性,也就是让模型的泛化能力和推广能力更加的强大。
2025-07-18 16:02:58
569
原创 【线性回归(梯度下降)】——机器学习
假设你在一个陌生星球的山地上,你想找到一个谷底,那么肯定是想沿着向下的坡行走,如果想尽快的走到谷底,那么肯定是要沿着最陡峭的坡下山。每走一步,都找到这里位置最陡峭的下坡走下一步,这就是梯度下降。在这个比喻中,梯度就像是山上的坡度,告诉我们在当前位置上地势变化最快的方向。为了尽快走向谷底,我们需要沿着最陡峭的坡向下行走,而梯度下降算法正是这样的方法。每走一步,我们都找到当前位置最陡峭的下坡方向,然后朝着该方向迈进一小步。这样,我们就在梯度的指引下逐步向着谷底走去,直到到达谷底(局部或全局最优点)。
2025-07-18 08:50:52
1067
原创 【线性回归(最小二乘法MSE)】——机器学习
虽然这个案例中n=8,但是常常令n=2,因为是一个常数 求最小值时n随便取哪个正数都不会影响W结果,但是求导过程可以约掉前面的系数,会加速后面的计算。被爱:11 学习指数:14 抗压指数:8 运动指数:10 饮食水平:5 金钱:10 权利:8 压力:1。3.进行求导(注意X,y都是已知的,W是未知的)是欧几里得范数的平方,也就是每个元素的平方相加。分别用W各项乘以新的X 就可以得到y健康程度。高斯把公式给了,但是何时loss最小呢?5.矩阵没有除法,使用逆矩阵转化。那么karen的健康程度是多少?
2025-07-17 19:35:44
523
原创 【线性回归(定义+损失函数+多参数回归)】——机器学习
回归的目的是预测数值型的目标值y。最直接的办法是依据输入x写出一个目标值y的计算公式。假如你想预测小姐姐男友汽车的功率,可能会这么计算:写成中文就是:小姐姐男友汽车的功率 = 0.0015 * 小姐姐男友年薪 - 0.99 * 收听公共广播的时间这就是所谓的回归方程(regression equation),其中的0.0015和-0.99称为回归系数(regression weights),求这些回归系数的过程就是回归。
2025-07-17 19:04:15
714
原创 【损失函数】——深度学习.全连接神经网络
当输出层使用softmax多分类时,使用交叉熵损失函数;当输出层使用sigmoid二分类时,使用二分类交叉熵损失函数, 比如在逻辑回归中使用;当功能为线性回归时,使用均方差损失-L2 loss;
2025-07-17 12:07:00
871
原创 【参数初始化】——深度学习.全连接网络
在使用Torch构建网络模型时,每个网络层的参数都有默认的初始化方法,同时还可以通过以上方法来对网络参数进行初始化。ab+ab+n_%7Bin%7D。
2025-07-17 10:47:05
1034
原创 【激活函数】——深度学习.全连接神经网络
激活函数的作用是在隐藏层引入非线性,使得神经网络能够学习和表示复杂的函数关系,使网络具备,增强其表达能力。
2025-07-16 16:56:18
1263
原创 【数据准备】——深度学习.全连接神经网络
torchvision.transforms 和 torchvision.datasets 是 PyTorch 中处理计算机视觉任务的两个核心模块,它们为图像数据的预处理和标准数据集的加载提供了强大支持。在 PyTorch 中官方提供了一些经典的数据集,如 CIFAR-10、MNIST、ImageNet 等,可以直接使用这些数据集进行训练和测试。它定义了数据集必须实现的方法。的一个简单实现,它封装了张量数据,适用于数据已经是张量形式的情况。在训练或者验证的时候,需要用到数据加载器批量的加载样本。
2025-07-15 20:22:17
1026
原创 【神经网络】——深度学习.全连接神经网络
(Deep Learning)是神经网络的一个子领域,主要关注更深层次的神经网络结构,也就是所以,我们需要先搞清楚什么是神经网络!
2025-07-15 15:46:42
938
原创 【自动微分】——深度学习.Torch框架
自动微分模块torch.autograd负责自动,具有自动求导功能。自动微分模块是构成神经网络训练的必要模块,可以实现网络权重参数的更新,使得反向传播算法的实现变得简单而高效。
2025-07-14 20:26:51
911
原创 【Tensor常见操作】——深度学习.torch框架
的顺序存储,即先存列,后存行。例如,对于一个二维张量 A,其形状为 (m, n),其内存布局是先存储第 0 行的所有列元素,然后是第 1 行的所有列元素,依此类推。如果张量的内存布局与形状完全匹配,并且没有被某些操作(如转置、索引等)打乱,那么这个张量就是。
2025-07-14 20:12:00
829
原创 【Tensor数据转换】——深度学习.Torch框架
调用numpy()方法可以把Tensor转换为Numpy,此时内存是共享的。使用传统的torch.tensor()则内存是不共享的~使用copy()方法可以避免内存共享。使用copy()方法可以避免内存共享。
2025-07-14 19:22:43
141
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人