概述
Darknet——一个源码为C的神经网络框架
今天路同学介绍一个相对小众的深度学习框架——Darknet。
与流行的Tensorflow以及Caffe框架相比,Darknet框架在某些方面有着自己独特的优势。
GitHub源代码: https://github.com/pjreddie/darknet
官网上阅读完成更多事情:https://pjreddie.com/darknet/
关于Darknet深度学习框架
Darknet深度学习框架是由Joseph Redmon提出的一个用C和CUDA编写的开源神经网络框架。它安装速度快,易于安装,并支持CPU和GPU计算。Darknet是一个比较小众的深度学习框架,没有社区,主要靠作者团队维护,所以推广较弱,用的人不多。而且由于维护人员有限,功能也不如tensorflow等框架那么强大,但是该框架还是有一些独有的优点:
- 易于安装:在makefile里面选择自己需要的附加项(cuda,cudnn,opencv等)直接make即可,几分钟完成安装;
- 没有任何依赖项:整个框架都用C语言进行编写,可以不依赖任何库,连opencv作者都编写了可以对其进行替代的函数;
- 结构明晰,源代码查看、修改方便:其框架的基础文件都在src文件夹,而定义的一些检测、分类函数则在example文件夹,可根据需要直接对源代码进行查看和修改;
- 友好python接口:虽然darknet使用c语言进行编写,但是也提供了python的接口,通过python函数,能够使用python直接对训练好的.weight格式的模型进行调用;
- 易于移植:该框架部署到机器本地十分简单,且可以根据机器情况,使用cpu和gpu,特别是检测识别任务的本地端部署,darknet会显得异常方便。
代码框架
- cfg文件夹内是一些模型的架构,每个cfg文件类似与caffe的prototxt文件,通过该文件定义的整个模型的架构
- data文件夹内放置了一些label文件,如coco9k的类别名等,和一些样例图(该文件夹主要为演示用,或者是直接训练coco等对应数据集时有用,如果要用自己的数据自行训练,该文件夹内的东西都不是我们需要的)
- src文件夹内全是最底层的框架定义文件,所有层的定义等最基本的函数全部在该文件夹内,可以理解为该文件夹就是框架的源码;
- examples文件夹是更为高层的一些函数,如检测函数,识别函数等,这些函数直接调用了底层的函数,我们经常使用的就是example中的函数;
- include文件夹,顾名思义,存放头文件的地方;
- python文件夹里是使用python对模型的调用方法,基本都在darknet.py中。当然,要实现python的调用,还需要用到darknet的动态库libdarknet.so,这个动态库稍后再介绍;
- scripts文件夹中是一些脚本,如下载coco数据集,将voc格式的数据集转换为训练所需格式的脚本等
- 除了license文件,剩下的就是Makefile文件,如下图,在问价开头有一些选项,把你需要使用的选项设为1即可
安装(linux环境下)
- 点开Makefile,将需要的选项设置为1,如图上图,使用GPU和CUDNN;
- 打开终端,进入到darknet文件夹根目录,输入make,开始编译;
- 几分钟后编译完成,文件夹中会多出一些文件夹和文件,obj文件中存放了编译过程中的.o文件,其他的几个空文件夹也不需要太大关注,这里最重要的就是三个:名为darknet的exe文件,名为libdarknet.a的静态链接库和名为libdarknet.so的动态链接库。如果直接在本地进行模型调用尝试,可以直接运行darknet这个exe文件,如果需要移植调用,则需要用到libdarknet.so这个动态链接库,这个动态链接库中只包含了src文件夹中定义的框架基础函数,没有包含examples中的高层函数,所以调用过程中需要自己去定义检测函数;
测试
Release
最后
以上就是高高鞋子为你收集整理的深度学习框架-Darknet的全部内容,希望文章能够帮你解决深度学习框架-Darknet所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复