擅长:python、mysql、java
<p>它可能适用于单个图像,但不适用于批处理图像的原因是,对于批处理图像,数据集将尝试在批处理中调用<code>torch.stack</code>。这将不起作用,因为尽管通道尺寸可能对齐(灰度为1,颜色为RGB),但图像的高度和宽度尺寸不会正确对齐!这已在上面讨论过</p>
<p>解决此问题的一种方法是找到数据集中任何图像的最大大小。然后,您可以调整每个图像的大小为该大小!正确的方法可能是填充图像,同时保存每个图像的真实大小,以便以后可以对其进行重塑。下面是一个例子:</p>
<p>从数据集返回的对象:</p>
<pre><code>size = [1024, 1024]
return {'image': image,
'size': size}
</code></pre>
<p>使用数据的位置:</p>
<pre><code>image = batch['image']
single_image = image[batch_index, :size[0], :size[1]]
</code></pre>
<p>现在,返回了一批图像,但您可以按原始大小提取它们。如果需要同时通过网络运行整个批处理,您可能不想这样做,但这是值得考虑的</p>