首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【AlexeyAB DarkNet框架解析】一,框架总览

趁着自己C语言还没有完全忘记,我决定来仔细探索一番AlexeyAB的Darknet框架,所以就有了这个【AlexeyAB DarkNet框架解析】系列。...Darknet框架分析主线 分析主线的确定 Darknet相比当前训练的C/C++主流框架(如Caffe)来讲,具有编译速度快,依赖少,易部署等众多优点,我们先定位到src/darknet.c里面的main...而run_detector函数提供了AlexeyAB添加了各种新特性的目标检测算法,所以之后我们会从这个函数跟进去来解析Darknet框架。...Darknet提供的其他功能如run_super(高分辨率重建),run_classifier(图像分类),run_char_rnn(RNN文本识别)有兴趣可以自己去读(这个框架用来做目标检测比较好,其他算法建议还是去其它框架实现吧...框架的大概思路就是这个样子,之后会按照这个主线不断的添加代码理解。 后记 大概了解一下我会怎么去读Darknet框架,之后会按照这个主线不断的讲解,欢迎互相交流和学习。

2.3K40
您找到你想要的搜索结果了吗?
是的
没有找到

Darknet

1.介绍darknet是一个较为轻型的完全基于C与CUDA的开源深度学习框架,其主要特点就是容易安装,没有任何依赖项(OpenCV都可以不用),移植性非常好,支持CPU与GPU两种计算方式。...darknet完全由C语言实现,没有任何依赖项,当然可以使用OpenCV,但只是用其来显示图片、为了更好的可视化;darknet支持CPU(所以没有GPU也不用紧的)与GPU(CUDA/cuDNN,使用...caffe的实现存在相似的地方,熟悉了darknet,相信对上手caffe有帮助2.基于Linux的安装教程  (1)在github上下载darknet$ git clone https://github.com.../pjreddie/darknet.git$ cd darknet$ make如下图:?.../darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg出现下图,并在 ?并出现检测完成的图片,如下图:?

2.2K30

【AlexeyAB DarkNet框架解析】三,加载数据进行训练

前言 昨天讲了DarkNet的底层数据结构,并且将网络配置文件进行了解析存放到了一个network结构体中,那么今天我们就要来看一下Darknet是如何加载数据进行训练的。...在DarkNet中,图片的存储形式是一个行向量,向量长度为h*w*3。同时图片被归一化到[0, 1]之间。...测试代码为darknet_test_struct_memory_free.c。...// 不知道这段测试代码在VS中执行会怎样,还没经过测试,也不知道换用其他编译器(darknet的Makefile文件中,指定了编译器为gcc),darknet的编译会不会有什么问题??...后记 本节从源码角度分析了DarkNet如何加载数据进行训练的详细步骤。相信结合前2节,你已经知道DarkNet是如何构建网络模型,并加载数据训练一个检测器模型的了。

1.1K20

【AlexeyAB DarkNet框架解析】二,数据结构解析

按照前面的思路,这一节进入到DarkNet的数据结构解析。Darknet是一个C语言实现的神经网络框架,这就决定了其中大多数保存数据的数据结构都会使用链表这种简单高效的数据结构。...基础数据结构 为了解析网络配置参数,DarkNet 中定义了三个关键的数据结构类型。...option_list.h文件中,具体定义如下: // kvp 键值对 typedef struct{ char *key; char *val; int used; } kvp; 在Darknet...将链表中的网络结构保存到network结构体 首先来看看network结构体的定义,在include/darknet.h中: // 定义network结构体 typedef struct network...后记 今天讲了DarkNet中底层数据结构是如何组织的,到现在为止我们可以获得一个存储了所有网络配置信息的network结构体,接下来就是加载数据进行训练以及测试了。

1.3K20

【AlexeyAB DarkNet框架解析】六,卷积层的反向传播解析

记作f(x)),其导数值为f(x)'=f(x)*(1-f(x)),因此如果给出y=f(x),那么f(x)'=y*(1-y),只需要输出值y就可以了,不需要输入x的值, (暂时不确定darknet...激活函数(记作f(x)),其导数值为f(x)'=f(x)*(1-f(x)),因此如果给出y=f(x),那么f(x)'=y*(1-y),只需要输出值y就可以了,不需要输入x的值, // (暂时不确定darknet...col2im函数解析 col2im函数是上一篇推文中介绍的im2col的逆过程,代码在src/col2im.c中实现,具体如下: // 注释来自https://github.com/hgpvision/darknet...上面给的博客链接给出了一种很好的求解方式, ** 但darknet并不是这样做的,为什么?...在这里插入图片描述 后记 本篇推文介绍了DarkNet中卷积层的反向传播详细代码解析,具体用到的知识就是链式法则,col2im,gemm。

1K20

【AlexeyAB DarkNet框架解析】十一,BN层代码详解(batchnorm_layer.c)

前言 继续探索AlexeyAB框架的BN层,为了将这个层的原理说清楚,我就不局限于只讲解这个代码,我结合了CS231N的代码以及BatchNorm的论文将前向传播和反向传播都清晰的进行讲解,希望看完这篇你可以对...np.sqrt(sample_var + eps) + 2.0 * dsigma * (x - sample_mean) / N + dmu / N return dx, dgamma, dbeta DarkNet...return layer; } 2.前向传播公式实现 DarkNet中在src/blas.h中实现了前向传播的几个公式: /* ** 计算输入数据x的平均值,输出的mean是一个矢量,比如如果x是多张三通道的图片...前向传播和反向传播接口函数 DarkNet在src/batchnorm_layer.c中实现了前向传播和反向传播的接口函数: // BN层的前向传播函数 void forward_batchnorm_layer...index]; } } scale_updates[f] += sum; } } // 对均值求导 // 对应了论文中的求导公式3,不过Darknet

1K40

【AlexeyAB DarkNet框架解析】十,池化层代码详解(maxpool_layer.c)

已经将所有的注释代码以及包含中文版README的AlexeyAB DarkNet总结在了这个网址上,需要自取:https://github.com/BBuf/Darknet 前言 继续阅读DarkNet...l.bflops = (l.size*l.size*l.c * l.out_h*l.out_w) / 1000000000.; return l; } 最大池化层的前向传播 AlexeyAB DarkNet...的池化层和原始的DarkNet的池化层最大的不同在于新增了一个l.maxpool_depth参数,如果这个参数不为0,那么池化层需要每隔l.out_channels个特征图执行最大池化,注意这个参数只对最大池化有效...** 但需要注意AlexeyAB DarkNet在原始的代码上改动比较多,具体注释如下。...实际上,在darknet中,不管是什么层, ** 其反向传播函数都会先后做两件事:1)计算当前层的敏感度图l.delta、权重更新值以及偏置更新值;2)计算上一层的敏感度图net.delta(

84410

【AlexeyAB DarkNet框架解析】八,YOLOV2损失函数代码详解(region_layer.c)

想再说一下,这个系列的代码注释我放到https://github.com/GiantPandaCV/darknet 这里了,有需要的可以点star或者fork哦,还在持续更新中。...前言 昨天结合代码详细解析了YOLOV1的损失函数,今天AlexeyAB版DarkNet的YOLOV2损失函数代码解析也来了。...YOLOV2对每个预测box的[x,y],confidence进行逻辑回归,类别进行softmax回归; 在Darknet中,损失函数可以用下图来进行表示: ?...YOLOV2损失函数 可以看到这个损失函数是相当复杂的,损失函数的定义在Darknet/src/region_layer.c中。对于上面这一堆公式,我们先简单看一下,然后我们在源码中去找到对应部分。...3.2 置信度损失 在计算obj置信度时, 增加了一项权重系数,也被称为rescore参数,当其为1时,损失是预测框和ground truth的真实IOU值(darknet中采用了这种实现方式)。

1.4K10

【AlexeyAB DarkNet框架解析】九,YOLOV3损失函数代码详解(yolo_layer.c)

代码解析步骤 [yolo]层 YOLOV3使用[yolo] 层来计算损失函数以及预测分类和边界框回归,前面经过 darknet-53 的基础网络提取特征,又经过一些特征融合,就得到了3个不同尺度的 yolo...max_boxes表示一张图片中最多有max_boxes个ground truth矩形框,每个真实矩形框有 //5个参数,包括x,y,w,h四个定位参数,以及物体类别),注意max_boxes是darknet...index + 3 * stride]) * iou_normalizer; } else { // https://github.com/generalized-iou/g-darknet...count, w, h, netw, neth, relative, letter);//调整 box 大小 return count; } 后记 yolo_layer.c到这里就讲完了,DarkNet...参考 https://github.com/hgpvision/darknet https://blog.csdn.net/caicaiatnbu/article/details/102923953 欢迎关注

3K51

【AlexeyAB DarkNet框架解析】四,网络的前向传播和反向传播介绍以及layer的详细解析

这个AlexeyAB DarkNet框架解析在AlexeyAB的DarkNet源码上会做大量注释,我克隆该工程然后添加注释,注释版DarkNet工程地址为:https://github.com/GiantPandaCV.../darknet 前言 前面我们已经成功的获取了目标检测的网络结构(cfg文件的内容),并将网络保存在了一个network结构体中,然后我们还分析了数据加载方式。...值 // (该参数通过make_region_layer()函数赋值,在parser.c中调用的make_region_layer()函数), // 可以在darknet...int dropblock_size_abs; int dropblock; float scale; // 在dropout层中,该变量是一个比例因子,取值为保留概率的倒数(darknet...可能没有,新版的darknet才有coco9k.map这个文件), * 可以发现,coco.names中每一个物体类别都可以在9k.names中找到,且coco.names中每个物体类别名称在

1.1K21

Darknet是什么?如何在Windows和Linux下安装

1.什么是darknet? 首先,让我们看一下官网:https://pjreddie.com/darknet/ ? 这是一个开源的神经网络框架,使用C语言实现。...darknet深度学习框架源码分析:详细中文注释,涵盖框架原理与实现语法分析: https://github.com/hgpvision/darknet darknet是一个较为轻型的完全基于C与CUDA...的开源深度学习框架,其主要特点就是容易安装,没有任何依赖项(OpenCV都可以不用),移植性非常好,支持CPU与GPU两种计算方式。...对比 相比于TensorFlow来说,darknet并没有那么强大,但这也成了darknet的优势: darknet完全由C语言实现,没有任何依赖项,当然可以使用OpenCV,但只是用其来显示图片、为了更好的可视化...,适合用来研究底层,可以更为方便的从底层对其进行改进与扩展; darknet的实现与caffe的实现存在相似的地方,熟悉了darknet,相信对上手caffe有帮助; 3.

2.2K20
领券