#bevy-plugin #bevy #onnx #ort #onnx-runtime

bin+lib bevy_ort

bevy ort (onnxruntime) 插件

23 个版本 (10 个重大变更)

0.12.8 2024年5月6日
0.11.1 2024年5月5日
0.8.1 2024年3月16日

#550游戏开发


2 个库 中使用

MIT 许可证

110KB
1.5K SLoC

bevy_ort 🪨

test GitHub License crates.io

bevy 插件,用于 ort

person mask

> modnet 推理示例

功能

  • 将 ONNX 模型加载为 ORT 会话资产
  • 使用默认执行提供者初始化 ORT
  • modnet bevy 图像 <-> ort 张量 IO(具有 modnet 功能)
  • 批处理 modnet 预处理
  • 计算任务池推理调度

模型

  • lightglue(特征匹配)
  • modnet(摄影人像抠图)
  • yolo_v8(物体检测)
  • flame(参数化头部模型)

库使用

use bevy::prelude::*;

use bevy_ort::{
    BevyOrtPlugin,
    models::flame::{
        FlameInput,
        FlameOutput,
        Flame,
        FlamePlugin,
    },
};


fn main() {
    App::new()
        .add_plugins((
            DefaultPlugins,
            BevyOrtPlugin,
            FlamePlugin,
        ))
        .add_systems(Startup, load_flame)
        .add_systems(Startup, setup)
        .add_systems(Update, on_flame_output)
        .run();
}


fn load_flame(
    asset_server: Res<AssetServer>,
    mut flame: ResMut<Flame>,
) {
    flame.onnx = asset_server.load("models/flame.onnx");
}


fn setup(
    mut commands: Commands,
) {
    commands.spawn(FlameInput::default());
    commands.spawn(Camera3dBundle::default());
}


#[derive(Debug, Component, Reflect)]
struct HandledFlameOutput;

fn on_flame_output(
    mut commands: Commands,
    flame_outputs: Query<
        (
            Entity,
            &FlameOutput,
        ),
        Without<HandledFlameOutput>,
    >,
) {
    for (entity, flame_output) in flame_outputs.iter() {
        commands.entity(entity)
            .insert(HandledFlameOutput);

        println!("{:?}", flame_output);
    }
}

运行示例人员分割模型(modnet)

cargo run

使用加速执行提供者

  • Windows - cargo run --features ort/cudacargo run --features ort/openvino
  • macOS - cargo run --features ort/coreml
  • Linux - cargo run --features ort/tensorrtcargo run --features ort/openvino

在此处查看 ort 功能的完整列表: https://github.com/pykeio/ort/blob/0aec4030a5f3470e4ee6c6f4e7e52d4e495ec27a/Cargo.toml#L54

注意:如果您使用 pip install onnxruntime,可能需要运行 ORT_STRATEGY=system cargo run,请参阅: https://docs.rs/ort/latest/ort/#how-to-get-binaries

兼容的 bevy 版本

bevy_ort bevy
0.1.0 0.13

致谢

许可证

本软件同时受 MIT 许可证和 GNU 通用公共许可证第 3 版(GPL-3.0)的约束。

您可以选择根据MIT许可证或GNU通用公共许可证版本3(GPL-3.0)使用本软件,除非以下规定。

本软件中使用的yolo_v8功能受GNU通用公共许可证版本3(GPL-3.0)的专门规范。使用yolo_v8功能,您同意遵守GPL-3.0的条款和条件。

有关许可证的更多详细信息,请参阅随本软件提供的LICENSE.MIT和LICENSE.GPL-3.0文件。

依赖项

~56–95MB
~1.5M SLoC