
深度学习 点滴
学习工作中遇到的关于Python、DL、ML的问题
今 晚 打 老 虎
消除恐惧的最好办法就是面对恐惧
展开
-
局部特征HOG、SIFT、LBP
HOG:Histogram of Oriented Gradient,方向梯度直方图主要思想:HOG主要捕获轮廓信息,在一副图像中,局部目标的表象和形状(appearance and shape)能够被梯度或边缘的方向密度分布很好地描述。因为是局部特征,直接对较大的区域进行提取HOG难度大效果差,故需要将图像分为多patch,分别计算HOG特征。分割时,有overlap和non-overl...原创 2020-03-29 14:02:33 · 607 阅读 · 0 评论 -
SVM原理,SVM核函数、SVM的软间隔和硬间隔的区别、惩罚系数对SVM的影响
SVM可以用于解决二分类或者多分类问题,此处以二分类为例。SVM的目标是寻找一个最优化超平面在空间中分割两类数据,这个最优化超平面需要满足的条件是:离其最近的点到其的距离最大化,这些点被称为支持向量SVM只和分类界限上的支持向量点有关,换而言之只和局部数据有关推导过程:核函数:对于输入空间中的非线性分类问题,可以通过非线性变换将它转化为某个维特征空间中的线性分类问题,在高维特征...原创 2020-03-29 14:02:43 · 5143 阅读 · 0 评论 -
LR的原理及损失函数,和线性回归的区别
逻辑回归本质上是线性回归,只是在特征到结果的映射中加入了一层逻辑函数sigmoid(z),即先把特征线性求和,然后使用函数sigmoid(z)作为假设函数来预测。求解过程:而sigmoid 的导数是:逻辑回归用来分类0/1 问题,也就是预测结果属于0 或者1 的二值分类问题。这里假设了二值满足伯努利分布,也就是所以对于训练集,其极大似然函数是:先...原创 2020-03-29 14:02:54 · 845 阅读 · 0 评论 -
PCA 和LDA
原理:主成分分析(PCA)是一种数据降维技巧,它能将大量相关变量转化为一组很少的不相关变量,这些无关变量称为主成分。PCA本质上是将方差最大的方向作为主要特征,并且在各个正交方向上将数据“离相关”,也就是让它们在不同正交方向上没有相关性。而方差最大的那个维度是主成分。步骤:设有m条n维数据(m条数据,n种特征)1)将原始数据按列组成n行m列矩阵X2)将X的每一行(代表一个属性字...原创 2020-03-30 14:59:41 · 219 阅读 · 0 评论 -
Focal Loss解决什么问题、如何写,每个参数作用
Focal loss主要是为了解决one-stage目标检测中正负样本比例严重失衡的问题。该损失函数降低了大量简单负样本在训练中所占的权重,也可理解为一种困难样本挖掘原始的交叉熵损失此时的损失函数在大量简单样本的迭代过程中比较缓慢且可能无法优化至最优。focal loss添加参数γ,当γ大于0时,对于易分的正样本或负样本,权重小,而对于难区分的样本则权重大,避免让简单样本主...原创 2020-03-29 14:04:25 · 3643 阅读 · 3 评论 -
OHEM
思想:选择一些hard example作为训练的样本从而改善region-based网络参数效果,hard example指的是有多样性和高损失的样本。 本文在Fast R-CNN的基础上做了改进,在每次minibatch(1张或者2张)训练时加入在线筛选hard region的策略 OHEM适合于batch size(images)较少,但每张image的proposal很多的情况...原创 2020-03-29 14:04:17 · 274 阅读 · 0 评论 -
Faster R-CNN、Fast R-CNN、SSD、YOLO区别
R-CNN:过程:先用Selective Search提取候选框 然后将候选框强制到227*227 之后用AlexNet提取特征 最后将特征用SVM分类优点:相对于传统方法用HOG或者SITF提取特征,本文用CNN来提取特征缺点:两千多个候选框分别送入CNN提特征,时间消耗大 三个阶段分开训练,中间数据还要保存,空间消耗大Fast R-CNN:过程:...原创 2020-03-29 14:04:04 · 8279 阅读 · 1 评论 -
SSD实现细节
目标检测主要分两类:One-stage:Yolo,SSD均匀地在图片的不同位置进行密集抽样,抽样时可以采用不同尺度和长宽比,然后利用CNN提取特征后直接进行分类与回归,速度快,准确率低但是均匀的密集采样的一个重要缺点是训练比较困难,这主要是因为正样本与负样本(背景)极其不均衡Two-stage:R-CNN, Fast R-CNN, Faster R-CNN先通过Selectiv...原创 2020-03-29 14:03:55 · 564 阅读 · 0 评论 -
R-CNN、Fast R-CNN、Faster R-CNN实现
R-CNN:传统的目标检测算法:使用穷举法(不同大小比例的滑窗)进行区域选择,时间复杂度高对提取的区域进行特征提取(HOG或者SIFT),对光照、背景等鲁棒性差使用分类器对提取的特征进行分类(SVM或Adaboost)R-CNN的过程:采用Selective Search生成类别独立的候选区域使用AlexNet来提取特征,输入是227*227...原创 2020-03-29 14:03:41 · 815 阅读 · 0 评论 -
Soft-NMS原理、和NMS的区别
NMS:《NMS:Efficient Non-Maximum Suppression》非极大值抑制,即保留局部最大值而去除局部非最大值过程:假设对于某个类别C,假设当前有N个矩形框,这里假设6个,ABCDEFG首先对这些矩形框按照概率降序排列,选中概率最大的框对于剩下的框,依次与概率最大的框求IOU,如果IOU大于某个阈值,则将这些框丢弃(置0),并标记保留最大概率框完...原创 2020-03-29 14:03:24 · 3096 阅读 · 0 评论 -
IOU计算过程
IOU即交并比,InterSection over Union。首先,给出每个box的两组坐标,怎么判断重叠?第一种思路:如果不重叠,一个盒子一定在另一个的上下左右第二种思路:如果重叠,找到重叠区域,看这个区域的长宽是否为正根据第二种思路,就可以计算重叠面积了,即InterSection。假设Box1的左上坐标(x1,y1),右下坐标(x2,y2)Box2的左上坐标...原创 2020-03-29 14:03:10 · 2074 阅读 · 2 评论 -
YoloV1、YoloV2和YoloV3实现细节和区别
YoloV1:对比R-CNN出处:《You Only Look Once: Unified, Real-Time Object Detection》背景:RCNN存在region proposal 过程,Selective Search每张图花费1~2秒,不能做到real-timeProposals太多会出现很多假阳例思想:提出一个简单的卷积神经网络同时预测边框和预测类...原创 2020-03-26 15:40:30 · 4717 阅读 · 0 评论 -
LSTM原理及其如何处理梯度弥散问题
RNN:循环神经网络(下面简称RNNs)可以通过不停的将信息循环操作,保证信息持续存在长依赖存在的问题:当有用信息与需要该信息的位置距离较近时,RNNs能够学习利用以前的信息来对当前任务进行相应的操作当有用信息与需要该信息的位置距离较远时,这样容易导致RNNs不能学习到有用的信息,最终推导的任务可能失败LSTM:Long Short Term Memory ne...原创 2020-03-26 15:31:15 · 1520 阅读 · 0 评论 -
MobileNet实现细节
群卷积:假设上一层的输出feature map有N个,即通道数channel=N。再假设群卷积的群数目M。则先将channel分成M份。每一个group对应N/M个channel,与之独立连接。然后各个group卷积完成后将输出叠在一起(concatenate),作为这一层的输出channel。Depthwise Convolution:像Xception里那样,当群数目是上一层的...原创 2020-03-26 15:29:27 · 367 阅读 · 0 评论 -
上采样、转置卷积、上池化
上采样:UnSampling阶段没有使用MaxPooling时的位置信息,而是直接将内容以插值方式来扩充Feature Map,属于人工特征工程,没有要学习的参数常用的上采样插值方法有:最近邻插值(Nearest neighbor interpolation)双线性插值(Bi-Linear interpolation)双立方插值(Bi-Cubic interpolation)...原创 2020-03-26 15:27:52 · 2382 阅读 · 0 评论 -
SoftMax计算
Softmax的作用简单的说就计算一组数值中每个值的占比原创 2020-03-26 15:25:08 · 882 阅读 · 0 评论 -
precision 和recall计算
原创 2020-03-26 15:24:10 · 11900 阅读 · 1 评论 -
卷积、池化的尺度变化、参数数量
尺度:参数量:原创 2020-03-26 15:22:41 · 731 阅读 · 1 评论 -
Max Pool和Average Pool区别、哪个好
特征提取的误差主要来自两个方面:邻域大小受限造成的估计值方差增大;卷积层参数误差造成估计均值的偏移。Average-Pooling能减小第一种误差,更多的保留图像的背景信息,强调对整体特征信息进行一层下采样,在减少参数维度的贡献上更大一点,更多的体现在信息的完整传递这个维度上Max-Pooling能减小第二种误差,更多的保留纹理信息,Max-Pooling感觉更像是做了...原创 2020-03-26 15:19:25 · 4171 阅读 · 0 评论 -
Train Loss不降、Valid Loss不降、Test Loss不降的原因及解决
训练损失不下降,拟合能力不足,欠拟合模型结构和特征工程:原因:模型结构过于简单或者不合理,训练时很难收敛,再者可能是特征工程出现问题解决:检查模型结构是不是太小太简单和特征工程是否合理权重初始化:原因:不合理的权重初始化会导致收敛极慢,合理的权重初始化能改有极大改善解决:选择适合自己模型的权重初始化,建议无脑xaiver normal正则化:原因:L1、L2、Dro...原创 2020-03-26 15:17:42 · 9195 阅读 · 0 评论 -
Dropout原理、参数、训练预测的时候分别怎么做
出处:《Dropout: A Simple Way to Prevent Neural Networks from Overfitting》原理:Dropout可以防止过拟合,某次训练时,随机让某些节点失活,输出为0且不更新权重,通常设置一个参数P,每个输出节点以概率P置0,所以大约每次使用了(1-P)比例的输出。测试时,去掉Dropout层,将所有输出利用,但是需要对齐尺度,即缩小...原创 2020-03-08 19:20:08 · 4785 阅读 · 0 评论 -
BN原理、可训练参数、训练预测的时候分别怎么做
出处:《Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift》IID假设:独立同分布假设:训练数据和测试数据的分布相同是训练的模型能够在测试集上获得好效果的保障而BN就是使得在训练过程中每一层的输入都保持相同的分布再者,随着网络的加深,训练变得更加...原创 2020-03-08 19:16:41 · 7635 阅读 · 0 评论 -
Xception与Depthwise Separable Convolution
出处:《Xception:Deep Learning with Depthwise Separable Convolutions》背景:Inception模块是一大类在ImageNet上取得顶尖结果的模型的基本模块,例如GoogLeNet、Inception V2/V3和Inception-ResNet。有别于VGG等传统的网络通过堆叠简单的3*3卷积实现特征提取,Inception模...原创 2020-03-08 18:11:37 · 211 阅读 · 0 评论 -
VGG
出处:《Very Deep Convolutional Networks for Large Scale Image Recognition》摘要:证明了增加网络的深度能够在一定程度上影响网络最终的性能,使错误率大幅下降,同时拓展性又很强,迁移到其它图片数据上的泛化性也非常好。网络结构:VGG-16:2*Conv+MP+2*Conv+MP+3*Conv+MP+3*Conv+M...原创 2020-03-08 18:09:32 · 287 阅读 · 0 评论 -
ResNet
出处:《Deep Residual Learning for Image Recognition》背景:如果神经网络越来越深,这个神经网络可能会出现退化(degradation) 的现象。这里说的退化是指网络层级加深后,训练的准确率却可能出现饱和的现象。通俗来讲,就是在一个浅层的网络模型上进行改造,然后将新的模型与原来的浅层模型相比较,这里有个底线就是,改造后的模型至少不应该比原来...原创 2020-03-08 18:06:42 · 320 阅读 · 0 评论 -
AlexNet
出处:《ImageNet Classification with Deep Convolutional Neural Networks》AlexNet在2012年的ImageNet比赛上夺冠背景:之前目标检测和识别任务对数据量要求比较大,AlexNet共有五层卷积和三层全连接,实验中其表示网络深度会对网络性能产生影响。网络结构:五层卷积和三层全连接,输入维度是224*224...原创 2020-03-08 18:02:23 · 243 阅读 · 0 评论 -
Pytorch保存模型用于测试和用于继续训练的区别
保存模型保存模型仅仅是为了测试的时候,只需要torch.save(model.state_dict, path)path 为保存的路径但是有时候模型及数据太多,难以一次性训练完的时候,而且用的还是 Adam优化器的时候, 一定要保存好训练的优化器参数以及epochstate = { 'model': model.state_dict(), 'optimizer':optimizer...转载 2020-03-03 19:58:08 · 1279 阅读 · 1 评论 -
pytorch之余弦损失
import torch x = torch.FloatTensor(torch.rand([10]))y = torch.FloatTensor(torch.rand([10])) similarity = torch.cosine_similarity(x, y, dim=0)loss = 1 - similarity原创 2020-03-03 19:53:40 · 8559 阅读 · 0 评论 -
Pytorch中backward(retain_graph=True)的 retain_graph参数解释
每次 backward() 时,默认会把整个计算图free掉。一般情况下是每次迭代,只需一次 forward() 和一次backward() ,前向运算forward() 和反向传播backward()是成对存在的,一般一次backward()也是够用的。但是不排除,由于自定义loss等的复杂性,需要一次forward(),多个不同loss的backward()来累积同一个网络的gra...转载 2020-02-28 16:41:26 · 10920 阅读 · 2 评论 -
pytorch迁移学习中parameters requires_grad=False和optimizer优化参数的探讨
首先背景是迁移学习,以VGG16网络为例,固定他的特征提取层,优化他的全连接分类层。有的书上写了:for param in vgg.features.parameters(): param.requeires_grad=False然后在定义优化器的时候,又写了下面的代码:optimizer=optim.SGD(vgg.classifier.paramters(),...转载 2020-02-16 19:48:28 · 1994 阅读 · 0 评论 -
pytorch加载预训练权重时的错误 urlopen error [Errno -3] Temporary failure in name resolution
错误发生在下载网络权重的时候,CentOS71.打开配置文件vim /etc/resolv.con2.将下列内容添加到文件中#nameserverxxx 这行是打开文件时候就有的,无需改动nameserver 8.8.8.8nameserver 114.114.114.114...原创 2020-02-16 19:46:48 · 2197 阅读 · 1 评论 -
Pytorch的model.train和model.eval
使用PyTorch进行训练和测试时一定注意要把实例化的model指定train/eval,eval()时,框架会自动把BN和DropOut固定住,不会取平均,而是用训练好的值,不然的话,一旦test的batch_size过小,很容易就会被BN层导致生成图片颜色失真极大!!!!!!model.train()启用 BatchNormalization 和 Dropoutmodel.e...转载 2020-02-15 20:02:07 · 248 阅读 · 0 评论 -
Python中List的复制(直接复制、浅拷贝、深拷贝)
直接赋值:如果用 = 直接赋值,是非拷贝方法。这两个列表是等价的,修改其中任何一个列表都会影响到另一个列表。old = [1,[1,2,3],3]new = []for i in range(len(old)): new.append(old[i])new[0] = 3new[1][0] = 3'''-----------------------Before...原创 2020-02-05 17:22:56 · 84562 阅读 · 13 评论 -
梯度下降算法对比
损失函数为凸函数时,梯度下降一定可以得到全局最优解原创 2019-05-23 23:50:26 · 393 阅读 · 0 评论 -
激活函数的对比
原创 2019-05-23 23:47:45 · 297 阅读 · 0 评论 -
梯度消失或者梯度爆炸
为什么会出现梯度消失或者梯度爆炸?在bp的链式求导过程中,连乘第二部分是sigmoid的导数,bp的推导过程.note对于sigmoid函数:其导数为:通过简单求导变换就可以得到,范围在0-0.25对于多层的神经网络,连乘中还包含w权值,如果bp过程中sigmoid的导数最大也就0.25,而且通常初始化参数一般小于1,所以其中的就会小于1,当网络很深时,多...原创 2019-05-23 23:43:54 · 242 阅读 · 0 评论 -
GAN公式推导详解
在推导GAN公式之前,需要预备一些数学期望和KL散度的知识点一、数学期望的定义期望:在概率论中,将实验中每次可能产生的结果的概率乘以其结果的总和,反映随机变量平均取值的大小。根据其随机变量的取值范围不同,分为离散型和连续型对于连续型随机变量x,其概率密度函数为f(x),则X的数学期望E(x)可以表示成微积分的形式二、KL散度的定义KL散度:在信息论中,用生成的概率...转载 2019-09-03 19:24:26 · 9507 阅读 · 4 评论 -
后向传播的简单推导过程
对于如下简单的神经网络,其输入是i1,i2,输出是o1,o2,w,b参数如下所示:暂时不考虑具体数值,在bp过程中,我们会对每个参数做梯度下降,这里考虑最简单的梯度下降方式假设以均方误差作为损失函数:这里w5,w6,w7,w8类似,过程如下:以w5为例,对于梯度下降过程:这里需要求而η是学习率。对于根据链式求导法则:第一...原创 2019-05-23 23:39:22 · 1334 阅读 · 0 评论 -
Github下载慢和下载过程中断等情况的解决方案
最近老大push项目,正常的gitclone每次都是下载一部分就断掉了。尝试了修改hosts文件的方式,更换了延迟最低的域名也没啥用(难道我姿势不对?)正确姿势:1.复制你需要下载的git链接,如https://github.com/cayden/facesample.git2.打开码云(当然不是福报)https://gitee.com/并注册登录3.创...原创 2019-05-15 16:08:32 · 22252 阅读 · 22 评论 -
深度学习中的Batch normalization
批规范化(Batch normalization)是深度学习中经常见到的一种训练trick,指在采用梯度下降法训练DNN时,对网络层中每个mini-batch的数据进行归一化,使其均值变为0,方差变为1,其主要作用是缓解DNN训练中的梯度消失/爆炸现象,加快模型的训练速度。 下面是作者原论文中的算法介绍: 关于BN的两点理解: 1.为什么它能缓解DNN训练中的梯度消失/爆炸现象? 关于梯...转载 2018-08-07 20:18:51 · 372 阅读 · 0 评论