darknet源码解析
caicaiatnbu
这个作者很懒,什么都没留下…
展开
-
【darknet源码解析-29】图像RGB2HSV与HSV2RGB格式互转
本系列为darknet源码解析,由于在image.c中涉及到图像的RGB,YUV,HSV格式,在本文我们将image.c中涉及到的rgb_to_hsv()函数以及hsv_to_rgb()函数进行解析. RGB格式转为HSV格式 如果max=0 如果max!=0 对应源码如...原创 2020-01-22 16:27:33 · 1096 阅读 · 0 评论 -
【darknet源码解析-28】图像RGB2YUV与YUV2RGB格式互转
本系列为darknet源码解析,由于在image.c中涉及到图像的RGB,YUV,HSV格式,在本文我们将image.c中涉及到的rgb_to_yuv()函数以及yuv_to_rgb()函数进行解析.RGB格式转为YUV格式对应函数如下:void rgb_to_yuv(image im){ assert(im.c == 3); int i, j; ...原创 2020-01-21 20:57:41 · 743 阅读 · 0 评论 -
【darknet源码解析-27】l2norm_layer.h 与 l2norm_layer.c 解析
本系列为darknet源码解析,本次解析为src/l2norm_layer.h 和 src/l2norm_layer.c 两个,l2norm_layer主要是完成在每个batch对每个通道进行l2标准化操作;正向传播:反向传播: 如果,则, 否则 ,这与源码上的反传存在差入;l2norm_layer.h的详细定义如下:...原创 2019-12-30 16:22:13 · 513 阅读 · 0 评论 -
【darknet源码解析-26】upsample_layer.h 与 upsample_layer.c 解析
本系列为darknet源码解析,本次解析为src/upsample_layer.h 和 src/upsample_layer.c 两个,sample_layer主要是构建上采样层, upsample_layer使用于yolo v3中;upsample_layer.h 解析如下:#ifndef UPSAMPLE_LAYER_H#define UPSAMPLE_LAYER_H#inclu...原创 2019-12-27 14:59:35 · 1186 阅读 · 0 评论 -
【darknet源码解析-25】local_layer.h 和 local_layer.c 解析
本系列为darknet源码解析,本次解析为src/local_layer.h 和 src/local_layer.c 两个,local_layer主要是构建局部连接层。local_layer 与conv_layer 工作方式相同,除了权值不共享外, 也就是说,在输入的每个不同部分应用不同的一组过滤器。local_layer仅用于yolo v1中;局部连接层与卷积层有什么异同:如下图所示:在...原创 2019-12-05 20:43:26 · 765 阅读 · 0 评论 -
【darknet源码解析-24】shortcut_layer.h 和 shortcut_layer.c 解析
本系列为darknet源码解析,本次解析src/short_layer.h 与 src/short_layer.c 两个。在yolo v3中short_layer主要完成直连操作,完成残差块中的恒等映射操作;shortcut_layer.h 的定义如下:#ifndef SHORTCUT_LAYER_H#define SHORTCUT_LAYER_H#include "laye...原创 2019-11-14 19:34:02 · 1683 阅读 · 1 评论 -
【darknet源码解析-23】route_layer.h 和 route_layer.c 解析
本系列为darknet源码解析,本次解析src/route_layer.h 与 src/route_layer.c 两个。在yolo v2中reorg_layer主要将几个输入层拼接在一起,例如:输入层1: 26*26*256 输入层2: 26*26*128, 则route输出为:26*26*(256+128);route_layer.h 的定义如下:#ifndef ROUTE_LA...原创 2019-11-13 21:23:20 · 967 阅读 · 1 评论 -
【darknet源码解析-22】reorg_layer.h 和 reorg_layer.c 解析
本系列为darknet源码解析,本次解析src/reorg_layer.h 与 src/reorg_layer.c 两个。在yolo v2中reorg_layer主要将第25层的输出26*26*512的特征图reshape成13*13*2048。网上也有一些reorg层的解析,解释如下,但是发现我在阅读完reorg_layer的前向传播后,发现下面解析有问题。与代码实际不符;下面我们用...原创 2019-11-13 20:35:08 · 1672 阅读 · 3 评论 -
【darknet源码解析-21】softmax_layer.h 和 softmax_layer.c 解析
本系列为darknet源码解析,本次解析src/softmax_layer.h 与 src/softmax_layer.c 两个。softmax_layer主要完成了softmax回归。softmax层的前向传播,如下图所示:softmax层后面跟交叉熵作为损失函数,交叉熵的定义: ...原创 2019-11-12 21:12:47 · 946 阅读 · 2 评论 -
【darknet源码解析-20】yolo_layer.h 和 yolo_layer.c 源码解析
本系列为darknet源码解析,本次解析src/yolo_layer.h 与 src/yolo_layer.c 两个。yolo_layer主要完成了yolo v3中的三层的detection,分别是52*52*75,26*26*75,13*13*75是yolo v3这篇论文的核心部分。在阅读本节源码之前,请先了解一下 52*52*75,26*26*75,13*13*75 是什么样子的逻辑存储形...原创 2019-11-07 20:44:18 · 2558 阅读 · 4 评论 -
【darknet源码解析-19】region_layer.h 和 region_layer.c 解析
本系列为darknet源码解析,本次解析src/region_layer.h 与 src/region_layer.c 两个。region_layer主要完成了yolo v2最后一层13*13*125,是yolo v2这篇论文的核心部分。在阅读本节源码之前,请先了解一下 13*13*125 是什么样子的逻辑存储形式,在物体存储是一维数组;以及yolov2中bbox的[x, y, w, h]是如...原创 2019-11-07 20:33:42 · 1518 阅读 · 0 评论 -
【darknet源码解析-18】convolutional_layer.h 和 convolutional_layer 解析
本系列为darknet源码解析,本次解析为src/convolutional_layer.h 和 src/convolutional_layer.c 两个,convolutional_layer主要是构建卷积层。卷积前向传播卷积操作如下图所示:在这里batch=1,输入图片h*w为5*5,通道数c为3;卷积模板数n为2,卷积核大小size为3*3,卷积步幅stride为1,补零个数pad为1...原创 2019-10-30 23:38:10 · 2357 阅读 · 3 评论 -
【darknet源码解析-17】detection_layer.h 和 detection_layer.c 解析
本系列为darknet源码解析,本次解析src/detection_layer.h 与 src/detection_layer.c 两个。detection_layer主要完成了yolo v1最后一层7*7*30,是yolo v1这篇论文的核心部分。detection_layer.h 的定义如下:#ifndef DETECTION_LAYER_H#define DETECTION_LA...原创 2019-10-29 13:45:43 · 1408 阅读 · 0 评论 -
【darknet源码解析-16】logistic_layer.h 和 logistic_layer.c 解析
本系列为darknet源码解析,本次解析src/logistic_layer.h 与 src/logistic_layer.c 两个。logistic_layer主要完成了逻辑回归。在这里,我们推导一下梯度反传,详细请参看李航 《统计学习方法》一书。设: 似然函数为:对数似然函数为:对求极大值,就得到的估计值。将其前边添加负号,变为求极小值,就是我们的代价函数求极小值,则乘...原创 2019-10-28 15:37:14 · 502 阅读 · 0 评论 -
【darknet源码解析-15】maxpool_layer.h 和 maxpool_layer.c 解析
本系列为darknet源码解析,本次解析src/maxpool_layer.h 与 src/maxpool_layer.c 两个。avgpool_pool主要完成了最大池化操作。maxpool_layer.h 的解析如下:#ifndef MAXPOOL_LAYER_H#define MAXPOOL_LAYER_H#include "image.h"#include "cud...原创 2019-10-21 20:17:49 · 795 阅读 · 0 评论 -
【darknet源码解析-14】avgpool_layer.h 和 avgpool_layer.c 解析
本系列为darknet源码解析,本次解析src/avgpool_layer.h 与 src/avgpool_layer.c 两个。avgpool_pool主要完成了平均池化操作。avgpool_layer.h 的解析如下:#ifndef AVGPOOL_LAYER_H#define AVGPOOL_LAYER_H#include "image.h"#include "cud...原创 2019-10-21 20:17:40 · 766 阅读 · 2 评论 -
【darknet源码解析-13】activation_layer.h 和 activation_layer.c 解析
本系列为darknet源码解析,本次解析src/activation_layer.h 和 src/activation_layer.c 两个,activation_layer 主要用于构建激活函数层,完成激活函数的前向,梯度反向传播。关于激活函数的一层底层实现,请先阅读【darknet源码解析-07】activations.h 和 activations.c 解析。activation_l...原创 2019-10-21 20:17:33 · 840 阅读 · 0 评论 -
【darknet源码解析-12】connected_layer.h 和 connected_layer.c 解析
本系列为darknet源码解析,本次解析为src/connect_layer.h 和 src/connect_layer.c 两个,connect_layer主要是构建全连接网络。在阅读本文之前请事先手推一遍BP算法,这样有助于你对connect_layer源码的理解。主要理解BP算法对隐藏层权重和偏置如何求偏导数,以及最输出层求偏导数。注意:在全连接网络中的添加BN操作,W×X之后,...原创 2019-10-20 18:28:25 · 746 阅读 · 0 评论 -
【darknet源码解析-11】batchnorm_layer.h 和 batchnorm_layer.c解析
本系列为darknet源码解析,本次解析src/batchnorm_layer.h 与 src/batchnorm_layer.c两个。batchnorm主要完成批归一化操作。论文名字:Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift论文地址:https:...原创 2019-10-20 18:01:18 · 1016 阅读 · 0 评论 -
【darknet源码解析-09】col2im.h 和 col2im.c 解析
本系列为darknet源码解析, 本次解析src/col2im.h 与 src/col2im_cpu.c 两个. 这两个其实与之前所解析src/im2col.h 和 src/im2col.c的逆过程, col2im就是将im2col重排的图片data_col恢复到正常的图像矩阵排列。col2img.h 中包含的代码如下:主要就是一个函数col2im.h定义,在这里我们也不涉及到gpu那块,先讲...原创 2019-10-18 21:59:10 · 2101 阅读 · 2 评论 -
【darknet源码解析-08】cost_layer.h 和 cost_layer.c 解析
本系列为darknet源码解析,本次解析src/cost_layer.h 与 src/cost_layer.c 两个。在本文中,cost主要完成多种损失函数的前向计算以及损失损失函数反向传播。COST_TYPE定义在include/darknet.h中,是枚举类型. 可以发现darknet提供了六种损失函数.typedef enum{ SSE, MASKED, L1, SEG, ...原创 2019-10-18 10:37:34 · 1055 阅读 · 0 评论 -
【darknet源码解析-10】dropout.h 和 dropout.c 解析
本系列为darknet源码解析,本次解析src/dropout.h 与 src/dropout.c 两个。在神经网络中应用dropout包括训练和预测两个阶段,在训练阶段,dropout 以一定的概率p随机的"舍弃"一部分神经元点,即这部分神经元节点暂时停止工作,如下图所示。因此,对于一个包含N个节点的神经,在dropout的作用下可看作2^N个模型的集成。这2^N个模型可以看成原始网络的子网...原创 2019-10-19 17:55:54 · 548 阅读 · 0 评论 -
【darknet 源码解析-02】utils.h 与 utils.c
本系列为darknet源码解析,本次解析src/utils.h 与 src/utils.c 两个。主要涉及到了读写文件操作,以及字符串基本操作,utils.h 中包含的代码如下:#ifndef UTILS_H#define UTILS_H#include <stdio.h>#include <time.h>#include "darknet.h"#inc...原创 2019-07-16 20:29:31 · 3347 阅读 · 1 评论 -
【darknet 源码解析-03】option_list.h 和 option_list.c
本系列为darknet源码解析,本次解析src/option_list.h 与 src/option_list.c 两个。option_list.h 中包含的代码如下:#ifndef OPTION_LIST_H#define OPTION_LIST_H#include "list.h"typedef struct{ char *key; char *val; ...原创 2019-07-17 20:30:19 · 581 阅读 · 0 评论 -
【darknet源码解析-04】matrix.h 和 matrix.c
本系列为darknet源码解析,本次解析src/matrix.h 与 src/matrix.c 两个。matrix.h 中的包含的代码如下:#ifndef MATRIX_H#define MATRIX_H#include "darknet.h"// 将矩阵m中的数据拷贝到内存中matrix copy_matrix(matrix m);// 可视化void print_mat...原创 2019-08-22 18:14:46 · 1499 阅读 · 1 评论 -
【darknet源码解析-05】im2col.h 和 im2col.c 解析
本系列为darknet源码解析,本次解析src/im2col.h 与 src/im2col.c 两个。这块其实是卷积操作的底层实现。im2col主要是完成矩阵的向量转换,为了之后的gemm.c做矩阵乘法做准备,而im2col和gemm就是darknet卷积底层实现的核心。其实也是caffe卷积实现的核心。img2col.h 中的包含的代码如下:主要就是一个函数im2col_cpu定义,在这里我...原创 2019-09-03 12:00:39 · 1824 阅读 · 0 评论 -
【darknet源码解析-06】gemm.h和gemm.c解析
本系列为darknet源码解析,本次解析src/gemm.h 与src/gemm.c两个。在上一篇文章中,我们已经详细讲解了输入特征图如何进行转换,那么在本文中,gemm主要完成矢量和矩阵的加速运算,是darknet卷积底层实现的核心,其实也是caffe卷积实现的核心。gemm.h 的包含的代码如下:主要就是两个函数的gemm,gemm_cpu的定义【gemm_bin暂不分析】,在这里我们先不...原创 2019-09-10 19:23:39 · 2315 阅读 · 0 评论 -
【darknet源码解析-07】activations.h和activations.c 解析
本系列为darknet源码解析,本次解析src/activations.h 与 src/activations.c 两个。在本文中,activations主要完成激活函数的前向计算以及激活函数的求导,激活函数的误差反向传播。ACTIVATION的定义在include/darknet.h中,是枚举类型。typedef enum{ LOGISTIC, RELU, RELIE, LIN...原创 2019-09-18 20:51:15 · 1213 阅读 · 0 评论 -
【darknet 源码解析-01】list.h 与 list.c
本系列为darknet源码解析,本次解析src/list.h 与 src/list.c 两个。list.h 中的包含的代码如下:#ifndef LIST_H#define LIST_H#include "darknet.h"list *make_list(); // 初始化链表// 按值查找,注意这里的值是 void类型空指针,emmmm, list.c未定义,int lis...原创 2019-07-07 19:28:43 · 1294 阅读 · 1 评论