自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(149)
  • 资源 (2)
  • 收藏
  • 关注

原创 排序算法5——简单选择排序

简单选择排序的平均复杂度为 \(O(n^2)\), 但效率通常比相同平均复杂度的直接插入排序还要差。但由于选择排序是 内部排序,因此在内存严格受限的情况下还是可以用的。选择排序的原理很简单,如下图所示:持续从未处理元素中找到最小值并加入到已排序列中。

2017-02-12 23:52:17 952

原创 排序算法4——希尔排序

希尔排序原理希尔排序C实现希尔排序gap选择策略希尔排序原理希尔排序是对直接插入排序算法的一种改进,二者同属于 插入排序 算法。我在上一节介绍 直接插入排序 的时候,提到过直接插入排序的几个优点,其中有 当数据已经基本有序时,效率较高。希尔排序的改进点可以看作是快速使得数据基本有序。具体如何快速使得数据基本有序呢? 很简单,对原始数据进行 有间隔的直接插入排序。 如下面的动画所示(可以在参考链接

2017-02-10 11:56:23 3005

转载 计算机是如何启动的

一 第一阶段BIOS1 硬件自检2 启动顺序二第二阶段主引导记录1 主引导记录的结构2 分区表三第三阶段硬盘启动1 情况A卷引导记录2 情况B扩展分区和逻辑分区3 情况C启动管理器四第四阶段操作系统本文转载于: 阮一峰 http://www.ruanyifeng.com/blog/2013/02/booting.html从打开电源到开始操作,计算机的启动是一个非常复杂的过程。我一

2017-02-08 22:39:31 662

原创 排序算法3——直接插入排序

直接插入排序的平均复杂度是 \(O(n^2)\),因此应用场景较少。直接插入排序的思路是: 每次处理一个数据,将其插入到一个已经排好序的子序列中,直到数据处理完毕。下面给出一个动画示例:未完待续。。。。参考资料:(1)WIKI:https://en.wikipedia.org/wiki/Insertion_sort

2017-02-07 23:50:26 892

原创 目标检测——特征金字塔网络

本次继续介绍一篇有关目标检测的论文 《Feature Pyramid Networks for Object Detection》,作者包含Piotr Dollar, Ross Girshick,何凯明等大神,阵容很好很强大。特征金字塔在基于深度学习的多尺度目标检测早有应用......

2017-02-07 17:47:29 16486 2

原创 排序算法2——快速排序

算法原理 算法实现 ——————算法原理——————快速排序算法一种最常见的排序算法,其核心思想就是 分治 ,具体的:(1) 选定一个基准数;(2) 分区,将所有大于基准数的数据分为一区,将所有小于等于基准数的数据分为一区;(3) 递归,对上述分区重复(1)(2),直到每个分区只有一个数。 ———————————————————————————下面看一个动画来快速理解该算法是怎么工作的

2017-01-19 23:05:15 2679

原创 排序算法1——冒泡排序

冒泡排序是一种比较简单的排序算法,效率不高,因此实际当中用到的机会并不多。但作为快速排序算法的基础,还是有必要了解一下。顾名思义,冒泡就是指大的数字(气泡)会优先从底部升到顶端。具体实现的方式就是重复的 交换排序,通过两两比较不断地将大的数字右移。具体看下面的GIF图就很清楚了。冒泡排序在 最坏情况下的时间复杂度是O(n²),最坏的情况比如将一组降序排好的数据按升序排列。下面是一个相对效率较高的冒泡

2017-01-19 22:15:23 1563

原创 排序算法0——引言

后续会讲解一系列常见的排序算法以及一些特殊要求的排序。作为引言,这里主要强调一下 :了解一个排序算法需要注意哪些方面。

2017-01-18 23:48:18 985

原创 caffe层解读系列——slice和concat实现MultiTask

最近一段时间MultiTask网络比较流行,比如做人脸检测的时候,一个网络完成(人脸和非人脸)二分类任务的同时也要进行boudingbox回归或者人脸关键点回归。以人脸检测MTCNN为例,一个网络包含三个任务。训练的时候,一个batch中的图片,一部分用于二分类、一部分用于boundingbox 回归,一部分用于关键点回归。这种较复杂的样本组合完全可以通过slice和concat层来快速实现。 ——

2017-01-15 23:49:33 20193 10

原创 快速多目标检测——YOLO9000

本次介绍一篇有关快速目标检测的文章《YOLO9000: Better, Faster, Stronger》。该方法记作YOLOv2,相比v1除了在性能上有所提升之外,更是在速度上令人惊异。项目主页:http://pjreddie.com/darknet/yolo/ —————————— Introduction —————————— 通用的目标检测不但要够快够准,还要能够检测多类的目标。但实际情

2017-01-04 14:13:52 21635 5

原创 基于知识提取的方法训练一个小网络

Hinton大牛的文章,关于如何得到一个又小又好的网络的。文章链接《Distilling the Knowledge in a Neural Network》 —————————— 背景介绍 —————————— 大家都想要得到一个又好又快的模型,但是实际情况往往是模型越小则性能越差。文献[1]中提出了一种策略:大模型学习到的知识可以通过“提取”的方法转移到一个小模型上 。所以,本文的宏观策略就是

2016-12-23 14:38:42 4968 1

原创 浮点数表示

浮点数表示 浮点数的规格化表示 浮点数的表示范围 浮点数的表示精度 参考资料 之前的一些工作当中碰到了很多有关浮点数的问题,比如浮点数的表达范围、表达精度、浮点数的存储方式、浮点数的强制类型转换等等,因此感觉有必要系统了解一下有关浮点数的问题。 —————————— 浮点数表示 —————————— 浮点数是一种 公式化 的表达方式,用来近似表示实数,并且可以在

2016-12-22 15:00:17 68105 17

原创 caffe层解读系列——Data以及ImageData层用法

直接举一个data层的使用例子:layer { name: "cifar" type: "Data" top: "data" top: "label" include { phase: TRAIN } transform_param { mean_value: 128 mean_value: 128 mean_value: 128 .

2016-11-16 11:44:06 13148 13

原创 模型压缩——将模型复杂度加入loss function

这里介绍2017ICLR OpenReview中的一篇有关网络压缩的文章《Training Compressed Fully-Connected Networks with a Density-Diversity Penalty》。 **看文章标题就知道主要是针对全连接层的,由此我的好感就下降了一半。———————— 引言 ———————— 作者拿VGG说全连接层会占很多资源,压缩这个最重要。好

2016-11-15 14:28:11 3566

原创 DeepRebirth——通过融合加速网络

这里介绍2017ICLR OpenReview中的一篇有关网络加速的文章《DeepRebirth: A General Approach for Accelerating Deep Neural Network Execution on Mobile Devices》。 看文章标题觉得高大上,看方法细节觉得卧槽好水,看自己的验证结果好像还有点用。附:2017ICLR openreview http:

2016-11-12 12:19:48 4007 2

原创 C++ Map常见用法说明

C++中map提供的是一种键值对容器,里面的数据都是成对出现的,如下图:每一对中的第一个值称之为关键字(key),每个关键字只能在map中出现一次;第二个称之为该关键字的对应值。一. 声明//头文件#include<map>map<int, string> ID_Name;// 使用{}赋值是从c++11开始的,因此编译器版本过低时会报错,如visual studio 2012map<int,

2016-11-10 15:07:36 267831 20

原创 深度模型一些新的运行框架或者辅助库工具等

主要记录一些新的深度学习有关的框架工具等,以作个人备份:(1) Android手机上的GPU加速DCNN(运行)库CNNdroid文章《CNNdroid: GPU-Accelerated Execution of Trained Deep Convolutional Neural Networks on Android》github链接: https://github.com/ENCP/CNNdr

2016-11-04 14:08:03 4815

原创 caffe层解读系列——hinge_loss

—————————— Hinge Loss 定义 ——————————Hinge Loss 主要针对要求”maximum-margin”的分类问题,因此尤其适用于SVM分类。Hinge Loss的定义如下:\(l(y) = max(0,1-t\cdot y)\)其中, \(t=\pm1\) , 需要注意的是 \(y\) 并不是分类的label,而只是决策函数的输出。例如在线性SVM中, \(y=wx

2016-11-04 10:55:36 5319

原创 1 - 基于卡方检验的特征选择

基于卡方检验的特征选择,更多也可参考http://nlp.stanford.edu/IR-book/html/htmledition/feature-selectionchi2-feature-selection-1.html———————— 原理简介 ———————— 卡方检验(\(\chi ^2\) test),是一种常用的特征选择方法,尤其是在生物和金融领域。\(\chi ^2\) 用来描

2016-11-01 10:22:07 20975 2

原创 C++ 宏定义

———————— #define基本用法 ————————#define命令是C语言中的一个宏定义命令,它用来将一个标识符(宏名)定义为一个字符串,该标识符被称为宏名,被定义的字符串称为替换文本。程序编译之前,编译的时候所有的宏名都会被定义的字符串替换,这便是宏替换。理解宏定义的关键在于 “替换”。该命令有两种格式:一种是简单的宏定义,另一种是带参数的宏定义。(1)简单的宏定义: #defi

2016-10-19 16:28:04 40335 3

原创 MKL——常用函数说明

Intel MKL,全称 Intel Math Kernel Library,提供经过高度优化和大量线程化处理的数学例程,面向性能要求极高的科学、工程及金融等领域的应用。MKL是一款商用函数库,但提供C、Fortran 和 Fortran 95的支持,但仅支持Intel自家旗下的CPU。在Intel CPU上,MKL的性能要远高于Eigen, 虽然OpenBLAS和其差距不是太大,但OpenBLAS

2016-10-14 11:47:04 31582 1

原创 C++ RGB转灰度图像

RGB转灰度,通常会使用下面的一个心理学公式:(opencv和matlab中使用的也是该公式)Gray = 0.2989*R + 0.5870*G + 0.1140*B抛却指令优化不谈,优化转化速度的最直接方法就是将浮点运算转化为整数运算:比如我们可以将上式转化为:Gray = (2989*R + 5870*G + 1140*B)/ 10000,但是上面的除法还是不够快,我们完全可以使用移位操作来代

2016-10-04 14:17:33 11135

原创 c++ ——排序并保留索引

C++自带的排序函数sort只能获得排好序的值,没办法像Matlab一样同时返回排序索引。下面使用c++11中的 lambdas来为sort函数添加一个模式:template <typename T>vector<size_t> sort_indexes(const vector<T> &v) { // 初始化索引向量 vector<size_t> idx(v.size()); //使用

2016-09-30 17:53:05 19619 1

原创 NMS——非极大值抑制

NMS(non maximum suppression),中文名非极大值抑制,在很多计算机视觉任务中都有广泛应用,如:边缘检测、目标检测等。这里主要以人脸检测中的应用为例,来说明NMS,并给出Matlab和C++示例程序。 人脸检测的一些概念(1) 绝大部分人脸检测器的核心是分类器,即给定一个尺寸固定图片,分类器判断是或者不是人脸;(2)将分类器进化为检测器的关键是:在原始图像上从多个尺度产生窗口,

2016-09-30 15:38:32 135108 39

原创 人脸检测——STN

本次介绍一篇来自微软的人脸检测文章:《2016 ECCV Supervised Transformer Network for Efficient Face Detection》. 核心导读: (1) 训练了一个端到端的级联网络;(2) 引入了supervised transformer层,可以对候选窗口进行矫正以便后续更好地判断是否为人脸;(3) 引入了Non-top K的抑制策略,在保证召回率的

2016-09-29 14:52:49 6546 1

原创 NDK各个版本链接

目前不仅是国内不好找到各个版本的NDK,就连谷歌翻链接也总是出问题,这里给出一些各个版本的链接。ndk_r12 (June 2016) Windows 32-bit : http://dl.google.com/android/repository/android-ndk-r12b-windows-x86.zip Windows 64-bit : http://dl.google.com/and

2016-09-28 14:59:05 55278 11

原创 人脸检测——Compact CascadeCNN

本次介绍一篇速度爆表人脸检测文章:《2015 Arxiv: Compact Convolutional Neural Network Cascade for Face Detection》.作者有一个github链接,https://github.com/Bkmz21/FD-Evaluation,但是里面只是评价工具并没有检测的工具。 评价: 速度是很快,但是性能应该来说比较差,只比公开的Openc

2016-09-27 11:57:14 6179

原创 人脸检测——MTCNN

本次介绍一篇速度还不错的人脸检测文章:《2016 Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks》. ———————————— Pipeline———————————— 上面是该方法的流程图,可以看出也是三阶级联,和我之前的一篇博文CascadeCNN很像。stage1: 在构建图

2016-09-26 11:56:39 74314 32

原创 人脸检测——Faster R-CNN

本次介绍人脸检测方法Faster R-CNN:《2016 Arxiv: Face Detection with the Faster R-CNN》.上面这篇文章,是对Faster R-CNN的人脸检测实现,原始的Faster R-CNN实现的是多目标检测,即下面这篇文章:《2015 CVPR: Faster R-CNN: Towards Real-Time Object Detection with

2016-09-25 15:34:10 13863 1

原创 人脸检测——HyperFace

本次介绍人脸检测检测方法HyperFace:《2016 PAMI HyperFace: A Deep Multi-task Learning Framework for Face Detection, Landmark Localization, Pose Estimation, and Gender Recognition. 核心导读: MultiTask,将人脸检测、关键点定位、头部角度估计和性

2016-09-23 11:44:28 8241 9

原创 人脸检测——UnitBox

本次介绍一篇来自旷视科技的人脸检测文章:《2016 ACM MM UnitBox: An Advanced Object Detection Network》.代码应该是不会放出来了,但好在实现比较简单。 ———————————— 分割线 ———————————— Introduction 目标检测可以视作两个任务:目标定位 + 视觉识别。基于深度学习的目标检测大致又可以分为三个部分:(1)Reg

2016-09-22 17:55:41 11593 4

原创 人脸检测——xiaomi

本次介绍一篇来自小米黑科技的人脸检测文章:《arxiv: Bootstrapping Face Detection with Hard Negative Examples》.看完后续算法讲解之后,请自行体会人脸检测专业研究人员看到下图的感受。 ———————————— 分割线 ———————————— 文章很短,没有创新。 核心思想: Hard Negative Mining + Faster R-

2016-09-22 10:46:46 3228 1

原创 caffe HDF5Data 层使用及数据生成

有些时候,我们的输入不是标准的图像,而是其它一些格式,比如:频谱图、特征向量等等,这种情况下LMDB、Leveldb以及ImageData layer等就不好使了,这时候我们就需要一个新的输入接口——HDF5Data. (1) 在Matlab中生成HDF5文件这里直接以例子的形式说明如何生成:问题:输入data是512*1的矢量,共1000个样本,label是标量。代码如下:% 创建HDF5文件,包

2016-09-11 13:55:04 14077 24

原创 人脸关键点检测-递归编解码网络

本次介绍一篇关于人脸关键点检测(人脸对齐)的文章:《ECCV16 A Recurrent Encoder-Decoder Network for Sequential Face Alignment》.作者主页:https://sites.google.com/site/xipengcshomepage/project/face-alignment, 代码和预训练模型后面会放出来。 Introduc

2016-09-05 11:44:34 5260 1

原创 Eigen矩阵运算库使用记录

最近一直在做工程上的事情,比较多的使用了Eigen矩阵运算库。简单说一下Eigen的特点:(1) 使用方便、无需预编译,调用开销小(2) 函数丰富,风格有点近似MATLAB,易上手; (3) 速度中规中矩,比opencv快,比MKL、openBLAS慢;Eigen3.3版本链接 http://eigen.tuxfamily.org/index.php?title=Main_Page注:绝大部分使用说

2016-08-30 10:42:42 17708 6

原创 Dlib + VS2013 人脸检测,无需CMAKE

这里介绍如何快速上手使用Dlib进行人脸检测,无需CMAKE编译。(1)下载并解压Dlib 下载链接 http://dlib.net/(2)设置环境变量 此步可以省略,不过后面就需要写全路径了。新建环境变量: DLIB = C:\Program Files\dlib-19.0\,其中“C:\Program Files\dlib-19.0”是我的解压目录(3)建立VS2013空项目3.1 设置包含目

2016-08-08 10:50:01 8385 8

原创 Win7 64Bit + VS2012 + openBLAS0.2.18

为了方便神经网络模型的高效运行,需要独立实现一套基于forward框架,因此需要用到openBLAS矩阵计算库。 * 配置环境:Win7 64Bit + VS2012 + openBLAS0.2.18 * 安装MSYS2 官方推荐MinGW + MSYS,这个组合很难搞定,尤其是下载经常被墙。* (1)下载MSYS2*到这里去下载对应版本http://msys2.github.io/, 如果无

2016-07-20 11:40:38 4471

原创 剪枝+再训练:稀疏化DeepID2

压缩的核心剪枝再训练 算法流程 剪枝准则 实验分析本次介绍的依然是压缩网络的方法,不过有了具体的应用场景:压缩的模型是DeepID2+。方法来源于《2015 arxiv: Sparsifying Neural Network Connections for Face Recognition》,文章是王晓刚、汤晓鸥团队的,所以结果依旧很漂亮,但谁又能保证没点trick呢。T_T 压缩的核心:剪

2016-06-17 15:52:24 15511 10

原创 网络压缩-量化方法对比

本次介绍的是一种压缩神经网络模型大小的方法,来自《2014 arxiv:Compressing Deep Convolutional Networks using Vector Quantization》。该方法和很多之前的神经网络压缩方法一样,基本只对全连接层有效,因此这里权作了解。由论文名可以看出,主要是对密集权重矩阵进行量化编码来实现压缩。论文做了很多种量化方法的对比试验,不过都只针对全连接层

2016-06-15 08:58:03 9092

原创 PLDA简介

本次介绍一种传统的人脸认证模型:PLDA。 该模型最早出现在《2007 ICCV:Probabilistic Linear Discriminant Analysis for Inferences About Identity》,经过几年发展PLDA出现了很多改进版本,但主要思想基本一致。 因此,本文主要结合这篇文章和《2013 TPAMI:A Scalable Formulation of Pr

2016-06-14 15:19:43 12175 4

MKL——最全说明文档

MKL最全说明文档,支持C、Fortran 和 Fortran 95

2016-10-14

MKL最全说明文档

MKL的最全说明文档,包含C、Fortran 和 Fortran 95的说明

2016-10-14

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除