机器学习
文章平均质量分 67
传统机器学习算法
m_buddy
大表哥,还有大招吗... PS:本人所有文章均免费公开,任何收费条目请咨询平台
展开
-
Platt SMO 支持向量机算法(Python实现)
1. SMO SVM算法简述 1.1 概述SVM(Support Vector Machine,SVM)算法既是支持适量机算法。算法的原始思想很简单,既是找到一个决策面使两类(本文以两类为例进行说明)分开,且这个决策面和两类之间的间隙尽可能的大。这样带来的好处就是泛化错误率低,能够很好地对两类的问题进行分类。因而,SVM算法的优点就是泛化错误率低,计算的开销不大,结果容易解释。缺点就原创 2016-09-10 19:18:30 · 6733 阅读 · 0 评论 -
CNN网络中池化层的正向传播与反向传播理解
1. 池化定义通常来说卷积之后的图像虽然在尺寸上有所减小,但是其尺寸还是较大,为了描述大的图像,一个很自然的想法就是对不同位置的特征进行聚合统计,例如,人们可以计算图像一个区域上的某个特定特征的平均值 (或最大值)。这些概要统计特征不仅具有低得多的维度 (相比使用所有提取得到的特征),同时还会改善结果(不容易过拟合)。这种聚合的操作就叫做池化 (pooling),有时也称为平均池化或者最大池化...原创 2018-05-23 22:28:50 · 6242 阅读 · 0 评论 -
激活函数整理
1. 前言这里主要首先要说下为什么在深度学习网络中需要加入激活函数?因为激活函数是网络中非线性的来源,去除了该部分之后网络就只剩下线性运算部分了,而且线性运算的组合叠加也是线性的,最后得到的结果模型也当然可以等价于单层的线性模型了,也为了能够适用于复杂的情况,所以需要在网络中引入非线性单元。 那么说到了激活函数那么就先从常见的sigmoid开始谈起吧。2. sigmoid函数首先,来...原创 2018-06-21 00:04:33 · 1457 阅读 · 0 评论 -
使用python将MNIST数据转换为图片
1. mnist数据集mnist数据集是一个很经典的数据集,该数据集在这个地方可以下载到。但是呢下载到的图片并不是图片格式的,而是一种二进制的东西,直接读起来很不直观。这就需要将其转换为图像格式。好在网站上给出了其数据的格式。1.1 训练集数据首先来看训练集的样本数据格式 可以看到在图像数据的前面4个字节定义了magic number、图像个数以及图像的长和宽。后面的也就是全部的...原创 2018-07-08 23:51:51 · 8346 阅读 · 22 评论 -
Win10下安装Tensorflow GPU版本记录
1. 前言这里我使用的环境是Win10家庭中文版,显卡是GTX1050。由于安装Tensorflow相对安装Caffe来说比较简单,这里就直接给出安装步骤了。1. 安装CUDA8安装CUDA需要到这里(https://developer.nvidia.com/cuda-toolkit-archive)去下载,但是呢!需要注意一点的是CUDA的版本和cuDNN的版本要对应上,要不是会出问...原创 2018-07-12 00:28:09 · 2179 阅读 · 0 评论 -
faster-rcnn训练遇到的问题
1. 问题1_sample_rois(roidb, fg_rois_per_image, rois_per_image, num_classes)报错是因为是$FRCN_ROOT/lib/roi_data_layer下的minibatch.py中的npr.choice引起的,解决方法: 修改:if fg_inds.size > 0: for i in ran...原创 2018-08-25 12:35:30 · 1210 阅读 · 1 评论 -
DarkNet,Visual Studio 2015工程配置
1. 前言最近使用DarkNet做yolo目标检测,为了方便梳理代码的结构,理顺其内部的实现过程,这里将DarkNet的源码提出来,融合到Visual Studio工程中去,这里将这个过程记录下来。 PS:这里使用的系统是Win10 x64,Visual Studio 2015,Win32控制台应用程序2. 整合过程2.1 配置Pthread库下载Windows版本的Pt...原创 2019-02-21 23:13:33 · 2877 阅读 · 9 评论 -
YOLO-v3模型参数anchor设置
1. 背景知识在YOLO-v2版本中就引入了anchor box的概念,极大增加了目标检测的性能。但是在训练自己数据的时候还是用模型中原有的anchor设置显然是有点不合适的,那么就涉及到根据自己的训练数据来设置anchor。那么,首先我们需要知道anchor的本质是什么,本质是SPP(spatial pyramid pooling)思想的逆向。而SPP本身是做什么的呢,就是将不同尺寸的输入r...原创 2018-10-02 14:29:43 · 79783 阅读 · 79 评论 -
关于ROI Pooling Layer的解读
1. 原理介绍目标检测typical architecture 通常可以分为两个阶段:(1)region proposal:给定一张输入image找出objects可能存在的所有位置。这一阶段的输出应该是一系列object可能位置的bounding box。这些通常称之为region proposals或者 regions of interest(ROI)。(2)final classifi...原创 2018-10-27 14:30:32 · 3605 阅读 · 4 评论 -
RPN网络代码解读
1. 说在前面的话在目标检测领域Faster RCNN可以说是无人不知无人不晓,它里面有一个网络结构RPN(Region Proposal Network)用于在特征图上产生候选预测区域。但是呢,这个网络结构具体是怎么工作的呢?网上有很多种解释,但是都是云里雾里的,还是直接撸代码来得直接,这里就直接从代码入手直接撸吧-_-||。首先,来看一下Faster RCNN中RPN的结构是什么样子的吧。...原创 2018-12-01 21:42:10 · 9114 阅读 · 9 评论 -
RNN学习笔记
1. RNN概述CNN网络被用于处理图像数据,而对于非连续的数据处理一般是采用RNN网络进行实现的。对于经典的RNN网络其基本结构组成如下图所示上图中左边是RNN模型没有按时间展开的图,如果按时间序列展开,则是上图中的右边部分。我们重点观察右边部分的图。这幅图描述了在序列索引号ttt附近RNN的模型。其中:x(t)x^{(t)}x(t)代表在序列索引号ttt时训练样本的输入。同样的,x(...原创 2018-12-01 21:50:31 · 943 阅读 · 2 评论 -
RoI Pooling与RoIWrap Pooling与RoIAlign Pooling与Precise RoI Pooling
1. 前言文章标题给出了四种Pooling的方法,这feature pooling方法是我在看论文的时候看到的,从最开的PoI Pooling到目前最新的Precise RoI Pooling由Pooling操作带来的检测精度影响越来越小。这篇文章目的是想梳理一下它们之间的区别与联系。2. RoI Pooling这种Pooling方法我是在Faster RCNN中看到的,该种Pooling方...原创 2018-12-19 23:44:10 · 3868 阅读 · 2 评论 -
图解LSTM和GRU
1. 前言1. 长短记忆问题RNN受限于短期记忆问题。如果一个序列足够长,那它们很难把信息从较早的时间步传输到后面的时间步。因此,如果你尝试处理一段文本来进行预测,RNN可能在开始时就会遗漏重要信息(矩阵连乘)。在反向传播过程中,RNN中存在梯度消失问题。梯度是用于更新神经网络权重的值,梯度消失问题是指随着时间推移,梯度在传播时会下降,如果梯度值变得非常小,则不会继续学习。其梯度更新规则为:...转载 2019-01-19 11:00:03 · 2682 阅读 · 0 评论 -
LSTM原理与前向代码实现
1. LSTM原理LSTM是对序列数据进行处理的网络,首先这里给出LSTM的结构图,先知道它长什么样子吧。网上很多的介绍给出LSTM有四个门,一个细胞状态,这里从程序编写的较多多了一个g_tg\_tg_t。那么对于这些的数学表达式怎么表述的呢?看下面的公式,理解这个公式后面编写相关代码就容易多了。...原创 2019-03-12 23:04:16 · 1274 阅读 · 3 评论 -
检测模型改进—OHEM与Focal-Loss算法总结
1. 概述论文名称:Training Region-based Object Detectors with Online Hard Example Mining代码地址:OHEMOHEM(online hard example miniing)算法的核心思想是: 根据输入样本的损失进行筛选,筛选出hard example,表示对分类和检测影响较大的样本,然后将筛选得到的这些样本应用在随机梯度...原创 2019-04-05 14:07:00 · 11030 阅读 · 1 评论 -
Cascade R-CNN Python测试脚本
代码地址# -*- coding=utf-8 -*-import osimport sysimport argparseimport numpy as npfrom PIL import Image, ImageDrawimport cv2import timecaffe_root = '/home/xxxxx/codes/cascade-rcnn'sys.path.inser...原创 2019-04-02 09:06:42 · 1287 阅读 · 6 评论 -
CNN网络中卷积层的正向传播与反向传播理解
1. 基础理论2. CNN正向运算3. CNN反向运算4. 参考资料原创 2018-05-23 21:14:39 · 11147 阅读 · 0 评论 -
高斯混合模型(GMM)
1. 前言高斯混合模型是使用高斯分布对原始数据进行估计,其中高斯函数的均值μμ\mu和方差σσ\sigma以及各个高斯函数分量占的比例αα\alpha这些参数是未知的。对于它们的求解是通过EM算法实现的。 高斯混合模型可以表述为如下的概率分布模型: P(y|θ)=∑k=1Kαkϕ(y|θk)P(y|θ)=∑k=1Kαkϕ(y|θk)P(y|\theta)=\sum_{k=1}^{K}\al...原创 2018-05-27 16:02:47 · 2749 阅读 · 0 评论 -
平方损失函数与交叉熵损失函数
1. 前言在机器学习中学习模型的参数是通过不断损失函数的值来实现的。对于机器学习中常见的损失函数有:平方损失函数与交叉熵损失函数。在本文中将讲述两者含义与响应的运用区别。2. 平方损失函数平方损失函数较为容易理解,它直接测量机器学习模型的输出与实际结果之间的距离。这里可以定义机器学习模型的输出为yiyiy_i,实际的结果为titit_i,那么平方损失函数可以被定义为: L(x)=...原创 2018-05-07 15:21:43 · 20287 阅读 · 2 评论 -
理解PCA原理与C++\Matlab实现
1. PCA原理图像处理等领域经常会用到主成分分析,这样做的好处是使要分析的数据的维度降低了,但是数据的主要信息还能保留下来。它的原理是这样的,对于给定一组数据(列向量):将其中心化后表示为: 其中u为输入列向量的均值。中心化后的数据在第一主轴u1(既是数据的主方向,这里假设为单位向量)方向上分布散的最开,也就是说在u1方向上的投影的绝对值之和最大(也可以说方差原创 2017-02-24 16:52:06 · 3574 阅读 · 2 评论 -
使用OpenCV自带的级联分类器进行目标检测
前言做项目的时候使用到了OpenCV自带的haartraining训练器。在这片文章中就针对其进行使用进行说明,希望对各位看官有用。样本集处理正样本集这里首先采集到未经处理的原始样本集,通过手工标注或是截取的形式得到正样本集。对正样本集进行标准化,这里生成的是30*30大小的正样本图像,这样主要为了加快训练的速度。得到的正样本集如下 之后在当前目录下打开命令行窗口,将正样本的路径导入到pos.原创 2017-11-02 20:43:43 · 4912 阅读 · 0 评论 -
使用OpenCV进行目标检测的注意事项
前言前一篇文章已经介绍过了如何使用OpenCV自带的级联分类器进行目标检测,但是在实际操作过程中和后期的算法调优的过程中都需要有依据地进行调试,这样才能又快又好将算法调试到比较理想的状态,而不是像无头苍蝇一样乱撞。本篇文章多来自于网络上无私网友的分享,这里由衷感谢他们。##REF原创 2017-11-02 21:50:02 · 2091 阅读 · 0 评论 -
FCN语义分割——训练自己的数据
前言前段时间研究了下FCN的语义分割,并且将其成功运用在了自己的数据集上,现在分割出来的结果不是很满意,期待后期的调试将其提升。这里就将这个过程记录下来,希望对各位看官有所帮助1. 数据集处理在VOC2012的那个数据集中包含了做好的分割数据集,但是要自己制作数据集的时候就需要注意下了。首先,VOC2012分割数据集中的分割好的图像数据是8位的,不要看着是彩色的就认为是3通道的RGB图像,如下图例子原创 2017-11-29 19:33:35 · 13662 阅读 · 28 评论 -
FCN语义分割初探——使用训练好的模型进行分割
前言由于课题的需要,最近开始研究FCN语义分割,这几天将环境搭建好了立即测试了一下,这里分享出来与大家进行分享。1. 准备1.1 运行环境这里使用到的环境是Ubuntu下PyCaffe,具体的环境搭建大家可以参考我的这篇博客进行环境搭架。Ubuntu16.04下安装Caffe记录(GPU) 这里使用到的FCN语义分割源码可以从Github上进行下载,fcn.berkeleyvision.org,本原创 2017-11-23 20:21:03 · 4438 阅读 · 0 评论 -
FCN语义分割——直接加载图像数据
前言在之前的一篇博客中我们使用了在Github上的代码进行语义分割,在进行训练的时候Github上给出的是mat文件类型的图像数据,这就很不方便了。这里经过查阅相关资料之后发现不需要进行格式的转换也可以进行训练的。修改过程这里还是用之前的博客里面提到的voc-fcn8s。打开train.prototxt和val.prototxt之后可以看到这样的层定义layer { name: "data"原创 2017-11-23 20:41:08 · 2040 阅读 · 0 评论 -
FCN语义分割训练自己数据不收敛处理记录
前言最近在做FCN语义分割方面的项目,在finetune的时候遇到了训练loss不下降的情况,在经过自己的摸索之后,最后loss曲线下降下去,这里将这个过程记录下来,希望对大家有所帮助。1. 数据集问题数据集的问题在按照自己的需求进行语义分割的时候都会遇到。其实数据集的制作很简单,只需要按照自己的需求设计好分类就行了,可以参考本人之前的博客进行修改。需要提醒的是每个0~255的像素值代表的是一个分类原创 2017-12-04 21:03:13 · 5809 阅读 · 17 评论 -
集成学习(一):AdaBoost原理
前言AdaBost算法是Boosting族算法最著名的代表。这一族算法的工作机制也是很类似的:先从初始训练集训练处一个基学习器,再根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的训练样本在后续收到更多关注,然后基于调整之后的的样本分布来训练下一个基学习器;日此往复,直至基学习器数目达到事先指定的值T,最终将这T个基学习器进行加权组合。 由于这里重点介绍的是AdsBoost算法,接下原创 2018-01-09 16:08:32 · 608 阅读 · 0 评论 -
XGBoost参数解释
前言本文中针对XGBoost的参数说明进行部分翻译得来,原文链接。因而本文中只对一些关键参数进行了翻译,且由于本人能力有限,文中难免存在错误的地方,还望指正。以下是大致翻译内容。在运行XGboost之前, 我们必须设置三种类型的参数: 通用参数(general parameters),Booster 参数(booster parameters)和学习目标参数(task parameters...原创 2018-02-19 20:07:34 · 13788 阅读 · 0 评论 -
XGBoost数据训练小例子
1. 前言XGBoost是很好的数据处理工具,可以在各大赛事中见到它的影子。本篇博客就主要针对对XGBoost的原理、相关Python API较为熟悉等的前提下将这些分散的内容串起来,从数据生成(已经准备好的数据,忽略数据预处理、特征选择之类的-_-||)、训练模型、预测测试数据进行说明。希望能够对刚入手XGBoost的朋友有所帮助。2. 完整过程2.1 步骤分解训练数据生成:这...原创 2018-02-20 21:54:22 · 10030 阅读 · 1 评论 -
集成学习(二):AdaBoost算法解释
1. 前言在之前的博客中讲解了AdaBoost算法的原理,为了能够更加直观理解AdaBoost算法,常用的解释模型便是使用加法模型。2. 加法模型解释首先定义AdaBoost的加法模型为: f(x)=∑m=1MαmGm(x)f(x)=∑m=1MαmGm(x)f(x)=\sum_{m=1}^M\alpha_mG_m(x) 其中αmαm\alpha_m是基函数的系数,Gm(x)Gm...原创 2018-03-15 10:53:43 · 348 阅读 · 0 评论 -
Softmax回归Python实现
1. 前言前面讲解了Softmax回归和Logistic回归的理解(博客链接),在本文中将着重对其使用Python脚本实现,并且比较实现几种梯度优化算子,常用的梯度优化算子的讲解请参考我的这篇博客。2. 编码实现2.1 数据生成# 产生数据def get_data(num_data=100): x = np.reshape(np.random.normal(1, ...原创 2018-03-13 17:12:58 · 1681 阅读 · 0 评论 -
机器学习中的梯度下降算法(BGD,SGD,MBGD)
1. 前言机器学习中常常将具体的问题抽象为数学表达,再通过最优化算法求取相关参数的最优值。其中最常用的便是基于梯度的优化算法。则可以将其总结为批量梯度下降法(BGD)、随机梯度下降法(SGD)、小批量梯度下降法(MBGD),本文也将从这几个方面进行解释。 首先,定义决策函数为: yθ=∑i=1mθxiyθ=∑i=1mθxiy_\theta = \sum_{i=1}^m\theta x_i ...原创 2018-03-13 18:33:45 · 1590 阅读 · 0 评论 -
数据预处理:缺失值处理
1. 前言数据中的缺失值是个非常棘手的问题,有很多文献都致力于解决这个问题。数据缺失的含义是:假设有nnn个样本,每个样本20个特征。但在一些样本中出于某种原因某个特征无效,则就构不成一个完整的样本。对于这样的问题,有些情况下是不能直接将其抛弃的,对其进行挽救就是缺失值处理2. 特征中的缺失值处理(1)使用可用特征的均值来填补缺失值 (2)使用特殊值来填补缺失值,如0 (3)忽...原创 2018-03-13 18:50:16 · 1418 阅读 · 0 评论 -
OHEM代码梳理
传送门:相关OHEM的介绍:检测模型改进—OHEM与Focal-Loss算法总结代码地址:OHEM1. 前言有关OHEM的介绍请参考上面给出的链接,这里主要就OHEM是怎么运行的做一些简单的分析,整个OHEM的代码也不是很多,这里将算法的步骤归纳为:1)计算检测器的损失,这部分是使用和最后fc6、fc7预测头一样的共享参数,预测分类与边界框回归的结果,将预测的结果与GT进行比较得...原创 2019-04-08 22:44:26 · 1716 阅读 · 0 评论