FastDeploy:PaddleSeg C++部署方式(一)

这篇具有很好参考价值的文章主要介绍了FastDeploy:PaddleSeg C++部署方式(一)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1.FastDeploy介绍

2. 通过FastDeploy C++ 部署PaddleSeg模型

1.FastDeploy介绍

⚡️FastDeploy是一款全场景易用灵活极致高效的AI推理部署工具, 支持云边端部署。提供超过 🔥160+ TextVision, Speech跨模态模型📦开箱即用的部署体验,并实现🔚端到端的推理性能优化,满足开发者多场景、多硬件、多平台的产业部署需求。

FastDeploy:PaddleSeg C++部署方式(一)

近期更新

  • FastDeploy系列直播课程回放

  • 2023.01.17 发布 YOLOv8 在FastDeploy系列硬件的部署支持。 其中包括 Paddle YOLOv8 以及 社区 ultralytics YOLOv8

    • Paddle YOLOv8 可以部署的硬件:Intel CPU、NVIDIA GPU、Jetson、飞腾、昆仑芯、昇腾、ARM CPU、RK3588 和 Sophgo TPU, 部分硬件包含 Python 部署和 C++ 部署;
    • 社区 ultralytics YOLOv8 可以部署的硬件:Intel CPU、NVIDIA GPU、Jetson,均包含 Python 部署和 C++ 部署;
    • FastDeploy 一行模型API切换,可以实现YOLOv8、 PP-YOLOE+YOLOv5 等模型性能对比。
  • 服务化部署结合VisualDL新增支持可视化部署。在FastDeploy容器中启动VDL服务后,即可在VDL界面修改模型配置、启动/管理模型服务、查看性能数据、发送请求等,详细操作可参考相关文档

    • Serving可视化部署
    • Serving可视化请求

        使用FastDeploy可以简单高效的在X86 CPU、NVIDIA GPU、飞腾CPU、ARM CPU、Intel GPU、昆仑、昇腾、瑞芯微、晶晨、算能等10+款硬件上对PaddleSeg语义分割模型进行快速部署,并且支持Paddle Inference、Paddle Lite、TensorRT、OpenVINO、ONNXRuntime、RKNPU2、SOPHGO等多种推理后端。

FastDeploy:PaddleSeg C++部署方式(一)

2. 通过FastDeploy C++ 部署PaddleSeg模型

支持PaddleSeg高于2.6版本的Segmentation模型,如果部署的为PP-MattingPP-HumanMatting以及ModNet请参考Matting模型部署。目前FastDeploy测试过成功部署的模型:

  • U-Net系列模型
  • PP-LiteSeg系列模型
  • PP-HumanSeg系列模型
  • FCN系列模型
  • DeepLabV3系列模型
  • SegFormer系列模型

支持CpuInfer、GpuInfer、TrtInfer三种推理模式

// Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

#include "fastdeploy/vision.h"

#ifdef WIN32
const char sep = '\\';
#else
const char sep = '/';
#endif

void CpuInfer(const std::string& model_dir, const std::string& image_file) {
  auto model_file = model_dir + sep + "model.pdmodel";
  auto params_file = model_dir + sep + "model.pdiparams";
  auto config_file = model_dir + sep + "deploy.yaml";
  auto option = fastdeploy::RuntimeOption();
  option.UseCpu();
  auto model = fastdeploy::vision::segmentation::PaddleSegModel(
      model_file, params_file, config_file, option);

  if (!model.Initialized()) {
    std::cerr << "Failed to initialize." << std::endl;
    return;
  }

  auto im = cv::imread(image_file);

  fastdeploy::vision::SegmentationResult res;
  if (!model.Predict(im, &res)) {
    std::cerr << "Failed to predict." << std::endl;
    return;
  }

  std::cout << res.Str() << std::endl;
  auto vis_im = fastdeploy::vision::VisSegmentation(im, res, 0.5);
  cv::imwrite("vis_result.jpg", vis_im);
  std::cout << "Visualized result saved in ./vis_result.jpg" << std::endl;
}

void GpuInfer(const std::string& model_dir, const std::string& image_file) {
  auto model_file = model_dir + sep + "model.pdmodel";
  auto params_file = model_dir + sep + "model.pdiparams";
  auto config_file = model_dir + sep + "deploy.yaml";

  auto option = fastdeploy::RuntimeOption();
  option.UseGpu();
  auto model = fastdeploy::vision::segmentation::PaddleSegModel(
      model_file, params_file, config_file, option);

  if (!model.Initialized()) {
    std::cerr << "Failed to initialize." << std::endl;
    return;
  }

  auto im = cv::imread(image_file);

  fastdeploy::vision::SegmentationResult res;
  if (!model.Predict(im, &res)) {
    std::cerr << "Failed to predict." << std::endl;
    return;
  }

  std::cout << res.Str() << std::endl;
  auto vis_im = fastdeploy::vision::VisSegmentation(im, res, 0.5);
  cv::imwrite("vis_result.jpg", vis_im);
  std::cout << "Visualized result saved in ./vis_result.jpg" << std::endl;
}

void TrtInfer(const std::string& model_dir, const std::string& image_file) {
  auto model_file = model_dir + sep + "model.pdmodel";
  auto params_file = model_dir + sep + "model.pdiparams";
  auto config_file = model_dir + sep + "deploy.yaml";

  auto option = fastdeploy::RuntimeOption();
  option.UseGpu();
  option.UseTrtBackend();
  // If use original Tensorrt, not Paddle-TensorRT,
  // comment the following two lines
  option.EnablePaddleToTrt();
  option.EnablePaddleTrtCollectShape();
  option.SetTrtInputShape("x", {1, 3, 256, 256}, {1, 3, 1024, 1024},
                          {1, 3, 2048, 2048});

  auto model = fastdeploy::vision::segmentation::PaddleSegModel(
      model_file, params_file, config_file, option);

  if (!model.Initialized()) {
    std::cerr << "Failed to initialize." << std::endl;
    return;
  }

  auto im = cv::imread(image_file);

  fastdeploy::vision::SegmentationResult res;
  if (!model.Predict(im, &res)) {
    std::cerr << "Failed to predict." << std::endl;
    return;
  }

  std::cout << res.Str() << std::endl;
  auto vis_im = fastdeploy::vision::VisSegmentation(im, res, 0.5);
  
  cv::imwrite("vis_result.jpg", vis_im);
  std::cout << "Visualized result saved in ./vis_result.jpg" << std::endl;
}

int main(int argc, char* argv[]) {
    std::string model_dir = "model\\PP_LiteSeg_B_STDC2_cityscapes_without_argmax_infer";
   std::string image_file = "model\\cityscapes_demo.png";

 
  // CpuInfer(argv[1], argv[2]);

   GpuInfer(model_dir, image_file);

 //  TrtInfer(argv[1], argv[2]);
  
  return 0;
}

推理结果可视化:

FastDeploy:PaddleSeg C++部署方式(一)

FastDeploy:PaddleSeg C++部署方式(一)文章来源地址https://www.toymoban.com/news/detail-414932.html

到了这里,关于FastDeploy:PaddleSeg C++部署方式(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • PaddleOCR 使用 FastDeploy 服务化部署及postman、java调用服务的方法

    目录 服务化部署 postman调用 java调用 题外话 部署这块大部分按着官方文档来做就差不多 PaddleOCR/deploy/fastdeploy/serving/fastdeploy_serving at dygraph · PaddlePaddle/PaddleOCR · GitHub 提一下两个需要注意的点。 一、如果跟我一样选择的是cpu的版本,那么修改config.pbtxt配置文件时不仅得按官方

    2024年02月08日
    浏览(40)
  • PaddleSeg学习4——paddle模型使用TensorRT推理(c++)

    前文 PaddleSeg c++部署OCRNet+HRNet模型中的语义分割模型输出为 float32 类型,模型不含softmax和argmax处理,导致在项目应用过程中后处理耗时较高。 通过PaddleSeg/tools/export.py在网络末端增加softmax和argmax算子,解决应用中的后处理耗时问题。 参考文档PaddleSeg/docs/model_export_cn.md导出预测

    2024年01月16日
    浏览(40)
  • 使用FastDeploy在英特尔CPU和独立显卡上端到端高效部署AI模型

    目录 1.1 产业实践中部署AI模型的痛点 1.1.1  部署模型的典型流程 1.1.2 端到端的AI性能 1.1.3 部署模型的难点和痛点 1.2 FastDeploy简介 1.3 英特尔独立显卡简介 1.4 使用FastDeploy在英特尔CPU和独立显卡上部署模型的步骤 1.4.1 搭建FastDeploy开发环境 1.4.2 下载模型和测试图处 1.4.3 三行代

    2024年02月01日
    浏览(55)
  • yolov5分割+检测c++ qt 中部署,以opencv方式(详细代码(全)+复制可用)

    1:版本说明: qt 5.12.10 opencv 4.5.3 (yolov5模型部署要求opencv4.5.0) 2:检测的代码 yolo.h yolo.cpp 检测的调用代码测试案例 这段调用的例子,只要把frame 改成你们自己的图片即可 4:分割的主要代码 YoloSeg.h YoloSeg.cpp yolov5_seg_utils.h  yolov5_seg_utils.cpp 分割的调用代码测试案例  分割的

    2024年02月03日
    浏览(43)
  • PaddleSeg分割框架解读[05] paddleseg/models/deeplab.py文件

    PaddleSeg分割框架解读[05] paddleseg/models/deeplab.py文件

    2024年02月21日
    浏览(37)
  • PaddleSeg分割框架解读[01] 核心设计解析

    特别注意,这块具体实现的类,如class Cityscapes(Dataset)等,称为组件; 组件管理器,则为相应的模型model管理器、数据集datasets管理器等。

    2024年02月20日
    浏览(44)
  • PaddleSeg分割框架解读[02] 配置文件config详解

    以DeepLabv3+为例进行讲解

    2024年02月22日
    浏览(45)
  • PaddleSeg的训练与测试推理全流程(超级详细)

    PaddleSeg 自建训练集训练+评估+模型部署: PaddleSeg官网:https://gitee.com/paddlepaddle/PaddleSeg 我之前找到了一个paddleSeg的链接就下载了,结果调试的时候怎么都不对,会有奇奇怪怪的错误,并且非常棘手,解决不了 结果我后来发现 我原来是0.4版本,太旧了,所以出现各种由于不适

    2024年01月16日
    浏览(46)
  • [paddle]paddleseg中eiseg加载模型参数的模型下载地址

    以下内容为2D图片标注模型下载及EISeg2D图片标注流程,具体如下: 在使用EISeg前,请先下载模型参数。EISeg开放了在COCO+LVIS、大规模人像数据、mapping_challenge,Chest X-Ray,MRSpineSeg,LiTS及百度自建质检数据集上训练的7个垂类方向模型,满足通用场景、人像场景、建筑物标注,医

    2024年02月07日
    浏览(41)
  • “分割一切”大模型SAM、超轻量PP-MobileSeg、工业质检工具、全景分割方案,PaddleSeg全新版本等你来体验!

    图像分割是计算机视觉的一项基础技术,其目标是将图像中的像素按内容分成不同的类别。它在许多领域有重要应用,比如自动驾驶、工业质检、医疗图像分析、遥感图像解译等。 PaddleSeg 是飞桨高性能图像分割开发套件 ,在图像分割领域做了大量的开源工作,致力于帮助企

    2023年04月19日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包