当前位置:   article > 正文

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

darknet中文readme

前言的前言:Darknet是一个较为轻型的完全基于C与CUDA的开源深度学习框架,其主要特点就是容易安装,没有任何依赖项(OpenCV都可以不用),移植性非常好,支持CPU与GPU两种计算方式。而AlexeyAB版本的Darknet是在官方Darknet基础上进行了很多修改,添加了一些新特性,新算法,新Backbone,是最流行的目标检测开源项目之一。

前言

总写一些论文解读自然是不太好的,因为我感觉纸上谈兵用处没那么大,如果你从事深度学习,不静心阅读几个框架那么代码能力肯定是有欠缺的。趁着自己C语言还没有完全忘记,我决定来仔细探索一番AlexeyAB的Darknet框架,所以就有了这个【AlexeyAB DarkNet框架解析】系列。这个系列的更新肯定是十分漫长的,因为里面有很多算法或者特性我也可能还没有怎么学过,所以也是有一些难度,但正所谓硬骨头啃了之后才有营养,所以我决定开这个系列。从今天起,我将尝试做一个最详细的Darknet源码解析(不定期更新),从数据结构到各种新式Backbone再到多种损失函数再到各种新特性等。希望这个系列更新我能和你一起完全掌握这个AlexeyAB版Darknet,并且在阅读代码的能力方面有所提升。值得一提的是AlexeyAB版本Darknet的README.md已经被我们整理成了中文版本,如果你是学术派不是很在意底层代码实现你可以参考README.md去训练或者测试你想要的模型。README.md的中文翻译地址如下:【翻译】手把手教你用AlexeyAB版Darknet 。注意这一节仅仅是框架总览,不会那么详细,后面会非常详细的来逐步分析每个步骤。

Darknet框架分析主线

分析主线的确定

Darknet相比当前训练的C/C++主流框架(如Caffe)来讲,具有编译速度快,依赖少,易部署等众多优点,我们先定位到src/darknet.c里面的main函数,这是这个框架实现分类,定位,回归,分割等功能的初始入口。这一节的核心代码如下,注意一下就是run_yolo只提供了yolo目标检测算法的原始实现。而run_detector函数提供了AlexeyAB添加了各种新特性的目标检测算法,所以之后我们会从这个函数跟进去来解析Darknet框架。Darknet提供的其他功能如run_super(高分辨率重建),run_classifier(图像分类),run_char_rnn(RNN文本识别)有兴趣可以自己去读(这个框架用来做目标检测比较好,其他算法建议还是去其它框架实现吧),本系列只讲目标检测。

  1. if (0 == strcmp(argv[1], "average")){
  2. average(argc, argv); } else if (0 == strcmp(argv[1], "yolo")){
  3. run_yolo(argc, argv); } else if (0 == strcmp(argv[1], "voxel")){
  4. run_voxel(argc, argv); } else if (0 == strcmp(argv[1], "super")){
  5. run_super(argc, argv); } else if (0 == strcmp(argv[1], "detector")){
  6. run_detector(argc, argv); } else if (0 == strcmp(argv[1], "detect")){
  7. float thresh = find_float_arg(argc, argv, "-thresh", .24);int ext_output = find_arg(argc, argv, "-ext_output");char *filename = (argc > 4) ? argv[4]: 0; test_detector("cfg/coco.data", argv[2], argv[3], filename, thresh, 0.5, 0, ext_output, 0, NULL, 0, 0); } else if (0 == strcmp(argv[1], "cifar")){
  8. run_cifar(argc, argv); } else if (0 == strcmp(argv[1], "go")){
  9. run_go(argc, argv); } else if (0 == strcmp(argv[1], "rnn")){
  10. run_char_rnn(argc, argv); } else if (0 == strcmp(argv[1], "vid")){
  11. run_vid_rnn(argc, argv); } else if (0 == strcmp(argv[1], "coco")){
  12. run_coco(argc, argv); } else if (0 == strcmp(argv[1], "classify")){
  13. predict_classifier("cfg/imagenet1k.data", argv[2], argv[3], argv[4], 5); } else if (0 == strcmp(argv[1], "classifier")){
  14. run_classifier(argc, argv); } else if (0 == strcmp(argv[1], "art")){
  15. run_art(argc, argv); } else if (0 == strcmp(argv[1], "tag")){
  16. run_ta
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/706042
推荐阅读
相关标签
  

闽ICP备14008679号