15 个版本
0.4.0 | 2023 年 5 月 2 日 |
---|---|
0.3.5 | 2022 年 12 月 16 日 |
0.3.2 | 2022 年 5 月 7 日 |
0.3.1 | 2021 年 10 月 25 日 |
0.1.2 | 2020 年 3 月 31 日 |
在 机器学习 中排名 #767
用于 darknet
3.5MB
106K SLoC
包含 (Windows DLL, 185KB) pthreadGC2.dll, (Windows DLL, 83KB) pthreadVC2.dll, (静态库, 94KB) libpthreadGC2.a, (静态库, 30KB) pthreadVC2.lib
darknet-sys: AlexeyAB 的 Darknet 的 FFI 绑定
用法
与 darknet crate 一起使用。
如果您想从这个仓库构建,运行 git submodule init && git submodule update --recursive
获取所有子模块。
构建
术语定义
darknet-sys, darknet = Rust 封装
libdarknet = C/C++ Darknet 实现
默认情况下,darknet-sys 将编译和链接 libdarknet 静态库。您可以通过控制功能标志来更改行为。
Cargo 功能
enable-cuda
: 启用 CUDA(期望 CUDA 10.x 和 cuDNN 7.x)。enable-cudnn
: 启用 cuDNNenable-opencv
: 启用 OpenCV。enable-openmp
: 在 darknet 中启用 OpenMP。用于在 CPU 上运行时的并行化。默认启用。runtime
: 链接到 libdarknet 动态库。例如,Linux 上的libdark.so
。dylib
: 构建动态库而不是静态库buildtime-bindgen
: 从 libdarknet 头文件生成绑定。
方法 1:从源代码下载和构建(默认)
cargo build
您可以选择启用 CUDA 和 OpenCV 功能。有关更多信息,请参阅 使用 CUDA 构建。
cargo build --features enable-cuda,enable-opencv
方法 2:使用自定义源代码构建
如果您想使用自定义 libdarknet 源代码构建,将环境变量 DARKNET_SRC
指向您的源路径。它应包含 CMakeLists.txt
。
export DARKNET_SRC=/path/to/your/darknet/repo
cargo build
方法 3:链接到 libdarknet 动态库
通过 runtime
功能,darknet-sys 将不会编译 libdarknet 源代码,而是动态链接到 libdarknet。如果您正在使用 Linux,请确保系统已安装 libdark.so
。
cargo build --feature runtime
重新生成绑定
通过 buildtime-bindgen
功能,darknet-sys 会从头文件中重新生成绑定。当 darknet 更新或修改时,此选项是必要的。
如果您想使用您的(可能已修改的)头文件,请将环境变量 DARKNET_INCLUDE_PATH
指向您的头文件目录。
使用 CUDA 构建
请确保已安装 CUDA 10.x 和 cuDNN 7.x。
darknet 读取 CUDA_PATH
环境变量(如果未设置,默认为 /opt/cuda
)并假设它可以在 ${CUDA_PATH}/lib64
找到 cuda 库。
export CUDA_PATH=/usr/local/cuda-10.1
cargo build --features enable-cuda
您还可以设置 CUDA_ARCHITECTURES
,该设置会被传递给 libdarknet 的 cmake。默认为 Auto
,它会根据构建时系统中的显卡自动检测 GPU 架构。
许可
MIT 许可证。
致谢
向所有贡献者致以最诚挚的感谢!