这是indexloc提供的服务,不要输入任何密码
Skip to content

support yolo input batching #9

@github-actions

Description

@github-actions

// TODO: support yolo input batching

}


pub struct YoloPlugin;
impl Plugin for YoloPlugin {
    fn build(&self, app: &mut App) {
        app.init_resource::<Yolo>();
    }
}

#[derive(Resource, Default)]
pub struct Yolo {
    pub onnx: Handle<Onnx>,
}


// TODO: support yolo input batching
pub fn yolo_inference(
    session: &ort::Session,
    image: &Image,
    iou_threshold: f32,
) -> Vec<BoundingBox> {
    let width = image.width();
    let height = image.height();

    let model_width = session.inputs[0].input_type.tensor_dimensions().unwrap()[2] as u32;
    let model_height = session.inputs[0].input_type.tensor_dimensions().unwrap()[3] as u32;

    let input = prepare_input(image, model_width, model_height);

    let input_values = inputs!["images" => &input.as_standard_layout()].map_err(|e| e.to_string()).unwrap();
    let outputs = session.run(input_values).map_err(|e| e.to_string());
    let binding = outputs.ok().unwrap();
    let output_value: &ort::Value = binding.get("output0").unwrap();

    let detections = process_output(output_value, width, height, model_width, model_height);

    nms(&detections, iou_threshold)
}


pub fn prepare_input(
    image: &Image,
    model_width: u32,

Metadata

Metadata

Assignees

Labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions