AbstractNetInferenceWorker类型是一切神经网络推理工人类型的基类,该类提供一些基本推理的功能, 用户可以通过继承这个类来实现自己的推理工人类型。
更多...
|
| | AbstractNetInferenceWorker (SchedulerType::Ptr scheduler, const nlohmann::json &cfg) |
| | 推理精度必须是一个算术类型
|
| |
|
virtual | ~AbstractNetInferenceWorker () |
| | 析构函数
|
| |
|
virtual void | PreProcess ()=0 |
| | 预处理方法,用户必须实现这个方法,用来实现推理前的准备工作,该方法在每次InferenceOnce()之前被调用
|
| |
|
virtual void | PostProcess ()=0 |
| | 后处理方法,用户必须实现这个方法,用来实现推理后的处理工作,该方法在每次InferenceOnce()之后被调用
|
| |
|
virtual void | InferenceOnce () |
| | 推理方法,用户可选重定义这个方法,用来实现推理的逻辑,默认实现是使用onnxruntime的推理方法
|
| |
| void | SetEnable (bool enable, InferencePrecision future_time=0) |
| | 设置是否启动推理。或是否在未来的某个时间点启动推理。
|
| |
| void | TaskRun () override |
| | 在每次任务队列循环中被调用,用来实现推理的逻辑,默认实现是依次调用PreProcess,InferenceOnce,PostProcess方法
|
| |
| void | TaskCreate () override |
| | 任务创建的方法,该方法中会初始化模型,预热模型,绑定输入输出节点等
|
| |
| template<int64_t ... Dims> |
| Ort::Value | WarpOrtTensor (math::Tensor< InferencePrecision, Dims... > &Tensor) |
| | 将z::math::Tensor类型的数据转换为Ort::Value类型的数据。
|
| |
| | AbstractWorker (SchedulerType::Ptr scheduler, const nlohmann::json &cfg=nlohmann::json()) |
| | 构造一个抽象工人类型
|
| |
| void | setScheduler (SchedulerType::Ptr scheduler) |
| | 设置调度器的指针
|
| |
|
virtual | ~AbstractWorker () |
| | 析构函数,虚函数,用于释放资源
|
| |
| virtual void | TaskDestroy () |
| | TaskDestroy方法,在任务队列删除的时候会被调度器调用,用户可以在这个方法中释放一些资源
|
| |
| virtual void | TaskCycleBegin () |
| | TaskCycleBegin方法,在每次任务队列循环的开始会被调度器调用。
|
| |
| virtual void | TaskCycleEnd () |
| | TaskCycleEnd方法,在每次任务队列循环的结束会被调度器调用。
|
| |
| void | PrintSplitLine (size_t length=60, char c='-') |
| | print a split line, default length is 60 and character is '-'
|
| |
|
|
bool | WarmUpModel__ = false |
| | 是否需要预热模型
|
| |
|
size_t | WarmUpCnt__ = 0 |
| | 预热次数
|
| |
|
std::string | ModelPath__ |
| | 模型路径
|
| |
|
size_t | IntraNumberThreads__ = 1 |
| | 推理线程数,默认为1,增大线程数可能可以提升推理速度但是会增加资源消耗
|
| |
|
Ort::Session | Session__ |
| | ONNXRuntime的Session对象,用来加载模型和进行推理
|
| |
|
Ort::SessionOptions | SessionOptions__ |
| | ONNXRuntime的SessionOptions对象,用来配置Session
|
| |
|
Ort::AllocatorWithDefaultOptions | DefaultAllocator__ |
| | ONNXRuntime的AllocatorWithDefaultOptions对象,用来分配内存
|
| |
|
Ort::MemoryInfo | MemoryInfo__ |
| | ONNXRuntime的MemoryInfo对象,用来配置内存信息
|
| |
|
std::vector< std::string > | InputNodeNames__ |
| | 输入节点名称列表
|
| |
|
std::vector< std::string > | OutputNodeNames__ |
| | 输出节点名称列表
|
| |
|
std::vector< Ort::Value > | InputOrtTensors__ |
| | 输入Ort::Value列表,顺序与InputNodeNames一致
|
| |
|
std::vector< Ort::Value > | OutputOrtTensors__ |
| | 输出Ort::Value列表,顺序与OutputNodeNames一致
|
| |
|
Ort::IoBinding | IoBinding__ |
| | ONNXRuntime的IoBinding对象,用来绑定输入输出节点,绑定名称和数据
|
| |
|
SchedulerType::Ptr | Scheduler = nullptr |
| | 调度器的指针,用户可以通过这个指针来获取一些全局的数据, 比如当前任务的时间戳,前级工人的输出数据等,也可以通过这个指针来设置一些全局的数据。
|
| |
template<typename
SchedulerType,
CTString NetName, typename InferencePrecision>
class z::AbstractNetInferenceWorker< SchedulerType, NetName, InferencePrecision >
AbstractNetInferenceWorker类型是一切神经网络推理工人类型的基类,该类提供一些基本推理的功能, 用户可以通过继承这个类来实现自己的推理工人类型。
AbstractNetInferenceWorker类型是一切神经网络推理工人类型的基类,该类提供一些基本推理的功能, 用户可以通过继承这个类来实现自己的推理工人类型。该类型实现了与ONNXRuntime的交互,用户可以通过配置文件来配置模型的路径, 输入节点名称,输出节点名称,线程数等参数。用户可以通过继承这个类来实现自己的推理工人类型,用户必须实现PreProcess,PostProcess,方法 分别用来实现推理前的准备工作,推理后的处理工作,将在推理前后(InferenceOnce方法前后)依次调用这两个方法。
config.json配置文件示例:
{
"Workers": {
"NN": {
"Inference": {
"WarmUpModel": true, //是否需要预热模型
"WarmUpCount": 10, //预热次数
"IntraNumberThreads": 1 //线程数
},
"Network": {
"ModelPath": "model.onnx", //模型路径
"InputNodeNames": ["input"], //输入节点名称
"OutputNodeNames": ["output"] //输出节点名称
}
}
}
}
- 模板参数
-
| SchedulerType | 调度器类型 |
| NetName | 网络名称,用户可以通过这个参数来指定网络的名称, 这在有多个网络时可以区分数据总线上的不同网络数据 |
| InferencePrecision | 推理精度,用户可以通过这个参数来指定推理的精度,比如可以指定为float或者double |