3D动作或行为识别模型需要完成一个动作或者行为的相关的一定数量的连续画面作为输入来进行推理,从视频中抽取的帧一般转换后都是RGB格式的,连续多帧数据的顺序排列从通道看就是RGBRGBRGB...这样的排列顺序,但是有的3D动作或行为识别模型要求输入的数据格式是RRR...GGG...BBB...这样的通道顺序,那怎么把前面的格式转换成后面的格式呢?
这里举例是基于把模型优化转换成TensorRT engine从而使用TensorRT来调用模型,TensorRT调用模型时存放模型输入数据的input buffer是线性存放数据的,首先要搞清楚线性存放一张RGB图片时的数据组织顺序,这点没弄明白后面的就看不懂。如果把图片的原始三通道数据看成是一个WxHxC的三维数组data的话,在input buffer里线性存放的顺序是:
data[0][0][0]、data[0][0][1]、data[0][0][2]、...、 data[0][W-1][0]、data[0][W-1][1]、data[0][W-1][2]
data[1][0][0]、data[1][0][1]、data[1][0][2]、...、data[1][W-1][0]、data[1][W-1][1]、data[1][W-1][2]
...
data[H-1][0][0]、data[H-1][0][1]、data[H-1][0][2]、...、data[H-1][W-1][0]、data[H-1][W-1][1]、data[H-1][W-1][2]
对于依次连续存放在input buffer多张RGB图片要转换成RRR...GGG...BBB...这样的存放格式比较抽象,转换对应关系你可能有点蒙,我们先看比较简单的,假设只有两张RGB图片,其数据对应的三维数组为data1和data2,如果按RRGGBB格式线性存放到input buffer里,那么顺序应该是:
data1[0][0][0]、data1[0][1][0]、data1[0][2][0]、...、 data1[0][W-1][0]
...
data1[H-1][0][0]、data1[H-1][1][0]、data1[H-1][

这篇博客详细介绍了如何将3D动作识别模型的RGB输入数据转换为RRR...GGG...BBB...格式,特别是针对TensorRT优化后的模型。内容包括理解线性存储顺序,提供CUDA核函数实现转换,并给出不使用核函数的简单转换示例代码。此外,还讨论了处理BGR格式图片的情况。
最低0.47元/天 解锁文章
613

被折叠的 条评论
为什么被折叠?



