# Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from __future__ import print_function import numpy as np import os from .common_dataset import CommonDataset class ImageNetDataset(CommonDataset): def __init__( self, image_root, cls_label_path, transform_ops=None, delimiter=None): super(ImageNetDataset, self).__init__(image_root, cls_label_path, transform_ops) self.delimiter = delimiter if delimiter is not None else " " def _load_anno(self, seed=None): assert os.path.exists(self._cls_path) assert os.path.exists(self._img_root) self.images = [] self.labels = [] with open(self._cls_path) as fd: lines = fd.readlines() if seed is not None: np.random.RandomState(seed).shuffle(lines) for l in lines: l = l.strip().split(self.delimiter) self.images.append(os.path.join(self._img_root, l[0])) self.labels.append(np.int64(l[1])) assert os.path.exists(self.images[-1])