import nndeploy._nndeploy_internal as _C
from enum import Enum
from typing import Union
import numpy as np
import json
import nndeploy.base
import nndeploy.device
name_to_node_type = {
"Input": _C.dag.NodeType.Input,
"Output": _C.dag.NodeType.Output,
"Intermediate": _C.dag.NodeType.Intermediate,
}
node_type_to_name = {v: k for k, v in name_to_node_type.items()}
[文档]class NodeType(_C.dag.NodeType):
Input = _C.dag.NodeType.Input
Output = _C.dag.NodeType.Output
Intermediate = _C.dag.NodeType.Intermediate
[文档] @classmethod
def from_name(cls, name: str):
name_to_node_type = {
"Input": cls.Input,
"Output": cls.Output,
"Intermediate": cls.Intermediate
}
if name not in name_to_node_type:
raise ValueError(f"Unsupported node type: {name}")
else:
return cls(name_to_node_type[name])
name_to_io_type = {
"kIOTypeNone": _C.dag.IOType.kIOTypeNone,
"Bool": _C.dag.IOType.Bool,
"Num": _C.dag.IOType.Num,
"String": _C.dag.IOType.String,
"Text": _C.dag.IOType.Text,
"Json": _C.dag.IOType.Json,
"Xml": _C.dag.IOType.Xml,
"Csv": _C.dag.IOType.Csv,
"Yaml": _C.dag.IOType.Yaml,
"Binary": _C.dag.IOType.Binary,
"Image": _C.dag.IOType.Image,
"Video": _C.dag.IOType.Video,
"Audio": _C.dag.IOType.Audio,
"Camera": _C.dag.IOType.Camera,
"Microphone": _C.dag.IOType.Microphone,
"Model": _C.dag.IOType.Model,
"Dir": _C.dag.IOType.Dir,
"Any": _C.dag.IOType.Any,
}
io_type_to_name = {v: k for k, v in name_to_io_type.items()}
[文档]class IOType(_C.dag.IOType):
kIOTypeNone = _C.dag.IOType.kIOTypeNone
Bool = _C.dag.IOType.Bool
Num = _C.dag.IOType.Num
String = _C.dag.IOType.String
Text = _C.dag.IOType.Text
Json = _C.dag.IOType.Json
Xml = _C.dag.IOType.Xml
Csv = _C.dag.IOType.Csv
Yaml = _C.dag.IOType.Yaml
Binary = _C.dag.IOType.Binary
Image = _C.dag.IOType.Image
Video = _C.dag.IOType.Video
Audio = _C.dag.IOType.Audio
Camera = _C.dag.IOType.Camera
Microphone = _C.dag.IOType.Microphone
Model = _C.dag.IOType.Model
Dir = _C.dag.IOType.Dir
Any = _C.dag.IOType.Any
[文档] @classmethod
def from_name(cls, name: str):
name_to_io_type = {
"kIOTypeNone": cls.kIOTypeNone,
"Bool": cls.Bool,
"Num": cls.Num,
"String": cls.String,
"Text": cls.Text,
"Json": cls.Json,
"Xml": cls.Xml,
"Csv": cls.Csv,
"Yaml": cls.Yaml,
"Binary": cls.Binary,
"Image": cls.Image,
"Video": cls.Video,
"Audio": cls.Audio,
"Camera": cls.Camera,
"Microphone": cls.Microphone,
"Model": cls.Model,
"Dir": cls.Dir,
"Any": cls.Any,
}
if name not in name_to_io_type:
raise ValueError(f"Unsupported io type: {name}")
else:
return cls(name_to_io_type[name])
[文档]def get_io_type_enum_json():
enum_list = []
for io_type_name, io_type_code in name_to_io_type.items():
enum_list.append(io_type_name)
io_type_enum = {}
for single_enum in enum_list:
io_type_enum[f"{single_enum}"] = enum_list
return io_type_enum
nndeploy.base.all_type_enum.append(get_io_type_enum_json)
name_to_edge_type_flag = {
"kBuffer": _C.dag.EdgeTypeFlag.kBuffer,
"kCvMat": _C.dag.EdgeTypeFlag.kCvMat,
"kTensor": _C.dag.EdgeTypeFlag.kTensor,
"kParam": _C.dag.EdgeTypeFlag.kParam,
"kAny": _C.dag.EdgeTypeFlag.kAny,
"kNone": _C.dag.EdgeTypeFlag.kNone,
}
edge_type_flag_to_name = {v: k for k, v in name_to_edge_type_flag.items()}
[文档]class EdgeTypeFlag(_C.dag.EdgeTypeFlag):
kBuffer = _C.dag.EdgeTypeFlag.kBuffer
kCvMat = _C.dag.EdgeTypeFlag.kCvMat
kTensor = _C.dag.EdgeTypeFlag.kTensor
kParam = _C.dag.EdgeTypeFlag.kParam
kAny = _C.dag.EdgeTypeFlag.kAny
kNone = _C.dag.EdgeTypeFlag.kNone
[文档] @classmethod
def from_name(cls, name: str):
if name not in name_to_edge_type_flag:
raise ValueError(f"Unsupported edge type flag: {name}")
else:
return cls(name_to_edge_type_flag[name])
[文档]class EdgeTypeInfo(_C.dag.EdgeTypeInfo):
[文档] def __init__(self):
super().__init__()
@property
def type_name(self) -> str:
return self.type_name_
@type_name.setter
def type_name(self, type_name: str):
self.type_name_ = type_name
@property
def type(self) -> EdgeTypeFlag:
return self.type_
@type.setter
def type(self, type_val: EdgeTypeFlag):
self.type_ = type_val
@property
def edge_name(self) -> str:
return self.edge_name_
@edge_name.setter
def edge_name(self, edge_name: str):
self.edge_name_ = edge_name
[文档] def set_buffer_type(self):
super().set_buffer_type()
[文档] def set_cvmat_type(self):
super().set_cvmat_type()
[文档] def set_tensor_type(self):
super().set_tensor_type()
[文档] def set_param_type(self):
super().set_param_type()
[文档] def set_type(self, type_val: type):
"""设置输入输出类型信息
Args:
type: 类型
Returns:
None
"""
super().set_type(type_val)
[文档] def get_type(self) -> EdgeTypeFlag:
return super().get_type()
[文档] def set_type_name(self, type_name: str):
super().set_type_name(type_name)
[文档] def get_type_name(self) -> str:
return super().get_type_name()
[文档] def get_unique_type_name(self) -> str:
return super().get_unique_type_name()
[文档] def get_type_ptr(self):
return super().get_type_ptr()
[文档] def is_buffer_type(self) -> bool:
return super().is_buffer_type()
[文档] def is_cvmat_type(self) -> bool:
return super().is_cvmat_type()
[文档] def is_tensor_type(self) -> bool:
return super().is_tensor_type()
[文档] def is_param_type(self) -> bool:
return super().is_param_type()
[文档] def check_buffer_type(self) -> bool:
return super().check_buffer_type()
[文档] def check_cvmat_type(self) -> bool:
return super().check_cvmat_type()
[文档] def check_tensor_type(self) -> bool:
return super().check_tensor_type()
[文档] def check_param_type(self) -> bool:
return super().check_param_type()
[文档] def set_edge_name(self, edge_name: str):
super().set_edge_name(edge_name)
[文档] def get_edge_name(self) -> str:
return super().get_edge_name()
[文档]def node_type_to_string(node_type) -> str:
return _C.dag.node_type_to_string(node_type)
[文档]def string_to_node_type(node_type_str: str):
return _C.dag.string_to_node_type(node_type_str)
[文档]def edge_type_to_string(edge_type) -> str:
return _C.dag.edge_type_to_string(edge_type)
[文档]def string_to_edge_type(edge_type_str: str):
return _C.dag.string_to_edge_type(edge_type_str)