- 博客(76)
- 收藏
- 关注
原创 在图像识别中的“long-rang”理解
在传统的图像识别模型中,如卷积神经网络 (Convolutional Neural Network, CNN),由于它们的局部连接和池化操作,它们在处理图像时倾向于只关注局部区域,而对于图像中远距离的特征,它们的捕捉能力会有所下降。在图像识别中,“long-range” 通常指的是模型在处理图像时能够捕捉到图像中远距离相关性或模式的能力。总之,long-range在图像识别中的意思是指模型在处理图像时能够捕捉到图像中的长程依赖关系。
2024-05-06 23:02:14 386
原创 深度学习中图像标注框的作用是什么
在深度学习中,图像标注框(bounding box)是用来标识图像中目标对象位置的矩形框。总的来说,图像标注框在深度学习中扮演着关键的角色,帮助模型实现目标检测、定位和识别任务,同时也是训练数据准备和模型性能评估的重要工具。自己学习深度学习进行目标识别有一段时间了,但总觉得对很多东西的理解有偏差,现将自己的理解发不出来,让大家帮忙指正。
2024-04-16 13:54:42 502
原创 在根据卷积核大小计算padding时要遵循什么原则
总的来说,根据卷积核大小计算 padding 的原则是确保卷积操作能够正确应用在输入数据上,并且可以控制输出的尺寸。在实际应用中,根据具体的网络结构和需求来选择合适的 padding 大小,以获得期望的输出结果。其中,output size 是期望的输出尺寸,input size 是输入尺寸,filter size 是卷积核大小,stride 是步幅。:在某些情况下,可能需要根据具体需求调整 padding 大小,例如需要特定的输出尺寸或特征图形状。其中,filter size 是卷积核的大小。
2024-03-17 22:02:06 520
原创 YOLOv5改进: RT-DETR引入YOLOv5,neck和检测头助力检测
上述问题促使我们针对实时的端到端检测器进行探索,旨在基于 DETR 的优秀架构设计一个全新的实时检测器,从根源上解决 NMS 对实时检测器带来的速度延迟问题。DETR类在COCO上常用的尺度都是800x1333,以往都是以Res50 backbone刷上45 mAP甚至50 mAP为目标,而RT-DETR在采用了YOLO风格的640x640尺度情况下,也不需要熬时长训几百个epoch 就能轻松突破50mAP,精度也远高于所有DETR类模型。为了验证这一点,作者团队设计了若干对照组,如下图所示。
2024-01-28 21:34:43 914
原创 YOLOv5中Ghostbottleneck结构shortcut=True和shortcut=False有什么区别
GhostBotleneck结构中的shodcut=True和shorcut=False的区别在干是否使用残差连接。当shorcu=True时,使用残差连接,可以以加速模型的收敛速度和提高模型的准确率,当shorcu=False时,不使用残差连接,可以减少模型的参数数量和计算量。实际上不只是Ghostbottleneck具有残差连接,在C3、C2f等具有Bottleneck模块的结构均可根据此例举一反三。残差块是深度卷积神经网络中的一种基本模块,可以有效地解决梯度消失和梯度爆炸的问题。
2024-01-23 23:19:56 1125
原创 论文中的SOTA model 和 SOTA result分别指代什么?
SOTA model:state-of-the-art model,并不是特指某个具体的模型,而是指在该项研究任务中,目前最好/最先进的模型。SOTA result:state-of-the-art result,指的是在该项研究任务中,目前最好的模型的结果/性能/表现。
2024-01-22 15:56:17 486
原创 PyTorch报”TypeError: Conv2d() received an invalid combination of arguments “的原因以及解决办法
例如,如果模型使用的是float类型的数据,则输入数据也必须是float类型的数据;确保传递给Conv2d函数的参数是正确的类型。如果有一个不正确的参数类型,也会导致错误。确保传递给Conv2d函数的参数的顺序正确。以下是Conv2d参数的正确顺序:输入通道数,输出通道数,卷积核大小,步长,填充,等等。如果参数顺序不正确,会导致错误。当使用PyTorch中的Conv2d函数时,要注意参数的数量、类型、数据类型和顺序是否正确。这个问题通常是由于传递给Conv2d函数的参数不正确或不完整而引起的。
2024-01-21 10:31:19 2172
原创 使用results.csv文件数据绘制mAP对比图
yolov5每次train完成(如果没有中途退出)都会在run目录下生成expX目录(X代表生成结果次数 第一次训练完成生成exp0 第二次生成exp1…expX目录下会保存训练生成的weights以及result.txt文件,其中weights是训练生成权重,可用于detect。在写论文时我们需要以可视化的方式展示训练结果 -> result.png。在此以mAP@0.5为例绘制。
2024-01-04 22:32:33 912
原创 YOLOv5训练后如何测试
训练结束后,在runs/train/exp/weights目录下会产生两个权重文件,一个是训练效果最好的权重文件,一个是训练最后一轮的权重文件。
2024-01-02 15:51:00 1035
原创 轻量级卷积神经网络的设计技巧
如使用kernel size=3,stride=1,padding=1,可以保证特征图的空间分辨率不变,1x1的卷积设置stride=1,padding=0达到相同的目的,而且1x1卷积运算的效率目前有很多底层算法支持,效率更高。在实际业务中,Retinanet仅需要检测证件,不涉及过多的类别物体的定位和分类,因此,我认为仅仅更换上述两个骨架网络来优化模型的性能是不够的,需要针对证件检测任务,专门设计一个更加轻量的卷积神经网络来提取、糅合特征。假设保证有足够多的训练的数据,轻量网络训练会更加容易。
2023-12-27 16:22:59 878
原创 YOLO训练results.csv文件可视化(原模型与改进模型对比可视化)
一、单独一个文件可视化(源码对应utils文件夹下的plots.py文件的plot_results类)单独把代码拿出来建立py文件,注意上传文件路径以及文件保存路径。效果图展示:(results_vs.png文件)效果图展示:(results.png文件)
2023-12-27 00:05:49 1254
原创 YOLOv5提升模型训练结果小技巧
YOLOv5是一种流行的深度学习算法,用于实时目标检测任务。由于其高效性和速度,YOLOv5被广泛应用于各种实际应用中。然而,有时候模型的训练结果可能不尽如人意。在这篇文章中,我们将介绍一些提升YOLOv5模型训练结果的小技巧。
2023-12-26 23:23:48 4242
原创 C3: Concentrated-Comprehensive Convolution and its application to semantic segmentation
❝ 轻量化语义分割网络多采用深度可分离卷积和空洞卷积结合的方式,提升性能的同时保持尽可能大的感受野,但是前者对于标准卷积的不恰当近似和后者存在的空格效应,使得特征图信息丢失,模型表现不佳。为此文章提出C3模块即"Concentrated-Comprehensive Convolution Block",用于构建新型的轻量化语义分割网络。
2023-12-25 23:31:40 1010 1
原创 YOLO算法改进7【中阶改进篇】:主干网络C3替换为轻量化网络MobileNetV3
解决问题:YOLOv5主干特征提取网络采用C3结构,带来较大的参数量,检测速度较慢,应用受限,在某些真实的应用场景如移动或者嵌入式设备,如此大而复杂的模型时难以被应用的。前 言:作为当前先进的深度学习目标检测算法YOLOv5,已经集合了大量的trick,但是还是有提高和改进的空间,针对具体应用场景下的检测难点,可以不同的改进方法。此后的系列文章,将重点对YOLOv5的如何改进进行详细的介绍,目的是为了给那些搞科研的同学需要创新点或者搞工程项目的朋友需要达到更好的效果提供自己的微薄帮助和参考。
2023-12-24 23:29:33 2294
原创 解读SPP / SPPF / SimSPPF / ASPP / RFB / SPPCSPC
RFB模块是在《ECCV2018:Receptive Field Block Net for Accurate and Fast Object Detection》一文中提出的,该文的出发点是模拟人类视觉的感受野从而加强网络的特征提取能力,在结构上RFB借鉴了Inception的思想,主要是在Inception的基础上加入了空洞卷积,从而有效增大了感受野。ASPP是在DeepLab中提出来的,在后续的DeepLab版本中对其做了改进,如加入BN层、加入深度可分离卷积等,但基本的思路还是没变。
2023-12-24 21:41:29 3441 3
原创 11、YOLO训练后输出时参数不同的原因分析:
其中一个原因是因为使用了Fuse前向加速推理方法,将Conv和BN层融合在了一起,具体见torch_utils.py文件中的fuse_conv_and_bn函数。验证时,由于加载的是训练好的权重文件,参数不需要更新,所以不需要求梯度,因此gradients=0。训练时所有参数都需要梯形反向传播,所以训练时grandients = parameters。原因也是使用了Fuse前向加速推理方法,将Conv和BN层融合在一起,相当于砍掉了BN层。
2023-12-24 15:36:45 884
原创 什么是预训练模型?如何得到预训练权重?
预训练模型把迁移学习很好地用起来了,让我们感到眼前一亮。这和小孩子读书一样,一开始语文、数学、化学都学,读书、网上游戏等,在脑子里积攒了很多。当他学习计算机时,实际上把他以前学到的所有知识都带进去了。如果他以前没上过中学,没上过小学,突然学计算机就不懂这里有什么道理。这和我们预训练模型一样,预训练模型就意味着把人类的语言知识,先学了一个东西,然后再代入到某个具体任务,就顺手了,就是这么一个简单的道理。
2023-12-20 11:40:53 3738
原创 在目标检测的图框标注中注意一下几点
标注框的形状和大小:对于不同大小的物体,标注框应完全包含住物体。并且标注框的形状尽可能接近物体形状。标注框的位置和方向:标注框尽可能地包围目标物体,而且标注框的位置和方向应标与实际场景中的位置和方向一致。标签的准确性和唯一性:每个目标物体应尽可能地被正确地标注,并且标注的标签应该与目标物体相对应。去除冗余信息:在标注数据时,应该去除冗余的信息,例如背景重复的物体等,以提高目标检测算法的准确性和效率。数据集的平衡和扩充:对于不同类别的目标物体应该平衡数据集的数量和分布,避免出现类别不平衡的情况。同时
2023-12-07 20:20:27 719
原创 yolov5的concat是什么层
在YOLOv5中,concat是指在网络的不同层之间进行张量拼接操作。YOLOv5使用了混合尺度特征融合的方式进行目标检测,其中concat操作是将不同尺度的特征图在通道维度上进行拼接,以提高目标检测的精度。总而言之,concat操作在YOLOv5中用于特征图的融合,以提高目标检测的性能。具体来说,YOLOv5中的concat操作发生在特征提取阶段的不同层之间。
2023-11-15 20:36:35 2829
原创 RuntimeError: Sizes of tensors must match except in dimension 1. Expected size 58 but got size 57 fo
在使用yolo v5n进行网络训练时使用的,在第12层Concat处连接第11层和第6层的Feature Map时出现维度不同的问题。
2023-11-13 23:49:39 22550 15
原创 YOLO算法改进6【中阶改进篇】:depthwise separable convolution轻量化C3
而且这种运算对输入层的每个通道独立进行卷积运算,没有有效的利用不同通道在相同空间位置上的feature信息。Pointwise Convolution的运算与常规卷积运算非常相似,它的卷积核的尺寸为 1×1×M,M为上一层的通道数。对于一张5×5像素、三通道(shape为5×5×3),经过3×3卷积核的卷积层(假设输出通道数为4,则卷积核shape为3×3×3×4,最终输出4个Feature Map,如果有same padding则尺寸与输入层相同(5×5),如果没有则为尺寸变为3×3。
2023-11-04 15:09:10 477
原创 YOLO算法改进5【中阶改进篇】:添加SENet注意力机制
SE-Net 是 ImageNet 2017(ImageNet 收官赛)的冠军模型,是由WMW团队发布。具有复杂度低,参数少和计算量小的优点。且SENet 思路很简单,很容易扩展到已有网络结构如 Inception 和 ResNet 中。我们可以看到,已经有很多工作在空间维度上来提升网络的性能。那么很自然想到,网络是否可以从其他层面来考虑去提升性能,比如考虑特征通道之间的关系?作者基于这一点并提出了(简称SE-Net)。
2023-11-03 15:47:07 982
原创 有关YOLOV5在测试时,图片大小被调整的问题
上述操作具体就是通过计算“设置的宽高”与“原图宽高”的比例,计算出最终dw,dh的值,就能确定上下左右需要padding的像素个数,最后通过。代码解析,代码中的备注给出了所有变量的变化过程。
2023-11-01 22:12:15 1659
原创 如何查看YOLO网络结构
文章地址:https://blog.csdn.net/qq_39522016/article/details/134150391。YOLO算法改进4【中阶改进篇】:添加DeformableConvolution v2可变形卷积模块。当添加新的结构模块时候,我们常常需要修改并查看新生成的网络结构。例如,在YOLO算法改进4【中阶改进篇】中我们添加了。
2023-11-01 10:21:57 404
原创 YOLO算法改进4【中阶改进篇】:添加DeformableConvolution v2可变形卷积模块
他站上演讲台,说他是个性boy,他会变形,不像常规卷积那样死板,他更灵活,可以应对上述提到的物体复杂形变的场景。传统的卷积操作是将特征图分成一个个与卷积核大小相同的部分,然后进行卷积操作,每部分在特征图上的位置都是固定的。这样,对于形变比较复杂的物体,使用这种卷积的效果就可能不太好了。对于这种情况,传统做法有丰富数据集,引入更多复杂形变的样本、使用各种数据增强和trick,以及人工设计一些手工特征和算法。论文地址: https://arxiv.org/abs/1811.11168。声明的位置如下图所示。
2023-10-31 22:37:00 442 1
原创 YOLO算法改进3【中阶改进篇】:添加HorNet卷积模块
HorNet是在Swin transformer结构的基础上,结合大核思想提出的新的网络结构模块,使用该模块,作者在ImageNet-1k数据集上做分类,分割以及检测任务都在当时达到了SOTA的效果,是一个能有效增强各种网络的性能而不会引入太大参数量的一种改进思路,已经有很多博主提出将该模块用于yolo系列网络中,以期望达到更好的效果。源码地址: https://github.com/raoyongming/HorNet.论文地址:https://arxiv.org/pdf/2207.14284.pdf。
2023-10-31 21:47:37 609
原创 什么是Feature map、filter、channel
在cnn的每个卷积层,数据都是以三维形式存在的。你可以把它看成许多个二维图片叠在一起(像豆腐皮一样),其中每一个称为一个feature map。
2023-10-24 23:05:50 137
转载 Python3 实现批量图像数据增强(扩增)并复制xml标签文件【目标检测笔记】
转载自K同学原文链接如下:https://blog.csdn.net/qq_38251616/article/details/122391011?仅用于自用学习,谨防原文失效,请大家支持原创。
2023-10-24 22:55:56 253
原创 上采样(UnSampling) 和 下采样(DownSampling)
(upsampling)或图像插值(interpolating))的主要目的是:放大原图像,从而可以显示在更高分辨率的显示设备上。1、缩小图像(或称为。2、放大图像(或称为。
2023-10-24 15:12:16 368
原创 在pytorch中对于张量维度的理解
从左边开始数连续[的数量,最多有X个[说明是X维张量。上面的例子就是4维张量。shape属性中的元素大于等于3时,可以用3维空间来理解。shape=(3, 4, 2)时,表示3个4行2列的张量shape=(2, 3, 4, 2)时,表示有2个 3行4列深度为2的张量shape=(6, 2, 3, 4, 2)时,表示有6个四维张量,这个四维张量又可以表示为2个 3行4列深度为2的张量。
2023-10-22 10:32:58 1325 6
原创 评价指标篇——IOU(交并比)
IoU是一个简单的测量标准,只要是在输出中得出一个预测范围(bounding boxex)的任务都可以用IoU来进行测量。集合论中,设A,B是两个集合,由所有属于集合A且属于集合B的元素所组成的集合,叫做集合A与集合B的交集,记作A∩B。给定两个集合A,B,把他们所有的元素合并在一起组成的集合,叫做集合A与集合B的并集,记作A∪B,读作A并B。IoU是两个区域重叠的部分除以两个区域的集合部分得出的结果,通过设定的阈值,与这个IoU计算结果比较。IoU是一种测量在特定数据集中检测相应物体准确度的一个标准。
2023-10-07 21:28:57 743
原创 使用 labelImg 制作YOLO系列目标检测数据集(.xml文件)
第三步: 输入labelImg 打开labelImg窗口。键,滚动鼠标可以快速放大、缩小图片。文章转载自K同学,谨防原文失效。键可以快速切换文件夹中的图片。第二步: 在命令行窗口中输入。,安装 labelImg。
2023-10-07 20:28:14 802
原创 图像数据通道格式:NCHW和NHWC的区别
*结论:**在训练模型时,使用GPU,适合NCHW格式;在CPU中做推理时,适合NHWC格式。采用什么格式排列,由计算硬件的特点决定。OpenCV在设计时是在CPU上运算的,所以默认HWC格式。TensorFlow的默认格式是NHWC,也支持cuDNN的NCHW。链接:https://www.jianshu.com/p/61de601bc90f。作者:LabVIEW_Python。
2023-09-17 14:41:59 1696
原创 构建模型三要素与权重初始化
nn.ModuleModuleconvpoolingLinearBatchNorm我们先看一个例子:先看__init__(self)函数第一行是初始化,往后定义了一系列组件。nn.Conv2d就是一般图片处理的卷积模块,然后池化层,全连接层等等。定义完这些,再定义forward函数x为模型的输入,第一行表示x经过conv1,然后经过激活函数relu,然后经过pool1操作第三行表示对x进行reshape,为后面的全连接层做准备至此,对一个模型的定义完毕,如何使用呢?其实,就是类似于使用了。
2023-09-17 00:11:13 205
原创 torch.nn.Parameter()函数
在很多经典网络结构中都有这个函数,故对其进行了解。torch.nn.Parameter 作用将一个不可训练的类型为Tensor的参数转化为可训练的类型为parameter的参数,并将这个参数绑定到module里面,成为module中可训练的参数。
2023-09-16 18:12:56 2190
原创 【无标题】
通道的概念:深度有时候也成为数据的 “通道”channel"。卷积核通常与它所处理的数据/输入数据拥有同样的通道数。输出数据的通道数则是由卷积核个数所决定的。参考视频:上海财经大学教程【
2023-08-19 10:45:44 122
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人