gpt4 book ai didi

c++ - 有没有办法在 Halide Generator 中将两个输入图像堆叠到一个 4 维缓冲区中?

转载 作者:行者123 更新时间:2023-11-28 01:17:40 25 4
gpt4 key购买 nike

我的生成器管道中有两个输入图像 (rgb)。每个都经过自定义裁剪并调整为 NxNx3 图像。发电机的输出Output<Buffer<float>> {"batch", 4}; // (N, N, 3 ,2)我设置

batch(x, y, c, batch_size) = cast<float>(0); 
batch(x, y, c, 0) = image_1_resized(x, y, c);
batch(x, y, c, 1) = image_2_resized(x, y, c);

但是当我去编译它时它会出现段错误(我无法检索有用的调试信息)。如果我尝试这样做:

clamped_image_1 = BoundaryConditions(image_1_resized, 0 ,{{0, N}, {0, N});

batch(x, y, c, batch_size) = cast<float>(0);
batch(x, y, c, 0) = image_1_resized(x, y, c);
batch(x, y, c, 1) = clamped_image_1(x + 10, y, c);

它编译并运行良好。我很想知道,如果使用 Halide 可以实现我想要实现的目标?

最佳答案

与其将其作为多阶段函数来执行,不如尝试使用 select 在单个阶段中填充不同的 channel 。

batch(x, y, c, n) = select(n==0, image_1_resized(x, y, c), image_2_resized(x, y, c));

然后你可以通过绑定(bind)和展开 n 来安排它,halide 将删除分支:

batch.bound(n, 0, 2).unroll(n);

关于c++ - 有没有办法在 Halide Generator 中将两个输入图像堆叠到一个 4 维缓冲区中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58106594/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com