jetson-inference icon indicating copy to clipboard operation
jetson-inference copied to clipboard

Training segmentation error : __call__() missing 1 required positional argument: 'target'

Open Xionfire opened this issue 2 years ago • 1 comments

Hi, I try to train a FCN-Resnet50 with cityscapes gtFine datasets but i encounter this error and i don't know any way to solve it, do you have idea to solve it ?

(fcnresnet-env) manip@ijl-expe-209:~/pytorch-segmentation$ python3 train.py /home/manip/pytorch-segmentation/cityscapes --model-dir=models/cityscapes_fine --aux-loss --workers=0
pytorch-segmentation/datasets/__init__.py
Not using distributed mode
Namespace(arch='fcn_resnet50', aux_loss=True, batch_size=8, data='/home/manip/pytorch-segmentation/cityscapes', dataset='cityscapes', device='cuda', dist_url='env://', distributed=False, epochs=30, lr=0.01, model_dir='models/cityscapes_fine', momentum=0.9, pretrained=False, print_freq=10, resolution=320, resume='', test_only=False, weight_decay=0.0001, workers=0, world_size=1)
=> training with dataset: 'cityscapes' (train=2975, val=500)
=> training with resolution: 320x320, 21 classes
=> training with model: fcn_resnet50
Traceback (most recent call last):
  File "train.py", line 332, in <module>
    main(args)
  File "train.py", line 293, in main
    train_one_epoch(model, criterion, optimizer, data_loader, lr_scheduler, device, epoch, args.print_freq)
  File "train.py", line 184, in train_one_epoch
    for image, target in metric_logger.log_every(data_loader, print_freq, header):
  File "/home/manip/pytorch-segmentation/utils.py", line 186, in log_every
    for obj in iterable:
  File "/home/manip/fcnresnet-env/lib/python3.8/site-packages/torch/utils/data/dataloader.py", line 530, in __next__
    data = self._next_data()
  File "/home/manip/fcnresnet-env/lib/python3.8/site-packages/torch/utils/data/dataloader.py", line 570, in _next_data
    data = self._dataset_fetcher.fetch(index)  # may raise StopIteration
  File "/home/manip/fcnresnet-env/lib/python3.8/site-packages/torch/utils/data/_utils/fetch.py", line 49, in fetch
    data = [self.dataset[idx] for idx in possibly_batched_index]
  File "/home/manip/fcnresnet-env/lib/python3.8/site-packages/torch/utils/data/_utils/fetch.py", line 49, in <listcomp>
    data = [self.dataset[idx] for idx in possibly_batched_index]
  File "/home/manip/fcnresnet-env/lib/python3.8/site-packages/torchvision/datasets/cityscapes.py", line 197, in __getitem__
    image, target = self.transforms(image, target)
  File "/home/manip/fcnresnet-env/lib/python3.8/site-packages/torchvision/datasets/vision.py", line 95, in __call__
    input = self.transform(input)
TypeError: __call__() missing 1 required positional argument: 'target'

Xionfire avatar Jun 22 '22 06:06 Xionfire

Hi @Xionfire, it's been awhile since I trained these models and I recall using gtCoarse and needing to remap the class ID masks down to 21 classes.

This tutorial does some segmentation training though: https://www.highvoltagecode.com/post/edge-ai-semantic-segmentation-on-nvidia-jetson

dusty-nv avatar Jun 22 '22 16:06 dusty-nv

@Xionfire Hello, did you manage to solve this issue please?

ichraf avatar Apr 07 '23 10:04 ichraf