如何将 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 格式? 的相关文章

  • 使用内置显卡,没有NVIDIA显卡,可以使用CUDA和Caffe库吗?

    使用内置显卡 没有 NVIDIA 显卡 可以使用 CUDA 和 Caffe 库吗 我的操作系统是 ubuntu 15 CPU为 Intel i5 4670 3 40GHz 4核 内存为12 0GB 我想开始学习深度学习 CUDA 适用于 N
  • 如何在 CAFFE 的新网络中重复使用同一网络两次

    我有一个预训练的网络 我们称之为N 我想在新网络中使用两次 有人知道如何复制吗 然后我想为每个副本分配不同的学习率 例如 N1是第一个副本N N2是第二个副本N 新网络可能如下所示 N1 gt joint ip N2 gt layer 我知
  • 了解随机起始权重对神经网络性能的影响

    使用 R 和包neuralnet 我尝试对数据进行建模 如下所示 这些是几天内以 10 分钟为间隔的温度读数 上面是 2 天的截图 使用下面的代码 我将神经网络拟合到数据 可能有更简单的方法来对这些精确数据进行建模 但将来数据可能看起来完全
  • Tensorflow - 保存模型

    我有以下代码 在尝试保存模型时出现错误 我可能做错了什么 我该如何解决这个问题 import tensorflow as tf data labels cifar tools read data C Users abc Desktop Te
  • Caffe:如果内存中只能容纳一小部分,我该怎么办?

    我正在尝试训练一个非常大的模型 因此 我只能将非常小的批量大小放入 GPU 内存中 处理小批量的结果非常噪声梯度估计 https stackoverflow com a 33717093 1714410 我该怎么做才能避免这个问题 您可以更
  • word2vec中单词的向量代表什么?

    word2vec https code google com p word2vec 是 Google 的开源工具 它为每个单词提供一个浮点值向量 它们到底代表什么 还有一篇论文关于段落向量 http cs stanford edu quoc
  • 如何训练具有 2D 输出的网络? (蟒蛇,凯拉斯)

    我想训练一个回归网络 其输出是两个坐标 x1 y1 和 x2 y2 我的问题是 如果我想训练网络 我的输出应该分开吗 我的意思是我的输出应该是这样的 x1 y1 x2 y2 或者有没有办法将它们堆叠起来 例如 x1 y1 x2 y2 提前致
  • Tensorflow Inception 多 GPU 训练损失未求和?

    我正在尝试检查多个 GPU 在一台机器上 的 Tensorflow 初始代码 我很困惑 因为据我所知 我们从不同的塔 又名 GPU 中得到了多次损失 但是loss评估的变量似乎只是最后一个塔的变量 而不是所有塔的损失之和 for step
  • Yocto for Nvidia Jetson 由于 GCC 7 而失败 - 无法计算目标文件的后缀

    我正在尝试将 Yocto 与 meta tegra 一起使用 https github com madisongh meta tegra https github com madisongh meta tegra 为 Nvidia Jets
  • 可重用的 Tensorflow 卷积网络

    我想重用来自Tensorflow 专业人士的 MNIST CNN 示例 http www tensorflow org tutorials mnist pros index md 我的图像尺寸为 388px X 191px 只有 2 个输出
  • R中的神经网络包出现大错误

    我正在尝试弄清楚如何使神经网络包发挥作用 我用我创建的数据及其结果 大约 50 行数据和三列 第四列是我想要的结果 它是通过简单的数学执行 如对其他三列求和 得出的 进行了一些测试 到目前为止一切顺利 然后我决定将这个包应用到真实数据上 我
  • Keras 获取中间层的输出

    what my model looks like defining the model archictecture model Sequential 1st conv layer model add Conv2D 32 5 5 activa
  • 如何在 Caffe 的网络中出现多次损失?

    如果我在网络中定义多个损失层 从这些末端到网络的开头是否会发生多个反向传播 我的意思是 他们真的是这样工作的吗 假设我有这样的事情 Layer1 Layer2 Layer n Layer cls1 bottom layer n top cl
  • Keras 中的损失函数和度量有什么区别? [复制]

    这个问题在这里已经有答案了 我不清楚 Keras 中损失函数和指标之间的区别 该文档对我没有帮助 损失函数用于优化您的模型 这是优化器将最小化的函数 指标用于判断模型的性能 这仅供您查看 与优化过程无关
  • 如何在 GTX 560 及更高版本上使用 OpenGL 进行立体 3D?

    我正在使用在 Windows 7 上运行的开源触觉和 3D 图形库 Chai3D 我重写了该库以使用 Nvidia nvision 执行立体 3D 我将 OpenGL 与 GLUT 一起使用 并使用 glutInitDisplayMode
  • 如何反转 dropout 来补偿 dropout 的影响并保持期望值不变?

    我正在学习神经网络中的正则化deeplearning ai课程 在dropout正则化中 教授说 如果应用dropout 计算出的激活值将比不应用dropout时 测试时 更小 因此 我们需要扩展激活以使测试阶段更简单 我理解这个事实 但我
  • 梯度下降有哪些替代方案?

    梯度下降存在局部极小值问题 我们需要运行梯度下降指数次来找到全局最小值 谁能告诉我梯度下降的任何替代方案及其优缺点 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
  • 如何在 Caffe 中从头开始训练 ResNet101 模型?

    我正在使用深度实验室 v2 https bitbucket org aquariusjay deeplab public ver2Caffe 版本 以便进行语义分割 我可以使用 imagenet 模型微调 ResNet101 但无法使用自定
  • 神经网络不能立即重现?

    通过使用反向传播导数 弹性 的前馈神经网络中的随机权重初始化 误差图上的初始位置位于某个随机谷的顶部 该随机谷可能是也可能不是局部最小值 可以使用方法来克服局部最小值 但假设这些方法没有被使用 或者在给定的地形上不能很好地工作 那么神经网络

随机推荐

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

    这个问题在这里已经有答案了 所以我有一个包含球员姓名和技能水平的数据库 它看起来像这样 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 运行推理 如下代码所示 没有任何错误 但是 这不是正确的输