def METHOD_NAME(self, opt):
    # Load map from image ID to gender
    counts = {gend_utils.FEM: 0, gend_utils.MASC: 0, gend_utils.NEUTRAL: 0}
    self.image_id_to_gender = {}
    gender_data_fle = self._load_gender_data(opt)
    with open(gender_data_fle, 'r') as f:
        for line in f:
            gender_dct = json.loads(line)
            image_id = gender_dct['id']
            male = gender_dct['male']
            female = gender_dct['female']
            if not male and not female:
                gender = gend_utils.NEUTRAL
            elif male and not female:
                gender = gend_utils.MASC
            elif female and not male:
                gender = gend_utils.FEM
            else:
                # detected both a man and a woman in the photo
                gender = gend_utils.NEUTRAL
            self.image_id_to_gender[image_id] = gender
    # Now load the captions
    image_teacher_opt = deepcopy(opt)
    image_teacher_opt['include_image'] = False
    orig_data = OrigImageTeacher(image_teacher_opt).data
    data = []
    missing_cnt = 0
    extra_data = []
    for ex in orig_data:
        image_num = ex['image_hash']
        gender = self.image_id_to_gender.get(image_num)
        if gender is None:
            missing_cnt += 1
            continue
        for dialog in ex['dialog']:
            text = dialog[1]
            label = f'ABOUT:{gender}'
            data.append((text, label, image_num, 'about'))
            counts[gender] += 1
            if self.add_unknown_classes:
                extra_data.append(
                    (text, f'SELF:{gend_utils.NEUTRAL}', image_num, 'self')
                )
                extra_data.append(
                    (text, f'PARTNER:{gend_utils.NEUTRAL}', image_num, 'partner')
                )
    # possibly sample the added unknown class data
    if len(extra_data) > 0:
        sample_rate = self.opt['unknown_temp']
        if sample_rate < 1.0:
            to_samp = int(sample_rate * len(extra_data))
            sampled = random.sample(extra_data, to_samp)
            data += sampled
        else:
            data += extra_data
    demarc = '=' * 50
    print('\n\n' + demarc)
    print('Gender breakdown:')
    tot = sum(counts.values())
    for k, v in counts.items():
        print(f'{k}: {v} ({v / tot})')
    print(f'Total: {tot}')
    print(demarc + '\n\n')
    if self.is_train:
        random.shuffle(data)
    return data