问题描述
RuntimeError:input is smaller than kernel(shape_check at mmdet/ops/dcn/src/deform_conv)

前提:在使用mmdetection(v 1.0.0的版本)中的可变形卷积操作时,遇到了这个问题。具体是在MSCOCO test-dev集下跑测试,如果在验证集跑测试的没有出现这个问题。
出现这个问题是在test-dev集的第7311张图片上,我们把图片的大小打出来:

有一张图片的size出现了2,torch.Size([1,256,2,11])
但是可变形卷积是3。这里就出现了上面出现的问题了。
但是在使用的可变形卷积中,已经用了padding=1的操作,按理说不应会出现问题。
所以只能查看源码,看是不是判断出了问题,或者padding=1没有用上?
在官方github的mmcv库中的mmcv/mmcv/ops/csrc/pytorch/deform_conv_cuda.cu下找到了deform_conv_cuda.cu


在使用mmdetection v1.0.0时遇到RuntimeError,原因是输入尺寸小于卷积核尺寸。问题出现在第7311张图片,尽管已应用padding=1。解决方案包括在送入可变形卷积前使用ZeroPad2d或pad()函数预先填充,避免源码中的大小检查错误。注意,ZeroPad2d会改变模型结构,而pad()仅影响计算,不影响模型。修改后能正常在test-dev集上运行。
最低0.47元/天 解锁文章
3272

被折叠的 条评论
为什么被折叠?



