9.2.tensorRT高级(4)封装系列-自动驾驶案例项目self-driving-深度估计

这篇具有很好参考价值的文章主要介绍了9.2.tensorRT高级(4)封装系列-自动驾驶案例项目self-driving-深度估计。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

杜老师推出的 tensorRT从零起步高性能部署 课程,之前有看过一遍,但是没有做笔记,很多东西也忘了。这次重新撸一遍,顺便记记笔记。

本次课程学习 tensorRT 高级-自动驾驶案例项目self-driving-深度估计

课程大纲可看下面的思维导图

9.2.tensorRT高级(4)封装系列-自动驾驶案例项目self-driving-深度估计,tensorRT从零起步高性能部署,模型部署,tensorRT,CUDA,高性能

1. 深度估计

这节我们学习深度估计模型的分析,我们的目的是找到深度估计的 onnx,分析其 onnx 的大致使用逻辑,然后写出最简洁版本的 predict.py,大体可以分为以下三步:

1. 打开深度估计的 onnx,查看其输入与输出

2. 查看代码,找到 onnx 的预处理,分析得到预处理的逻辑

3. 针对获得的信息,编写 predict.py,尝试写出来

我们来观察下其 onnx 模型,如下图所示:

9.2.tensorRT高级(4)封装系列-自动驾驶案例项目self-driving-深度估计,tensorRT从零起步高性能部署,模型部署,tensorRT,CUDA,高性能

图1 onnx模型

从导出的 onnx 模型我们可以知道输入的 1x3x256x512,输出存在 6 个

我们再分析项目中的 image_processor/depth_engine.cpp 代码可以得出具体的预处理所做的工作:(详细分析请参照视频)

1. 输入是 1x3x256x512,input.1

2. 输出是 1x1x256x512,2499 节点

3. normalize.mean = 0.485f,norm = 0.229f

4. y = (x / 255.0 - mean) / norm

5. resize 部分不搞那么复杂,直接 resize

6. 颜色方面,需要 cvtColor → \rightarrow to RGB

我们可以简单的写个预处理程序来验证下,代码如下:

import onnxruntime
import cv2
import numpy as np

session = onnxruntime.InferenceSession("workspace/ldrn_kitti_resnext101_pretrained_data_grad_256x512.onnx", provider_options=["CPUExecutionProvider"])

image = cv2.imread("workspace/imgs/dashcam_00.jpg")
image = cv2.resize(image, (512, 256))
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
image_tensor = (image / 255.0)
mean = [0.485, 0.456, 0.406]
norm = [0.229, 0.224, 0.225]
image_tensor = ((image_tensor - mean) / norm).astype(np.float32)
image_tensor = image_tensor.transpose(2, 0, 1)[None]

prob = session.run(["2499"], {"input.1": image_tensor})[0]

print(prob.shape)

prob = prob[0, 0] * -5 + 255
y = int(prob.shape[0] * 0.18)
prob = prob[y:]

cv2.imwrite("depth.jpg", prob)

输出如下图:

9.2.tensorRT高级(4)封装系列-自动驾驶案例项目self-driving-深度估计,tensorRT从零起步高性能部署,模型部署,tensorRT,CUDA,高性能

图2 预处理验证

可以看到输出符合我们的预期,输出的深度估计图如下所示:

9.2.tensorRT高级(4)封装系列-自动驾驶案例项目self-driving-深度估计,tensorRT从零起步高性能部署,模型部署,tensorRT,CUDA,高性能

图3 深度估计图

另外我们还可以通过 matplotlib 来可视化,代码如下所示:

import onnxruntime
import cv2
import numpy as np
import matplotlib.pyplot as plt

session = onnxruntime.InferenceSession("workspace/ldrn_kitti_resnext101_pretrained_data_grad_256x512.onnx", provider_options=["CPUExecutionProvider"])

image = cv2.imread("workspace/imgs/dashcam_00.jpg")
image = cv2.resize(image, (512, 256))
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
image_tensor = (image / 255.0)
mean = [0.485, 0.456, 0.406]
norm = [0.229, 0.224, 0.225]
image_tensor = ((image_tensor - mean) / norm).astype(np.float32)
image_tensor = image_tensor.transpose(2, 0, 1)[None]

prob = session.run(["2499"], {"input.1": image_tensor})[0]

print(prob.shape)

prob = prob[0, 0]
y = int(prob.shape[0] * 0.18)
prob = prob[y:]

plt.imsave("depth.jpg", prob, cmap='plasma_r')

输出的深度估计图如下所示:

9.2.tensorRT高级(4)封装系列-自动驾驶案例项目self-driving-深度估计,tensorRT从零起步高性能部署,模型部署,tensorRT,CUDA,高性能

图4 深度估计图(matplotlib)

总结

本次课程学习了开源项目中的深度估计案例,主要是对深度估计模型的 onnx 进行了简单分析,并通过对项目代码的分析将预处理部分理清楚,然后通过 onnxruntime 进行了简单验证,并对最终的深度估计结果进行了可视化显示文章来源地址https://www.toymoban.com/news/detail-703547.html

到了这里,关于9.2.tensorRT高级(4)封装系列-自动驾驶案例项目self-driving-深度估计的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 增强学习的实际案例分析:从自动驾驶到智能家居

    增强学习(Reinforcement Learning, RL)是一种人工智能技术,它通过在环境中与其相互作用来学习如何执行某个任务,以最大化一些数量值(如累计回报)。增强学习的核心思想是通过探索和利用来学习,而不是仅仅通过数据来学习。这使得增强学习在处理复杂的、不可预测的环

    2024年01月19日
    浏览(45)
  • GaussDB技术解读系列:运维自动驾驶探索

    近日,在第14届中国数据库技术大会(DTCC2023)的 GaussDB“五高两易”核心技术,给世界一个更优选 择 专场,华为云数据库运维研发总监李东详细解读了GaussDB运维系统自动驾驶探索和实践。 随着企业数字化转型进入深水区,数据库系统越来越复杂,运维团队维护的数据库规模

    2024年02月07日
    浏览(48)
  • 云计算实战应用案例精讲-【自动驾驶】多模态融合智能检测方法及 SLAM 车载实现(论文篇)

    目录 基于多模态融合的人机协同模型与算法研究 感知与识别技术 2.1 手势信息的感知与识别

    2024年02月11日
    浏览(48)
  • 目标检测YOLO实战应用案例100讲-基于改进YOLOv4算法的自动驾驶场景 目标检测

    目录 前言 国内外目标检测算法研究现状  传统目标检测算法的发展现状 

    2024年02月06日
    浏览(53)
  • 自动驾驶算法 -撞前预警论文解读与项目应用

    特斯拉自动驾驶 深度估计,就是获取图像中场景里的每个点到相机的距离信息,这种距离信息组成的图我们称之为深度图,英文叫Depth map 一、backbone提取 代码实现: 二、差异特征提取 代码实现: 三、权重操作标准化 代码实现: 四、网络结构ASPP(空洞卷积) 代码实现 五、

    2024年02月10日
    浏览(38)
  • 自动驾驶TPM技术杂谈 ———— CCRT验收标准(测试项目)

    跟车能力测试方法 前车静止识别与响应  1. 测试场景 —— 测试道路至少为一条车道的长直线,试验车辆驶向前方禁止目标车辆。  2. 测试方法 —— 系统激活后,设定车速由低到高依次进行试验。试验车辆在距离目标物200m 前达到预期车速,并以稳定状态驶向前方静止目标

    2024年02月01日
    浏览(81)
  • 【OpenAI】基于 Gym-CarRacing 的自动驾驶项目 (4)

       猛戳!跟哥们一起玩蛇啊  👉 《一起玩蛇》🐍  ​ 💭 写在前面: 本篇是关于多伦多大学自动驾驶专业项目的博客。GYM-Box2D CarRacing 是一种在 OpenAI Gym 平台上开发和比较强化学习算法的模拟环境。它是流行的 Box2D 物理引擎的一个版本,经过修改以支持模拟汽车在赛道上

    2024年02月08日
    浏览(58)
  • 软考高级系统架构设计师系列案例考点专题六:面向服务架构设计

    SOA概述和发展 SOA的参考架构 SOA主要协议和规范 SOA设计标准和原则 SOA的设计模式 SOA构建和实施 在面向服务的体系结构(SOA)中,服务的概念有了延伸,泛指系统对外提供的功能集。 从应用的角度定义,可以认为SOA是一种应用框架,它着眼于日常的业务应用,并将它们划分为单

    2024年02月05日
    浏览(62)
  • 软考高级系统架构设计师系列案例考点专题四:嵌入式系统

    嵌入式每年必考一题,但是属于选做题,如果不会可以不选。主要考查嵌入式系统的实时性和可靠性以及容错等概念。大概率会考到一些嵌入式领域的陌生技术,如果是完全没有见过的技术,不选即可。 系统可靠性是系统在规定的时间内及规定的环境条件下,完成规定功能的

    2024年02月09日
    浏览(59)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包