
Caffe源码精读
通过源码解读的形式,了解深度学习框架Caffe。并从Caffe中学习Deep Learning,实践Deep Learning。
赛先生.AI
科技公司CTO。机器学习,深度学习,计算机视觉从业者。网络,流媒体技术,编解码技术爱好者。
曾从事汽车行业,安防行业,现从事无人机行业。
-> tecsai@163.com
展开
-
Caffe源码精读 - 11 - Caffe Layers之concat_layer
Class_9Caffe Layers之concat层概述concat层的主要作用就是做特征融合。将两个及以上的特征图,在某一个数据轴(一般是通道轴)做拼接,起到组合特征的作用。1. 操作concat操作相对简单,只是简单地在同纬度进行拼接,并没有像eltwise层一样的运算操作。因此,在caffe中核心的处理就是拷贝(caffe_copy)。举个栗子,有两个通道不同,但其他维度均相同的特征图A和B,shape分别是1*3*300*300和1*6*300*300。如果按照C轴进行con.原创 2020-10-10 10:44:40 · 435 阅读 · 0 评论 -
Caffe源码精读 - 8 - Caffe Layers之yolov3_layer(yolov3 loss计算层)
Caffe源码精读 - 8 - Caffe Layers之yolov3_layer(yolov3 loss计算层)1. 概述 yolov3_layer是yolov3模型,处理feature map,计算loss的层。主要就是计算定位损失,bndbox的置信损失和类别置信损失。2. dx_box_iou(vector<Dtype> pred, vector<Dtype> truth, IOU_LOSS iou_loss)dx_box_iou是计算iou梯度信...原创 2020-08-05 17:16:37 · 610 阅读 · 0 评论 -
Caffe源码精读 - 7 - Caffe Layers之deconv_layer(反卷积层)
Class_7 Caffe Layers之deconv_layer(反卷积层)1. 概述deconv_layer是反卷积层,在DL领域又叫转置卷积。反卷积层到目前最大的用处就是实现上采样。典型的如yolov3和yolov4中,做feature map融合的时候,先采取1*1卷积降维,然后采用反卷积实现上采样。 deconv_layer也是和base_conv_layer有千丝万缕的联系,鉴于在讲conv_layer的时候已经讲过,在此不做赘述。2. deconv_layer...原创 2020-07-31 16:19:39 · 595 阅读 · 0 评论 -
Caffe源码精读 - 6 - Caffe Layers之sigmoid_layer(sigmoid激活层)
Class_6 Caffe Layers之sigmoid_layer(sigmoid激活层)1. 简述sigmoid_layer是激活层,一般地说,卷积之后一定带一个激活层。caffe中sigmoid激活层相对还是简单的。继承了一个neuron_layer,然后实现了前向和后向的计算。2. neuron_layerneuron_layer实际上不是CNN或RNN中的层,而只是一个辅助层。neuron_layer的作用也很简单,就是给那些只有一个输入一个输出,且输入和输出是相同shape的层做原创 2020-07-30 16:26:13 · 874 阅读 · 0 评论 -
Caffe源码精读 - 5 - Caffe Layers之data_layer(数据层)
Class_4 Caffe Layers之data_layer(数据层)1. 概述data_layer稍微有些深, 分别是Layer->BaseDataLayer->BasePrefetchingDataLayer->DataLayer。结构图如下: 2. InternalThreadInternalThread实际上是封了一层boost的thread,相对理解起来比较简单。(1)entryentry函数是一个私有函数,不对外公开。主要是为...原创 2020-07-29 16:43:40 · 417 阅读 · 0 评论 -
Caffe源码精读 - 1 - Caffe总览
Caffe源码架构比较明晰,分为solver,net, layer,Blobs四个层级(严格的说是三个层级,不包含solver)。solver是结算文件,生成网络,并控制整个网络的前向计算和反向传播;net是网络文件,一个net对象就是一个网络模型。net由一个个layer组成;layer是神经网络的各个层的抽象,其中包含Forward_cpu(Forward_gpu)和Backward_cpu(Backward_gpu),还有输入输出blob和偏差blob。Blob是数据类,用来存储数据。原创 2020-07-24 17:25:29 · 184 阅读 · 0 评论 -
Caffe源码精读 - 4 - Caffe Layers之pooling_layer(池化层)
Class_4 Caffe Layers之pooling_layer(池化层)1. 概述池化是卷积神经网络中较为常用的一种操作,根本目的是实现降采样,简化计算。目前池化层从作用面区分,可分为全局池化和局部池化。全局池化是相当于在整张图上做池化,每一张特征图最终得到一个池化值,即H*W*C的特征层,经过全局池化以后得到的是1*1*C的池化输出。局部池化就是指定Feature map上相同的若干区域,进行池化操作。池化操作又分为最大池化、平均池化。具体操作细节不再赘述。2. Caffe.原创 2020-07-24 17:14:40 · 429 阅读 · 0 评论 -
Caffe源码精读 - 2 - Caffe 之Blob(数据容器)
Class_3 Caffe之blob(数据容器)1. 概述Blob是caffe中使用的一个数据容器,几乎每一个网络层都有自己的blob(继承自层基类layer的“vector<shared_ptr<Blob<Dtype> > > blobs_”)。各层在前向传播和反向传播过程中,主要就是改变相应blob中的存储值。2. 数据Blob中保存SyncedMemory类型的数据,SyncedMemory数据是更底层的缓存形式,直接控制指针,在此不做细致.原创 2020-07-23 09:57:26 · 418 阅读 · 0 评论 -
Caffe源码精读 - 3 - Caffe Layers之conv_layer(卷积层)
Caffe Layers之conv_layer(卷积层)概述卷积层是组成卷积神经网络的基础应用层,也是最常用的层部件。而卷积神经网路有事当前深度学习的根本。在一般算法的Backbone、neck和head基本都是由卷积层组成。卷积操作一般从数学角度讲,卷积分两个步骤,第一步做翻转,第二部乘积求和。 DL中的卷积操作是一种无翻转卷积,类似于相关操作。卷积的作用即是提取特征,通过一层层的卷积,使得特征被一步步浓缩。在卷积操作过程中,浅层卷积保留更多的描述信息,而深层卷积描述更多的抽象特..原创 2020-07-20 14:53:37 · 1822 阅读 · 0 评论 -
Caffe源码精读 - 0 - 序
左手Caffee,右手Caffe系列主要是从源码角度,对Caffe进行深度剖析,并辅助DL的理论学习。Caffe可以说是老一辈的深度学习框架了,虽然后来有了caffe2,但是第一代caffe的经典之处,无法磨灭。当前DL领域,虽然拥有了众多的深度学习框架,如TF、PyTorch、MxNet等,但不可否认,在前端识别(end)和边缘计算(edge)领域,caffe仍是最受欢迎的框架之一。究其原因,各硬件算力平台的全方位支持,模块化,底层化给硬件厂商和平台使用者提供了一种实现上的统一。当然,TF、P原创 2020-07-20 14:44:11 · 174 阅读 · 0 评论