File size: 1,622 Bytes
032e687
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import os
from mmengine.dist import master_only
from vlm.datasets.evaluation.base_eval_dataset import BaseEvalDataset

class LLaVAPretrainDataset(BaseEvalDataset):
    METAINFO: dict = dict(name='llava_pretrain')
    def __init__(
            self,
            image_folder,
            split=8,
            rank=0,
    ):
        super().__init__()
        self.image_files = os.listdir(image_folder)
        # self.image_paths = [os.path.join(image_folder, file_name) for file_name in self.image_files]
        self.image_paths = self._get_image_paths(image_folder)

        assert rank < split
        size = len(self.image_paths) // split + 1
        i_s, i_e = size * rank, min(size * (rank + 1), len(self.image_paths))
        self.image_paths = self.image_paths[i_s: i_e]

    def _get_image_paths(self, folder_path):
        ret = []
        sub_files = os.listdir(folder_path)
        for file_name in sub_files:
            if '.png' not in file_name and '.jpg' not in file_name:
                # a folder
                sub_folder_files = self._get_image_paths(os.path.join(folder_path, file_name))
                ret.extend(sub_folder_files)
            else:
                ret.append(os.path.join(folder_path, file_name))
        return ret

    def __len__(self):
        return len(self.image_paths)

    def __getitem__(self, idx):
        data_dict = {'image_path': self.image_paths[idx]}
        data_dict.update({'text_prompts': self.image_paths[idx], 'pixel_values': None, 'img_id': str(idx)})
        return data_dict

    @master_only
    def evaluate(self, **kwargs):
        return {'Acc': 0}