通过引入STN,网络可以直接在任务的损失函数上进行端到端训练,从而自动优化空间变换参数,使得处理复杂视觉任务时表现更佳。STN可以嵌入到现有的深度学习架构中,无缝增强模型的变换不变性和适应性。
# 我们想要在训练之后可视化空间变换器层的输出 # 我们使用STN可视化一批输入图像和相应的变换批次。 def visualize_stn(): with torch.no_grad(): # Get a batch of training data data = next(iter(test_loader))[0].to(device) input_tensor= data.cpu() transformed_input_tensor = model.stn(data)....
关于STN的最棒的事情之一是能够简单地将其插入任何现有的CNN,而且只需很少的修改。 from__future__importprint_functionimporttorchimporttorch.nnasnnimporttorch.nn.functionalasFimporttorch.optimasoptimimporttorchvisionfromtorchvisionimportdatasets, transformsimportmatplotlib.pyplotaspltimportnumpyasnp plt.ion() # 交...
空间变换器网络(简称STN)允许神经网络学习如何在输入图像上执行空间变换,以增强模型的几何不变性。例如,它可以裁剪感兴趣的区域,缩放并校正图像的方向。它可能是一种有用的机制,因为CNN对于旋转和缩放以及更一般的仿射变换并不是不变的。 关于STN的最棒的事情之一是能够简单地将其插入任何现有的CNN,只需很少的修改。