Calculate train accuracy of the model in segmentation task

Can somebody help me I don’t know how can I calculate accuracy? For loss I just return loss_value from train_one_epoch() inside engine.py.
I’m following this turotial: TorchVision Object Detection Finetuning Tutorial — PyTorch Tutorials 1.12.1+cu102 documentation

This is my code for training:

def get_transform(train):
        transforms = []
        transforms.append(T.ToTensor())
        #if train:
            #transforms.append(T.RandomHorizontalFlip(0.5))
        return T.Compose(transforms)
    
    def draw_loss(ml):
        plt.figure(figsize=(10,5))
        plt.title("Training Loss")
        #plt.plot(val_losses,label="val")
        plt.plot(ml,label="train")
        plt.xlabel("Epochs")
        plt.ylabel("Loss")
        plt.legend()
        plt.xlim([0,30])
        plt.ylim([0, 1])
        plt.show()
    
    def main():
        # train on the GPU or on the CPU, if a GPU is not available
        device = torch.device('cuda') if torch.cuda.is_available() else torch.device('cpu')
    
        # our dataset has two classes only - background and person
        num_classes = 2
        # use our dataset and defined transformations
        dataset = Moj_Dataset_ArT('Train/ArT', get_transform(train=True))
        dataset_test = Moj_Dataset_ArT('Train/ArT', get_transform(train=False))
    
        # split the dataset in train and test set
        indices = torch.randperm(len(dataset)).tolist()
        dataset = torch.utils.data.Subset(dataset, indices[:-500])
        dataset_test = torch.utils.data.Subset(dataset_test, indices[-500:])
    
        # define training and validation data loaders
        data_loader = torch.utils.data.DataLoader(
            dataset, batch_size=4, shuffle=True, num_workers=4,
            collate_fn=utils.collate_fn)
    
        data_loader_test = torch.utils.data.DataLoader(
            dataset_test, batch_size=1, shuffle=False, num_workers=4,
            collate_fn=utils.collate_fn)
    
        # get the model using our helper function
        model = get_model_instance_segmentation(num_classes)
    
        # move model to the right device
        model.to(device)
    
        # construct an optimizer
        params = [p for p in model.parameters() if p.requires_grad]
        optimizer = torch.optim.SGD(params, lr=0.001,
                                    momentum=0.9, weight_decay=0.0005)
        # and a learning rate scheduler
        lr_scheduler = torch.optim.lr_scheduler.StepLR(optimizer,
                                                       step_size=75,
                                                       gamma=0.5)
    
        # let's train it for 10 epochs
        num_epochs = 15
    
        ml =[] 
        for epoch in range(num_epochs):
            # train for one epoch, printing every 10 iterations
            loss_value = train_one_epoch(model, optimizer, data_loader, device, epoch, print_freq=10)
            ml.append(loss_value)
            
            # update the learning rate
            lr_scheduler.step()
            # evaluate on the test dataset
            #evaluate(model, data_loader_test, device=device)
        print(ml)
        draw_loss(ml)

engine.py

  def train_one_epoch(model, optimizer, data_loader, device, epoch, print_freq):
            model.train()
            metric_logger = utils.MetricLogger(delimiter="  ")
            metric_logger.add_meter('lr', utils.SmoothedValue(window_size=1, fmt='{value:.6f}'))
            header = 'Epoch: [{}]'.format(epoch)
        
            lr_scheduler = None
            if epoch == 0:
                warmup_factor = 1. / 1000
                warmup_iters = min(1000, len(data_loader) - 1)
        
                lr_scheduler = utils.warmup_lr_scheduler(optimizer, warmup_iters, warmup_factor)
        
            for images, targets in metric_logger.log_every(data_loader, print_freq, header):
                images = list(image.to(device) for image in images)
                targets = [{k: v.to(device) for k, v in t.items()} for t in targets]
        
                loss_dict = model(images, targets)
        
                losses = sum(loss for loss in loss_dict.values())
        
                # reduce losses over all GPUs for logging purposes
                loss_dict_reduced = utils.reduce_dict(loss_dict)
                losses_reduced = sum(loss for loss in loss_dict_reduced.values())
        
                loss_value = losses_reduced.item() # loss u rezultatima
        
                if not math.isfinite(loss_value):
                    print("Loss is {}, stopping training".format(loss_value))
                    print(loss_dict_reduced)
                    sys.exit(1)
        
                optimizer.zero_grad()
                losses.backward()
                optimizer.step()
        
                if lr_scheduler is not None:
                    lr_scheduler.step()
        
                metric_logger.update(loss=losses_reduced, **loss_dict_reduced)
                metric_logger.update(lr=optimizer.param_groups[0]["lr"])
        
            return loss_value
            #return metric_logger