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

百度官方网站登录国内很多网站不是响应式

百度官方网站登录,国内很多网站不是响应式,石家庄网站定制开发,中国建设网站首页之前在 YOLOv8 classify介绍_yolov8分类模型-CSDN博客 中介绍过使用YOLOv8模型进行分类#xff0c;当时只给出了Python的实现#xff0c;包括训练和预测#xff0c;这里基于训练生成的模型#xff0c;分别给出C的opencv dnn、libtorch、onnruntime的实现。 opencv dnn实现测…      之前在 YOLOv8 classify介绍_yolov8分类模型-CSDN博客 中介绍过使用YOLOv8模型进行分类当时只给出了Python的实现包括训练和预测这里基于训练生成的模型分别给出C的opencv dnn、libtorch、onnruntime的实现。 opencv dnn实现测试代码如下 int test_yolov8_classify_opencv() {auto net cv::dnn::readNetFromONNX(onnx_file);if (net.empty()) {std::cerr Error: there are no layers in the network: onnx_file std::endl;return -1;}if (cuda_enabled) {net.setPreferableBackend(cv::dnn::DNN_BACKEND_CUDA);net.setPreferableTarget(cv::dnn::DNN_TARGET_CUDA);} else {net.setPreferableBackend(cv::dnn::DNN_BACKEND_OPENCV);net.setPreferableTarget(cv::dnn::DNN_TARGET_CPU);}auto classes parse_classes_file(classes_file);if (classes.size() 0) {std::cerr Error: fail to parse classes file: classes_file std::endl;return -1;}constexpr int imgsz{ 224 };for (const auto [key, val] : get_dir_images(images_dir)) {cv::Mat frame cv::imread(val, cv::IMREAD_COLOR);if (frame.empty()) {std::cerr Warning: unable to load image: val std::endl;continue;}cv::Mat bgr modify_image_size(frame); // top left padding//cv::Mat bgr;//letter_box(frame, bgr, std::vectorint{imgsz, imgsz}); // center paddingcv::Mat blob;cv::dnn::blobFromImage(bgr, blob, 1.0 / 255.0, cv::Size(imgsz, imgsz), cv::Scalar(), true, false);net.setInput(blob);std::vectorcv::Mat outputs;net.forward(outputs, net.getUnconnectedOutLayersNames());double max_val{ 0. };cv::Point max_idx{};cv::minMaxLoc(outputs[0], 0, max_val, 0, max_idx);std::cout image name: val , category: classes[max_idx.x] , conf: std::format({:.4f},max_val) std::endl;}return 0; } 执行结果如下图所示图像填充方式有左上角填充和中心填充两种方式两种方式的均可正确分类但置信度多少有些差异 libtorch实现测试代码如下 int test_yolov8_classify_libtorch() {if (auto flag torch::cuda::is_available(); flag true)std::cout cuda is available std::endl;elsestd::cout cuda is not available std::endl;torch::Device device(torch::cuda::is_available() ? torch::kCUDA : torch::kCPU);auto classes parse_classes_file(classes_file);if (classes.size() 0) {std::cerr Error: fail to parse classes file: classes_file std::endl;return -1;}try {// load modeltorch::jit::script::Module model;if (torch::cuda::is_available() true)model torch::jit::load(torchscript_file, torch::kCUDA);elsemodel torch::jit::load(torchscript_file, torch::kCPU);model.eval();// note: cpu is normal; gpu is abnormal: the model may not be fully placed on the gpu // model torch::jit::load(file); model.to(torch::kCUDA) model torch::jit::load(file, torch::kCUDA)// model.to(device, torch::kFloat32);constexpr int imgsz{ 224 };for (const auto [key, val] : get_dir_images(images_dir)) {// load image and preprocesscv::Mat frame cv::imread(val, cv::IMREAD_COLOR);if (frame.empty()) {std::cerr Warning: unable to load image: val std::endl;continue;}cv::Mat bgr;letter_box(frame, bgr, std::vectorint{imgsz, imgsz});torch::Tensor tensor torch::from_blob(bgr.data, { bgr.rows, bgr.cols, 3 }, torch::kByte).to(device);tensor tensor.toType(torch::kFloat32).div(255);tensor tensor.permute({ 2, 0, 1 });tensor tensor.unsqueeze(0);std::vectortorch::jit::IValue inputs{ tensor };// inferencetorch::Tensor output model.forward(inputs).toTensor().cpu();auto idx std::get1(output.max(1, true)).itemint();std::cout image name: val , category: classes[idx] , conf: std::format({:.4f}, torch::softmax(output, 1)[0][idx].itemfloat()) std::endl;}}catch (const c10::Error e) {std::cerr Error: e.msg() std::endl;return -1;}return 0; } 执行结果如下图所示 onnxruntime实现测试代码如下 int test_yolov8_classify_onnxruntime() {try {Ort::Env env Ort::Env(ORT_LOGGING_LEVEL_WARNING, Yolo);Ort::SessionOptions session_option;if (cuda_enabled) {OrtCUDAProviderOptions cuda_option;cuda_option.device_id 0;session_option.AppendExecutionProvider_CUDA(cuda_option);}session_option.SetGraphOptimizationLevel(GraphOptimizationLevel::ORT_ENABLE_ALL);session_option.SetIntraOpNumThreads(1);session_option.SetLogSeverityLevel(3);Ort::Session session(env, ctow(onnx_file).c_str(), session_option);Ort::AllocatorWithDefaultOptions allocator;std::vectorconst char* input_node_names, output_node_names;std::vectorstd::string input_node_names_, output_node_names_;for (auto i 0; i session.GetInputCount(); i) {Ort::AllocatedStringPtr input_node_name session.GetInputNameAllocated(i, allocator);input_node_names_.emplace_back(input_node_name.get());}for (auto i 0; i session.GetOutputCount(); i) {Ort::AllocatedStringPtr output_node_name session.GetOutputNameAllocated(i, allocator);output_node_names_.emplace_back(output_node_name.get());}for (auto i 0; i input_node_names_.size(); i)input_node_names.emplace_back(input_node_names_[i].c_str());for (auto i 0; i output_node_names_.size(); i)output_node_names.emplace_back(output_node_names_[i].c_str());constexpr int imgsz{ 224 };Ort::RunOptions options(nullptr);std::unique_ptrfloat[] blob(new float[imgsz * imgsz * 3]);std::vectorint64_t input_node_dims{ 1, 3, imgsz, imgsz };auto classes parse_classes_file(classes_file);if (classes.size() 0) {std::cerr Error: fail to parse classes file: classes_file std::endl;return -1;}for (const auto [key, val] : get_dir_images(images_dir)) {cv::Mat frame cv::imread(val, cv::IMREAD_COLOR);if (frame.empty()) {std::cerr Warning: unable to load image: val std::endl;continue;}cv::Mat rgb;letter_box(frame, rgb, std::vectorint{imgsz, imgsz});cv::cvtColor(rgb, rgb, cv::COLOR_BGR2RGB);image_to_blob(rgb, blob.get());Ort::Value input_tensor Ort::Value::CreateTensorfloat(Ort::MemoryInfo::CreateCpu(OrtDeviceAllocator, OrtMemTypeCPU), blob.get(), 3 * imgsz * imgsz, input_node_dims.data(), input_node_dims.size());auto output_tensors session.Run(options, input_node_names.data(), input_tensor, input_node_names.size(), output_node_names.data(), output_node_names.size());Ort::Value output_tensor output_tensors[0];float* output_data output_tensor.GetTensorMutableDatafloat();auto shape output_tensor.GetTensorTypeAndShapeInfo().GetShape();auto num shape.size() 1 ? shape[1] : shape[0];float conf{ 0. };int idx{ -1 };for (auto i 0; i num; i) {if (output_data[i] conf) {conf output_data[i];idx static_castint(i);}}std::cout image name: val , category: classes[idx] , conf: std::format({:.4f}, conf) std::endl;}}catch (const std::exception e) {std::cerr Error: e.what() std::endl;return -1;}return 0; } 执行结果如下图所示 注虽然三种方式均可对所有测试图像进行正确分类但它们的置信度不同 GitHubhttps://github.com/fengbingchun/NN_Test
http://www.hkea.cn/news/14561900/

相关文章:

  • 淘客怎么做网站辽宁建设工程信息网怎么查人员
  • 福田做棋牌网站建设哪家技术好青岛公司注册
  • 网站建设公司(深圳信科)本地做的网站如何映射出去
  • 装修设计网站哪个好用奉贤免费网站建设
  • 做料理网站关键词怎么设置长春公司网站建设
  • 电脑软件下载官方网站还有多少用.net做网站的
  • 微信网站特点自学平面设计入门教程
  • 深圳做微信商城网站西安网站设计试听
  • 电子商务网站平台建设协会类网站免费模板
  • 400套商业网站的静态模板巩义做网站哪家好
  • html5餐饮美食订餐微官网wap手机网站模板整站下载模板做的网站不好优化
  • 如何免费搭建自己的网站阿里网站建设
  • 怎么制作网站域名网站备案需要什么东西
  • 做网站每年需要多少维护费Sql 发wordpress
  • 链家二手房官网关键字排名优化公司
  • 如何推广自己的个人网站呢装修案例实景图
  • 中国农业工程建设协会网站图片设计用什么软件
  • 做本地化的返利网站怎么样泰州网站制作网站
  • 做网站要买什么空间php网站开发第三章
  • 网站建设公司有哪些方面如何发布网站教程
  • 清爽网站模板网站上传 文件夹结构
  • 网站设计欣赏国外网站名称创意大全
  • 烟台开发区网站免费做app的网站哪个好
  • 湖南畅想网站建设网站建设分销协议
  • 河南省建设厅信息网站2016网站谷歌权重
  • 莲湖微网站建设双鸭山网络推广
  • 服装网站建设需求分析域名抢注网站
  • 斯塔德迈尔球衣烟台seo外包
  • 建设网站改版可以用自己的电脑做网站吗
  • 多个端口网站如何做域名重定向dw简单的网页制作