深度学习
文章平均质量分 56
z0n1l2
这个作者很懒,什么都没留下…
展开
-
经典网络参数和top-score
转载 2019-01-20 21:00:42 · 877 阅读 · 0 评论 -
经典网络结构之InceptionNet
InceptionNet又称googleNet,最初的设计思路是增加网络宽度:InceptionNet核心结构包括多个分支,分别对应不同的感受野。大的感受野适用大的目标,小的感受野适用小目标,如此网络具备了scale不变性。不同感受野最终通过concat合并在一起,为了避免通道数爆炸,在每个分支上引入1x1卷积降低通道数目。Inception V2吸收了VGG的优点,利用多个小尺度卷积代替一...原创 2018-11-07 00:06:42 · 2818 阅读 · 0 评论 -
深度学习和传统机器学习的差别
特征构造是否需要人工构造特征,这应该是深度学习和传统机器学习的最明显的差异。feature engining是传统机器学习中的一个重要组成部分,sift,hog,wavelet等都是解决如何描述数据的问题。深度学习兴起后,feature engining的研究几乎停滞,而end-to-end成为一个新兴的研究方向。传统机器学习中有一个分支:representation learning,研究目...原创 2018-11-04 01:50:35 · 19510 阅读 · 1 评论 -
机器学习中的求导
基础知识机器学习中常见函数求导幂次(xu)′=uxu−1(x^u)^\prime=ux^{u-1}(xu)′=uxu−1指数(ex)′=ex(e^x)^\prime=e^{x}(ex)′=ex对数(logax)′=1xlna(\log _ax)^\prime=\frac{1}{x\ln a}(logax)′=xlna1(lnx)′=1x(ln x)^\prime...原创 2018-10-30 01:44:26 · 1111 阅读 · 0 评论 -
在VOC上训练 darknet yolov3
数据集需要voc2007和voc2012, 目录结构如下 VOCdevkit/VOC2007 VOCdevkit/VOC2012darknet/sctripts/voc_label.py 在VOCdevkit目录下执行该脚本,生成若干txt,里面都是绝对路径其中train.all.txt是所有图片的列表, train.txt是除了voc2007 test以外的图片列表,训练时可以...翻译 2018-10-28 22:49:29 · 704 阅读 · 0 评论 -
一个图看懂语义分割框架
来自ICNET的一个图,对理解语义分割框架很有帮助转载 2018-10-21 01:02:28 · 1428 阅读 · 0 评论 -
实时语义分割ICNET
ICNet for Real-Time Semantic Segmentation on High-Resolution Images作者开源代码特点上图可以很好的说明ICNET的特点,它是第一个出现在上图右上角的方法,同时兼顾分割效果和处理速度。准确率超过60%,对于1024x2048的高分辨率输入,速度达到30FPS,虽然硬件条件也不低。框架论文分析了语义分割各个模块的对速度影响,...翻译 2018-10-21 00:48:20 · 2720 阅读 · 0 评论 -
让DL玩斗地主
A SOLUTION TO CHINA COMPETITIVE POKER USING DEEP LEARNING概要当AI遇到游戏才是最有趣的,本文里利用CNN玩斗地主(China Competitive Poker),在一定条件下可以击败人类选手了,也算SOA吧。文中斗地主规则如下三个玩家,一个地主,两个农民每个玩家17张牌,地主可以获得额外的3张牌,但开局前要向农民展示三张可以带...原创 2018-10-16 01:20:15 · 1044 阅读 · 0 评论 -
VOC
记录VOC上的一些stat-of-artresnetDeep Residual Learning for Image Recognitionresnet接入Faster-RCNN,VOC07+12集合上检测率最高在75%左右翻译 2018-10-18 23:21:06 · 278 阅读 · 0 评论 -
CIFAR
记录CIFAR上的一些stat-of-artresnetDeep Residual Learning for Image Recognitionresnet最好记录是classification error 6.43%翻译 2018-10-18 23:15:02 · 402 阅读 · 0 评论 -
ImageNet
记录ImageNet上的一些stat-of-artresnetDeep Residual Learning for Image Recognitionresnet最好记录是top-5 error 3.57%翻译 2018-10-18 23:10:20 · 894 阅读 · 0 评论 -
卷积层的dropout - dropblock
DropBlock: A regularization method for convolutional networksdropout的不足dropout是深度学习中避免过拟合的手段之一,经典网路结构中,dropout都被放到全连接层之后,鲜有放到卷积层之后。这是因为实验证明卷积层后的dropout层对网络泛化能力的改进微乎其微,本文分析了其中的原因:卷积层输出特征图各个元素之间存在很强的相...原创 2018-11-02 22:41:13 · 8258 阅读 · 0 评论 -
训练一次得到多个模型做集成的方法
参考论文SNAPSHOT ENSEMBLES: TRAIN 1, GET M FOR FREE解决的问题多个分类器集成可以获得超过单个分类器的效果,但集成分类器就要求有多个分类器,在训练速度和测试速度方面不占优势。本文提出的方法可以提高集成学习的训练速度,通过一次训练,获得多个分类器,解决了集成学习训练速度慢的问题。解决方法深度学习训练过程中,只有经历足够长的epoch后,test l...原创 2018-11-04 20:42:57 · 4521 阅读 · 0 评论 -
深度学习中的优化策略
SGDw=w−lr∗∂ww = w - lr*\partial ww=w−lr∗∂w 其中lrlrlr是学习速率∂w=∂loss∂w\partial w = \frac{\partial loss}{\partial w}∂w=∂w∂losssgd_momentumv=mu∗v−lr∗∂wv=mu*v-lr*\partial wv=mu∗v−lr∗∂ww=w+vw = w + vw=...原创 2019-01-05 19:50:53 · 722 阅读 · 0 评论 -
batch norm反向公式推导
输入Xi=(xi0,xi1,...,xi(n−1))X_i=(x_{i0},x_{i1},...,x_{i(n-1)})Xi=(xi0,xi1,...,xi(n−1)) i∈[0,m−1]i \in [0,m-1]i∈[0,m−1] batch-size等于m,特征维度n输出Yi=(yi0,yi1,...,yi(n−1))Y_i=(y_{i0},y_{i1},...,y_{i(n-1...原创 2019-01-05 16:35:28 · 921 阅读 · 0 评论 -
pvanet 训练自定义数据
源码编译方法到lib目录下执行makecaffe-fast-rcnn目录下执行cp Makefile.config.example Makefile.config#编辑Makefile.config内容,启动WITH_PYTHON_LAYER := 1make -j8 && make pycaffe训练脚本假设处理的目标是pascal_voc_obj...原创 2018-12-04 23:30:59 · 397 阅读 · 0 评论 -
softmax_loss梯度推导
softmax_loss的真正名字应该是softmax cross entropy loss。因为softmax的定义是f(zi)=softmax(zi)=ezi∑jezjf(z_i)=softmax(z_i)=\frac{e^{z_i}}{\sum_je^{z_j}}f(zi)=softmax(zi)=∑jezjezi, softmax loss的定义是L=−1N∑i=0NLi=...原创 2018-11-18 02:54:50 · 1187 阅读 · 0 评论 -
yolov3 中box坐标的处理
yolov2吸收faster rcnn的anchor box机制时遇到训练不稳定的问题,分析认为是bbox坐标回归时没有限制,导致anchor box可能会去预测一个距离很远的object,效率不高,因此yolov2对bbox的坐标进行一系列的处理,令anchor box只会对邻近的object负责。阅读论文和代码时难以理解这个机制,以下是个人的一些分析,不保证正确,欢迎讨论指正。公式中(tx...原创 2018-11-15 00:46:26 · 12491 阅读 · 0 评论 -
faster R-CNN 生成anchor box
以下代码来自faster R-CNN的generate_anchors.py,目的是基于预定的base_box(正方形),生成若干长宽比和尺度的新的anchor box。其中_whctrs()是把一个矩形用(中心点,宽高)的形式表达_mkanchors()是给定一个中心点,和若干不同的宽高,生成新的anchor,以(左上点,右下点)的形式_ratio_enum() 输入一个初始anchor...原创 2018-11-16 00:25:37 · 647 阅读 · 0 评论 -
shuffleNetV2
ShuffleNet V2: Practical Guidelines for Efficient CNN Architecture DesignWhyResNet,DenseNet等网络已经把分类问题的精度推到一个很高的水平,而很多轻量级网络MobleNet, XceptionNet和ShuffleNet则在不牺牲太多精度的前提下,降低网络计算量,令深度学习网络可以运行在一些资源受限的平台上...原创 2018-11-11 20:48:24 · 1402 阅读 · 0 评论 -
解决样本不均衡问题-SMOTE
原文链接SMOTE: Synthetic Minority Over-sampling Technique解决的问题很多算法都有一个默认的假设:样本中各个类别的样本数目是均衡的,比如深度学习中几个经典网络结构直接用于不均衡数据效果会很差。本文提出的SMOTE是一种通过线性插值过采样的方法解决不均衡问题的方法。如果通过简单复制样本没有获得期望结果时,不妨试试这个方法。伪码输入:同一类别的所...原创 2018-11-05 21:57:52 · 3279 阅读 · 0 评论 -
强化学习的一点理解
从可用作输入的信息多少的角度,可以把机器学习划分成三个类别:无监督学习:包括降维和聚类任务,几乎任何东西都可以当作输入,但输出往往很模糊。有监督学习:包括分类和回归任务,因为需要人工标注,可以当作输入的信息要少很多强化学习:和前面两类不同,强化学习适合做的是行为控制。其能够接触到的信息最少,甚至算法要通过和环境交互才能获得更多信息。有监督学习是目前实用性最强的方法,但是无监督学习和强化学...原创 2018-11-08 00:49:04 · 531 阅读 · 0 评论 -
darknet yolov3 训练自定义数据集
VOC数据集上的训练步骤修改类别yolo层的classes修改成新的类别书yolo层前一个convolution层的filters修改成(classes+4+1)*3原创 2018-11-10 22:03:50 · 1170 阅读 · 0 评论 -
VGG数据预处理
参考文献Very Deep Convolutional Networks for Large-Scale Image Recognition本文的目的目标检测/语义分割等领域都会涉及到预训练模型,一般是在ImageNet上训练出来的一个分类模型,但是ImageNet和cifar/mnist不同,一个图可能包含多个目标目标的尺寸不固定图像尺寸不固定图像长宽比不固定这种集合如何用来训...翻译 2018-10-09 01:12:09 · 3454 阅读 · 0 评论 -
gluoncv-FCN
参考gluoncv按照gluoncv的文档中pip install gluoncv方法安装,但是发现这个版本似乎依然有不少问题准备数据pascal_voc.py 这个脚本可以下载需要的四个文集,但是用迅雷下载的发现最后一个benchmark.tgz下载后的的hash码不对,另外三个是对的。但是用wget下载速度有很慢,最后通过修改脚本,绕开了hash校验,这个脚本其实只做三间事情V...原创 2018-10-15 01:27:19 · 1195 阅读 · 8 评论 -
FGSM:从另一个角度观察BP模型 (附源码)
什么是FGSMFast Gradient Sign Attatck(FGSM) 是一种很直观的迷惑基于BP算法训练出的模型的攻击方法, 出自 Explaining and Harnessing Adversarial Examples。基于FGSM的攻击需要了解目标模型内部细节,其目的也只是降低目标模型的分类精度,并不能控制模型误分后的结果。上图是一个FGSM的例子,左侧第一幅图x可以被目标...原创 2018-10-06 00:14:31 · 1858 阅读 · 0 评论 -
darknet-router层
darknet中router层是用来合并前面若干层的输出,作为一个新层,其本质上就是一个复制操作 配置[route]layers = -1, 8cfg文件中如上指定route层,需要合并CURRENT_LAYRE_INDEX-1和第8层的输出,其中CURRENT_LAYER_INDEX是当前route层索引 加载route_layer parse_ro...原创 2018-06-19 22:48:21 · 4670 阅读 · 0 评论 -
darknet-解析网络配置cfg文件
darknet中网络配置文件是cfg文件,类似caffe的train_val.prototxt文件,代码中解析这个cfg文件的函数是parse_network_cfg_custom().这个函数列举了darknet支持的所有类型的层,以后会慢慢研究,这里重点关注params变量,它把所有层组织成一个网络.typedef struct size_params{ int batch...原创 2018-06-19 18:17:56 · 4235 阅读 · 0 评论 -
CUDA入门
CUDA简介CUDA是NVIDIA发布的GPU上的并行计算平台和模型, 2006年第一代CUDA发布,截至2018年最新的是9代CUDA. hello cuda! __global__ void helloWorld() //__globa__是关键字 { printf("Hello CUDA!"); } int ma...原创 2018-06-08 00:21:44 · 21247 阅读 · 0 评论 -
一个端到端验证码识别结构
以前模拟别人的代码写端到端的验证码识别程序,今天被人问及端到端OCR如何做,竟然想不起来细节了… 再好的记忆里也不如一个烂笔头, 把网络结构保留在这里备忘.图示代码class CAPTCHANet(nn.Block): def __init__(self,outputNum,verbose = False, **kwargs): super(CAPT...原创 2018-06-22 15:49:08 · 742 阅读 · 0 评论 -
c++调用mxnet模型做预测
python在深度学习领域很火,做实验用python很舒服,但是生产环境下可能还是需要c/c++. 那么问题来了, mxnet训练出来的模型如何在c/c++下调用? 以下是一些填坑的经验分享一下mxnet支持c/c++调用模型,但目前不是全部的网络模型都支持 这个和版本相关,总之是没有完全支持,做好心理准备c++做预测的sample codes 就是 image-classificati...原创 2018-06-22 15:11:51 · 4078 阅读 · 0 评论 -
darknet-convolution层
forwardvoid forward_convolutional_layer(convolutional_layer l, network_state state){ int out_h = convolutional_out_height(l); int out_w = convolutional_out_width(l); int i; fill...原创 2018-06-22 01:36:37 · 1033 阅读 · 0 评论 -
darknet - forward-yolo-layer函数
static int entry_index(layer l, int batch, int location, int entry){ int n = location / (l.w*l.h); int loc = location % (l.w*l.h); return batch*l.outputs + n*l.w*l.h*(4+l.classes+1) + ...原创 2018-06-20 22:47:32 · 3295 阅读 · 0 评论 -
mshadow简介
Tensor Data Structuremshadow基础的数据结构是Tensor. 以下是mashadow/tensor.h的简化版本. typedef unsigned index_t;template<int dimension>struct Shape { index_t shape_[dimension];};template<type...翻译 2018-05-24 17:21:09 · 1357 阅读 · 0 评论 -
给caffe增加一个新的loss定义
* 重点: forward/backward的输入输出是什么? *定义loss函数以CCC-分类问题为例,定义softmax_l2_loss, 输入样本XXX, 第k∈[0,C]k∈[0,C]k \in [0,C]个输出的损失定义为 Lk(X)=(yk−fk(X))2Lk(X)=(yk−fk(X))2L_k(X) = (y_k - f_k(X))^2 其中ykyky_k是标签YYY...原创 2018-06-12 17:12:56 · 675 阅读 · 0 评论 -
一个基于mxnet的目标检测
学习mxnet也有一段时间了,但依然感觉对mxnet没有入门,于是计划了一个yolo实验, 主要不是复现yolo,而是按照自己的喜好整理一下mxnet的各个接口,希望有助于加深对mxnet的理解.抛开mxnet, 一个识别算法应该包括如下几个模块: * 样本生成/加载 * 模型生成/加载 * 模型训练/预测下面以gluon教程中yolo的例子,重新按上述模块划分代码,实现教程中的yo...原创 2018-06-12 16:18:57 · 3839 阅读 · 0 评论 -
mxnet中增加新层(python)
源mxnet中增加新层的途径有两个: * 利用CustomOp,基于front-end语言(比如python)实现.如果实现中使用的都是mx.nd接口,则新层可以自由在CPU和GPU上运行,否则(比如用了mx.nd.asnumpy()复制数据到CPU)则只能在CPU上运行 * 利用c++/mshadow(CUDA)实现.可以获得最大性能提升,但是要求对mshadow/cuda/mxnet比...翻译 2018-06-29 10:21:28 · 1116 阅读 · 0 评论 -
让机器用人的方式识别图像[codes]
论文地址This looks like that: deep learning for interpretable image recognitionprototype layerprototype layer对应的公式如下: gpj=maxz⃗ ∈patch(z)−log(||z⃗ −pj||22+ϵ)gpj=maxz→∈patch(z)−log(||z→−...原创 2018-07-11 20:24:44 · 1591 阅读 · 1 评论 -
深度学习网络结构-MobileNet
参考27个卷积层,输入224x224,scale=32核心组件,卷积层后加BN和ReluMobileNet中两个关键的卷积类型 * Depthwise Conv filter是二维的,不包括通道维度。 * Pointwise Conv 1∗11∗11*1卷积一个普通的卷积filter是k∗k∗nk∗k∗nk*k*n,kkk是尺寸,nnn是输入通道数目,如果输...转载 2018-09-02 22:56:28 · 412 阅读 · 0 评论 -
深度学习网络结构-RESNET
参考输入尺寸224x224, 最深尺寸7x7, scale = 32左侧的结构用在浅层resent: 18-layer和34-layer 右侧的结构用在深层resnet: 50-layer,101-layer和152-layer转载 2018-09-02 20:13:05 · 804 阅读 · 0 评论