Skip to content

Commit faf8c92

Browse files
Update ElementType and ResizeAlgorithm enums (#99)
* update enums, add resize algorithm enum * implement From trait for element_type * clippy warning fix * remove for element_type * cargo fmt fix
1 parent 5e3ce9d commit faf8c92

File tree

7 files changed

+50
-63
lines changed

7 files changed

+50
-63
lines changed
Lines changed: 22 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -1,77 +1,47 @@
11
/// `ElementType` represents the type of elements that a tensor can hold. See [`ElementType`](https://docs.openvino.ai/2023.3/api/c_cpp_api/group__ov__base__c__api.html#_CPPv417ov_element_type_e).
2-
#[derive(Debug)]
2+
#[derive(Eq, PartialEq, Copy, Clone, Debug)]
33
#[repr(u32)]
44
pub enum ElementType {
55
/// An undefined element type.
6-
Undefined = 0,
6+
Undefined = openvino_sys::ov_element_type_e_UNDEFINED,
77
/// A dynamic element type.
8-
Dynamic = 1,
8+
Dynamic = openvino_sys::ov_element_type_e_DYNAMIC,
99
/// A boolean element type.
10-
Boolean = 2,
10+
Boolean = openvino_sys::ov_element_type_e_OV_BOOLEAN,
1111
/// A Bf16 element type.
12-
Bf16 = 3,
12+
Bf16 = openvino_sys::ov_element_type_e_BF16,
1313
/// A F16 element type.
14-
F16 = 4,
14+
F16 = openvino_sys::ov_element_type_e_F16,
1515
/// A F32 element type.
16-
F32 = 5,
16+
F32 = openvino_sys::ov_element_type_e_F32,
1717
/// A F64 element type.
18-
F64 = 6,
18+
F64 = openvino_sys::ov_element_type_e_F64,
1919
/// A 4-bit integer element type.
20-
I4 = 7,
20+
I4 = openvino_sys::ov_element_type_e_I4,
2121
/// An 8-bit integer element type.
22-
I8 = 8,
22+
I8 = openvino_sys::ov_element_type_e_I8,
2323
/// A 16-bit integer element type.
24-
I16 = 9,
24+
I16 = openvino_sys::ov_element_type_e_I16,
2525
/// A 32-bit integer element type.
26-
I32 = 10,
26+
I32 = openvino_sys::ov_element_type_e_I32,
2727
/// A 64-bit integer element type.
28-
I64 = 11,
28+
I64 = openvino_sys::ov_element_type_e_I64,
2929
/// An 1-bit unsigned integer element type.
30-
U1 = 12,
30+
U1 = openvino_sys::ov_element_type_e_U1,
3131
/// An 4-bit unsigned integer element type.
32-
U4 = 13,
32+
U4 = openvino_sys::ov_element_type_e_U4,
3333
/// An 8-bit unsigned integer element type.
34-
U8 = 14,
34+
U8 = openvino_sys::ov_element_type_e_U8,
3535
/// A 16-bit unsigned integer element type.
36-
U16 = 15,
36+
U16 = openvino_sys::ov_element_type_e_U16,
3737
/// A 32-bit unsigned integer element type.
38-
U32 = 16,
38+
U32 = openvino_sys::ov_element_type_e_U32,
3939
/// A 64-bit unsigned integer element type.
40-
U64 = 17,
40+
U64 = openvino_sys::ov_element_type_e_U64,
4141
/// NF4 element type.
42-
NF4 = 18,
42+
NF4 = openvino_sys::ov_element_type_e_NF4,
4343
/// F8E4M3 element type.
44-
F8E4M3 = 19,
44+
F8E4M3 = openvino_sys::ov_element_type_e_F8E4M3,
4545
/// F8E5M3 element type.
46-
F8E5M3 = 20,
47-
}
48-
49-
#[cfg(test)]
50-
mod tests {
51-
use super::*;
52-
use openvino_sys::*;
53-
54-
#[test]
55-
fn check_discriminant_values() {
56-
assert_eq!(ov_element_type_e_UNDEFINED, ElementType::Undefined as u32);
57-
assert_eq!(ov_element_type_e_U1, ElementType::U1 as u32);
58-
assert_eq!(ov_element_type_e_U4, ElementType::U4 as u32);
59-
assert_eq!(ov_element_type_e_U8, ElementType::U8 as u32);
60-
assert_eq!(ov_element_type_e_U16, ElementType::U16 as u32);
61-
assert_eq!(ov_element_type_e_U32, ElementType::U32 as u32);
62-
assert_eq!(ov_element_type_e_U64, ElementType::U64 as u32);
63-
assert_eq!(ov_element_type_e_I4, ElementType::I4 as u32);
64-
assert_eq!(ov_element_type_e_I8, ElementType::I8 as u32);
65-
assert_eq!(ov_element_type_e_I16, ElementType::I16 as u32);
66-
assert_eq!(ov_element_type_e_I32, ElementType::I32 as u32);
67-
assert_eq!(ov_element_type_e_I64, ElementType::I64 as u32);
68-
assert_eq!(ov_element_type_e_F16, ElementType::F16 as u32);
69-
assert_eq!(ov_element_type_e_F32, ElementType::F32 as u32);
70-
assert_eq!(ov_element_type_e_F64, ElementType::F64 as u32);
71-
assert_eq!(ov_element_type_e_OV_BOOLEAN, ElementType::Boolean as u32);
72-
assert_eq!(ov_element_type_e_DYNAMIC, ElementType::Dynamic as u32);
73-
assert_eq!(ov_element_type_e_NF4, ElementType::NF4 as u32);
74-
assert_eq!(ov_element_type_e_F8E4M3, ElementType::F8E4M3 as u32);
75-
assert_eq!(ov_element_type_e_F8E5M3, ElementType::F8E5M3 as u32);
76-
}
46+
F8E5M3 = openvino_sys::ov_element_type_e_F8E5M3,
7747
}

crates/openvino/src/lib.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ mod partial_shape;
3636
pub mod prepostprocess;
3737
mod rank;
3838
mod request;
39+
mod resize_algorithm;
3940
mod shape;
4041
mod tensor;
4142
mod util;
@@ -50,6 +51,7 @@ pub use node::Node;
5051
pub use partial_shape::PartialShape;
5152
pub use rank::Rank;
5253
pub use request::InferRequest;
54+
pub use resize_algorithm::ResizeAlgorithm;
5355
pub use shape::Shape;
5456
pub use tensor::Tensor;
5557

crates/openvino/src/prepostprocess.rs

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
//!
55
//! ```
66
//!
7-
//! # use openvino::{prepostprocess, Core, ElementType, Layout, Shape, Tensor};
7+
//! # use openvino::{prepostprocess, Core, ElementType, Layout, Shape, Tensor, ResizeAlgorithm};
88
//! # use std::fs;
99
//! # let mut core = Core::new().expect("to instantiate the OpenVINO library");
1010
//! # let mut model = core.read_model_from_file(
@@ -24,13 +24,14 @@
2424
//! input_tensor_info.preprocess_input_tensor_set_from(&tensor).expect("to set tensor from");
2525
//! input_tensor_info.preprocess_input_tensor_set_layout(&Layout::new("NHWC").expect("to create a new layout")).expect("to set layout");
2626
//! let mut preprocess_steps = input_info.get_preprocess_steps().expect("to get preprocess steps");
27-
//! preprocess_steps.preprocess_steps_resize(0).expect("to resize");
27+
//! preprocess_steps.preprocess_steps_resize(ResizeAlgorithm::Linear).expect("to resize");
2828
//! let model_info = input_info.get_model_info().expect("to get model info");
2929
//! model_info.model_info_set_layout(&Layout::new("NCHW").expect("to create a new layout")).expect("to set layout");
3030
//! let new_model = pre_post_process.build_new_model().expect("to build new model with above prepostprocess steps");
3131
//! ```
3232
use crate::{
33-
cstr, drop_using_function, layout::Layout, try_unsafe, util::Result, ElementType, Model, Tensor,
33+
cstr, drop_using_function, layout::Layout, try_unsafe, util::Result, ElementType, Model,
34+
ResizeAlgorithm, Tensor,
3435
};
3536
use openvino_sys::{
3637
ov_preprocess_input_info_free, ov_preprocess_input_info_get_model_info,
@@ -219,8 +220,11 @@ impl PrePostProcess {
219220

220221
impl PreProcessSteps {
221222
/// Resizes data in tensor.
222-
pub fn preprocess_steps_resize(&mut self, resize_algo: u32) -> Result<()> {
223-
try_unsafe!(ov_preprocess_preprocess_steps_resize(self.ptr, resize_algo,))?;
223+
pub fn preprocess_steps_resize(&mut self, resize_algo: ResizeAlgorithm) -> Result<()> {
224+
try_unsafe!(ov_preprocess_preprocess_steps_resize(
225+
self.ptr,
226+
resize_algo as u32,
227+
))?;
224228

225229
Ok(())
226230
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
/// Interpolation mode when resizing during preprocess steps.
2+
#[derive(Copy, Clone, Debug)]
3+
#[repr(u32)]
4+
pub enum ResizeAlgorithm {
5+
/// Linear interpolation
6+
Linear = openvino_sys::ov_preprocess_resize_algorithm_e_RESIZE_LINEAR,
7+
/// Cubic interpolation
8+
Cubic = openvino_sys::ov_preprocess_resize_algorithm_e_RESIZE_CUBIC,
9+
/// Nearest neighbor interpolation
10+
Nearest = openvino_sys::ov_preprocess_resize_algorithm_e_RESIZE_NEAREST,
11+
}

crates/openvino/tests/classify-alexnet.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ mod util;
55

66
use anyhow::Ok;
77
use fixtures::alexnet::Fixture;
8-
use openvino::{prepostprocess, Core, ElementType, Layout, Shape, Tensor};
8+
use openvino::{prepostprocess, Core, ElementType, Layout, ResizeAlgorithm, Shape, Tensor};
99
use std::fs;
1010
use util::{Prediction, Predictions};
1111

@@ -36,7 +36,7 @@ fn classify_alexnet() -> anyhow::Result<()> {
3636
input_tensor_info.preprocess_input_tensor_set_from(&tensor)?;
3737
input_tensor_info.preprocess_input_tensor_set_layout(&Layout::new("NHWC")?)?;
3838
let mut preprocess_steps = input_info.get_preprocess_steps()?;
39-
preprocess_steps.preprocess_steps_resize(0)?;
39+
preprocess_steps.preprocess_steps_resize(ResizeAlgorithm::Linear)?;
4040
let model_info = input_info.get_model_info()?;
4141
model_info.model_info_set_layout(&Layout::new("NCHW")?)?;
4242
let output_info = pre_post_process.get_output_info_by_index(0)?;

crates/openvino/tests/classify-inception.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ mod util;
55

66
use anyhow::Ok;
77
use fixtures::inception::Fixture;
8-
use openvino::{prepostprocess, Core, ElementType, Layout, Shape, Tensor};
8+
use openvino::{prepostprocess, Core, ElementType, Layout, ResizeAlgorithm, Shape, Tensor};
99
use std::fs;
1010
use util::{Prediction, Predictions};
1111

@@ -36,7 +36,7 @@ fn classify_inception() -> anyhow::Result<()> {
3636
input_tensor_info.preprocess_input_tensor_set_from(&tensor)?;
3737
input_tensor_info.preprocess_input_tensor_set_layout(&Layout::new("NHWC")?)?;
3838
let mut preprocess_steps = input_info.get_preprocess_steps()?;
39-
preprocess_steps.preprocess_steps_resize(0)?;
39+
preprocess_steps.preprocess_steps_resize(ResizeAlgorithm::Linear)?;
4040
let model_info = input_info.get_model_info()?;
4141
model_info.model_info_set_layout(&Layout::new("NCHW")?)?;
4242
let new_model = pre_post_process.build_new_model()?;

crates/openvino/tests/classify-mobilenet.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ mod fixtures;
55
mod util;
66

77
use fixtures::mobilenet::Fixture;
8-
use openvino::{prepostprocess, Core, ElementType, Layout, Shape, Tensor};
8+
use openvino::{prepostprocess, Core, ElementType, Layout, ResizeAlgorithm, Shape, Tensor};
99
use std::fs;
1010
use util::{Prediction, Predictions};
1111

@@ -36,7 +36,7 @@ fn classify_mobilenet() -> anyhow::Result<()> {
3636
input_tensor_info.preprocess_input_tensor_set_from(&tensor)?;
3737
input_tensor_info.preprocess_input_tensor_set_layout(&Layout::new("NHWC")?)?;
3838
let mut preprocess_steps = input_info.get_preprocess_steps()?;
39-
preprocess_steps.preprocess_steps_resize(0)?;
39+
preprocess_steps.preprocess_steps_resize(ResizeAlgorithm::Linear)?;
4040
let model_info = input_info.get_model_info()?;
4141
model_info.model_info_set_layout(&Layout::new("NCHW")?)?;
4242
let output_info = pre_post_process.get_output_info_by_index(0)?;

0 commit comments

Comments
 (0)