- 博客(149)
- 资源 (2)
- 收藏
- 关注
原创 GPU编程自学10 —— 流并行
深度学习的兴起,使得多线程以及GPU编程逐渐成为算法工程师无法规避的问题。这里主要记录自己的GPU自学历程。目录《GPU编程自学1 —— 引言》《GPU编程自学2 —— CUDA环境配置》《GPU编程自学3 —— CUDA程序初探》《GPU编程自学4 —— CUDA核函数运行参数》《GPU编程自学5 —— 线程协作》《GPU编程自学6 —— 函数与变量类型限定符》《GPU编程自学7 —
2017-08-23 14:54:41 13928 5
原创 MEC —— 优化内存与速度的卷积计算
本次介绍一种内存利用率高且速度较快的卷积计算方法。 来自ICML2017, 《MEC: Memory-efficient Convolution for Deep Neural Network》1. 背景工作目前的CNN模型中,全连接层往往在最后一层才会使用。 意思也就是说,网络的主体是由卷积层构成的。 因此,加快卷积层的计算对于整个网络的性能至关重要。目前,卷积的计算大多采用间接计算的方式,主要有
2017-08-20 13:01:03 10021 4
原创 GPU编程自学9 —— 原子操作
深度学习的兴起,使得多线程以及GPU编程逐渐成为算法工程师无法规避的问题。这里主要记录自己的GPU自学历程。目录《GPU编程自学1 —— 引言》《GPU编程自学2 —— CUDA环境配置》《GPU编程自学3 —— CUDA程序初探》《GPU编程自学4 —— CUDA核函数运行参数》《GPU编程自学5 —— 线程协作》《GPU编程自学6 —— 函数与变量类型限定符》《GPU编程自学7 —
2017-08-18 22:33:15 7528
原创 C++ 类型转换
隐式类型转换1 数值类型转换2 指针类型转换显式类型转换1 explicit关键字1 强制类型转换11 static_cast12 dynamic_cast13 const_cast14 reinterpret_cast参考资料C++类型转换大体上包括隐式类型转换和显式类型转换。1. 隐式类型转换隐式类型转换是自动执行的,无需显式的操作符。 隐式类型转换发生在很多地方,比如函数
2017-08-17 19:03:25 15309 2
原创 C++ virtual关键字
之前始终没有搞清楚C++中 “virtual” 关键字的用法。静态函数可以声明为虚函数吗构造函数可以为虚函数吗析构函数可以为虚函数吗虚函数可以为私有函数吗虚函数可以被内联吗纯虚函数与抽象类
2017-08-14 19:25:02 12325 2
原创 ShuffleNet
本文介绍旷视科技最近提出来的ShuffleNet, 目的同样也是利用特殊的网络结构达到参数少速度快的效果。文章链接: 《ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices》
2017-08-13 12:12:00 23589 10
原创 Google Xception Network
本次介绍Google的Xception网络,该网络的目的或者说达到的效果是:模型参数量同GoogLeNet Inception V3相近的情况下取得更好的网络性能。文章链接: 《Xception: Deep Learning with Depthwise Separable Convolutions》caffe实现的Xception: https://github.com/yihui-he/Xcep
2017-08-12 20:29:47 10290 3
原创 GPU编程自学8 —— 纹理内存
深度学习的兴起,使得多线程以及GPU编程逐渐成为算法工程师无法规避的问题。这里主要记录自己的GPU自学历程。目录《GPU编程自学1 —— 引言》《GPU编程自学2 —— CUDA环境配置》《GPU编程自学3 —— CUDA程序初探》《GPU编程自学4 —— CUDA核函数运行参数》《GPU编程自学5 —— 线程协作》《GPU编程自学6 —— 函数与变量类型限定符》
2017-08-11 12:01:27 13821 1
原创 GPU编程自学7 —— 常量内存与事件
深度学习的兴起,使得多线程以及GPU编程逐渐成为算法工程师无法规避的问题。这里主要记录自己的GPU自学历程。目录《GPU编程自学1 —— 引言》《GPU编程自学2 —— CUDA环境配置》《GPU编程自学3 —— CUDA程序初探》《GPU编程自学4 —— CUDA核函数运行参数》《GPU编程自学5 —— 线程协作》《GPU编程自学6 —— 函数与变量类型限定符》
2017-08-07 20:27:31 4711
原创 GPU编程自学6 —— 函数与变量类型限定符
深度学习的兴起,使得多线程以及GPU编程逐渐成为算法工程师无法规避的问题。这里主要记录自己的GPU自学历程。目录《GPU编程自学1 —— 引言》《GPU编程自学2 —— CUDA环境配置》《GPU编程自学3 —— CUDA程序初探》《GPU编程自学4 —— CUDA核函数运行参数》《GPU编程自学5 —— 线程协作》
2017-08-05 21:49:28 3646
原创 GPU编程自学5 —— 线程协作
深度学习的兴起,使得多线程以及GPU编程逐渐成为算法工程师无法规避的问题。这里主要记录自己的GPU自学历程。目录《GPU编程自学1 —— 引言》《GPU编程自学2 —— CUDA环境配置》《GPU编程自学3 —— CUDA程序初探》《GPU编程自学4 —— CUDA核函数运行参数》
2017-08-05 17:12:50 5762
原创 GPU编程自学4 —— CUDA核函数运行参数
深度学习的兴起,使得多线程以及GPU编程逐渐成为算法工程师无法规避的问题。这里主要记录自己的GPU自学历程。目录《GPU编程自学1 —— 引言》《GPU编程自学2 —— CUDA环境配置》《GPU编程自学3 —— CUDA程序初探》
2017-08-04 13:20:40 13551 1
原创 GPU编程自学3 —— CUDA程序初探
深度学习的兴起,使得多线程以及GPU编程逐渐成为算法工程师无法规避的问题。这里主要记录自己的GPU自学历程。
2017-08-03 21:07:32 9106
原创 GPU编程自学2 —— CUDA环境配置
深度学习的兴起,使得多线程以及GPU编程逐渐成为算法工程师无法规避的问题。这里主要记录自己的GPU自学历程。二、 CUDA环境配置
2017-08-03 09:14:50 14988
原创 GPU编程自学1 —— 引言
深度学习的兴起,使得多线程以及GPU编程逐渐成为算法工程师无法规避的问题。这里主要记录自己的GPU自学历程。
2017-08-03 09:08:09 11574 1
原创 梯度下降优化算法总结
本次介绍梯度下降优化算法。主要参考资料为一篇综述《An overview of gradient descent optimization algorithms》
2017-07-21 22:44:54 17426 1
原创 C++ 内联函数inline
1. 内联函数的作用inline 2. 内联函数的实现 3.内联函数的优缺点 4.内联函数的应用场景 5 内联函数与宏的区别
2017-06-26 10:12:11 4089
原创 Win10 linux子系统下显示图形界面
新版win10可以开启linux子系统,但是在里面执行Python的画图程序时因为缺少图形化界面总是报错,这里提供一个解决方案。(1) 下载并安装windows版本Xming地址: https://sourceforge.net/projects/xming/?source=typ_redirect(2) 通过在命令窗中执行bash命令进入linux子系统;(3) 执行
2017-06-24 10:47:47 39929 1
转载 matlab保存figure中的图片去掉白边
输出图片成可直接调入的灰度图,设置输出图片空白边距,以及调整图片大小,纵横比。一、先显示图片,imshow。如果是plot,或者newplot,直接看“三”。 imshow(strain_image,’border’,’tight’,’initialmagnification’,’fit’); %’border’,’tight’的组合功能意思是去掉图像周边空白 %’InitialMagnifi
2017-06-05 12:18:22 41964 3
原创 static关键字
static关键字的介绍主要从以下几个方面进行:1. 静态局部变量 2.静态全变量 3.静态函数 4.静态类成员变量 5.静态类成员函数
2017-05-28 10:51:23 1056 2
转载 C/C++的四大内存分区
本文转载自Dablelv的博客专栏http://blog.csdn.net/k346k346/article/details/45592329正确的理解C/C++程序的内存分区,是合格程序猿的基本要求。 网络上流形两大版本内存分区,分别为:1. 五大内存分区:堆、栈、全局/静态存储区、自由存储区和常量存储区。 2. 五大内存分区:堆、栈、全局/静态存储区、字符串常量区和代码区。且不论以上两种
2017-05-27 21:43:57 1796 3
原创 STL-Vector内存机制
vector可以看作是一个动态数组,其内存是连续的,并具有以下特性:(1) vector中的size表示当前实际数据数量,capacity 则表示当前可容纳的数量,即已开辟的内存。(2) 释放(pop_back)、删除(erase) 和 清空(clear) 只会改变size,不会改变capacity 。只有在vector析构的时候才会清空所有内存。(3) 当追加(push_back)、 插入(ins
2017-05-27 20:38:40 1434
原创 利用ReLU输出稀疏性加速卷积
一篇讲利用ReLU输出的稀疏性来加速卷积计算的论文,其目的和另一篇文章《More is less》 有点类似。实验效果似乎还不错,但似乎并没有很大的创新。《Speeding up Convolutional Neural Networks By Exploiting the Sparsity of Rectifier Units》
2017-05-03 16:52:38 7615
原创 一行代码改进NMS
一篇讲通过改进NMS来提高检测效果的论文。文章链接: 《Improving Object Detection With One Line of Code》Github链接: https://github.com/bharatsingh430/soft-nmsMotivation 绝大部分目标检测方法,最后都要用到 NMS-非极大值抑制进行后处理。 通常的做法是将检测框按得分排序,然后保留得分最高的框
2017-04-30 19:47:21 18528 17
原创 MobileNets
一篇讲如何设计轻量级网络的文章,来自Google,方法和创新不是很多,但实验太充分。不愧是谷歌,财大气粗,实验随便跑。文章链接: 《MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications》文章共从三点来探讨网络加速,下面依次介绍这三点以及部分关键性的实验。Depthwise Separabl
2017-04-28 20:01:05 5850 3
转载 什么是P问题、NP问题和NPC问题
本文转自“什么是P问题、NP问题和NPC问题”: http://www.matrix67.com/blog/archives/105, 并做了排版整理。这或许是众多OIer最大的误区之一。你会经常看到网上出现“这怎么做,这不是NP问题吗”、“这个只有搜了,这已经被证明是NP问题了”之类的话。你要知道,大多数人此时所说的NP问题其实都是指的NPC问题。他们没有搞清楚NP问题和NPC问题的概念。NP问题
2017-04-17 11:48:56 1558
原创 Beyond triplet loss—— Re-ID
一篇讲Person Re-ID的论文,来自CVPR2017,同样是改进了Triplet Loss。《Beyond triplet loss: a deep quadruplet network for person re-identification》 减小类内方差 和 增加类间方差
2017-04-15 21:55:51 10854 2
原创 More is Less——卷积网络加速
一篇讲网络加速的论文,来自2017CVPR。《More is Less: A More Complicated Network with Less Inference Complexitv》Introduction 目前做神经网络加速的主要有这几个方面: 低秩分解,定点运算、矢量量化、稀疏表示、特殊的轻量级网络结构。
2017-04-14 15:03:10 7554 2
原创 Re-ID with Triplet Loss
一篇讲Person Re-ID的论文,与人脸识别(认证)有很多相通的地方。 《In Defense of the Triplet Loss for Person Re-Identification》
2017-04-11 17:48:38 16793 3
原创 CNN不能识别Negative图像
一篇挺有意思的短文 《Deep Neural Networks Do Not Recognize Negative Images》。CNN可能还无法像人类一样理解到语义层面,而语义理解很可能是以后人工智能的一个重要层面。
2017-04-10 16:40:51 3717
原创 Dilated Convolution
本次介绍一篇有关语义分割的文章,其核心思想是如何不失分辨率的扩大感受野,该方法已被caffe默认支持。 该思想也可以应用到目标检测上来。文章《MULTI-SCALE CONTEXT AGGREGATION BY DILATED CONVOLUTIONS》github项目链接: https://github.com/fyu/dilationIntroduction
2017-04-10 15:16:16 22200 4
原创 C++ 类访问控制
最近在使用C++创建类的时候,忽然发现自己对于类访问控制 public,protected,private 的作用没有理解透彻,后来就查了些资料,这里以作记录。访问控制C++类的重要属性就是封装和继承。因此,最关键的问题就是权限 的问题,public,protected,private 控制的就是类内成员的访问权限。
2017-04-02 22:54:09 1930
原创 C++ 将文件数据一次性加载进内存
问题: 早先写了一个目标检测SDK,里面有从bin文件加载模型和从内存加载模型两个接口。后来遇到了级联检测,即有多个bin模型文件,当想要把多个bin文件合并成一个的时候,发现对应的加载接口也得变。解决: 为了不改变接口,采用了下面的解决思路
2017-03-27 14:50:32 5333
原创 Finding Tiny Face
《Finding Tiny Face》小目标检测依然是检测领域的一个难题,原因大概有3个方面:目标本身尺度变化、图像分辨率以及环境因素。虽然很多方法都可以处理多尺度目标检测,但是检测一个3pixel大小的目标和一个500pixel大小的目标还是有本质不同的。
2017-03-27 14:12:55 20589 15
转载 VS运行时库
本文主要讲述VS运行时库:1 运行时库的主要作用MTMTdMDMDdMLMLd 已废弃的区别与原理如何避免这种错误1 MD和MDd将是潮流所趋2 在多工程开发时所有的工程使用同一种运行时库历史发展的角度讲解运行时库1 从操作系统的角度出发2 从语言的角度在Windows下进行
2017-02-21 19:27:09 7292
原创 思考深度学习的泛化能力
神经网络通过记忆学习传统观点论文观点论文实验神经网络 不 通过记忆学习参考资料深度神经网络往往带有大量的参数,但依然表现出很强的泛化能力(指训练好的模型在未见过的数据上的表现)。深度神经网络为何会拥有如此强的泛化能力?最近,两篇论文引起了广泛思考。神经网络通过记忆学习《Understanding deep learning requires rethinking generalizatio
2017-02-20 17:12:52 23357 1
原创 排序算法6——堆排序
堆排序简介二叉堆简介堆排序总结堆排序简介堆排序可以看作是简单选择排序的一种的改进方法,平均复杂度为 \(O(n\log n)\),因此应用场合较多。其原理同简单选择排序相似:将数据分为已排序和未排序的两部分,并且不断的从未排序数据中选取最大(或最小)数据加入到已排序集合中。不同之处在于, 堆排序采用了一种特殊的二叉堆结构来快速的寻找最大值。(如下图,首先建立二叉堆,然后进行选择排序)二叉堆简介
2017-02-18 22:48:41 1321
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人