如何将 cv::MAT 转换为 NHCW 格式?

2023-12-01

在User Guide.html中,tensorRT的输入/输出需要使用NCHW格式。
什么是 NCHW 格式?
如何将 cv::MAT 转换为 NCHW 格式?

我使用 TensorRT 运行推理,如下代码所示。
没有任何错误。但是,这不是正确的输出结果。

int batchSize = 1;
int size_of_single_input = 256 * 256 * 3 * sizeof(float);
int size_of_single_output = 100 * 1 * 1 * sizeof(float); 

IBuilder* builder = createInferBuilder(gLogger);

INetworkDefinition* network = builder->createNetwork();

CaffeParser parser;
auto blob_name_to_tensor = parser.parse(“deploy.prototxt”,
                                        "sample.caffemodel",
                                        *network,
                                        DataType::kFLOAT);

network->markOutput(*blob_name_to_tensor->find("prob"));

builder->setMaxBatchSize(1);
builder->setMaxWorkspaceSize(1 << 30); 
ICudaEngine* engine = builder->buildCudaEngine(*network);

IExecutionContext *context = engine->createExecutionContext();

int inputIndex = engine->getBindingIndex(INPUT_LAYER_NAME),
int outputIndex = engine->getBindingIndex(OUTPUT_LAYER_NAME);

cv::Mat input;
input = imread("./sample.jpg");
cvtColor(input, input, CV_BGR2RGB);
cv::resize(input, input, cv::Size(256, 256));

float output[OUTPUTSIZE];

void* buffers = malloc(engine->getNbBindings() * sizeof(void*));
cudaMalloc(&buffers[inputIndex], batchSize * size_of_single_input);
cudaMalloc(&buffers[outputIndex], batchSize * size_of_single_output);

cudaStream_t stream;
cudaStreamCreate(&stream);

cudaMemcpyAsync(buffers[inputIndex], (float *)input, 
                batchSize * size_of_single_input, 
                cudaMemcpyHostToDevice, stream);

context.enqueue(batchSize, buffers, stream, nullptr);


cudaMemcpyAsync(output, buffers[outputIndex], 
                batchSize * size_of_single_output, 
                cudaMemcpyDeviceToHost, stream));

cudaStreamSynchronize(stream);

NCHW:对于 3 通道图像(例如 BGR),首先存储 B 通道的像素,然后是 G 通道,最后是 R 通道。

NHWC:对于每个像素,其 3 种颜色按 BGR 顺序存储在一起。

TensorRT 要求您的图像数据采用 NCHW 顺序。但 OpenCV 是按照 NHWC 顺序读取的。您可以编写一个简单的函数来将数据从 NHWC 读取到缓冲区,并按 NCHW 顺序存储它们。将此缓冲区复制到设备内存并传递给 TensorRT。

您可以在以下位置找到此操作的示例samples/sampleFasterRCNN/sampleFasterRCNN.cppTensorRT 安装中的文件。它读取同样采用 NHWC 顺序的 PPM 文件,然后将其转换为 NCHW 顺序并减去平均值,这两个步骤都是一步完成的。您可以修改它以适合您的目的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将 cv::MAT 转换为 NHCW 格式? 的相关文章

  • 如何组织循环神经网络?

    我想模拟以下内容 y t F x t 1 x t 2 x t k 或者说一个函数 其当前输出取决于最后 k 个输入 1 我知道一种方法是使用一个经典的神经网络 其中 k 个输入为 x t 1 x t 2 x t k 对于每个y t 并训练它
  • 梯度下降有哪些替代方案?

    梯度下降存在局部极小值问题 我们需要运行梯度下降指数次来找到全局最小值 谁能告诉我梯度下降的任何替代方案及其优缺点 Thanks See 我的硕士论文 https arxiv org pdf 1707 09725 pdf page 96对于
  • 为神经网络打乱两个 numpy 数组

    我有两个 numpy 数组用于输入数据 X 和输出数据 y X np array 2 3 sample 1 x 16 4 dtype float sample 2 x y np array 1 0 sample 1 y 0 1 dtype
  • 如何使用 pybrain 黑盒优化训练神经网络来处理监督数据集?

    我玩了一下 pybrain 了解如何生成具有自定义架构的神经网络 并使用反向传播算法将它们训练为监督数据集 然而 我对优化算法以及任务 学习代理和环境的概念感到困惑 例如 我将如何实现一个神经网络 例如 1 以使用 pybrain 遗传算法
  • 如何将神经网络的输出限制在特定范围内?

    我正在使用 Keras 进行回归任务 并希望将输出限制在一个范围内 例如 1 到 10 之间 有没有办法保证这一点 像这样编写自定义激活函数 a simple custom activation from keras import back
  • 如何使用 Tensorflow-GPU 和 Keras 修复低易失性 GPU-Util?

    我有一台 4 GPU 机器 在上面运行带有 Keras 的 Tensorflow GPU 我的一些分类问题需要几个小时才能完成 nvidia smi returns Volatile GPU Util which never exceeds
  • OpenCL 内核在 Nvidia GPU 上每个线程使用多少寄存器?

    我的第一个问题是如何获取 Nvidia GPU 上 OpenCL 内核代码的寄存器使用信息 因为 nvcc 编译器给出了相同的使用信息nvcc ptxas options vCUDA 内核代码的标志 我还从 AMD GPU for Open
  • 使用反向传播算法实现感知器

    我正在尝试实现一个具有反向传播的两层感知器来解决奇偶校验问题 该网络有 4 个二进制输入 第一层有 4 个隐藏单元 第二层有 1 个输出 我在用this http page mi fu berlin de rojas neural chap
  • 无法使用tensorflow 2.0.0 beta1保存模型

    我已尝试了文档中描述的所有选项 但没有一个允许我将模型保存在tensorflow 2 0 0 beta1中 我还尝试升级到 也不稳定 TF2 RC 但这甚至破坏了我在测试版中工作的代码 所以我很快就回滚到测试版 请参阅下面的最小复制代码 我
  • 为什么平均百分比误差(mape)非常高?

    我已获得代码掌握机器学习 https machinelearningmastery com time series prediction lstm recurrent neural networks python keras 我修改了mod
  • 如何使用 Encog 标准化 CSV 文件?

    我需要规范化 CSV 文件 我关注了 Jeff Heaton 写的这篇文章 http www heatonresearch com content how does encog 30 normalize 这是我的 一些 代码 File so
  • 使用张量流导出神经网络的权重

    我使用张量流工具编写了神经网络 一切正常 现在我想导出神经网络的最终权重以制定单一的预测方法 我怎样才能做到这一点 您需要在训练结束时使用以下命令保存模型tf train Saver https www tensorflow org ver
  • 如何将体积补丁存储到 HDF5 中?

    我有一个尺寸的体积数据256x128x256 由于内存有限 我无法将整个数据直接输入到 CAFFE 因此 我会随机选择n sample补丁50x50x50从体积数据中提取并将其存储到 HDF5 中 我成功地从原始数据及其标签中随机提取了补丁
  • 如何在 keras 模型中使用张量流度量函数?

    使用Python 3 5 2张量流RC 1 1 我正在尝试在 keras 中使用张量流度量函数 所需的功能接口似乎是相同的 但调用 import pandas import numpy import tensorflow contrib k
  • 为什么反向传播神经网络中必须使用非线性激活函数? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我一直在阅读一些有关神经网络的内容 并且了解单层神经网络的一般原理 我理解需要额外的层 但为什么要使用非线性激活函数 这个问题后面跟着这个
  • 支持 Nvidia CUDA 工具包 9.2

    Tensorflow gpu 绑定到 Nvidia CUDA Toolkit 的特定版本的原因是什么 当前版本似乎专门寻找 9 0 并且不适用于任何更高版本 例如 我安装了最新的 Toolkit 9 2 并将其添加到路径中 但 Tensor
  • AssertionError: d['w'] | 的值错误深度学习专业化

    我正在完成深度学习专业的第一门课程 其中第一个编程任务是从头开始构建逻辑回归模型 由于这是我第一次从头开始构建模型 而且我花了一些时间来消化高等数学 所以我有很多错误 其中 我发现了一个我完全无法修复并且无法理解的问题 这是一个断言错误 说
  • 根据caffe中的“badness”缩放损失值

    我想根据训练期间 当前预测 与 正确标签 的接近 远近来缩放每个图像的损失值 例如 如果正确的标签是 猫 而网络认为它是 狗 那么惩罚 损失 应该小于网络认为它是 汽车 的情况 我正在做的方式如下 1 我定义了标签之间距离的矩阵 2 将该矩
  • 如何在Python中导入caffe模块?

    我在 Windows 发布版 x64 上构建了 caffe cpp 的 dll 我将扩展名 dll 更改为 pyd 并尝试将其导入到 python 中 import caffe File caffe master python caffe
  • 图书馆神经实验室培训纽夫

    我对 python 和 Neurolab 的使用还很陌生 我在前馈神经网络的训练方面遇到了问题 我已经构建了如下网络 net nl net newff 1 1 64 60 1 net init testerr net train Input

随机推荐

  • 转置查询结果集[重复]

    这个问题在这里已经有答案了 所以我有一个包含球员姓名和技能水平的数据库 它看起来像这样 Id Name Level 1 Peter 24 2 Andy 23 24 John 1 列表中等级最高的第一个玩家是最强的 最后一个是最弱的 我需要将
  • 在 PHP 中将对象属性传递到闭包中

    我试图将对象属性传递到闭包中 位于该对象的方法内 如下所示 class Entity extends ControllerBase private view private events public function print tid
  • ZenTest 自动测试不运行测试

    我有过之前的自动测试问题我通过从 ZenTest 4 1 4 降级到 4 1 3 解决了这个问题 ruby v ruby 1 8 7 2008 08 11 patchlevel 72 universal darwin10 0 rails v
  • 绘制圆的一部分

    对于 iPhone 应用程序 我想画一个圆圈 这只是填充 x 百分比 像这样的事情 我在计算半径 度数或弧度时没有任何问题 这没问题 画圆也已经完成了 但是我如何让iPhone SDK来绘制填充的部分呢 我可以画一个同样大小的矩形 但不能画
  • Google 云存储 - JAVA REST API - 获取签名不匹配

    我正在使用 jersey client 进行 REST Call 我收到 SignatureDoesNotMatch 响应错误 我试图使用 GET Service 列出 Bucket 名称 还尝试使用 GET Bucket 方法列出 Buc
  • 在 ActionBar 上添加阴影

    我试图在 ActionBar 的标题下添加阴影 我试过把属性
  • 如何使用 OpenTok 选择音频输出

    我正在构建一个简单的WebRTC应用程序与OpenTok 我需要能够选择摄像头 音频输入和音频输出 目前看来这并不容易实现 See opentok 硬件设置 https github com opentok opentok hardware
  • C#中通过代码设置列表框项的字体和颜色

    我正忙于一个自定义列表框 我将其用作 C 中的寄存器读取器 现在我想在确定的项目中设置一个确定的项目 其字体和颜色与其他项目不同 我检查了这个问题根据答案我编写了以下代码 private void myListBox DrawItem ob
  • 如何只读取英文字符

    我正在阅读一个有时包含中文和英文以外语言字符的文件 如何编写一个只读取英文单词 字母的正则表达式 难道只是 a zA Z 如果我执行上述操作 那么像 e t 这样的词仍然会被选中 但我不希望这样 t match a zA Z gt nil
  • 搜索栏,将路径颜色从黄色更改为白色

    我有两个问题 1 如何将搜索栏 路径 的颜色从黄色 默认颜色 更改为白色 我的意思是 当我滑动拇指时 它会将穿过的线从灰色变为黄色 我希望轨道 线路保持灰色或白色 基本上 我只想移动拇指 而搜索栏中没有颜色变化 2 如何将搜索栏的拇指从矩形
  • Valgrind 检测到仍然存在泄漏

    本块中提到的所有函数都是库函数 我怎样才能纠正这个内存泄漏 它列在 仍然可达 类别 还有 4 个 非常相似 但大小不同 630 bytes in 1 blocks are still reachable in loss record 5 o
  • 不使用 libSystem macOS 链接目标文件

    我正在为 x86 64 上的 macOS 编写一个编译器 但是当我将目标文件链接在一起时 ld says ld dynamic main executables must link with libSystem dylib for infe
  • 为什么只有部分设备会收到推送通知

    我设置了一个推送通知服务 根据 RSS 源向客户端发送通知 我有一项服务每分钟运行一次 以查看是否有新帖子添加到提要中 如果是这样 该服务将向所有客户端发送通知 然而 一些人一直抱怨说他们没有收到任何推送通知 这是我用来发送消息的函数 fu
  • 多次克隆 NumPy 数组

    我将一张图片加载到 numpy 数组中 需要将其图片设置为 2 个不同的阈值 import numpy as np import cv2 cap cv2 Videocapture 0 pic cap read pic1 pic pic2 p
  • 受限 CRTP 过早拒绝

    我正在尝试实现一个从基模板继承的派生类 并将派生类作为其模板参数 希望下面的示例能够澄清问题 template
  • 如何在 Windows 8 中重复使用在 Mac 上创建的软链接

    我在 MacBook Pro 中创建的 1000 张图像说 我的软链接很少 我正在 iOS 应用程序中使用它们 现在我正在 Windows 8 手机应用程序中移植相同的应用程序 因此我想在 Windows Phone 8 应用程序中重用相同
  • Java 中使用派生类型作为参数的方法重载

    假设我有现有的代码 我想扩展它 但又想尽可能避免更改它 这段代码周围有一个接收某种类型的方法 Engine method Base b 现在 我想扩展这个功能 因此 我将 Base 扩展为一个名为 Derived 的类型 它包含我需要的更多
  • 如何在 angular2 中应用主题?

    我需要为我在 angular2 中开发的 Web 应用程序提供两个主题 红色 蓝色 当我更改主题时 所有组件都应该反映它吗 在 Angular2 中应用主题的最佳实践是什么 您可以使用文件代币从 angular platform b row
  • JDBCPreparedStatement导致MySQL语法错误

    我收到错误 您的 SQL 语法有错误 请检查与您的 MySQL 服务器版本对应的手册 了解在第 1 行 orderr 附近使用的正确语法 所以我认为错误是我使用了两个 但在我的代码中我没有使用任何 注意该表实际上被命名为 order pub
  • 如何将 cv::MAT 转换为 NHCW 格式?

    在User Guide html中 tensorRT的输入 输出需要使用NCHW格式 什么是 NCHW 格式 如何将 cv MAT 转换为 NCHW 格式 我使用 TensorRT 运行推理 如下代码所示 没有任何错误 但是 这不是正确的输