当前位置: 首页 > news >正文

怎么建立一个网站的快捷方式东莞高端网站建设哪个好

怎么建立一个网站的快捷方式,东莞高端网站建设哪个好,wordpress怎么绑域名,赣州市网络科技有限公司前序工作 C Qt / VS2019 opencv onnxruntime 部署语义分割模型【经验】 引言 前序工作中介绍了Pytorch模型如何转为ONNX格式#xff0c;以及在Python中如何使用onnx模型 介绍了如何在VA或QT中配置Onnxruntime运行库 本文重点列出全部源代码及其使用 依赖库 onnxruntime…前序工作 C Qt / VS2019 opencv onnxruntime 部署语义分割模型【经验】 引言 前序工作中介绍了Pytorch模型如何转为ONNX格式以及在Python中如何使用onnx模型 介绍了如何在VA或QT中配置Onnxruntime运行库 本文重点列出全部源代码及其使用 依赖库 onnxruntime: 1.8.1 opencv: 330 头文件 #pragma once #include string #include onnxruntime_cxx_api.h #include iostream #include vector #include opencv2/opencv.hpp #include opencv2/dnn.hpp #include time.hclass ObjectSeg { protected:Ort::Env env_;Ort::SessionOptions session_options_;Ort::Session session_{ nullptr };Ort::RunOptions run_options_{ nullptr };std::vectorOrt::Value input_tensors_;std::vectorconst char* input_node_names_;std::vectorint64_t input_node_dims_;size_t input_tensor_size_{ 1 };std::vectorconst char* out_node_names_;size_t out_tensor_size_{ 1 };int image_h;int image_w;cv::Mat normalize(cv::Mat image);cv::Mat preprocess(cv::Mat image);public:ObjectSeg() delete;ObjectSeg(std::wstring model_path, int num_threads, std::vectorint64_t input_node_dims);cv::Mat predict_image(cv::Mat src);void predict_image(const std::string src_path, const std::string dst_path);void predict_camera();}; 源文件 #include Seg.hObjectSeg::ObjectSeg(std::wstring model_path, int num_threads 1, std::vectorint64_t input_node_dims { 1, 3, 64, 64 }) {input_node_dims_ input_node_dims;for (int64_t i : input_node_dims_) {input_tensor_size_ * i;out_tensor_size_ * i;}//std::cout input_tensor_size_ std::endl;session_options_.SetIntraOpNumThreads(num_threads);session_options_.SetGraphOptimizationLevel(GraphOptimizationLevel::ORT_ENABLE_EXTENDED);OrtCUDAProviderOptions cuda_options{0,OrtCudnnConvAlgoSearch::EXHAUSTIVE,std::numeric_limitssize_t::max(),0,true};session_options_.AppendExecutionProvider_CUDA(cuda_options);std::cout ************* Infer model on GPU! ************* std::endl;try {session_ Ort::Session(env_, model_path.c_str(), session_options_);}catch (...) {}Ort::AllocatorWithDefaultOptions allocator;//获取输入nameconst char* input_name session_.GetInputName(0, allocator);input_node_names_ { input_name };//std::cout input name: input_name std::endl;const char* output_name session_.GetOutputName(0, allocator);out_node_names_ { output_name };//std::cout output name: output_name std::endl; }cv::Mat ObjectSeg::normalize(cv::Mat image) {std::vectorcv::Mat channels, normalized_image;cv::split(image, channels);cv::Mat r, g, b;b channels.at(0);g channels.at(1);r channels.at(2);b (b / 255. - 0.485) / 0.229;g (g / 255. - 0.456) / 0.224;r (r / 255. - 0.406) / 0.225;normalized_image.push_back(r);normalized_image.push_back(r);normalized_image.push_back(g);normalized_image.push_back(b);cv::Mat out cv::Mat(image.rows, image.cols, CV_32F);cv::merge(normalized_image, out);return out; }/* * preprocess: resize - normalize */ cv::Mat ObjectSeg::preprocess(cv::Mat image) {image_h image.rows;image_w image.cols;cv::Mat dst, dst_float, normalized_image;cv::resize(image, dst, cv::Size(int(input_node_dims_[3]), int(input_node_dims_[2])), 0, 0);dst.convertTo(dst_float, CV_32F);normalized_image normalize(dst_float);return normalized_image; }/* * postprocess: preprocessed image - infer - postprocess */ cv::Mat ObjectSeg::predict_image(cv::Mat src) {cv::Mat preprocessed_image preprocess(src);cv::Mat blob cv::dnn::blobFromImage(preprocessed_image, 1, cv::Size(int(input_node_dims_[3]), int(input_node_dims_[2])), cv::Scalar(0, 0, 0), false);//std::cout load image success. std::endl;// create input tensorauto memory_info Ort::MemoryInfo::CreateCpu(OrtArenaAllocator, OrtMemTypeDefault);input_tensors_.emplace_back(Ort::Value::CreateTensorfloat(memory_info, blob.ptrfloat(), blob.total(), input_node_dims_.data(), input_node_dims_.size()));std::vectorOrt::Value output_tensors_ session_.Run(Ort::RunOptions{ nullptr },input_node_names_.data(),input_tensors_.data(),input_node_names_.size(),out_node_names_.data(),out_node_names_.size());// post progress// 3. post process.Ort::Value scores output_tensors_.at(0); // (1,21,h,w)auto scores_dims scores.GetTypeInfo().GetTensorTypeAndShapeInfo().GetShape();const unsigned int output_classes scores_dims.at(1);const unsigned int output_height scores_dims.at(2);const unsigned int output_width scores_dims.at(3);// time cost!cv::Mat class_mat cv::Mat(output_height, output_width, CV_8UC3, cv::Scalar(0));cv::Mat color_mat class_mat.clone();for (unsigned int i 0; i output_height; i){uchar* p_class class_mat.ptruchar(i);cv::Vec3b* p_color color_mat.ptrcv::Vec3b(i);for (unsigned int j 0; j output_width; j){// argmaxunsigned int max_label 0;float max_conf scores.Atfloat({ 0, 0, i, j });for (unsigned int l 0; l output_classes; l){float conf scores.Atfloat({ 0, l, i, j });if (conf max_conf){max_conf conf;max_label l;}}if (max_label 0) continue;// assign label for pixel(i,j)p_class[j] cv::saturate_castuchar(max_label);// assign color for detected class at pixel(i,j).p_color[j][0] cv::saturate_castuchar(255); // ((max_label % 10) * 20);p_color[j][1] cv::saturate_castuchar(255);// ((max_label % 5) * 40);p_color[j][2] cv::saturate_castuchar(255); // ((max_label % 10) * 20);// assign names map}}//cv::imwrite(1.png, color_mat);input_tensors_.clear();return color_mat; }void ObjectSeg::predict_image(const std::string src_path, const std::string dst_path) {cv::Mat image cv::imread(src_path);cv::Mat mask predict_image(image);cv::imwrite(dst_path, mask);std::cout predict image over std::endl;}主函数 #include windows.h #include vector #include iostream #include opencv2/opencv.hpp #include Seg.h #include stringint main() {std::wstring model_path(Lmodel.onnx);std::cout infer.... std::endl;ObjectSeg object_seg(model_path, 1, { 1, 3, 512, 512 });for (int i 0; i 20; i){DWORD star_time GetTickCount();cv::Mat src cv::imread((1).jpg);int height src.rows;int width src.cols;cv::Mat mask object_seg.predict_image(src);cv::imwrite(09051.png, mask);DWORD end_time GetTickCount();std::cout 这个程序 i 运行时间为 (end_time - star_time) ms. std::endl;}return 0; }
http://www.w-s-a.com/news/673640/

相关文章:

  • 网站维护服务公司上海兼职网站制作
  • 企业做网站需要多少钱湘潭九华网站
  • 嘉兴建站服务微营销官网
  • 比较好的网页模板网站浦项建设(中国)有限公司网站
  • 有趣的个人网站网页设计与制作的岗位职责
  • 有建设网站的软件吗长沙做网站的公司对比
  • 网站的外链接数中铝长城建设有限公司网站
  • 北京建设网站公司网站建设费用 无形资产
  • 适合seo的建站系统如何建立网页
  • 我想自己建立一个网站给大家分享个永久免费的云服务器
  • 怎样做网站和网站的友情链接官网优化 报价
  • 购买网站空间大小聊城网站空间公司
  • 做像美团淘宝平台网站多少钱开发网站企业
  • 网站建设前期费用二手购物网站策划书
  • dede学校网站百度联盟是什么
  • 献县网站建设网站开发专业定制
  • 龙华做网站yihe kj安徽六安彩礼一般给多少
  • flash网站建设公司我的小程序在哪里找
  • 建网站需要数据库吗如何制作简单的网页链接
  • 杭州设计企业网站高端公司上虞做网站公司
  • 做网站能赚钱么用wordpress搭建知名网站
  • 阿里云服务器网站开发青岛做网站找哪家
  • 凡科做的网站为什么打不开织梦cms仿某作文网站整站源码(带采集)安装数据库
  • 免费h5模板网站模板汽车报价网址
  • 蔡甸网站建设烟台网站建设yt
  • 最流行的网站开发新开的网页游戏平台
  • 暴富建站wordpress 标签分类
  • 搞笑网站源码百度快照替代
  • 重庆网站建设哪家公司哪家好关键词是怎么排名的
  • 青县网站建设今天国际大事新闻