深度学习
文章平均质量分 75
复现各类模型
顶会accept
这个作者很懒,什么都没留下…
展开
-
卷积神经网络的梯度求解
在一些对神经网络可解释性的研究中,总是会利用到损失函数对最后一层特征图进行求梯度的操作,例如著名的Grad CAM,因此对于卷积神经网络的理解不能仅仅停留在调包的阶段,我们需要拆解开它求梯度的黑盒。以下是以上计算过程的代码,可以发现计算结果和推导是一致的。的每个元素对最终输出的贡献大小,就需要计算出。最后将结果整合之后,再将形状变换与。操作之后,得到一个新的特征图。如图所示,假设有一个特征图。得到一个长度为2的输出向量。因此根据链式求导法则,中每个元素的偏导,即。我们整理一下从特征图。原创 2022-11-15 14:32:17 · 1349 阅读 · 1 评论 -
论文阅读笔记:RepVgg
最后我们将原输入等价为3x3卷积也很简单,构建一个形状为[out_channels, in_channels, 3, 3]的全零卷积核即可,每个out_channel中的其中一个in_channel的中心点设置为1即可,这其实可以看成一个特殊的1x1卷积。要设置为1,因此我们仅仅需要将1x1卷积的卷积核用0填充为3x3卷积核即可,这样的操作和直接用1x1卷积的结果是等价的。矩阵的乘法有分配律,假设3x3的卷积核为A,1x1为B,原输入为C,输入的特征图为X,那么存在。我们令卷积后的输出为。原创 2022-10-22 13:23:30 · 298 阅读 · 1 评论 -
梯度累积算法
设置为32,传统的算法每次扫过32个样本后即更新一次参数,假设我们的显存最大只支持。一样的训练效果,可以采用梯度累积的方式来进行训练。传统的训练方式都是训练一个。的样本就执行一次梯度下降算法更新参数,梯度累积则是设置一个累积步数。是8,那么我们设置累积步数为4,达到的效果和传统的算法是一样的。越大模型训练越稳定,但是往往受制于显存大小而不能设置较大的。在训练神经网络的时候,原创 2022-10-10 15:04:08 · 842 阅读 · 0 评论 -
BCEloss和CrossEntropyLoss的区别
主要用于计算标签只有1或者0时的二分类损失,标签和预测值是一一对应的。用于计算多分类任务,一个标签可能对应了预测的多个概率,例如一个任务包含了。来计算损失前,需要对预测值进行一次。函数会将预测值映射到0-1之间。个类别,那么预测值就有。原创 2022-10-08 16:10:15 · 2377 阅读 · 1 评论 -
论文阅读笔记:Faster RCNN
Faster RCNN是一种快速的目标检测模型,在RCNN基础上提出了RPN(Region Proposal Network)来取代SS(Selective Search)算法来生成候选锚框,从而大大加快了目标检测的速度。而在学习Faster RCNN之前必须要搞明白RCNN和Fast RCNN的相关概念和网络框架。如图所示,RCNN的实现步骤分为四步:从RCNN的框架中,我们可以很容易地发现在步骤2,3中需要对2000个锚框进行特征提取,这是非常低效的,因此,Fast RCNN直接对原始图像进行特征提取原创 2022-06-20 10:22:50 · 1090 阅读 · 0 评论 -
论文阅读笔记:SPPNet
现有的卷积神经网络总是需要一个特定尺寸的图片作为输入,例如常用的224×224224 \times 224224×224。假设存在一些不满足这种尺寸的原始图片,那么需要对图片进行一些预处理,例如裁剪拉伸。这一系列的人工处理会影响神经网络的预测精度,因此为了解决这一问题,能够使得神经网络模型可以接受任意输入尺寸的图片,本文提出了Spatial pyramid pooling为什么CNN模型需要特定尺寸的输入呢,这来源于模型最后的线性分类器,分类器需要对经过CNN处理的feature map做flatten操作原创 2022-06-15 14:58:40 · 180 阅读 · 0 评论 -
神经网络中的常见标准化(Normalization)
具体做法如上图所示,计算除了通道维的均值和方差从而进行标准化,即batch中每个样本对应位置的特征做标准化(以均值为例,每个样本第n个通道的特征图计算均值,得到一个均值特征图,再对高和宽再算均值最终得到n个1x1的均值特征图)。其中γ\gammaγ和β\betaβ是可学习的超参数。BN的提出是为了加快神经网络的训练并且解决Internal Covariate Shift的问题。使用了BN之后我们可以采用较大的学习率。此外,BN也可以提供正则化的作用,从而减少Dropout的使用。pytorch简洁代码实现:原创 2022-06-10 16:05:17 · 1563 阅读 · 0 评论 -
论文阅读笔记:Swin-Transformer
本文是一篇奠定了Transformer在图像领域地位的论文,它不同于ViT(Vision Transformer),提出了一种层次化的结构,因为ViT一开始就固定了patch的划分,因此感受野不会变化,而Swin Transformer采用了传统CNN下采样的设计,在不同的阶段采用不同的感受野尺度,最终得到了比ViT更好的性能表现。论文代码提供了一种用卷积来进行初始划分patch的方法,就是用kernerl_size,stride与patch_size的卷积核做卷积操作。1.2 DropPath论文原创 2022-06-05 15:55:59 · 641 阅读 · 0 评论 -
目标检测(pytorch官方教程)
1. 定义数据集https://pytorch.org/tutorials/intermediate/torchvision_tutorial.html数据集和相关的代码都在官网都可以下载到,一切准备工作完成之后,第一步就是构建数据集:import osimport numpy as npimport torchfrom PIL import Imagefrom torch.utils.data import Dataset, DataLoaderfrom torchvision.io原创 2022-05-31 15:41:29 · 1332 阅读 · 1 评论 -
论文阅读笔记:Vision Transformer (ViT)
1. Vision TransformerDosovitskiy, Alexey, et al. “An image is worth 16x16 words: Transformers for image recognition at scale.” arXiv preprint arXiv:2010.11929 (2020).这是一篇奠定了Transformer在视觉领域击败传统卷积的文章,Transformer在NLP领域大放异彩之后,在视觉领域也取得了优异的效果,作者摒弃了所有的卷积操作,将原创 2022-05-27 14:40:30 · 285 阅读 · 0 评论 -
论文阅读笔记: MobileNet
1. MobileNet V1Howard, Andrew G., et al. “Mobilenets: Efficient convolutional neural networks for mobile vision applications.” arXiv preprint arXiv:1704.04861 (2017).本文主要提出了一种深度可分离卷积(depthwise separable convolutions)用于替换传统卷积。将传统的卷积分解为了两步:用分组卷积来提取输入每个通道原创 2022-05-24 19:58:12 · 308 阅读 · 0 评论 -
论文阅读笔记:GhostNet
1. GhostNetHan, Kai, et al. “Ghostnet: More features from cheap operations.” Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2020.本文的题目起得很fancy,有一种神秘的色彩,其实读完文章之后,就会觉得ghost这个比喻非常的有趣也很贴切。阅读本文的前提必须对SENet以及深度可分离卷积这些工作有一定的原创 2022-05-23 16:23:23 · 1167 阅读 · 0 评论 -
论文阅读笔记:ResNext
1. ResNextXie, Saining, et al. “Aggregated residual transformations for deep neural networks.” Proceedings of the IEEE conference on computer vision and pattern recognition. 2017.多分支结构是Inception中提出的,然而在Inception中每个分支的结构都不太一样,因此这为网络结构的设计带来了很多麻烦。作为类Incep原创 2022-05-22 16:25:58 · 365 阅读 · 0 评论 -
论文阅读笔记:SqueezeNet
1. SqueezeNetIandola, Forrest N., et al. “SqueezeNet: AlexNet-level accuracy with 50x fewer parameters and< 0.5 MB model size.” arXiv preprint arXiv:1602.07360 (2016).本文提出了一种轻量化的图像分类网络:SqueezeNet,正如文章的标题所写,参数量比AlexNet少50倍。可以被部署于嵌入式设备,在分布式训练时减少通信开销。原创 2022-05-19 15:47:09 · 272 阅读 · 0 评论 -
深度学习最新工作CookNet
1. 背景介绍随着深度学习研究的深入,神经网络已经可以完成各种任务,例如图像分类,实例分割,自然语言处理。然而目前神经网络的设计需要大量的代码工作和文献阅读,因此本文认为提高神经网络的效果需要同时关注开发和研究人员的营养水平,因此提出了CookNet。2. 研究成果首先我们需要准备若干琵琶腿,青椒,洋葱和土豆。需要用的配料有黄豆酱,耗油,生抽,老抽,蒜蓉酱。第一步洗净琵琶腿,第二步将琵琶腿切成块,加入料酒腌制十五分钟,第三步起锅烧油炒糖色,注意用小火,糖化开变成焦糖色下入鸡块,第四步炒制原创 2022-04-29 20:22:17 · 950 阅读 · 0 评论 -
锚框和边缘框
这篇主要是参考了李沐大佬的教程,锚框和边缘框是目标检测中最重要的工具,用于框住图片中的物体。1. 边缘框边缘框是图片中物体的真实位置和范围,有两种表示方式,一种是边角坐标表示法,通过物体左上和右下两个角的坐标表示一个矩形框,还有一种是中心表示法,用物体的中心和宽高表示矩形框。代码如下:import torchfrom d2l import torch as d2limport matplotlib.pyplot as pltimport matplotlib.image as mpimgimg原创 2022-04-22 16:32:21 · 5537 阅读 · 0 评论 -
论文阅读笔记:ShuffleNet
背景由于深度学习模型结构越来越复杂,参数量也越来越大,需要大量的算力去做模型的训练和推理。然而随着移动设备的普及,将深度学习模型部署于计算资源有限基于ARM的移动设备成为了研究的热点。ShuffleNet[1]是一种专门为计算资源有限的设备设计的神经网络结构,主要采用了pointwise group convolution 和 channel shuffle两种技术,在保留了模型精度的同时极大减少了计算开销。[1]Zhang X, Zhou X, Lin M, et al. Shufflenet:原创 2022-04-10 14:53:49 · 17164 阅读 · 0 评论 -
基于pytorch的Seq2Seq的实现
结构这是一种经典的Seq2Seq结构,由两部分组成,Encoder 和 Decoder(编码器和解码器), 这两个部分的构造几乎一模一样,都是由循环神经网络组成,层数,隐藏层维度都是一样的。它的原理是一个序列输入到编码器之后,编码器输出最后的隐藏状态(h)到解码器, h包含了序列的前后信息,然后通过解码器对h处理,逐步生成相应的预测序列。Encoder以下是Encoder的一段基本代码,由最基本的RNN组成:需要弄清楚它矩阵的变换。class EncoderRNN(nn.Modul..原创 2021-06-20 16:36:12 · 1784 阅读 · 2 评论 -
Attention机制--concat方式
本文主要参考github:https://github.com/bentrevett/pytorch-seq2seq/blob/master/3%20-%20Neural%20Machine%20Translation%20by%20Jointly%20Learning%20to%20Align%20and%20Translate.ipynb原创 2021-06-22 10:20:17 · 2039 阅读 · 1 评论 -
Transformer详解
1.整体结构Transformer[1]模型是Google2017年提出的一种用于机器翻译的模型,完全摒弃了传统循环神经网络的结构,采用了完全基于注意力机制的结构,取得了相当显著的效果,并且从此使得完全注意力机制这种模型设计模型从NLP领域出圈到计算机视觉领域,比如VIT就是基于Transformer的一种视觉模型,终结了CNN多年在图像领域的统治地位。[1] Vaswani, Ashish , et al. “Attention Is All You Need.” arXiv (2017).论文原创 2022-03-23 10:48:43 · 5224 阅读 · 0 评论