网站大气是什么意思,哈尔滨做网站电话,免建网站,wordpress禁止压缩图片软件视频地址:视频地址
代码开源地址
之前用Python配合YOLOV11开发一个了分类训练软件#xff0c;软件只要准备好数据#xff0c;然后导入就可以训练数据#xff0c;训练完成后还可以验证#xff0c;测试#xff0c;但是要真正落地#xff0c;还是有点欠缺。配合YOLOV1…软件视频地址:视频地址
代码开源地址
之前用Python配合YOLOV11开发一个了分类训练软件软件只要准备好数据然后导入就可以训练数据训练完成后还可以验证测试但是要真正落地还是有点欠缺。配合YOLOV11训练后导出的onnx模型再开发一个Qt软件主要是调用onnx模型。软件界面 4. 软件运行效果 5. 核心代码 /***创建一个环境****/_envOrt::Env(ORT_LOGGING_LEVEL_ERROR, OnnxModel);/***初始化Session选项 使用10个线程执行op,若想提升速度增加线程数***/_session_options.SetInterOpNumThreads(1);/***ORT_ENABLE_ALL: 启用所有可能的优化***///session_options.SetGraphOptimizationLevel(GraphOptimizationLevel::ORT_ENABLE_ALL);_session_options.SetGraphOptimizationLevel( GraphOptimizationLevel::ORT_ENABLE_ALL);/***获取QString的UTF-16表示****/const ushort* utf16Data model_path_.utf16();int length model_path_.length();/***分配足够的空间来存储wchar_t字符串包括空字符***/std::vectorwchar_t wcharArray(length 1);/***复制数据到新的wchar_t数组****/std::copy(utf16Data, utf16Data length, wcharArray.begin());wcharArray[length] L\0;ORTCHAR_T* session_model_pathwcharArray.data();/***创建一个回话***/_sessionnew Ort::Session(_env,session_model_path,_session_options);/***获取输入输出的批量节点***/_num_input_nodes _session-GetInputCount();_num_output_nodes _session-GetOutputCount();Ort::AllocatorWithDefaultOptions allocator_;/***确定输入的维度,和输入的入口名****///_input_node_names{input};_input_node_names.resize(_num_input_nodes);_input_node_name_strings.resize(_num_input_nodes);for (int i 0; i _num_input_nodes; i){Ort::TypeInfo type_info _session-GetInputTypeInfo(i);auto tensor_info type_info.GetTensorTypeAndShapeInfo();ONNXTensorElementDataType type tensor_info.GetElementType();std::vectorint64_t in_node_shape tensor_info.GetShape();int shape_index 0;for (auto shape: in_node_shape){_input_node_dims[shape_index] shape;}_input_node_name_strings[i]_session-GetInputNameAllocated(i, allocator_).get();_input_node_names[i]_input_node_name_strings[i].c_str();}/***确定输出的维度,和输出的出口名称****///_output_node_names{output};_output_node_names.resize(_num_output_nodes);_output_node_name_strings.resize(_num_output_nodes);for (int i 0; i _num_output_nodes; i){Ort::TypeInfo type_info _session-GetOutputTypeInfo(i);auto tensor_info type_info.GetTensorTypeAndShapeInfo();std::vectorint64_t out_node_shape tensor_info.GetShape();int shape_index 0;for (auto shape : out_node_shape){_output_node_dims[shape_index] shape;}_output_node_name_strings[i]_session-GetOutputNameAllocated(i,allocator_).get();_output_node_names[i]_output_node_name_strings[i].c_str();}/***创建内存信息***/Ort::MemoryInfo memory_info Ort::MemoryInfo::CreateCpu(OrtArenaAllocator, OrtMemTypeCPU);vectorOrt::Value input_tensors;input_tensors.push_back(Ort::Value::CreateTensorfloat(memory_info,/***处理内存的地方***/input_tensor_values.data(),/***数据***/input_tensor_values.size(),/****数据大小****/_input_node_dims.data(),/****维度数据****/_input_node_dims.size()));_output_tensor.clear();/***创建一个运行的选项***/Ort::RunOptions r_op;_output_tensor _session-Run(r_op,/****运行*****/_input_node_names.data(),/*****输入的名称******/input_tensors.data(),/****输入的数据******/_input_node_names.size(),/****输入的量******/_output_node_names.data(),/***输出的名*****/_output_node_names.size());/***输出的维度大小*****//***获取反馈的结构***/auto info__output_tensor.front().GetTensorTypeAndShapeInfo();std::vectorint64_t shape_info_.GetShape();int batch_size_shape_[0];//识别的批次int class_count_shape_[1];//识别到的类int out_size _output_tensor.size();float const *output_tensor__output_tensor[0].GetTensorDatafloat();float ng_sorce_output_tensor_[0];float ok_sorce_output_tensor_[1];if(ng_sorce_ok_sorce_){_class_strng:QString::number(ng_sorce_);_class_id0;}else{_class_strok:QString::number(ok_sorce_);_class_id1;}