如何在我自己的项目中使用暗网?

时间:2017-12-23 02:33:47

标签: c deep-learning darknet

我已经安装了Darknet,我可以从命令行运行它来执行各种任务,例如:

     System.IO.File.Copy(filePath, "\\\\" + printerIP + "\\" + printerName);

这将使用./darknet classifier train cfg/cifar.data cfg/cifar_small.cfg 中指定的网络架构训练分类器CIFAR数据。

好的,但是如何在我自己的C项目中使用Darknet?例如,我想在我自己的代码中调用cfg/cifar_small.cfg中声明的load_network()train_network()save_weights()network_predict()

我可以将Darknet用作静态或共享库吗?我没有在网站上看到有关如何执行此操作的任何说明。

到目前为止,我唯一的方法是以examples文件夹中的示例样式创建自己的源文件,并修改darknet.hdarknet.hdarknet.c以给自己一个入口点我可以从命令行调用,类似于我上面发布的分类器示例。但这并不理想,因为我想拥有自己的项目结构。

2 个答案:

答案 0 :(得分:1)

好的,似乎Makefile支持生成共享库和静态库,并且在运行安装时默认生成这些库:

git clone https://github.com/pjreddie/darknet.git
cd darknet
make

之后libdarknet.alibdarknet.so出现在我的黑暗主题中。

所以我可以在我自己的项目中#include darknet.h,然后通过以下方式编译:

gcc -Wall -o myprog main.c -ldarknet

答案 1 :(得分:1)

对于那些对细节感兴趣的人以及使用CMakeLists.txt的人,以下是要点,假设Darkned已编译:

# Path to Darknet project folder.
set(DARKNET_PATH /home/<custom_path_to>/darknet)

# Give a custom name to shared library which is provided by Darkned when 
# the one compiled.
set(DARKNET_LIB_NAME libdarknet)

# Link Darknet library' include folder.
include_directories(${DARKNET_PATH}/include)

# Define Darknet library' shared library.
add_library(${DARKNET_LIB_NAME} SHARED IMPORTED)

# Set a path to Darknet library' shared library
set_property(
        TARGET ${DARKNET_LIB_NAME}
        PROPERTY IMPORTED_LOCATION 
        "${DARKNET_PATH}/libdarknet.so"
)

# Link all libraries together.
target_link_libraries(${PROJ_NAME} ${DARKNET_LIB_NAME})

下一个链接提供了使用Darknet库的项目:

DarknetApp