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

MIT 许可证

3.5MB
106K SLoC

Forge Config 51K SLoC // 0.0% comments C 31K SLoC // 0.1% comments Rust 13K SLoC // 0.0% comments CUDA 6K SLoC // 0.2% comments C++ 3K SLoC // 0.1% comments Python 1.5K SLoC // 0.2% comments PowerShell 1K SLoC // 0.1% comments Shell 315 SLoC // 0.1% comments C# 72 SLoC // 0.0% comments Batch 48 SLoC

包含 (Windows DLL, 185KB) pthreadGC2.dll, (Windows DLL, 83KB) pthreadVC2.dll, (静态库, 94KB) libpthreadGC2.a, (静态库, 30KB) pthreadVC2.lib

darknet-sys: AlexeyAB 的 Darknet 的 FFI 绑定

Crates.io

用法

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: 启用 cuDNN
  • enable-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

通过 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 许可证。

致谢

向所有贡献者致以最诚挚的感谢!

无运行时依赖