13 个版本
0.4.0 | 2023年5月2日 |
---|---|
0.3.5 | 2022年12月17日 |
0.3.4 | 2022年5月7日 |
0.3.3 | 2021年10月25日 |
0.1.4 | 2020年3月31日 |
在 机器学习 类别中排名 204
每月下载量 110
250KB
983 行
darknet-rust: AlexeyAB 的 Darknet 的 Rust 绑定
该软件包是 AlexeyAB 的 Darknet 的 Rust 封装。
它提供了以下功能
- 训练和推理能力。
- 从上游加载配置文件和模型权重而不做修改。
- C API 的安全类型封装。包括网络、检测和层类型。
最低 rustc 版本:1.43.0
0.4 版本变更
- 更新
image
到 0.24
示例
tiny_yolov3_inference 示例自动下载 YOLOv3 tiny 权重,并在 output
目录中生成推理结果。
cargo run --release --example tiny_yolov3_inference
run_inference 示例是一个工具程序,您可以在图像文件上测试模型配置和权重的组合。例如,您可以测试 YOLOv4 模式。
cargo run --release --example run_inference -- \
--label-file darknet/data/coco.names \
--model-cfg darknet/cfg/yolov4.cfg \
--weights yolov4.weights \
darknet/data/*.jpg
阅读 examples/
中的示例代码以了解实际用法。更多模型配置和权重可以在这里找到:(https://pjreddie.com/darknet/yolo/)。
使用方法
如果您正在使用 0.1 版本,建议迁移到 0.3 或更高版本,因为已修复了几个关键错误和内存泄漏。
构建
术语定义
darknet-sys, darknet = Rust 封装
libdarknet = C/C++ Darknet 实现
默认情况下,Darknet 将静态编译和链接 libdarknet。您可以通过控制功能标志来更改此行为。
在运行测试之前
gitsubmodule init && gitsubmodule update --recursive
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:从源代码下载和构建(默认)
[dependencies]
darknet = "0.4"
您可以选择启用CUDA和OpenCV功能。请阅读使用CUDA构建获取更多信息。
[dependencies]
darknet = {version = "0.4", features = ["enable-cuda", "enable-opencv"] }
方法2:使用自定义源代码构建
如果您想使用自定义的libdarknet源代码,请将环境变量DARKNET_SRC
指向您的源路径。它应该包含CMakeLists.txt
。
export DARKNET_SRC=/path/to/your/darknet/repo
方法3:链接到libdarknet动态库
使用runtime
功能,darknet-sys将不会编译libdarknet源代码,而是动态链接到libdarknet。如果您正在使用Linux,请确保系统已安装libdark.so
。
[dependencies]
darknet = {version = "0.4", features = ["runtime"] }
重新生成绑定
使用buildtime-bindgen
功能,darknet-sys将重新从头文件生成绑定。只有在darknet更新或修改时才需要此选项。
[dependencies]
darknet = {version = "0.4", features = ["buildtime-bindgen"] }
如果您想使用(可能已修改的)头文件,请将环境变量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
[dependencies]
darknet = {version = "0.4", features = ["enable-cuda", "enable-opencv"] }
您还可以设置CUDA_ARCHITECTURES
,该值传递给libdarknet的cmake。默认为Auto
,它会根据构建期间系统中的显卡自动检测GPU架构。
许可
该软件包采用MIT许可。
致谢
向所有贡献者表示衷心的感谢!
依赖项
~19MB
~223K SLoC