![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
神经网络
文章平均质量分 80
Fighting_1997
唯有勤奋不会辜负于你。
展开
-
CenterPoint(Object as Point)
扔掉anchor!真正的CenterNet——Objects as Points论文解读简单讲一下,目标检测中,存在两种anchor机制哦,一种是anchor-base,典型就是Faster RCNN中先验框以及YOLO2-5系列,另一种是anchor-free,典型的是YOLOv1,YOLOX以及本博客所讲的CenterNet,但是论文原名不是CenterNet,原因是被别人使用了,所以作者起名叫Object as Point。anchor-base和anchor-free最大的区别是区别是否有先验框原创 2022-03-23 19:18:42 · 4572 阅读 · 0 评论 -
LSTM解决梯度消失问题
“LSTM 能解决梯度消失/梯度爆炸”是对 LSTM 的经典误解。1、首先需要明确的是,RNN 中的梯度消失/梯度爆炸和普通的 MLP 或者深层 CNN 中梯度消失/梯度爆炸的含义不一样。MLP/CNN 中不同的层有不同的参数,各是各的梯度;而 RNN 中同样的权重在各个时间步共享,最终的梯度 g = 各个时间步的梯度 g_t 的和。2、由 1 中所述的原因,RNN 中总的梯度是不会消失的。即便梯度越传越弱,那也只是远距离的梯度消失,由于近距离的梯度不会消失,所有梯度之和便不会消失。RNN 所谓梯度消失原创 2022-03-22 16:53:03 · 3071 阅读 · 1 评论 -
transformer代码
1. 模型总览代码讲解之前,首先放出这张经典的模型架构图。下面的内容中,我会将每个模块的实现思路以及笔者在Coding过程中的感悟知无不答。没有代码基础的读者不要慌张,笔者也是最近才入门的,所写Pytorch代码没有花里胡哨,所用变量名词尽量保持与论文一致,对新手十分友好。我们观察模型的结构图,Transformer模型包含哪些模块?笔者将其分为以下几个部分:接下来我们首先逐个讲解,最后将其拼接完成模型的复现。2. config下面是这个Demo所用的库文件以及一些超参的信息。单独实现一个Co原创 2022-03-20 17:28:16 · 1690 阅读 · 0 评论 -
transformer灵魂21问
原文链接(https://zhuanlan.zhihu.com/p/363466672)1.Transformer为何使用多头注意力机制?(为什么不使用一个头)答:多头可以使参数矩阵形成多个子空间,矩阵整体的size不变,只是改变了每个head对应的维度大小,这样做使矩阵对多方面信息进行学习,但是计算量和单个head差不多。2.Transformer为什么Q和K使用不同的权重矩阵生成,为何不能使用同一个值进行自身的点乘?答:请求和键值初始为不同的权重是为了解决可能输入句长与输出句长不一致的问题。并且原创 2022-03-20 17:27:38 · 1050 阅读 · 0 评论 -
transformer
1.Transformer 整体结构首先介绍 Transformer 的整体结构,下图是 Transformer 用于中英文翻译的整体结构:Transformer 的整体结构,左图Encoder和右图Decoder可以看到 Transformer 由 Encoder 和 Decoder 两个部分组成,Encoder 和 Decoder 都包含 6 个 block。Transformer 的工作流程大体如下:第一步:获取输入句子的每一个单词的表示向量 X,X由单词的 Embedding(Embeddi原创 2022-03-20 16:05:01 · 267 阅读 · 0 评论 -
CycleGAN网络详解
注:CycleGAN的生成器和判别器结构大家都没有去详细介绍,这里我给补充一下哦简介论文下载地址https://arxiv.org/abs/1703.10593前言CycleGan是一种实现图像风格转换功能的GAN网络。早在它出现之前就存在着Pix2Pix实现图像风格转换,但pip2pip具有很大的局限性,主要是针对两种风格图像要对应出现,而现实中很难找到一些风格不同相同图像,也能难去拍摄获得,于是CycleGan就实现这个功能,在两种类型图像之间进行转换,而不需要对应关系,非常强大和实用!!!这原创 2022-03-18 16:11:58 · 42040 阅读 · 34 评论 -
yolov4和yolov5详解
YOLOv4YOLOv4的三大贡献:设计了强大而高效的检测模型,任何人都可以用 1080Ti 和 2080Ti训练这个超快而精准的模型。验证了很多近几年 SOTA 的深度学习目标检测训练技巧。修改了很多 SOTA 的方法, 让它们对单GPU训练更加高效,例如 CmBN,PAN,SAM等。作者总结了近几年的单阶段和双阶段的目标检测算法以及技巧,并用一个图概括了单阶段和双阶段目标检测网络的差别,two-stage的检测网络,相当于在one-stage的密集检测上增加了一个稀疏的预测器作者也对多原创 2022-03-14 17:38:14 · 14405 阅读 · 0 评论 -
yolov3
YOLOv3YOLOv3的总体网络架构图可根据官方代码中的yolov3.cfg进行一一对应,标号000是第一个[convolutional]Darknet-53和DarkNet-19一样,同样下采样32倍。但是darknet-19是通过最大池化来进行,一共有5次。而darknet-53是通过尺寸2,步长为2的卷积核来进行的,也是5次。darknet-19是不存在残差结构(resblock,从resnet上借鉴过来)的,和VGG是同类型的backbone(属于上一代CNN结构),而darknet-5原创 2022-03-13 22:32:08 · 3123 阅读 · 0 评论 -
yolov2
YOLOv2Add BN使用BN层提高准确度(Accuracy improvements)神经网络学习过程本质就是为了学习数据分布,一旦训练数据与测试数据的分布不同, 那么网络的泛化能力也大大降低; 另外一方面,一旦每批训练数据的分布各不相同, 那么网络的 Batch 梯度下降算法就要在每次迭代都去学习适应不同的分布, 这样将会大大降低网络的训练速度。解决办法是对数据都要做一个归一化预处理。YOLOv2网络通过在每一个卷积层后添加 批归一化 (batch normalization) ,极大的改善原创 2022-03-13 21:10:10 · 2751 阅读 · 0 评论 -
FPN(特征金字塔)论文详解
FPN(特征金字塔)论文:Feature Pyramid Networks for Object Detection下载链接:https://arxiv.org/abs/1612.03144解决问题:《Feature Pyramid Networks for Object Detection》这篇论文主要解决的问题是目标检测在处理多尺度变化问题是的不足,现在的很多网络都使用了利用单个高层特征(比如说Faster R-CNN利用下采样四倍的卷积层——Conv4,进行后续的物体的分类和bounding原创 2021-11-16 21:52:08 · 5184 阅读 · 0 评论 -
yolov1详解
YOLOv1YOLOv1是单阶段目标检测方法,不需要像Faster RCNN这种两阶段目标检测方法一样,需要生成先验框。Yolo算法采用一个单独的CNN模型实现end-to-end的目标检测。整个YOLO目标检测pipeline如上图所示:首先将输入图片resize到448x448,然后送入CNN网络,最后处理网络预测结果得到检测的目标。相比R-CNN系列算法,其是一个统一的框架,其速度更快,而且Yolo的训练过程也是end-to-end的。具体来说,YOLO将全图划分为S×SS×SS×S的格子,原创 2022-03-12 21:40:19 · 28641 阅读 · 16 评论 -
labelsmoothing
标签平滑-labellabellabel smoothingsmoothingsmoothing在深度学习样本训练的过程中,当我们采用 oneoneone-hothothot 标签去进行计算交叉熵损失时,只考虑到训练样本中正确的标签位置(oneoneone-hothothot 标签为 111 的位置)的损失,而忽略了错误标签位置(oneoneone-hothothot 标签为 000 的位置)的损失。这样一来,模型可以在训练集上拟合的很好,但由于其他错误标签位置的损失没有计算,导致预测的时候,预测错误的概原创 2022-03-10 19:48:29 · 221 阅读 · 0 评论 -
L1与L2正则的比较
L1L1L1与L2L2L2正则的区别正则化(RegularizationRegularizationRegularization) 是机器学习中对原始损失函数引入惩罚项,以防止过拟合或提高模型泛化性能的一类方法的统称。所谓惩罚是指对损失函数中的某些参数做一些限制。此时目标函数变成了原始损失函数+惩罚项,常用的正则项一般有两种,英文称作l1−norml_{1}−norml1−norm和l2−norml_{2}−norml2−norm,中文称作L1L1L1正则化和L2L2L2正则化,或者L1L1L1范数和原创 2022-03-10 19:26:50 · 795 阅读 · 0 评论 -
sigmoid与softmax的区别与联系
阅文原文Softmax与Sigmoid有哪些区别与联系?1. Sigmoid函数SigmoidSigmoidSigmoid函数也叫LogisticLogisticLogistic函数,将输入值压缩到(0,1)(0,1)(0,1)区间之中,其函数表达式为:Sigmoid(x)=11+e−xSigmoid(x) =\frac{1}{1+e^{-x}}Sigmoid(x)=1+e−x1函数图像如图所示:其求导之后的表达式为:Sigmoid′(x)=Sigmoid(x)⋅(1−Sigmoi原创 2022-03-09 22:47:15 · 997 阅读 · 0 评论 -
深度学习面经总结
1. BN层的作用(1)BN使得网络中每层输入数据的分布相对稳定,加速模型学习速度(2)BN使得模型对网络中的参数不那么敏感,简化调参过程,使得网络学习更加稳定(3)BN允许网络使用饱和性激活函数(例如sigmoid,tanh等),缓解梯度消失问题(4)BN具有一定的正则化效果详细内容学习2. 空洞卷积空洞卷积(dilated convolution)是针对图像语义分割问题中下采样会降低图像分辨率、丢失信息而提出的一种卷积思路。利用添加空洞扩大感受野,让原本 3×33\times 33×3的卷原创 2022-03-09 22:46:47 · 1526 阅读 · 0 评论 -
深度学习优化算法
深度学习各类优化器借用古代炼丹的一些名词,我们可以把训练模型中的数据比做炼丹药材,模型比做炼丹炉,火候比做优化器。那么我们知道,同样的药材同样的炼丹炉,但是火候不一样的话,炼出来的丹药千差万别,同样的对于深度学习中训练模型而言,有时候模型性能不好,也许不是数据或者模型本身的原因,而是优化器的原因。由此可见优化器对于深度学习来说是多么重要了,那么今天小编就带大家了解一些常见的优化器。优化算法设计原理深度学习中的优化算法采用的原理是梯度下降法,即最小化目标函数 $ J(\theta) $,最优化的求解过程原创 2022-03-09 20:44:00 · 2416 阅读 · 0 评论 -
bp前向传播和反向传播举例
2.4 简单阐述一下BP的过程?阅读原文1.基本概念BP(Back Propogation)算法是一种最有效的学习方法,主要特点是信号前向传递,而误差后向传播,通过不断调节网络权重值,使得网络的最终输出与期望输出尽可能接近,以达到训练的目的。前向过程中通过与正确标签计算损失,反向传递损失,更新参数,优化至最后的参数。而面试的过程中,我们可以拿出一支笔,给面试官直接说,“老师,我来直接写一个吧,您看看呗?”“你看哈,我这一个两层的神经网络。其中xxx是网络的输入,yyy是网络的输出,www是网络学习原创 2022-03-09 19:41:17 · 204 阅读 · 0 评论 -
add_with_concat
特征融合目前有两种常用的方式,一种是addaddadd操作,这种操作广泛运用于ResNetResNetResNet与FPNFPNFPN中。一种是ConcatConcatConcat操作,这种操作最广泛的运用就是UNetUNetUNet,DenseNetDenseNetDenseNet等网络中。如下图所示:也有如HRNetHRNetHRNet这样的,多分辨率之间使用addaddadd形式的特征融合。代码演示>>> import torch>>> img1 =原创 2022-03-09 19:26:41 · 176 阅读 · 0 评论 -
深度学习中梯度消失原因、梯度爆炸及解决方案
梯度消失产生的原因梯度消失产生的主要原因有:一是使用了深层网络,二是采用了不合适的损失函数。(1)目前优化神经网络的方法都是基于BP,即根据损失函数计算的误差通过梯度反向传播的方式,指导深度网络权值的更新优化。其中将误差从末层往前传递的过程需要链式法则(Chain Rule)的帮助。而链式法则是一个连乘的形式,所以当层数越深的时候,梯度将以指数形式传播。梯度消失问题一般随着网络层数的增加会变得越来越明显。在根据损失函数计算的误差通过梯度反向传播的方式对深度网络权值进行更新时,得到的梯度值接近0,也就是梯原创 2021-12-20 14:05:21 · 8668 阅读 · 0 评论 -
各类激活函数Activation Functions介绍及实现与优缺点分析
什么是激活函数?激活函数(Activation functions)对于神经网络模型学习与理解复杂和非线性的函数来说具有十分重要的作用。它们将非线性特性引入到我们的网络中。如果网络中不使用激活函数,网络每一层的输出都是上层输入的线性组合,无论神经网络有多少层,输出都是输入的线性组合。如果使用的话,激活函数给神经元引入了非线性因素,使得神经网络可以任意逼近任何非线性函数,此时神经网络就可以应用到各类非线性场景当中了。常见的激活函数如sigmoid、tanh、relu等,它们的输入输出映射均为非线性,这原创 2021-11-28 14:49:24 · 2737 阅读 · 0 评论 -
转置卷积和反卷积(Transposed Convolution/ DeConvolution)
反卷积(转置卷积)通常用来两个方面:CNN可视化,通过反卷积将卷积得到的feature map还原到像素空间,来观察feature map对哪些pattern相应最大,即可视化哪些特征是卷积操作提取出来的;(ZFNet可视化)FCN全卷积网络中,由于要对图像进行像素级的分割,需要将图像尺寸还原到原来的大小,类似upsampling的操作,所以需要采用反卷积;GAN对抗式生成网络中,由于需要从输入图像到生成图像,自然需要将提取的特征图还原到和原图同样尺寸的大小,即也需要反卷积操作。我们原创 2021-10-31 15:41:22 · 1750 阅读 · 0 评论 -
卷积入门学习示意图
附链接https://github.com/vdumoulin/conv_arithmetic原创 2021-10-30 22:40:27 · 1380 阅读 · 2 评论 -
VGG16整体框架图
链接查看:https://dgschwend.github.io/netscope/#/preset/vgg-16原创 2021-10-30 20:13:21 · 374 阅读 · 0 评论 -
模型集成(Model Ensemble)
模型集成(Model Ensemble)模型集成是融合多个训练好的模型,基于某种方式实现测试数据的多模型融合,这样来使最终的结果能够“取长补短”,融合各个模型的学习能力,提高最终模型的泛化能力。近年来,model ensemble已成刷榜神器。它可以应用在图像分割、分类、检测等领域。模型集成方法主要应用在几个模型差异性较大,相关性较小上。这样效果比较明显。常用的model ensemble方法有:投票(voting), 平均(averaging), 堆叠(Stacking),非交叉堆叠(Blendin原创 2021-10-27 22:38:06 · 5240 阅读 · 0 评论 -
一文让你通俗理解奇异值分解
特征值和奇异值分解一直困扰着大多数学者,只是了解到如何计算,但实际应用和理论基础理解并不深,我查看相关的资料和优秀博主的内容将总结如下:、奇异值分解是一个有着很明显的物理意义的一种方法,它可以将一个比较复杂的矩阵用更小更简单的几个子矩阵的相乘来表示,这些小矩阵描述的是矩阵的重要的特性。就像是描述一个人一样,给别人描述说这个人长得浓眉大眼,方脸,络腮胡,而且带个黑框的眼镜,这样寥寥的几个特征,就让别人脑海里面就有一个较为清楚的认识,实际上,人脸上的特征是有着无数种的,之所以能这么描述,是因为人天生就有着.原创 2021-10-20 14:40:09 · 2172 阅读 · 0 评论 -
AlexNet
AlexNet简介AlexNet网络,是2012年ImageNet竞赛冠军获得者Hinton和他的学生Alex Krizhevsky设计的。在那年之后,更多的更深的神经网路被提出,比如优秀的vgg,GoogleLeNet。其官方提供的数据模型,准确率达到57.1%,top 1-5 达到80.2%. 这项对于传统的机器学习分类算法而言,已经相当的出色。论文:《ImageNet Classification with Deep Convolutional Neural Networks》AlexNet创原创 2021-10-15 21:58:39 · 7566 阅读 · 3 评论 -
PyTorch入门
PyTorch 提供两种类型的数据抽象,称为张量和变量。张量类似于Numpy中的数组,它们也可以在GPU上使用,并能够改善性能。常见张量如下:标量(0维张量)向量(1维张量)矩阵(2维张量)3维张量切片张量4维张量5维张量GPU张量标量(0维张量)x = torch.rand(10)x.size()注:标量的类型通常是FloatTensor或LongTensor向量(1维向量)temp = torch.FloatT矩阵(2维向量)boston_tensor = to原创 2021-10-13 16:51:24 · 403 阅读 · 0 评论 -
Yolov5制作自己的数据集,图片标签重命名程序
制作自己的数据集,应该先进行格式重命名,以便于后期处理import osclass BatchRename(): ''' 批量重命名文件夹中的图片文件 ''' def __init__(self): self.path = r'E:\python学习资料\python数据处理\xiangduiying' #表示需要命名处理的文件夹 def rename(self): filelist = os.listdir(self.pa原创 2021-09-23 14:40:28 · 2060 阅读 · 0 评论 -
巧妙解决过拟合与欠拟合方法整理
解决欠拟合:添加其它特征项。组合、泛化、相关性、上下文特征、平台特征等特征是特征添加的重要手段,有时候特征项不够会导致欠拟合。添加多项式特征。例如将线性模型添加二次项或三次项使泛化能力更强。例如,FM(Factorization Machine)模型、FFM(Field-aware Factorization Machine)模型,其实就是线性模型,增加了二阶多项式,保证了模型一定的拟合程度。可以增加模型的复杂程度。减小正则化系数。正则化的目的就是用来防止过拟合的,但是先模型出现了欠拟合,则需要原创 2021-08-31 11:39:43 · 561 阅读 · 0 评论 -
如何提高神经网络的泛化能力?八大要点掌握
提高神经网络的泛化能力1. 使用更多数据在有条件的前提下,尽可能多地获取训练数据是最理想的方法,更多的数据可以让模型得到充分的学习,也更容易提高泛化能力。2. 使用更大批次在相同迭代次数和学习率的条件下,每批次采用更多的数据将有助于模型更好的学习到正确的模式,模型输出结果也会更加稳定。3. 调整数据分布大多数场景下的数据分布是不均匀的,模型过多地学习某类数据容易导致其输出结果偏向于该类型的数据,此时通过调整输入的数据分布可以一定程度提高泛化能力。4. 调整目标函数在某些情况下,目标函数的选择原创 2021-05-30 19:30:56 · 11562 阅读 · 1 评论