TRT4-trt-integrate -self-driving道路分析

1#先看ONNX 查看大概结构

首先我们来看一下这个onnx:

可以看到这是一个全卷积网络,因为输入输出的宽高都一样

后来的这里是加入了softmax,所以获得的是概率值,所以最终的输出output是1*512*596*4的概率值。仅仅是不确定四个通道代表什么?

有以下可能:
1#车道线

2#可行使区域

3#不可行使区域

4#马路牙子

2#查看预处理方法

#elif defined(MODEL_TYPE_ONNX)
#include "inference_helper_tensorrt.h"      // to call SetDlaCore
#define MODEL_NAME  "road-segmentation-adas-0001.onnx"
#define TENSORTYPE  TensorInfo::kTensorTypeFp32
#define INPUT_NAME  "data"
#define INPUT_DIMS  { 1, 512, 896, 3 }
#define IS_NCHW     false
#define IS_RGB      false
#define OUTPUT_NAME "tf.identity"

这里就能看到首先输入的名字是data,输入是1*512*896*3,输出的name是identity。至今为止一切都和onnx对的上

    input_tensor_info.normalize.mean[0] = 0;input_tensor_info.normalize.mean[1] = 0;input_tensor_info.normalize.mean[2] = 0;input_tensor_info.normalize.norm[0] = 1 / 255.f;input_tensor_info.normalize.norm[1] = 1 / 255.f;input_tensor_info.normalize.norm[2] = 1 / 255.f;input_tensor_info_list_.push_back(input_tensor_info);   

这里是做了一个norm


int32_t SemanticSegmentationEngine::Process(const cv::Mat& original_mat, Result& result)
{
#ifndef ENABLE_SEGMENTATIONreturn kRetOk;
#endifif (!inference_helper_) {PRINT_E("Inference helper is not created\n");return kRetErr;}/*** PreProcess ***/const auto& t_pre_process0 = std::chrono::steady_clock::now();InputTensorInfo& input_tensor_info = input_tensor_info_list_[0];/* do resize and color conversion here because some inference engine doesn't support these operations */int32_t crop_x = 0;int32_t crop_y = 0;int32_t crop_w = original_mat.cols;int32_t crop_h = original_mat.rows;cv::Mat img_src = cv::Mat::zeros(input_tensor_info.GetHeight(), input_tensor_info.GetWidth(), CV_8UC3);CommonHelper::CropResizeCvt(original_mat, img_src, crop_x, crop_y, crop_w, crop_h, IS_RGB, CommonHelper::kCropTypeStretch);//CommonHelper::CropResizeCvt(original_mat, img_src, crop_x, crop_y, crop_w, crop_h, IS_RGB, CommonHelper::kCropTypeCut);//CommonHelper::CropResizeCvt(original_mat, img_src, crop_x, crop_y, crop_w, crop_h, IS_RGB, CommonHelper::kCropTypeExpand);

然后就是process了,因为我的cropx和y都是0,而且type是Stretch,所以这里是仅仅只做了一个resize,其他的都没作。

将process打开

因为swap_color是false,所以BGR----》RGB 不会做

最终,因为作者要提速:

    /* Convert normalize parameter to speed up */for (auto& input_tensor_info : input_tensor_info_list) {ConvertNormalizeParameters(input_tensor_info);}

所以又将norm变回去了。

手写predict

import onnxruntime
import cv2
import numpy as np
session = onnxruntime.InferenceSession("workspace/road-segmentation-adas.onnx",providers=["CPUExecutionProvider"])
image= cv2.imread("workspace/imgs/dashcam_00.jpg")
image = cv2.resize(image,(896,512))
image_tensor = image.astype(np.float32)
image_tensor = image_tensor.transpose(2,0,1)[None] 
prob = session.run(["tf.identity"],{"data":image_tensor}
)[0]cv2.imwrite("prob.jpg" , prob[0 , : , : , 0])

cv2.imwrite("prob.jpg" , prob[0 , : , : , 1] *255)

cv2.imwrite("prob.jpg" , prob[0 , : , : , 2] *255)

cv2.imwrite("prob.jpg" , prob[0 , : , : , 3] *255)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/131068.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

5.后端·新建子模块与开发(自动模式)

文章目录 学习资料自动生成模式创建后端三层 学习资料 https://www.bilibili.com/video/BV13g411Y7GS?p11&spm_id_frompageDriver&vd_sourceed09a620bf87401694f763818a31c91e 自动生成模式创建后端三层 首先,运行起来若依的前后端整个项目,…

css画一条渐变的虚线

效果展示 原理&#xff1a;给元素设置一个渐变的背景色&#xff0c;画一条白色的虚线盖住背景&#xff0c;就达到了渐变虚线的效果 代码&#xff1a; <div class"pending-line"></div>.pending-line{width: 101px;border-top: 2px dashed #fff; // do…

豆瓣图书评分数据的可视化分析

导语 豆瓣是一个提供图书、电影、音乐等文化产品的社区平台&#xff0c;用户可以在上面发表自己的评价和评论&#xff0c;形成一个丰富的文化数据库。本文将介绍如何使用爬虫技术获取豆瓣图书的评分数据&#xff0c;并进行可视化分析&#xff0c;探索不同类型、不同年代、不同…

计算机网络第三节物理层

目录 一&#xff0c;第二章 物理层&#xff08;数据通信有关&#xff09; 1.物理层引入的目的 2.物理层如何实现屏蔽 二&#xff0c;物理层引入的数据通信基础 1.通信模型 2.通信模型中的技术术语 三&#xff0c;数据通信的基础知识 1&#xff0c;数据通信模型 2&…

BIO NIO AIO演变

Netty是一个提供异步事件驱动的网络应用框架&#xff0c;用以快速开发高性能、高可靠的网络服务器和客户端程序。Netty简化了网络程序的开发&#xff0c;是很多框架和公司都在使用的技术。 Netty并非横空出世&#xff0c;它是在BIO&#xff0c;NIO&#xff0c;AIO演变中的产物…

一文读懂LCD、OLED、LED屏的区别以及透明液晶屏原理

参考文章科普&#xff5c;一文读懂LCD、LED和OLED 的区别 - 知乎 参考文章透明液晶显示屏的原理&#xff1f; - 知乎 一、LCD LCD是英文Liquid Crystal Display 的简称&#xff0c;指的是液晶显示屏。 主要想介绍下LCD透明屏方案&#xff1a; 所谓LCD透明屏&#xff0c;并…

记录一次对登录接口的性能测试

测试环境 客户端: win10 这里可以用linux,但没用,因为想直观查看结果。 被测环境:linux X86 4核CPU16G内存 被测接口:登录接口,没有做数据驱动。 场景设计 设置线程数19,持续时间5分钟,并用后端监听器监听结果,使用grafana+prometheus监控服务器资源。 测试执行 …

思维导图怎么变成ppt?4个思维导图一键生成ppt的方法

做好的思维导图如何变成一份ppt&#xff1f;本文罗列了4个可行方法&#xff0c;一起来看看吧。 一 直接复制粘贴 这是最简单的方法&#xff0c;虽然这样可能会花费一些时间&#xff0c;但可以确保内容排版和布局与你想要的一致。当然&#xff0c;我们大可使用更高效的方法。…

成绩定级脚本(Python)

成绩评定脚本 写一个成绩评定的python脚本&#xff0c;实现用户输入成绩&#xff0c;由脚本来为成绩评级&#xff1a; #成绩评定脚本.pyscoreinput("please input your score:") if int(score)> 90:print("A") elif int(score)> 80:print("B&…

MATLAB | 绘图复刻(十二) | 桑基图+气泡图

hey 绘图复刻居然已经出到第十二期&#xff0c;破百指日可待hiahiahia&#xff0c;今天来复刻一下 Yu, W., Wang, Z., Yu, X. et al. Kir2.1-mediated membrane potential promotes nutrient acquisition and inflammation through regulation of nutrient transporters. Nat …

Git 基本操作【本地仓库与远程仓库的推送、克隆和拉取】

文章目录 一、Git简介二、Git的下载安装三、Git常规命令四、新建本地仓库五、本地分支操作六、Git远程仓库七、远程仓库克隆、抓取和拉取八、总结九、学习交流 一、Git简介 Git是分布式版本控制系统&#xff08;Distributed Version Control System&#xff0c;简称 DVCS&…

c#动态保留小数位数的数值格式化方法实例----从小数点后非零数字保留两位进行四舍五入

c#动态保留小数位数的数值格式化方法实例----从小数点后非零数字保留两位进行四舍五入 功能介绍代码案例输出结果封装扩展方法控制台调用 其他方法地址 功能介绍 1. 输入的数字是整数&#xff0c;则直接返回整数部分的字符串表示。 2. 如果输入的数字是小数&#xff0c;则执行…

自动驾驶汽车下匝道路径优化控制策略研究

摘要 随着社会不断进步&#xff0c; 经济快速发展&#xff0c; 科学技术也在突飞猛进&#xff0c; 交通行业是典型的领域之一。现阶段的交通发展&#xff37; 实现智能交通系统为目标&#xff0c; 正逐渐从信息化步入智能化&#xff0c;朝着智慧化迈进。近年来&#xff0c;一系…

Jenkins List Git Branches插件 构建选择指定git分支

List Git Branches Parameter | Jenkins pluginAdds ability to choose from git repository revisions or tagshttps://plugins.jenkins.io/list-git-branches-parameter/ 1、安装组件 List Git Branches 2、验证功能 1&#xff09;新建任务 2&#xff09;新增构建参数 3&…

二维码智慧门牌管理系统:创新社会治理与政务服务的新路径

文章目录 前言一、背景二、解决方案三、应用工具四、展望未来 前言 在当今科技迅速发展的时代&#xff0c;各种创新技术不断涌现&#xff0c;其中二维码智慧门牌管理系统引人注目。这个系统以标准地址为核心&#xff0c;整合多种信息资源&#xff0c;推出通用、便捷、高效的应…

NLP(六十九)智能文档问答助手升级

本文在笔者之前研发的大模型智能文档问答项目中&#xff0c;开发更进一步&#xff0c;支持多种类型文档和URL链接&#xff0c;支持多种大模型接入&#xff0c;且使用更方便、高效。 项目介绍 在文章NLP&#xff08;六十一&#xff09;使用Baichuan-13B-Chat模型构建智能文档中…

pandas 筛选数据的 8 个骚操作

日常用Python做数据分析最常用到的就是查询筛选了&#xff0c;按各种条件、各种维度以及组合挑出我们想要的数据&#xff0c;以方便我们分析挖掘。 东哥总结了日常查询和筛选常用的种骚操作&#xff0c;供各位学习参考。本文采用sklearn的boston数据举例介绍。 from sklearn …

《深入分布式追踪:OpenTracing 实践手册》

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f405;&#x1f43e;猫头虎建议程序员必备技术栈一览表&#x1f4d6;&#xff1a; &#x1f6e0;️ 全栈技术 Full Stack: &#x1f4da…

澄海区图书馆《乡村振兴战略下传统村落文化旅游设计》许少辉八一新著

澄海区图书馆《乡村振兴战略下传统村落文化旅游设计》许少辉八一新著

Android Aidl跨进程通讯(四)--接口回调,服务端向客户端发送数据

学更好的别人&#xff0c; 做更好的自己。 ——《微卡智享》 本文长度为3325字&#xff0c;预计阅读9分钟 前言 前几篇介绍了AIDL通讯的基础&#xff0c;进阶和异常捕获&#xff0c;本篇就来看看服务端怎么向客户端来实现发送消息。 实现服务端往客户端发送消息&#xff0c;主要…