目标检测(二)
在之前分析了目标检测中的一些基本的概念,接下来就是针对目标定位的一些经典的paper进行阅读分析。由于个人水平有限,如果文章有错误,还恳请各位指出,万分感谢~
本文主要针对object detection中的几篇经典论文进行分析。对于object detection,现在主要解决的方向有两种:
把它当做是一个分类问题,也就是通过使用滑窗检测器来进行定位一个物体的位置;
把它定位问题当做是一个回归问题,也就是通过网络输出bounding box的坐标以及bounding box之中的物体的label;
针对第一类的paper主要有R-CNN、Fast R-CNN以及Faster R-CNN等;而针对第二类paper主要有YOLO、YOLO-v2、YOLO-v3等。
R-CNN R-CNN是将深度学习引入到物体检测的开山之作,这篇paper主要有两个创新的地方:
经典的目标检测的方法都是采用的滑窗的方法去检测图像中所有的区域,而R-CNN先提取候选区域,再从这些候选区域中来检测是否有物体;
经典的算法提取的人工设定的特征(Haar,HOG等)。而R-CNN是通 ...
目标检测(一)
入职以后,慢慢接触到图像分类以及目标检测这一块,由于之前一直做的都是NLP相关,对于图像这一块了解甚少。因此觉得需要记录一下学习的一个过程,以便以后复习。由于个人水平有限,如果文章有错误,还恳请各位指出,万分感谢~
对于目标检测,这是一个十分复杂和困难的任务,其主要有两个部分:
目标定位
物体分类
用通俗的话来说就是,先要找出图片中的object,再去识别这个object是什么。本文主要分析目标检测中如何去定位到这个物体的方法。
单物体的定位首先我们针对图片中只有单个物体来进行讨论分析。最初的物体定位的方法是参考图片分类的方法。如下图所示
在图片分类中,输入一张图片给网络,将经过一个卷积网络,然后把提取的特征输入到softmax层中,输出这张图片的label。而在物体检测中,我们在提取完特征之后多加了一个输出,也就是输出物体所在的bounding box的坐标。这样,我们的网络就可以得到图片中物体所在的位置以及类别了。
假设我们现在需要检测一张图片中是否有车,行人,摩托车这三个类。那么我们可以定义网络的输出为:
$y=[p_c,b_x,b_y,b_w,b_h,c_1,c_2,c ...
omnitty安装及使用教程
由于工作中需要同时操作多台服务器,这个时候需要批量ssh服务器,而omnitty是一款十分好用的插件。本文主要分两部分,第一部分介绍如何安装omnitty,第二部分简单介绍omnitty的使用。
安装omnitty首先,在官网上 http://omnitty.sourceforge.net/ 下载安装包,下载rote和omnitty,我下载的版本:
rote-0.2.8.tar.gz
omnitty-0.3.0.tar.gz
下载好后,先进行安装rote:
tar -zxvf rote-0.2.8.tar.gz
cd rote-0.2.8/
./configure
make
make install
再安装omnitty
tar -zxvf omnitty-0.3.0.tar.gz
cd ../omnitty-0.3.0/
./configure
make
make install
安装过程也许会碰到两个错误
Need ncurses to compile librote
libncurses.so.5: error adding symbols: DSO ...
服务器中使用多个版本cuda
在实际工作中,经常会遇到多个项目,要使用不同的框架,而不同的框架可能需要到不同版本的cuda,这个时候就需要安装多个cuda,并且随时可以进行切换版本。本文主要是记录如何对cuda版本进行切换。
设置系统使用的cuda路径 将目录 ~/.bashrc 或 ~/.zshrc 下与cuda相关的路径都改为软连接路径 /usr/local/cuda/ 而不使用 /usr/local/cuda-8.0/ 或 /usr/local/cuda-9.0/
创建指向cuda版本的软连接在使用cuda的过程中,系统会使用你软连接到的cuda版本。
因此,我们只需要在每次使用的时候,将软连接指定到需要使用的版本文件夹。
1234567891011121314#在切换cuda版本时rm -rf /usr/local/cuda #删除之前创建的软链接sudo ln -s /usr/local/cuda-8.0/ /usr/local/cudanvcc --versi ...
多台服务器之间无密码登陆以及文件传输
在linux服务器上,我们经常会需要在两台服务器之间相互传输文件,或者需要从这台服务器访问另外一台。而通常在传输文件或者登陆时,会需要你输入登陆的那台服务器的密码。如果我们操作频繁,每次输入密码就显得十分麻烦。而此时我们可以设置ssh无密码登陆,这样不管是登陆还是传输文件我们就不再需要密码了。下面简单介绍如何设置ssh无密码登陆。
__注意:__在两台服务器之间可以不用是root用户,其他用户也是可以的
假设我们有服务器A简称为Master,使用的用户为admin,服务器B简称为Slaver,使用的用户为root。我们的目的是设置从Master无密码登陆到Slaver中。
__1.__我们先登陆到Master的admin用户的home目录下:
1cd ~
__2.__在Master服务器上生成public key:
1ssh-keygen -t rsa
__3.__进入到 ~/.ssh/ 目录下,我们就可以看到我们生成的public key。 有两个,一个是密钥id_rsa,一个是公钥id_rsa.pub。接下来我们需要将公钥从Mas ...
语音识别:深入理解CTC Loss原理
最近看了百度的Deep Speech,看到语音识别使用的损失函数是CTC loss。便整理了一下有关于CTC loss的一些定义和推导。由于个人水平有限,如果文章有错误,还恳请各位指出,万分感谢~
1. 背景介绍 在传统的语音识别的模型中,我们对语音模型进行训练之前,往往都要将文本与语音进行严格的对齐操作。这样就有两点不太好:
严格对齐要花费人力、时间。
严格对齐之后,模型预测出的label只是局部分类的结果,而无法给出整个序列的输出结果,往往要对预测出的label做一些后处理才可以得到我们最终想要的结果。
虽然现在已经有了一些比较成熟的开源对齐工具供大家使用,但是随着deep learning越来越火,有人就会想,能不能让我们的网络自己去学习对齐方式呢?因此CTC(Connectionist temporal classification)就应运而生啦。
想一想,为什么CTC就不需要去对齐语音和文本呢?因为CTC它允许我们的神经网络在任意一个时间段预测label,只有一个要求:就是输出的 ...
word2vector笔记
本博客仅为作者记录笔记之用,不免有很多细节不对之处。还望各位看官能够见谅,欢迎批评指正。
word2vector顾名思义就是要把单词转化为向量来表示。我们可以通过模型的训练将文本内容转化为K维向量空间中的向量,这样我们在向量空间中可以使用相似度来代表词与词之间的相似度。正是因为这样,word2vector的方法被广泛的运用在NLP领域,例如文本分类,语义分析,文本聚类等。
1.Huffman树1.1 Huffman树的定义 在介绍word2Vector之前,我们需要了解一种数据结构Huffman树,这种结构被广泛的应用在NLP领域中。它是二叉树的一种,在Huffman树中,每个节点都有一个非负的权值。下面给出Huffman树的一些基本定义
节点的路径长度:若规定根节点的层数为1,那么根节点到第L层的节点的路径长度为L-1;
节点的带权路径长度:指从根节点到该节点的路径长度与该节点的权值的乘积;
树的带权路径长度:指所有叶子结点的带权路径长度之和
若给定n个权值作为n个叶子结点,我们去构造一棵二叉树,使得二叉树 ...
深度学习:防止过拟合的几种方法
本博客仅为作者记录笔记之用,不免有很多细节不对之处。还望各位看官能够见谅,欢迎批评指正。
在机器学习和深度学习中,过拟合是一个十分常见的问题,一旦模型过拟合了,可能这个模型就无法适用于业务场景中了。所以为了降低产生过拟合的风险,机器学习中的大牛们提出了以下几种方法供大家使用:
引入正则化
Dropout
提前终止训练
增加样本量
本文将对这5种方法进行简单的讲解分析。
1. 正则化 正则化的思想十分简单明了。由于模型过拟合极有可能是因为我们的模型过于复杂。因此,我们需要让我们的模型在训练的时候,在对损失函数进行最小化的同时,也需要让对参数添加限制,这个限制也就是正则化惩罚项。
假设我们模型的损失函数为
$C(x)={1\over2}\sum_{i=1}^n(f(x)-y_i)^2$
加入正则项 $L$ 后,损失函数为
$C(x)={1\over2}\sum_{i=1}^n(f(x)-y_i)^2+\lambda L$
常用的正则化有两种:
L1正则:
L1正则项的表达式为:
$L ...