深度学习
文章平均质量分 69
打工人小飞
公众号:机器修行
展开
-
图像质量评估(IQA)——“NIMA: Neural Image Assessment” 论文解读
“NIMA: Neural Image Assessment” 是图像质量评估领域的经典之作,最近在做视频质量评估相关的项目,该文也是必读论文。论文链接就不放了,网上有比较多的下载资源,按照惯例,先放上该论文的引用信息:Talebi H, Milanfar P. NIMA: Neural image assessment[J]. IEEE Transactions on Image Processing, 2018, 27(8): 3998-4011.与笔者之前的一篇博文图像质量评估(IQA)——“Ko原创 2020-11-21 17:05:27 · 3463 阅读 · 1 评论 -
图像质量评估(IQA)——“KonCept512” 论文解读
解读之前,论文链接就不放了,网上有比较多的下载资源,先放上该论文的引用信息:Hosu V, Lin H, Sziranyi T, et al. KonIQ-10k: An ecologically valid database for deep learning of blind image quality assessment[J]. IEEE Transactions on Image Processing, 2020, 29: 4041-4056.不难看出,该论文《KonIQ-10k: An ec原创 2020-10-24 22:13:11 · 4266 阅读 · 5 评论 -
caffe 改动后的重新编译以及 pycaffe 安装过程中 warnings 解决
原生的 caffe 包含了一些基本的运算操作,如果要进行一些自定义操作,比如双线性插值放缩操作、L2 正则化等就需要把相应的实现添加进 caffe 源码,由于 caffe 源码由 C++ 编写,修改源码后需要重新编译。下面对具体的编译过程进行总结:1. 编译 caffe.proto 文件添加层时,需要在 /src/caffe/proto/caffe.proto 文件中注册,因为修改过 caff...原创 2018-10-31 19:32:18 · 6258 阅读 · 1 评论 -
GoogLeNet(Inception V1)总结
本文是对 “Going Deeper With Convolution” 的论文创新点的解读和总结,笔者在去年对该论文进行了全文翻译,原文翻译可点传送门:《Going Deeper With Convolution》全文译解,但当时仅限于翻译,并未对其中细节和创新点进行详细剖析。经典的东西需要细细品味,本文主要解读该论文的新点,也即 GoogLeNet 的网络结构。该论文发表于 CVPR 201...原创 2018-10-26 11:07:04 · 1319 阅读 · 0 评论 -
Network In Network 总结
本文是对《Network In Network》的论文解读和总结。该论文发表于 ICLR 2014,由新加坡国立大学(NUS)提出,自2014年发表至今,已有接近2K的引用量,其独特的网络结构成为卷积神经网络的革新,是经典的卷积神经网络的一个变种。注:博文中图片表格均来自原文1. 网络结构1.1 MLP卷积层NIN 具体在传统的卷积层上采用了大小为[1,1]的卷积核去替代,相当于进行了一...原创 2018-10-24 20:47:38 · 1437 阅读 · 0 评论 -
"Learning to Compose with Professional Photographs on the Web" 论文解读(二)(附代码与详细注释)
接着上篇博客:“Learning to Compose with Professional Photographs on the Web” 论文解读(一)(附代码与详细注释)进行讲解。上篇博客讲到了论文中数据的处理,该博客将介绍模型的构建、训练以及评估等部分内容,并附上详细的代码及注解。 上图是本文的模型架构,非常简单,输入为两个叠加的总共为6个通道的图像(原图与裁剪图),网络中的特征提取层...原创 2018-07-23 22:37:13 · 983 阅读 · 2 评论 -
"Learning to Compose with Professional Photographs on the Web" 论文解读(一)(附代码与详细注释)
最近在研究一篇论文 “Learning to Compose with Professional Photographs on the Web”,发表自 CVPR2017,论文地址链接:Learning to Compose with Professional Photographs on the Web。 如上图所示,利用深度学习的方式得到图片合适的取景位置是论文的主要目的所在。论文前面的...原创 2018-07-18 23:01:28 · 1261 阅读 · 0 评论 -
TensorFlow 中的 tf.app.flags 命令行参数解析模块
说道命令行参数解析,就不得不提到 python 的 argparse 模块,详情可参考博主之前的一篇博客:python argparse 模块命令行参数解析。在阅读相关工程的源码时,很容易发现 tf.app.flags 模块的身影。其作用与 python 的 argparse 类似。直接上代码实例,新建一个名为 test_flags.py 的文件,内容如下:#coding:utf-8...原创 2018-07-17 23:17:29 · 3151 阅读 · 0 评论 -
tf.variable_scope(), tf.name_scope(), tf.get_variable(), tf.Variable() 理解总结
许多的 TensorFlow 开源项目都会频繁出现 tf.variable_scope, tf.name_scope, tf.get_variable(), tf.Variable() ,今天来对此做一个总结。注意,tf.Variable() 有大写!首先来谈谈 tf.get_variable() 与 tf.Variable(),因为如果使用 variable() 的话每次都会新建变量,但...原创 2018-07-12 23:56:57 · 384 阅读 · 0 评论 -
对比 Caffe 中 train_val.prototxt 和 deploy.prototxt 文件
首先,这两个文件有一个最大的不同点,train_val.prototxt 文件是网络配置文件,该文件是在训练的时候用的。deploy.prototxt 文件是在测试时使用的文件。下面以 Caffe 官方给出的 mnist 训练相关的文件作出详细注释说明:name: "LeNet"layer { name: "mnist" #输入层的名称mnist type: "Dat...原创 2018-06-18 13:16:13 · 1660 阅读 · 0 评论 -
Caffe solver.prototxt 文件参数解析
solver 算是 Caffe 的核心的核心,它协调着整个模型的运作。Caffe 程序运行必带的一个参数就是solver 配置文件,solver.prototxt 文件是用来告诉 Caffe 如何训练网络的。下面以 Caffe 中的 mnist 实例进行简单明了的解释:1. net: "examples/mnist/lenet_train_test.prototxt"2. test_it...原创 2018-06-17 18:15:14 · 2915 阅读 · 0 评论 -
Caffe 图片数据转化为 lmdb 格式以及均值文件的计算
在 Caffe 中经常使用的数据类型是 lmdb 或 leveldb,而我们平时所用的图片格式为 jpg, png, tif 等,于是就产生了一个问题,如何从原始图片文件转换成 Caffe 中能够运行的 db(leveldb/lmdb)文件?在 Caffe 中,作者提供了一个用于将图片文件转换为 db 文件的可执行程序:convert_imageset,其调用格式如下所示: conve...原创 2018-06-16 13:43:30 · 617 阅读 · 0 评论 -
VGGNet 总结
本文是对《Very Deep Convolutional Networks for Large-Scale Image Recognition》的论文解读和总结。该论文发表于 ICLR2015,由牛津大学视觉几何组(Visual Geometry Group)和 DeepMind 公司提出,这也是 VGG 名字的由来。自2015年发表至今,已有超过7K的引用量,是 ILSVRC-2014 中定位任...原创 2018-05-28 16:46:21 · 11568 阅读 · 6 评论 -
AlexNet 总结
本文是对《ImageNet Classification with Deep Convolutional Neural Networks》的论文解读和总结。该论文发表于 NIPS2012,作者 Alex Krizhevsky 属于神经网络之父 Hinton 组,自2012年发表至今,已有1.3万的引用,实属经典。AlexNet 在 ISVRC2012(ImageNet Large Scale Vi...原创 2018-05-23 16:19:18 · 3009 阅读 · 1 评论 -
谈一谈交叉熵损失函数
关于损失函数的概念以及种类特点,可参看博主的博客: 常见的损失函数总结,谈到交叉熵,就不得不提信息熵的概念,同样可参看博主之前的博客:决策树之基 —— ID3 算法,博文中提到了信息熵的相关知识。有了上述两篇博文作为基础,此文不再赘述相关概念。交叉熵的离散函数形式交叉熵(cross entropy)是用来评估当前训练得到的概率分布与真实分布的差异情况,减少交叉熵损失就是在提高模型的预...原创 2018-05-22 16:31:40 · 4155 阅读 · 0 评论 -
TensorFlow 指定 GPU 训练模型
Linux 查看当前服务器 GPU 的占用情况可以使用 nvidia-smi 命令,如下所示:nvidia-smi关于 nvidia-smi 命令输出的详细解释,可参考笔者的另外一篇博客:GPU状态监测 nvidia-smi 命令详解。在此不再赘述,本文主要分享一下在用 TensorFlow 训练模型时如何指定 GPU。在用 TensorFlow 训练深度学习模型的时候,若无手...原创 2018-05-12 16:02:14 · 2048 阅读 · 0 评论 -
常见的损失函数总结
损失函数(loss function)用来估量模型的预测值 f(x)f(x) 与真实值 YY 的不一致程度,损失函数越小,模型的鲁棒性就越好。损失函数是经验风险函数的核心部分,也是结构风险函数的重要组成部分。模型的结构风险函数包括了经验风险项和正则项,通常可以表示成如下式子: Rsrm(f)=1N∑i=1NL(yi,f(xi))+λJ(f)R_{srm}(f)=\frac{1}{N}\sum_{i原创 2018-04-13 17:07:45 · 4146 阅读 · 0 评论 -
如何解决梯度消失和梯度爆炸?
何为梯度消失,梯度爆炸?目前优化神经网络的方法都是基于反向传播的思想,即根据损失函数计算的误差通过梯度反向传播的方式,指导深度网络权值的更新优化。这样做是有一定原因的,首先,深层网络由许多非线性层堆叠而来,每一层非线性层都可以视为是一个非线性函数 f(x)f(x)f(x) (非线性来自于非线性激活函数),因此整个深度网络可以视为是一个复合的非线性多元函数 : F(x)=fn(...f3(f2...原创 2018-04-09 13:29:00 · 18748 阅读 · 0 评论 -
总结 Logistic 回归与 Softmax 回归联系与区别
Logistic 回归与 Softmax 回归是两个基础的分类模型,虽然听名字像是回归模型,实际上并非如此。Logistic 回归,Softmax 回归以及线性回归都是基于线性模型。其实 Softmax 就是 Logistic 的推广,Logistic 一般用于二分类,而softmax 是多分类。逻辑回归的激活函数是 sigmoid 函数,可理解成一个被 sigmoid 函数归一化后的线性回归,si原创 2018-04-03 13:27:59 · 12387 阅读 · 6 评论 -
简述 TensorFlow 计算模型——计算图
Tensorflow 是一个通过计算图的形式来表述计算的编程系统,计算图也叫数据流图,可以把计算图看做是一种有向图,Tensorflow 中的每一个计算都是计算图上的一个节点,而节点之间的边描述了计算之间的依赖关系。一个计算图实例:relu = tf.nn.relu(tf.matmul(w, x) + b)TensorFlow 的计算机制TensorFlow 中的 Tenso r表示张量(多维数组)原创 2018-03-26 15:54:12 · 5328 阅读 · 0 评论 -
常用的激活函数对比
神经网络中激活函数的主要作用是提供网络的非线性建模能力,如不特别说明,激活函数一般而言是非线性函数。假设一个示例神经网络中仅包含线性卷积和全连接运算,那么该网络仅能够表达线性映射,即便增加网络的深度也依旧还是线性映射,难以有效建模实际环境中非线性分布的数据。加入(非线性)激活函数之后,深度神经网络才具备了分层的非线性映射学习能力。因此,激活函数是深度神经网络中不可或缺的部分。在ICML2016的一篇原创 2018-03-19 16:04:58 · 9835 阅读 · 1 评论 -
谈一谈正则化
要理解正则化,首先需要了解过拟合的概念,关于过拟合,笔者在前面的博文中有专门提到,详情可参见博文:过拟合与欠拟合简要总结 以及 如何解决过拟合问题。下面结合 NG 的公开课、网络上资源解读以及自己的一些理解,对正则化做相关阐述:以 NG 公开课中的房价预测问题为背景,展开讨论。 在机器学习中,过多的变量(特征),同时只有非常少的训练数据,会导致出现过度拟合的问题。因此为了解决过度拟合,有以下两个办原创 2018-03-17 21:23:32 · 680 阅读 · 0 评论 -
如何解决过拟合问题?
如何降低过拟合?这是深度学习中非常重要的问题。关于过拟合的相关概念和过拟合带来的危害,可参考笔者之前的博客:过拟合与欠拟合简要总结。如何解决过拟合?1. 获取和使用更多的数据集对于解决过拟合的办法就是给与足够多的数据集,让模型在更可能多的数据上进行“观察”和拟合,从而不断修正自己。然而事实上,收集无限多的数据集几乎是不可能的,因此一个常用的办法就是调整已有的数据,添加大量的“噪音”,或者对图像进行锐原创 2018-03-04 14:50:26 · 29190 阅读 · 1 评论 -
BP 神经网络中的基础算法之二 —— 梯度下降算法
在求解机器学习算法的模型参数,即无约束优化问题时,梯度下降(Gradient Descent)是最常采用的方法之一,另一种常用的方法是最小二乘法,关于最小二乘法,可参考笔者的上一篇博客 BP 神经网络中的基础算法之一 —— 最小二乘法。何为梯度?在微积分里面,对多元函数的参数求∂偏导数,把求得的各个参数的偏导数以向量的形式写出来,就是梯度。比如函数 f(x,y)f(x,y), 分别对 x,y 求偏导原创 2018-02-06 21:03:10 · 2857 阅读 · 0 评论 -
BP 神经网络中的基础算法之一 —— 最小二乘法(LS 算法)
最小二乘法(LS 算法)是统计分析中最常用的逼近计算的一种算法,其交替计算结果使得最终结果尽可能地逼近真实结果。LS 算法是一种数学优化技术,也是一种机器学习常用算法。它通过最小化误差的平方和寻找数据的最佳函数匹配。利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和最小。最小二乘法还可用于曲线拟合,其他一些优化问题也可通过最小化能量或最大化熵用最小二乘法来表达。若原创 2018-02-06 16:26:42 · 6959 阅读 · 0 评论 -
后台执行命令 nohup 以及强制结束进程命令 kill
通过终端远程操作服务器时,难免要使特定进程处于持续运行状态,例如深度学习训练网络参数,但又不可能长时间不间断操作终端,我们希望将进程保持后台持续运行,这里提供两个思路:(1)docker 内运行,退出但不终止程序;(2)nohup 命令与 & 结合。这里只讲第二个思路:nohup 命令与 & 结合。举个例子,我们需要保持 test.py 程序的持续运行(用于长时间训练神经网络),并且将控制台输出重定原创 2018-02-01 19:18:05 · 23518 阅读 · 1 评论 -
GPU状态监测 nvidia-smi 命令详解
在进行深度学习实验时,GPU 的实时状态监测十分有必要。今天详细解读一下 nvidia-smi 命令。上图是服务器上 GeForce GTX 1080 Ti 的信息,下面一一解读参数。 上面的表格中的红框中的信息与下面的四个框的信息是一一对应的:GPU:GPU 编号; Name:GPU 型号; Persistence-M:持续模式的状态。持续模式虽然耗能大,但是在新的GPU应用启动时,花费的时原创 2018-02-01 16:43:13 · 77971 阅读 · 4 评论 -
训练集、验证集与测试集回顾总结
在 NG 的课程、西瓜书以及 Goodfellow 的 《DeepLearning》 书中都有提到:最佳的数据划分是将数据分为三部分,分别为训练集(trainning set),验证集(validation set)和测试集(test set)。相信对绝大多数刚刚步入机器学习或是深度学习门槛的小鲜肉都会有点困惑,这次博文,写给新人!也作为笔记。Training Set : a subset of t原创 2017-12-17 13:09:59 · 2697 阅读 · 0 评论 -
pytorch 模拟关系拟合——回归
本次用 pytroch 来实现一个简单的回归分析,也借此机会来熟悉 pytorch 的一些基本操作。1. 建立数据集import torchfrom torch.autograd import Variableimport matplotlib.pyplot as plt# torch.linspace(-1,1,100)表示返回一个一维张量,包含在区间 -1到1 上均匀间隔的100个点;#原创 2017-12-06 16:52:53 · 2272 阅读 · 0 评论 -
centos7 搭建 python35+pip3+pytorch 深度学习环境
pytorch 自去年年底诞生以来日趋火爆。PyTorch 是 Torch 在 Python 上的衍生. 因为 Torch 是一个使用 Lua 语言的神经网络库, Torch 很好用, 但是 Lua 又不是特别流行, 所有开发团队将 Lua 的 Torch 移植到了更流行的语言 Python 上。下面主要讲讲在 centos 7 下的环境搭建。1. 安装 python35centos 7 自带的 p原创 2017-12-05 17:41:32 · 7638 阅读 · 0 评论 -
centos 7 下搭建 tensorflow+keras 深度学习环境
之前在阿里云服务器上搭建过 docker+tensorflow+keras 的深度学习环境,由于服务器停用等一系列问题,不得不在本地服务器重新搭建环境,本次以 root 用户直接操作,不再使用 docker 容器。作为分享和备忘,特此记录。1.python2.7.5 安装centos 系统自带 python,此步骤可省略(Mac Os 同样可省略此步骤),当然,也可升级 python3.x 版本。原创 2017-11-22 17:31:16 · 6822 阅读 · 1 评论 -
过拟合与欠拟合简要总结
在做深度学习实验时,有时候会出现实现结果令人寻味的现象,例如训练处的模型在训练集上的效果很好,而在测试集上效果较差等等。过拟合当某个模型过度的学习训练数据中的细节和噪音,以至于模型在新的数据上表现很差,我们称过拟合发生了。这意味着训练数据中的噪音或者随机波动也被当做概念被模型学习了。而问题就在于这些概念不适用于新的数据,从而导致模型泛化性能的变差。简单理解就是训练样本的得到的输出和期望输出基本一致,原创 2017-06-08 21:49:55 · 9487 阅读 · 0 评论 -
《Going Deeper With Convolution》全文译解
最近和组员在一起准备一个专业英语论文的演讲,选择了2014年发表在CVPR上的一篇非常著名的论文——《Going Deeper With Convolution》。所以和组员一起把这篇论文翻译了一下,当然也参考了网络上其他资源,在此不一一列出,其中包含了组员的各种见解和体会,原文影响深远,是 Google 等单位的智慧结晶,若有纰漏,还望指正。同时感谢甘扬静同学的校验。以下为《Going Deepe翻译 2017-04-21 18:12:12 · 7374 阅读 · 1 评论