What is the meaning of **?

I am currently working on wheat detection challenge and was going through a notebook. And read something that am not getting

class WheatTestDataset(Dataset):

    def __init__(self, dataframe, image_dir, transforms=None):
        super().__init__()

        self.image_ids = dataframe['image_id'].unique()
        self.df = dataframe
        self.image_dir = image_dir
        self.transforms = transforms

    def __getitem__(self, index: int):

        image_id = self.image_ids[index]
        records = self.df[self.df['image_id'] == image_id]

        image = cv2.imread(f'{self.image_dir}/{image_id}.jpg', cv2.IMREAD_COLOR)
        image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB).astype(np.float32)
        image /= 255.0

        if self.transforms:
            sample = {
                'image': image,
            }
            sample = self.transforms(**sample)
            image = sample['image']

        return image, image_id

    def __len__(self) -> int:
        return self.image_ids.shape[0]

In the below line why the author had written ** ?

sample = self.transforms(**sample)

The transform function passed to the dataset is:

def get_test_transform():
    return A.Compose([
          ToTensorV2(p=1.0)
    ])

@ptrblck and others please help.

You can pass arbitrary numbers of arguments to a function using **kwargs as explained here.