I was going through the code and found one loophole that may destroy the whole purpose of purchasing. Of course, it is very much possible that I am mistaken. In any case, I thought it would be nice to make the @aicrowd fellows aware of this.
for sample in tqdm(unlabelled_dataset): idx = sample["idx"] image = unlabelled_dataset.__getitem__(idx) print(image) # Budgeting & Purchasing Labels if budget > 0: label = unlabelled_dataset.purchase_label(idx) budget -= 1 print(idx) print(label) break
The above snippet is taken from the
purchase_phase function, I added the line to get the image for an
idx. I understand that we cannot make any changes in the
dataset.py file and I have not done any. Here when I print the
image variable, I can see the whole dictionary of respective
id, including the labels. Therefore the logic of the budget gets nullified. I am saying this based on the docstring comment in this function which says this:
You can iterate over both the datasets and access the images without restrictions. However, you can probe the labels of the unlabelled_dataset only until you run out of the label purchasing budget.
With the code that I posted here, I can access to unlabelled dataset exclusively without purchasing any label whatsoever.