在Gan生成对抗神经网络中会用到Jensen不等式,因此做下记录。 Jensen不等式告诉我们:如果f ff是在区间[ a , b ] 上的凸函数(就是导数一直增长的函数,或者说是导数的导数大于0的函数),x 是随机变量,那么有: 也就是说函数f ff的期望大于等于期望的函数。 下面来看看怎么证明,我们假设x 1 , x 2 , . . . . . . x n都是区间[ a , b ]内的数,且x
本篇文章是之前期望极大算法(EM算法)文章的后续,有需要可以先看看那篇文章关于EM算法的推导。 高斯混合模型 高斯混合模型是研究算法的人避不开的一个东西,其在非深度学习的远古时代经常被用到,比如图像处理任务的前背景提取,点云处理任务的点云聚类等等等等。 具体的,高斯混合模型是指具有如下形式的概率分布模型: 称为第k 个分模型。 Q 函数的一般表达 在算法处理的过程中,将问题建模成高斯混合模型
由上面一篇文章我们已经知道了,如果我们从真实数据分布里面取n个样本,根据给定样本我们可以列出其出现概率的表达式,那么生成这N个样本数据的似然(likelihood)就是 那么下面我们来看看GAN的推导。 在极大似然估计中,我们假定要求的事物有一个固定的模型,写作,但这个模型十分复杂,我们无法完全彻底的去刻画它,只能列一个带有参数的式子,然后用模型抽样出来的样本去估计出这个参数到底最有可能是什么。
上一篇文章我们简单介绍了信息熵的概念,知道了信息熵可以表达数据的信息量大小,是信息处理一个非常重要的概念。 注意,我们前面在说明的时候log 是以2为底的,但是一般情况下在神经网络中,默认以e 为底,这样算出来的香农信息量虽然不是最小的可用于完整表示事件的比特数,但对于信息熵的含义来说是区别不大的。其实只要这个底数是大于1的,都能用来表达信息熵的大小。 本篇我们来看看机器学习中比较重要的一个
上一篇文章我们强力推导了GAN的数学公式,它就是: 在我们训练D 网络的时候,我们要让V 最大化,当我们训练G 网络的时候我们要让V最小化,就是这么简单。因此哪怕数学推导那篇五六千字的博客不想看,实做也可以做。 实做上比较大的一个问题是我们实际上不能获取到全部真实图像样本和全部拟合图像样本。因此上面这道公式在实做上是搞
得益于神经网络崛起,卷积成为近些年大热的数学词汇,不再只是待在信号处理这门要命的课程之中。 关于卷积在图像处理中的应用,操作部分看上图就明白了:假设输入图像的大小为 5 x 5,局部感受野(或称卷积核)的大小为 3 x 3,那么输出层一个神经元所对应的计算过程如上图所示。动态一点的话也可以看下面的动图。 &nb
在做图像语言分隔的时候,我们往往需要计算出像素精确度,交并比等值来评估我们的算法或者神经网络的表现。本篇文章着重介绍如何用numpy实现像素精确度、平均像素精确度、平均交并比和加权的交并比的计算。 在正式开始之前需要先掌握几个numpy的函数和编程技巧。 bincount函数 功能:实现个数的统计。 示例:假设有numpy数组: &nb
上一篇文章我们已经了解了似然函数是什么,但怎么去把里面的θ θθ给求出来是个更加关键的问题。这篇我们将来探讨下这个问题。 还是先举一个例子,假设有一个造币厂生产某种硬币,现在我们拿到了一枚这种硬币,想试试这硬币是不是均匀的。即想知道抛这枚硬币,正反面出现的概率(记为θ )各是多少? 这是一个统计问题,回想一下,解决统计问题需要什么? 数据!
似然(likelihood)这个词其实和概率(probability)是差不多的意思,但是在统计里面,似然函数和概率函数却是两个不同的概念。 对于函数:P ( x ∣ θ ) P ( x | \theta )P(x∣θ),它的意思是在θ \thetaθ发生的情况下,x xx发生的概率。如果该函数描述的是一个数学模型,则两个输入:x xx表示某一个具体的数据;θ θθ表示模
mnist是在图像机器学习占据“Hello World”地位的库。下载地址如下:http://yann.lecun.com/exdb/mnist/ train-images-idx3-ubyte(训练集数据,存放训练图像的集合) train-labels-idx1-ubyte(训练集标签,存放训练图像属于1~9中的哪一个) t10k-images-idx3-ubyte(测试集数据,存放测试图
上一篇文章:深度学习2—任意结点数的三层全连接神经网络 距离上篇文章过去了快四个月了,真是时光飞逝,之前因为要考博所以耽误了更新,谁知道考完博后之前落下的接近半个学期的工作是如此之多,以至于弄到现在才算基本填完坑,实在是疲惫至极。 上篇文章介绍了如何实现一个任意结点数的三层全连接神经网络。本篇,我们将利用已经写好的代码,搭建一个输入层、隐含层、输出层分别为784
上一篇文章:深度学习1—最简单的全连接神经网络 我们完成了一个三层(输入+隐含+输出)且每层都具有两个节点的全连接神经网络的原理分析和代码编写。本篇文章将进一步探讨如何把每层固定的两个节点变成任意个节点,以方便我们下一篇文章用本篇文章完成的网络来训练手写字符集“mnist”。 对于前向传播,基本上没有什么变化,就不用说了。主要看看后向传播的梯度下
本文有一部分内容参考以下两篇文章: 一文弄懂神经网络中的反向传播法——BackPropagation 神经网络 最简单的全连接神经网络如下图所示(这张图极其重要,本文所有的推导都参照的这张图,如果有兴趣看推导,建议保存下来跟推导一起看): 它的前向传播计算过程非常简单,这里先讲一下:
前面一篇文章我们介绍了怎么在win10下搭建Yolo v3的开发环境。 这篇文章我们将着重介绍YOLO动态链接库的编译,还有如何正确的使用编译出来的Yolo动态链接库进行目标的识别。 首先是编译,对应的工程是“yolo_cpp_dll.sln”,其环境的配置跟上篇文章所讲的“darknet.sln”可以说完全一样,因此不再赘述。需要注意的是这里我们直接编译“re
不久前PyTorch0.4.0官方支持了Windows,可谓是感天动地,于是乘比较空闲的时间搭搭环境,顺便做下记录。 一.下载和安装CUDA9.1+cudnn-9.1库(注意下载的时候选择好配套的版本) CUDA 地址如下: https://developer.nvidia.com/cuda-downloads?target_os=Window
之前一直用Pytorch做的网络训练,最近想看看训练出来的模型在C++上的表现(毕竟稍微注重效率的工程都用的C++写),因此花了点时间研究了一波。 因为PyTorch的Python版本和C++版本使用的文件描述有区别,因此需要先把Python版本训练的模型转换成Torch Script形式(相信这一点不太方便的地方后面会被FB大佬们改掉的)。 转
在ROS节点中解析并发送点云数据是非常基础的需求,下面我们将做简单的介绍。 点云数据发送 关于发送节点,只需要声明头文件: #include <sensor_msgs/PointCloud.h> 定义消息发布者: ros::Publisher cloud_pub = n
在ROS系统的构建中,很多问题是串行的,只能用一个节点进行串行计算。 这样导致的问题是CPU资源并没有完全用到,往往是程序延时很严重,然而CPU却只用了一个线程。 为了解决这个问题,可以用OpenMP库来进行并行处理。示例代码如下: #include <ros/ros.h> #include <omp.h
前篇文章介绍了如何实现最简单的节点间内存共享。但因为篇幅所限,并没有深入介绍怎么将其实用化。本篇我们将用之前专门介绍的循环队列内存共享技术,将一个节点的图像数据直接共享给另外的节点。 为了比较内存共享机制和ROS自带的话题传输机制,本文用:ROS系统学习5---OpenCV的使用这篇文章提供的图像发送和接收节点做对比。结果发现用自带的话题传输机制传一张1080p的图像延时
上一篇文章我们介绍了怎么在ROS中应用LCM与外部进行通信。本篇我们回到ROS的内部,看看如何实现ROS节点间的内存共享,以实现更加快速的内部通信。 首先,我们需要清楚为什么要用内存共享? 答案是ROS提供的服务或者话题都是通过网络来实现的。这样做虽然更具普遍性,照顾到ROS节点可能架设在不同的硬件上这一点,然对于在同一台设备
前面的几篇文章我们简单介绍了ROS的一些基本操作和数据获取的实现。下面,我们将更深入地研究ROS的数据传递,因为这关系到能不能真正把ROS用于实际的工程项目中。 如果工程只用ROS搭建,那么是不需要用到命题所说的LCM的。但如果ROS只是整体系统的一部分,则需要利用内存共享或者网络传输等方式与其他程序进行数据交互,这时候LCM就是一种比较简单的选择(如果不清楚什么是LCM,可以参
上篇文章我们介绍了怎么用OpenCV打开图像并将图像数据发送出去, 这解决了一部分问题。但实际工程应用中,我们经常需要实时获取图像数据,因此仅仅读取本地的图片是不够的。本篇我们将研究如何获取以USB/rtsp等格式传输的摄像头的数据,与上一篇文章相互呼应。 USB摄像头: 首先,我们要有一个USB摄像头。确保了这一点后将摄像头插上去,输入命令:
在机器人系统中,视觉是非常重要的一部分(人的眼睛获取信息占全部信息的78%,机器人可以类比下)。因此,用前面四篇文章打下些许基础后,本人便迫不及待的想学习怎么在ROS上用上OpenCV视觉库。 好消息是我们第一篇文章选择了全部安装,这其中就把OpenCV库装进去了。那么剩下的就只是应用了。 为了操作方便,我们新建一个包,叫做rosOpenCV:
上一篇文章我们介绍了ros最小话题系统的制作,本篇将进一步介绍ROS的另一种节点间的交互形式---服务 首先,什么是服务? 它是节点间的另外一种交互方式(这是句废话。。。),它提供了一种有应答的通信方式。 其次,为什么要有它? 这个问题比较深奥,我们得先回头去看看“话题”的特点。 话题是单向的,按照一定频率发送的一种通信方式。在
在上一篇博客中,我们介绍了怎么创建一个ROS的最小系统,该系统包括工作空间、包和一个存放在包中的节点,然后我们让该节点打印“Hello ROS”。 在这一篇博客中,我们将进一步来搭建一个最小的话题系统。 在开始之前,我们来简单的介绍下ROS的"话题"。 回想我们以前编程,一般是用什么进行通信的? 是网络协议,比如我们要在两个程序中传输数据,一
现在做无人车和其他种类机器人的公司或者研究机构,很多用的ROS系统。原因在于其信息传递快捷方便,且要求开发者以模块化的方式设计程序,使得工程容易管理和重构,优势明显。 最近因为所在单位需要,也开始研究ROS系统了,因此循着学习的脉络做下记录。 如果老哥也是想学ROS的程序员,可以姑且看看,但需要着重强调的是,ROS官方的wiki教程才是最专业的,本人所写记录更加
准备了半年多的博士考试终于结束了!现在开始整理半年来没来得及发的一些技术总结。 “C/C++ 图像处理”系列文章是随着本人做东西的先后写成的,文章的前后关系可能不太明显,在这里先跟关注专栏的各位老哥说声抱歉,在“深度学习”系列文章中会尽量改掉这个较为随意的风格,让文章更具可读性。 之前做的项目有关于“图像细化”方面的应用,因此研究了ZhangSuen细化算法,在这里总结
积分
粉丝
勋章
TA还没有专栏噢
第三方账号登入
看不清?点击更换
第三方账号登入
QQ 微博 微信