TypeError: __call__() 需要 2 个位置参数,但给出了 3 个。通过迁移学习使用 FastRCNN 训练 Raccoon 预测模型

1 image-processing computer-vision pytorch

 from torchvision.models.detection.faster_rcnn import FastRCNNPredictor
 from engine import train_one_epoch, evaluate
 import utils
 import torchvision.transforms as T

 num_epochs = 10
 for epoch in range(num_epochs):
    train_one_epoch(model, optimizer, data_loader, device, epoch, print_freq=10)
    lr_scheduler.step()
    evaluate(model, data_loader_test, device=device)
Run Code Online (Sandbox Code Playgroud)

我使用的代码与此链接中提供的构建浣熊模型相同,但我的代码不起作用。

这是我在 () 中收到 TypeError Traceback(最近一次调用最后一次)的错误消息

  2 for epoch in range(num_epochs):

  3    # train for one epoch, printing every 10 iterations

  4   ----> train_one_epoch(model, optimizer, data_loader, device, epoch, print_freq=10)

  5     # update the learning rate

  6   lr_scheduler.step()
Run Code Online (Sandbox Code Playgroud)

7帧

getitem (self, idx)中

 29         target["iscrowd"] = iscrowd

 30         if self.transforms is not None:

 31        ---> img, target = self.transforms(img, target)

 32         return img, target
 33 
Run Code Online (Sandbox Code Playgroud)

类型错误:call () 需要 2 个位置参数,但给出了 3 个

bw4*_*4sz 5

上面的答案是错误的,我注意到之前不小心点了赞。您使用了错误的 Compose,请注意它说

https://pytorch.org/tutorials/intermediate/torchvision_tutorial.html#putting-everything-together

“在引用/检测/中,我们有许多辅助函数来简化训练和评估检测模型。在这里,我们将使用引用/检测/engine.py、引用/检测/utils.py和引用/检测/transforms.py .只需将它们复制到您的文件夹并在此处使用它们即可。”

有帮助脚本。他们对 compose 和 Flip 方法进行子类化

https://github.com/pytorch/vision/blob/6315358dd06e3a2bcbe9c1e8cdaa10898ac2b308/references/detection/transforms.py#L17

在注意到这一点之前我也做了同样的事情。不要使用 torchvision.transforms 中的 compose 方法,否则你会得到上面的错误。下载他们的模块并加载它。