今天用 torchvision 官方提供的maskrcnn 版本是可以运行的.
单独可以跑, 后来合并到我的系统里就不能运行了, 报下面的错误. 搞了2个多小时.
class Compose(object):
def __init__(self, transforms):
self.transforms = transforms
def __call__(self, image, target):
for t in self.transforms:
image, target = t(image, target) # 在这里报错
return image, target
报错内容如下
call takes 2 positional arguments but 3 were given
后来经过不断的跟踪和排查发现, 原来是.
Compose 这个类在transforms.py文件中又定义了一次.
我还以为这个类和 torchvision.transforms 中定义的Compose是一样的.
于是在我的代码里, 就把transforms的引用改成了 torchvision.transforms
结果就出错了,
两个文件中的Compose 类是不一样的
torchvision.transforms中的Compose类 call 方法的参数是2个, 而示例中重新写的Compose 的 call 方法的参数是1个. 所以就提示上面的错误…
排除方法也很简单, 将
import torchvision.transforms
改成了
import maskrcnn.transforms
就可以了.
maskrcnn在我这边是文件夹名.模块名