

To preprocess the data we need to encode the images and questions using the [ViltProcessor]. The processor will use 
the [BertTokenizerFast] to tokenize the text and create input_ids, attention_mask and token_type_ids for the text data. 
As for images, the processor will leverage [ViltImageProcessor] to resize and normalize the image, and create pixel_values and pixel_mask.
All these preprocessing steps are done under the hood, we only need to call the processor. However, we still need to 
prepare the target labels. In this representation, each element corresponds to a possible answer (label). For correct answers, the element holds 
their respective score (weight), while the remaining elements are set to zero.
The following function applies the processor to the images and questions and formats the labels as described above: