将输入层重塑为单通道和多图像

Reshaping the input layer to a single channel and multiple images

在我找到的一些参考代码中,有:

net_->input_blobs()[0]->Reshape(1, 3, height, width);

我的 prototxt 有:

input_shape {
    dim: 1
    dim: 3
    dim: 260
    dim: 347
}

我被间接告知所提供的模型已经针对灰度进行了调整(我们有颜色和灰度 prototxt),当前使用的 Python 代码使用灰度输入具有三个相同的通道。

现在我想在对 net_->Forward(); 的一次调用中同时处理或单独处理 4 张图像,并将这四张图像作为单通道灰度传递。所以,首先,选择一个频道:

net_->input_blobs()[0]->Reshape(1, 1, height, width);

改变频道数量有什么影响?我所有的图层如何反应?它会工作吗?如果可行,单通道网络会更快吗?

二、选择四张图片:

net_->input_blobs()[0]->Reshape(4, 3, height, width);

感觉不行,应该考虑增加input_blobs的数量,但是怎么办呢?或者正确的做法是什么?

  1. 使用单个通道而不是相同的三个通道应该更快(更少的乘加运算)。由于这是在最精细的规模下完成的,因此这甚至可能会对 运行 时间产生显着影响。

  2. 将 4 张图像作为单个批处理通常比将每张图像作为一个批次单独处理一张图像要快(由于内部优化了计算以处理批次)。

底线:您应该 运行 获得更好的时间 运行ning 一批四张图像。如果输入是三个相同的通道 - 最好将模型修改为仅使用一个通道。