1. 程式人生 > >darknet原始碼剖析(一)

darknet原始碼剖析(一)

darknet編譯較為簡單,在github上下載程式碼後直接make即可。注意更改makefile檔案中的相關選項。

GPU=1
CUDNN=1
OPENCV=0
OPENMP=0
DEBUG=1

編譯完成後即可開始使用。根據yolov3的訓練與測試過程,對darknet進行解析。

darknet使用c語言編寫,main函式位於examples/darknet.c檔案中。

訓練yolov3使用的命令如下

./darknet detector train cfg/voc.data cfg/yolov3-voc.cfg darknet53.conv.74

darknet.c的檔案如下:

    if (0 == strcmp(argv[1], "average")){
        average(argc, argv);
    } else if (0 == strcmp(argv[1], "yolo")){
        run_yolo(argc, argv);
    } else if (0 == strcmp(argv[1], "super")){
        run_super(argc, argv);
    } else if (0 == strcmp(argv[1], "lsd")){
        run_lsd(argc, argv);
    } else if (0 == strcmp(argv[1], "detector")){
        run_detector(argc, argv);
    }

根據detector標籤進入detector.c檔案中的run_detector函式。

相關推薦

darknet原始碼剖析

darknet編譯較為簡單,在github上下載程式碼後直接make即可。注意更改makefile檔案中的相關選項。 GPU=1 CUDNN=1 OPENCV=0 OPENMP=0 DEBUG=1 編譯完成後即可開始使用。根據yolov3的訓練與測試過程,對darknet

darknet原始碼剖析

進入run_detector函式: char *prefix = find_char_arg(argc, argv, "-prefix", 0); 其中find_char_arg位於src/utils.c檔案中, char *find_char_arg(int argc

STL原始碼剖析

歡迎大家來訪二笙的小房子,一同學習分享生活! 寫在前面 學習STL,瞭解STL的歷史與發展,深度剖析STL原始碼,提高自己的程式設計能力!!! 1.瞭解STL 1.1 STL概述 STL誕生:為了建立資料結構和演算法的一套標準,並且降低其間的耦合關係以提

Python 原始碼剖析【python物件】

處於研究python記憶體釋放問題,在閱讀部分python原始碼,順便記錄下所得。 (基於《python原始碼剖析》(v2.4.1)與 python原始碼(v2.7.6)) 先列下總結:         python 中一切皆為物件,所以會先講明白pyth

SpringMVC原始碼剖析- 從抽象和介面說起

註明:文章是本人在中國開源網上看到的經典文章,出處:http://my.oschina.net/lichhao 作者:相見歡 SpringMVC作為Struts2之後異軍突起的一個表現層框架,正越來越流行,相信javaee的開發者們就算沒使用過Sprin

Kaggle競賽優勝者原始碼剖析

比賽題目連結:https://www.kaggle.com/c/amazon-employee-access-challenge 優勝者Github:https://github.com/pyduan/amazonaccess     該題目提供的資料集特徵數較少,能拿到

Darknet 原始碼理解----主體框架的理解

簡介:本系列博文介紹對Darknet原始碼的理解,這一部分為程式主體框架的理解。本博文預設讀者基本熟悉Darknet的使用。正文:darknet的主函式在darknet.c中,其中的main()函式根據終端輸入引數轉向不同的功能函式。若argv[1]= “detector”,

darknet原始碼剖析

繼續分析load_data_detection,進入fill_truth_detection函式。fill_truth_detection的作用是讀取圖片對應的標註資訊。 首先進入find_replace函式。 void find_replace(char *str, c

darknet原始碼剖析

進入train_detector函式。 list *options = read_data_cfg(datacfg); list的定義位於darknet.h,為連結串列。read_data_cfg位於option_list.c中。 read_data_cfg的作用在於將

SpringMVC原始碼剖析SpringMVC整體架構分析和建立

先看一下Servlet的繼承結 前面的Servlet體系我都有講過HttpServlet實現了根據動作分發請求 其他結構重要的類為HttpServletBean,FrameworkServlet ,DispatcherServlet 在Spring中實現了XXXAware

Redis原始碼剖析伺服器與客戶端互動流程

Redis中的C/S模型 Redis底層還是基於網路請求的,對於單機資料庫而言,網路請求僅僅是在一臺機器上互動,即伺服器客戶端都在一臺計算機上 當在終端輸入redis-serve時,便啟動了一個Redis伺服器,隨後開始初始化內部資料,對於Redis而言包括

caffe原始碼剖析--整體目錄結構

從今天開始,我們來細緻的分析一下caffe的原始碼。(此係列僅分析caffe原始版本,對於caffe2不涉及,並且只分析各類實現的cpu版,對於gpu實現筆者精力和能力有限,暫不作分析) 分析原始碼之前,我們需要對caffe的程式碼結構有一定的瞭解,只有充分了解了原始碼的組

Spark SQL原始碼剖析SQL解析框架Catalyst流程概述

Spark SQL模組,主要就是處理跟SQL解析相關的一些內容,說得更通俗點就是怎麼把一個SQL語句解析成Dataframe或者說RDD的任務。以Spark 2.4.3為例,Spark SQL這個大模組分為三個子模組,如下圖所示 其中Catalyst可以說是Spark內部專門用來解析SQL的一個框架,在H

Flume NG原始碼分析基於靜態properties檔案的配置模組

日誌收集是網際網路公司的一個重要服務,Flume NG是Apache的頂級專案,是分散式日誌收集服務的一個開源實現,具有良好的擴充套件性,與其他很多開源元件可以無縫整合。搜了一圈發現介紹Flume NG的文章有不少,但是深入分析Flume NG原始碼的卻沒有。準備寫一個系列分析一下Flume NG的

GCC原始碼分析——介紹與安裝

原文連結:http://blog.csdn.net/sonicling/article/details/6702031     上半年一直在做有關GCC和LD的專案,到現在還沒做完。最近幾天程式設計的那臺電腦壞了,所以趁此間隙寫一點相關的分析和

Spring原始碼解析——元件註冊1

一、@Configuration&@Bean給容器中註冊元件 public class Person { private String name; private Integer age; public Person() { } public

Android Hook框架adbi原始碼淺析

adbi(The Android Dynamic Binary Instrumentation Toolkit)是一個Android平臺通用hook框架,基於動態庫注入與inline hook技術實現。該框架由兩個主要模組構成,1.hijack負責將動態庫注入到目標程序;2.libbase提供動態庫本身,它實

Glide原始碼分析從用法來看之with方法

繼續啃原始碼,用過Glide的人,肯定都覺得它好好用,我們一般只需要幾行程式碼,就可以達到我們想要的效果,可以在這個背後是什麼呢?就需要我們來看了。 我一般看原始碼,我喜歡先從用法來看,然後一步一步的再細扣,所以就先從用法來看Glide的整體流程。 用過Glide的人,用下面這段

elas演算法原始碼賞析:PGM格式圖片的讀取和儲存

image.h原始碼 來說說標頭檔案 pgm格式 簡約筆記 // basic image I/O, based on Pedro Felzenszwalb's code #ifndef IMAGE_H #define

認真的 Netty 原始碼解析

本文又是一篇原始碼分析文章,其實除了 Doug Lea 的併發包原始碼,我是不太愛寫原始碼分析的。 本文將介紹 Netty,Java 平臺上使用最廣泛的 NIO 包,它是對 JDK 中的 NIO 實現的一層封裝,讓我們能更方便地開發 NIO 程式。其實,Netty 不僅僅是 NIO 吧,但是,基本上大家