图像分类
文章平均质量分 90
@BangBang
这个作者很懒,什么都没留下…
展开
-
Stable Diffusion-生式AI的新范式
Latent Diffusion Model (LDM)是最初的文本-图像模型,稳定扩散模型(Stable Diffusion)是一种扩展。这意味着 "Stable Diffusion "也是一个文本-图像模型。CompVis和RunwayML的原始开放源代码是基于Rombach等人的论文–“High-Resolution Image Synthesis with Latent Diffusion Models”。图2.使用Stable Diffusion生成的戴帽子的狗的图像。原创 2023-04-26 12:47:12 · 1740 阅读 · 3 评论 -
传统图像处理——颜色迁移
仅供学习。原理是利用颜色空间的正交化,即更改某个颜色,不会影响到其它属性。这里的色彩迁移的论文则是使用了LAB空间这里使用python3.7.6+opencv4.4.0实现。选用优化后的算法效率提升很大。原创 2023-04-14 11:34:55 · 1181 阅读 · 0 评论 -
旋转矩形框标注--roLabelImg的使用
(2) 安装LabelImg: roLabelImg 环境依赖于LabelImg,因此需要先安装好LabelImg。,当angle小于pi/2时,theta等于angle,当angle大于pi/2时,theta等于angle-pi。xml文件保存了旋转检测框的类别(wenben)、中心点坐标(cx,cy)、宽高(w,h)、旋转角(angle)与常规的目标检测bounding box不同,在它的基础上添加了旋转角度,对常规水平检测框进行旋转。预定义的类别名为自定义Dataset的类别名,比如。原创 2023-03-03 13:52:56 · 2349 阅读 · 4 评论 -
Vision Transformer(ViT) 2: 应用及代码讲解
(1)下载好数据集,代码中默认使用的是花分类数据集,下载地址:, 如果下载不了的话可以通过百度云链接下载:提取码:58p0(2)在train.py脚本中将设置成解压后的文件夹绝对路径(3)下载预训练权重,在文件中每个模型都有提供预训练权重的下载地址,根据自己使用的模型下载对应预训练权重(4)在train.py脚本中将--weights参数设成下载好的预训练权重路径(5)设置好数据集的路径以及预训练权重的路径--weights就能使用train.py脚本开始训练了(训练过程中会自动生成文件)原创 2023-02-20 13:05:52 · 1424 阅读 · 0 评论 -
图像分割FCN(3):FCN模型搭建和自定义数据集
对应代码,里面有类,Args:Returns:Args:Returns:Args:Returns:其中__init__方法中,定义了图片的路径image_dir以及分割标签mask的路径mask_dir, 并根据txt_path(训练集为train.txt验证集为val.txt)找到所有的训练或验证图片数据以及分割标签。: 根据索引index,利用self.image[index]获取图片的路径,然后将图片转换为RGB。原创 2023-02-02 09:58:13 · 688 阅读 · 0 评论 -
深度学习知识点总结
HSV(Hue, Saturation, Value)是根据颜色的直观特性由A. R. Smith在1978年创建的一种颜色空间, 也称六角锥体模型(Hexcone Model)(参考百度)。在HSV模型中,颜色是由色度(Hue),饱和度明度(Value)共同组成。色度(Hue)使用角度度量的,范围是从0 ° 到360 ° (逆时针旋转),比如0 ° / 360 ° 代表红色,120 ° 代表原谅色,240 ° 代表蓝色饱和度(Saturation)表示颜色接近光谱色的程度。原创 2023-01-31 10:15:08 · 347 阅读 · 0 评论 -
图像分割FCN(2):代码的使用讲解
因为如果自己的数据集有问题,一上来训练就会出现各种错误。排错的时候,基本发现都是自己数据的问题。所以建议先用PASCAL VOC训练,训练没问题之后,你再去训练自己的数据集。最终根据设置train是否为True选择对应的Train阶段的预处理还是推理阶段的预处理方法。其中train.txt和val.txt记录的是train和val过程中使用的图片名称。,会从一个非常小的学习率慢慢的增加到我们指定的初始学习率,然后再慢慢地下降。对于验证过程,其实和Train阶段的预处理,其实是差不多的。原创 2023-01-30 15:14:47 · 796 阅读 · 0 评论 -
传统卷积与Transformers 优缺点对比
近两年Transformer如日中天,刷爆各大CV榜单,但在计算机视觉中,传统卷积就已经彻底输给Transformer了吗?原创 2022-12-30 15:52:23 · 5953 阅读 · 0 评论 -
model.state_dict(),modules(),children(),named_children(),parameters() 详解
网络 Net 本身是一个nn.Module的子类,包含了backbone和classifierNet(nn.Module子类)backbone和 classifier(Sequential,nn.Module子类),是 Net 的子网络层具体的网络层如 conv,relu,batchnorm 等(nn.Module子类),是 backbone 或 classifier 的子网络层。原创 2022-12-28 13:36:01 · 669 阅读 · 0 评论 -
卡尔曼滤波在非线性系统中的扩展
卡尔曼滤波器在1960年被卡尔曼发明之后,被广泛应用在动态系统预测。在自动驾驶、机器人、AR领域等应用广泛。卡尔曼滤波器使用类似马尔可夫链的性质,假设系统状态只与上一时刻的系统状态有关。基础的卡尔曼滤波器使用线性方程对系统状态进行建模。为了能够应用到非线性系统,扩展卡尔曼滤波器利用泰勒展开,并只保留一次项,抛弃高次项,将非线性关系近似为线性关系。这一篇文章对扩展卡尔曼滤波器(r)的具体步骤和公式进行讲解。[1]:kalman滤波与目标跟踪1: kalman滤波理论详解。原创 2022-12-26 15:42:41 · 850 阅读 · 0 评论 -
使用yolov5 v7.0进行实例分割
U版yolov5最新推出了v7.0版本,新增了基于yolov5进行实例分割的代码。作者提到yolov5 v7.0实现的实例分割是超越了所有的SOTA模型的效果,是目前为止速度和精度最高的。square和triangel利用labelme工具标注,标注为json文件。{} } , {... } ...数据集网盘地址:pwd=qhp4提取码:qhp4。原创 2022-12-24 23:30:11 · 1967 阅读 · 1 评论 -
yolov5剪枝实战1: 论文及yolov5剪枝实战项目介绍
神经网络一般都存在过参数化(over-parameterized)的问题,存在冗余的神经元或权重,所以可以进行剪枝。其实对网络可以针对不同的颗粒度进行剪枝,可以进行权重、神经元级别的剪枝,也可以基于channel, shape,filter以及layer级别的剪枝。如果对element-wise级别的剪枝会导致非结构化的网络剪枝,所以我们研究的重点是结构化的剪枝方法。本项目利用yolov5对足球数据集进行训练,并进行Network Slimming剪枝,本系列博客主要包括以下内容。原创 2022-11-17 22:59:20 · 1185 阅读 · 0 评论 -
python 可视化解释模型
首先准备好一个数据集文件,这里以mydata文件夹存放图片数据, 实现自定义DataSet这里以一个玩具MyModle.py。原创 2022-11-16 20:15:41 · 1652 阅读 · 0 评论 -
深度学习模型的参数、计算量和推理速度统计
在没有过拟合的情况下,相同模型结构下,一般模型的参数量和计算量与最终的性能成正比,在比较不同模型性能时,最好能保持模型参数量和计算量在相同水平下,因此相应参数的统计很重要。这里只进行理论计算,最终的效果(内存和速度)还和网络结构,代码实现方式、应用的平台性能等条件有关系,例如使用GEMM实现CNN时会增加内存,但实际的计算速度会加快。相同条件下,GRU由于时序依赖关系不能并行加速,实际速度会比CNN更慢。原创 2022-11-15 21:20:10 · 5404 阅读 · 0 评论 -
利用pytorch 模型载入部分权重
本文介绍如何在pytorch中载入模型的部分权重第1个常见的问题: 在分类网络中,当载入的预训练权重的全连接层与我们自己实例化模型的节点个数不一样时,该如何载入?比如在花卉数据集分类时只有5类,所以最后一层全连接层节点个数为5,但是我们载入的预训练权重是针对ImageNet-1k的权重,它的全连接层节点个数是1000,很明显是不能直接载入预训练模型权重的。第2个常见的问题: 如果对网络的结构进行了一定的修改,修改之后很明显是不能直接载入预训练权重了。能不能载入部分权重呢?原创 2022-11-14 22:35:27 · 3264 阅读 · 1 评论 -
利用warpaffine实现旋转、平移、缩放、flip
用(x, y, w),来表示点P(xw,yw,1)P(wx,wy,1)平移变换{x′y′w}={10ox01oy001}{xy1}={x+oxy+oy1}\left\{x' \\y' \\w \\\right\}=\left\{0 & 0 & 1\right\}\left\{x \\y \\1\right\}=\left\{x+ox \\y+oy \\原创 2022-11-13 18:03:51 · 1551 阅读 · 0 评论 -
深度学习常见问题汇总
问题汇总的博客地址为。原创 2022-10-30 21:53:09 · 276 阅读 · 0 评论 -
pytorch 多GPU并行训练代码讲解
pytorch 多GPU并行训练介绍,参考我之前的博客:pytorch中使用多GPU并行训练。本文主要针对代码部分进行讲解。1. 首先判断有没有可用的GPU,如果没有的话,这边会报错提醒,因为我们的脚本对针对多GPU训练的场景的。2. 初始化各进程环境。原创 2022-10-16 14:52:02 · 16295 阅读 · 1 评论 -
yolov5知识蒸馏2:目标检测中的知识蒸馏
本博客介绍目标检测任务中知识蒸馏如何操作,首先介绍下相关的论文。这篇文章是针对进行知识蒸馏的方法,FasterRCNN是一个两阶段的目标检测算法,包括(RPN)和(RCN),这两阶段都用到了classifier和,论文使用教师网络RPN和RCN的输出作为蒸馏的目标,并应用了中间层的输出作为提示Hint图中,上半部分是教师网络,网络中间层的输出叫做Hint知道学生网络中间层输出的学习,中间层一般是featuremap。我们希望student也学习到中简层特征的输出。Tiny-YOLO。...原创 2022-07-30 13:01:02 · 2234 阅读 · 1 评论 -
yolov5知识蒸馏1:基础原理讲解及yolov5项目实战介绍
知识蒸馏(Knowledgedistillation)是提升网络性能的方法,通过一个教师网络指导学生网络的学习,教师网络是一个较大的模型,学生网络是一个较小的模型,通过教师网络学习到的知识迁移到学生网络上。训练学生网络的时候可以得到教师网络蒸馏到的softlabel知识,同时学生网络也可以从groundtruth来进行预测学习。蒸馏的关键是教师网络训练得到一个softlabel。...............原创 2022-07-30 10:48:28 · 3609 阅读 · 10 评论 -
Pytorch常用的交叉熵损失函数CrossEntropyLoss()详解
3、NLLLoss的结果就是把上面的输出与Label对应的那个值拿出来(下面例子中就是:将log_output\logsoftmax_output中与y_target对应的值拿出来),去掉负号,再求均值。,为什么这么说呢,举个例子:在做分类的训练的时候,如果一个样本属于第K类,那么这个类别所对应的的输出节点的输出值应该为1,而其他节点的输出都为0,即。:它主要刻画的是实际输出(概率)与期望输出(概率)的距离,也就是交叉熵的值越小,两个概率分布就越接近。那么该公式如何表示,举个例子,假设N=3,期望输出为。原创 2022-10-08 14:51:23 · 4514 阅读 · 1 评论 -
使用pytorch搭建ResNet并基于迁移学习训练
在博文经典网络ResNet讲解,详细介绍了ResNet网络。网络的机构参数如下:通过这张表格可以发现无论是18层,34层,50层,101层,还是152层网络。他们的网络框架基本上都是一样的。首先通过一个7x7的卷积层,然后通过3x3的最大池化下采样,紧接着再通过conv2_x所对应的一系列残差结构,紧接着conv3_x所对应的一系列残差结构,conv4_x所对应的一系列残差结构,conv5_x所对应的一系列残差结构。然后最后在跟上一个平均池化下采样以及我们的全连接输出层在经典网络ResNet讲解。原创 2022-10-06 13:39:17 · 2900 阅读 · 0 评论 -
ResNeXt网络详解
图片上半部分是普通卷积的流程,假设输入特征矩阵的channel为4,此时对于每一个卷积核它的channel需要与输入特征矩阵的channel保持一致,所以卷积核的channel=4.假设输出的特征矩阵channel=n,也就意味我们需要n个卷积核进行卷积处理。我们计算普通卷积所需要的参数量,假设卷积核的高宽为k,假设输入特征矩阵channel为CinC_{in}Cin, 输出的channel 为n,总的卷积参数量k×k×Cin×nk×k×Cin×n。原创 2022-10-03 11:19:10 · 2324 阅读 · 2 评论 -
经典网络ResNet讲解
对应的输入输出特征矩阵shape是一样的,不需要虚线的残差;而对于更深层的网络resnet50/101/152,通过最大池化下采样之后它所得到的特征矩阵shape为。所对应的一系列残差结构,它们的第一层也是虚线的残差结构,但是它们的虚线结构只用来特征输出特征矩阵的channel,而对于。,因为第一层必须要将它上一层的特征矩阵的高和宽以及channel调整为当前层所需要的高宽以及channel.所以通过。下图是使用residual结构的卷积网络,可以看到随着网络的不断加深,效果并没有变差,反而变的更好了。原创 2022-10-02 21:28:38 · 2392 阅读 · 0 评论 -
RepVGG网络详解
下面是参考作者提供的源码改的一个小实验,首先创建了一个module包含了卷积和BN模块,然后按照上述转换公式将卷积层的权重和BN的权重进行融合转换,接着载入到新建的卷积模块fused_conv中,最后随机创建一个Tensor(f1)将它分别输入到module以及fused_conv中,通过对比两者的输出可以发现它们的结果是一致的。对于卷积层,每个卷积核的通道数是与输入特征图的通道数相同,卷积核的个数决定了输出特征图的通道个数。既然有了卷积层,那么又可以按照上述2.1中讲的内容将卷积层和BN层进行融合。原创 2022-10-02 17:40:14 · 1266 阅读 · 0 评论 -
Swin-Transformer网络结构详解
论文这篇论文是由微软亚洲研究院于2021年在ICCV上发表的,作者基本上都是华人,该论文也获得2021年的best paper。关于它的性能超越了之前的所有网络,在coco数据集上在目标检测任务中超过之前网络2.7个AP,在实例分割任务中提升有2.6个点, 在视觉的多个领域中都带来了很大的进度。通过给的这些参数可以知道的性能是非常好的,一般我们自己通过网络创新精度提升一个点,就可以发文章了。Pytorch实现代码: pytorch_classification/swin_transformer。原创 2022-09-10 16:03:03 · 444 阅读 · 0 评论 -
常用激活函数:Sigmoid、Tanh、Relu、Leaky Relu、ELU、Mish、Swish等优缺点总结
首先我们需要知道,如果在神经网络中不引入激活函数,那么在该网络中,每一层的输出都是上一层输入的线性函数,无论最终的神经网络有多少层,输出都是输入的线性组合;3、当输入为正值,导数为1,在“链式反应”中,不会出现梯度消失,但梯度下降的强度则完全取决于权值的乘积,如此可能会导致梯度爆炸问题;,普通的ReLU是将所有的负值都设为零,PReLU是给所有负值赋予一个非零斜率,与LeakyReLU不同的是,PReLU的参数。2、该函数通过减少偏置偏移的影响,使正常梯度更接近于单位自然梯度,从而使均值向0加速学习;原创 2022-09-09 21:24:31 · 1002 阅读 · 0 评论 -
下载VOC数据集
下载VOC数据集:https://blog.csdn.net/qq_41884867/article/details/90237145原创 2022-08-16 14:48:18 · 2479 阅读 · 0 评论 -
Vision Transformer(ViT) 1: 理论详解
Vison Transformer论文-, 论文由Google 发表于2020CVPR上。原创 2022-08-15 16:24:16 · 3456 阅读 · 0 评论 -
pytorch中使用多GPU并行训练
这里给出了两种,当然不局限于这两种。: 当模型特别大的时候,由于使用的GPU显存不够,无法将一个网络放在一块GPU里面,这个时候我们就可以网络不同的模块放在不同的GPU上,这样的话,我们就可以去训练一个比较大型的网络了,这就是的训练方式。:我们把整个模型放在一块GPU里面,并且将模型复制到每块GPU设备上,然后让它同时进行正向传播以及反向的误差传播。这种常见的训练方法叫做。第二种方法由于我们能够同时并行输入样本进行训练,这就相当于增加了训练的batch size,这样的话我们训练速度就加快了。...原创 2022-08-11 13:52:51 · 3173 阅读 · 0 评论 -
ShuffleNet 系列(2): ShuffleNet v2 理论讲解
这篇论文比较硬核,提出了不少新的思想,推荐大家可以看看论文原文。模型的计算复杂度不能只看FLOPs,还需要参考一些其他的指标作者提出了4条如何设计高效网络的准则基于该准则提出了新的block设置FLOPS和FLOPsFLOPS全大写,指每秒浮点运算次数,可以理解为计算的速度,是衡量硬件性能的一个指标(硬件)FLOPss小写,指浮点运算数,理解为计算量,可以用来衡量算法/模型的复杂度,(模型)在论文中常用。...原创 2022-07-17 15:42:06 · 4325 阅读 · 0 评论 -
ShuffleNet 系列(1): ShuffleNet v1 理论讲解
ShuffleNetShuffleNet跟MobileNet一样也是一种轻量化网络,ShuffleNetV1.0版本中作者有提出Channelshuffle的概念。在ShuffleNetBlock当中使用的基本上都是GConv和DWConvShuffleNet性能指标的err率与我们AlexNet其实是差不多的在晓龙820处理器上的推理时间是15.2ms,而AlexNet需要184msShuffleNet1x的err率是32.6%,推理时间是37.8ms``;的err率是26.3%ms;......原创 2022-07-17 11:31:58 · 1884 阅读 · 0 评论 -
Group 卷积
PyTorch中若想使用分组卷积,只需要在nn.Conv2d网络结构定义时指定groups即可。原创 2022-07-16 18:45:58 · 458 阅读 · 0 评论 -
Transformer 开篇:Self-attention Multi-head Self-attention
它的提出最开始是针对NLP领域的,在次之前大家主要用的是RNN,LSTM这类时序网络。。但是他们还有另外一个问题就是无法并行化,也就是说我们必须先计算t0时刻的输出,计算完之后我们才能进一步计算t1时刻的数据。由于无法并行化,训练效率就比较低这样是一件非常痛苦的事情。...原创 2022-07-16 15:14:26 · 387 阅读 · 0 评论 -
EfficientNet系列(1): EfficientNetV2网络详解
这篇论文是Google在2019年发表的文章。EfficientNet这篇论文,作者同时关于输入分辨率,网络深度,宽度对准确率的影响,在之前的文章中是单独增加图像分辨率或增加网络深度或单独增加网络的宽度,来试着提升网络的准确率。在EfficientNet这篇论文中,作者使用了网络搜索技术NAS去同时探索输入分辨率,网络深度、宽度的影响。EfficientNet的效果究竟如何呢?这幅图是原论文作者给出的关于Efficient以及当时主流的一系列分类网络的Top-1的准确率,我们发现。84.3%倍。...原创 2022-07-16 13:13:37 · 15568 阅读 · 0 评论 -
MobileNet系列(5):使用pytorch搭建MobileNetV3并基于迁移学习训练
本博文实现的MobileNetV3的代码,参考pytorch官方实现的mobilenet源码详细的MobileNetV3 网络讲解,参考博文:MobileNet系列(4):MobileNetv3网络详解打开文件V3网络的卷积结构在V3网络中使用的卷积,基本上都是:,这里定义一个卷积类SE模块在之前博客中,我们有讲到过模块,其实是两个全连接层。对于第一个全连接层,它的节点个数是输入特征矩阵channel的,而第二个全链接层它的节点个数与我们输入特征矩阵的channel是保持一致的。注意:第原创 2022-07-05 19:41:48 · 2986 阅读 · 0 评论 -
MobileNet系列(4):MobileNetv3网络详解
当前很多轻量级网络会经常使用到,本文将讲解google继之后提出的v3版本。:Searching for MobileNetV3根据MobileNetV3论文总结,网络存在以下3点需要大家注意的:MobileNetV3性能提升很明显V3版本比V2版本要更优秀另外网络还存在一个捷径分支,将我们输入特征矩阵与输出特征矩阵在相同维度的数值上进行相加操作。并且只有卷积的步距为1,且,才有连接...原创 2022-06-26 18:20:51 · 16434 阅读 · 0 评论 -
Mobilenet系列(3):使用pytorch搭建MobileNetV2并基于迁移学习训练
MobileNet系列(2):MobileNet-V2 网络详解原创 2022-06-24 17:03:52 · 3588 阅读 · 1 评论 -
MobileNet系列(2):MobileNet-V2 网络详解
MobileNet-V2论文:Inverted Residuals and Linear Bottlenecks, MobileNet-V2网络是由google团队在2018年提出的,相比MobileNetV1网络,。网络中的亮点Resnet 网络提供的残差结构原创 2022-06-19 16:05:44 · 10777 阅读 · 2 评论 -
MobileNet系列(1) :MobileNet V1网络详解
`传统卷积神经网络,内存需求大、运算量大导致无法在移动设备以及嵌入式设备上运行`。MobileNet网络是由google团队在2017年提出的,专注于移动端或者嵌入式设备中的轻量级CNN网络。相比传统卷积神经网络,在准确率小幅降低的前提下大大减少模型参数与运算量。`(相比VGG16准确率减少了0.9%,但模型参数只有VGG的1/32).........原创 2022-06-19 10:04:29 · 1886 阅读 · 0 评论