神经网络可以被训练识别一个对象,然后在图像中检测该对象的出现,无论其位置和明显大小如何。在PyTorch中执行此操作的一个示例位于 https://towardsdatascience.com/object-detection-and-tracking-in-pytorch-b3cf1a696a98
正如文本所观察到的,
大部分代码处理的是在保持其纵横比的同时,将图像调整为416像素的正方形,并填充溢出的部分。
因此,模型始终处理416像素的图像,无论是在训练阶段还是在实际的对象检测阶段。被检测的对象,仅为图像的一部分,通常会小于416像素,但这没问题,因为模型已经被训练成以尺度不变的方式检测模式。唯一固定的是输入图像的像素尺寸。
我正在研究一个需要反向操作的场景:训练检测固定尺寸的模式,然后在可变尺寸的图像中检测它们。例如,训练检测10像素的正方形模式,然后在可能为500像素或1000像素的正方形图像中寻找它们,不调整图像大小,但确保只需要寻找10像素大小的模式出现。
在PyTorch中,有没有惯用的方法来实现这一点?
回答:
即使你用固定尺寸的图像训练了检测器,你也可以在推理时使用不同尺寸的图像,因为在faster rcnn/yolo架构中一切都是卷积的。另一方面,如果你只关心10×10的边界框检测,你可以轻松地将其定义为你的 anchors
。我建议你使用 detectron2 框架,它是用PyTorch实现的,并且易于配置和修改。