论文代码中的 bug 们

Image Generation from Layout

  1. Pillow 模块的版本 bug

作者在 requirements.txt 上规定了 Pillow=5.1.0,但是运行代码时会出现导入 bug,具体的报错没有记下来,但把 Pillow 的版本降低就可以解决这一问题,我自己使用了 Pillow=4.3.0 就解决了这个 bug。

  1. 挑食的函数 crop_bbox_batch()

这是一个非常好用的函数,最早使用在论文 Image Generation from Scene Graph 中,作用是根据物体的 bounding box 把物体从图片中抠出来做成 object crop。论文 Specifying Object Attributes and Relations in Interactive Scene Generation 和本篇文章也都使用了这一函数。但当 torch=1.0.0,CUDNN的版本过高时运行这个函数的时候会出现 CUDNN Error 的 bug,具体的 traceback 见下图,解决方法是使用更高版本的 torch (例如1.3.0),或者在较低版本的 CUDNN 上运行。

Traceback of CUDNN error

Learning Layout and Style Reconfigurable Gans for Controllable Image Synthesis

  1. RoIAlign 和 RoIPool 模块

如果想按照论文中的方式使用这2个模块的话,需要运行 python setup.py build develop 来建立 dependencies,而且比较烦的是如果在某个环境中运行了这行代码,你换个环境再运行这行代码就不行了。所以最方便的还是使用 torchvision 里面自带的这2个模块,这样就不用考虑那么多了。比较搞笑的一点是作者在论文中模块名称中是大写的 O,但是 torchvision 里面自带的模块名称中是小写的 o

代码更正:

from torchvision.ops import RoIAlign, RoIPool
ROIAlign = RoIAlign
ROIPool = RoIPool
  1. bool tensor 减法运算的 bug

这个 bug 出现在较高版本的 torch 环境下 (例如1.6.0),错误发生在 rcnn_discriminator.py 的第61行。只需要按照提示把代码运算符改一下就行了。

代码更正:

# bbox_l, bbox_s = bbox[1-s_idx], bbox[s_idx]
# y_l, y_s = y[1-s_idx], y[s_idx]
bbox_l, bbox_s = bbox[~s_idx], bbox[s_idx]
y_l, y_s = y[~s_idx], y[s_idx]
  1. torch.nonzero() 出现 UserWarning

当 torch 版本高于1.5之后,在使用 torch.nonzero() 的时候就需要额外指定一个 argument 也就是 as_tuple。如果选择 as_tuple=True,函数返回的 index 是存储在一个 tuple 里面,其实就跟 numpy.nonzero() 的功能类似,如果选择 as_tuple=False,函数返回的 index 直接是 tensor。论文中在写函数模块 CombineDiscriminator(nn.Module) 的时候使用了这一函数,但没有给出相应的 argument,所以在较高版本的 torch (>=1.5) 下运行时会出现 warning,当然还是会正常运行。

代码更正:

# idx = (label != 0).nonzero().view(-1)
idx = (label != 0).nonzero(as_tuple=False).view(-1)

代码示例:

label = torch.LongTensor(torch.arange(0, 10))
idx_1 = (label != 0).nonzero(as_tuple=True)
idx_2 = (label != 0).nonzero(as_tuple=False)
print(idx_1)
print(idx_2)

输出:

# idx_1
(tensor([1, 2, 3, 4, 5, 6, 7, 8, 9]),)

#idx_2
tensor([[1],
        [2],
        [3],
        [4],
        [5],
        [6],
        [7],
        [8],
        [9]])
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值