text: # import os
  # import h5py
  # from functools import reduce
  
  # import torch.utils.data as data
  # from ..pose import generateSampleBox
  # from opt import opt
  
  
  # class Mscoco(data.Dataset):
  #     def __init__(self, train=True, sigma=1,
  #                  scale_factor=0.25, rot_factor=30, label_type='Gaussian'):
  #         self.img_folder = '../data/'    # root image folders
  #         self.is_train = train           # training set or test set
  #         self.inputResH = 320
  #         self.inputResW = 256
  #         self.outputResH = 80
  #         self.outputResW = 64
  #         self.sigma = sigma
  #         self.scale_factor = (0.2, 0.3)
  #         self.rot_factor = rot_factor
  #         self.label_type = label_type
  
  #         self.nJoints_coco = 17
  #         self.nJoints_mpii = 16
  #         self.nJoints = 33
  
  #         self.accIdxs = (1, 2, 3, 4, 5, 6, 7, 8,             # COCO
  #                         9, 10, 11, 12, 13, 14, 15, 16, 17,
  #                         18, 19, 20, 21, 22, 23,             # MPII
  #                         28, 29, 32, 33)
  
  #         self.flipRef = ((2, 3), (4, 5), (6, 7),             # COCO
  #                         (8, 9), (10, 11), (12, 13),
  #                         (14, 15), (16, 17),
  #                         (18, 23), (19, 22), (20, 21),       # MPII
  #                         (28, 33), (29, 32), (30, 31))
  
  #         '''
  #         Create train/val split
  #         '''
  #         # COCO
  #         with h5py.File('../data/coco/annot_clean.h5', 'r') as annot:
  #             # train
  #             self.imgname_coco_train = annot['imgname'][:-5887]
  #             self.bndbox_coco_train = annot['bndbox'][:-5887]
  #             self.part_coco_train = annot['part'][:-5887]
  #             # val
  #             self.imgname_coco_val = annot['imgname'][-5887:]
  #             self.bndbox_coco_val = annot['bndbox'][-5887:]
  #             self.part_coco_val = annot['part'][-5887:]
  #         # MPII
  #         with h5py.File('../data/mpii/annot_mpii.h5', 'r') as annot:
  #             # train
  #             self.imgname_mpii_train = annot['imgname'][:-1358]
  #             self.bndbox_mpii_train = annot['bndbox'][:-1358]
  #             self.part_mpii_train = annot['part'][:-1358]
  #             # val
  #             self.imgname_mpii_val = annot['imgname'][-1358:]
  #             self.bndbox_mpii_val = annot['bndbox'][-1358:]
  #             self.part_mpii_val = annot['part'][-1358:]
  
  #         self.size_coco_train = self.imgname_coco_train.shape[0]
  #         self.size_coco_val = self.imgname_coco_val.shape[0]
  #         self.size_train = self.imgname_coco_train.shape[0] + self.imgname_mpii_train.shape[0]
  #         self.size_val = self.imgname_coco_val.shape[0] + self.imgname_mpii_val.shape[0]
  #         self.train, self.valid = [], []
  
  #     def __getitem__(self, index):
  #         sf = self.scale_factor
  
  #         if self.is_train and index < self.size_coco_train:  # COCO
  #             part = self.part_coco_train[index]
  #             bndbox = self.bndbox_coco_train[index]
  #             imgname = self.imgname_coco_train[index]
  #             imgset = 'coco'
  #         elif self.is_train:  # MPII
  #             part = self.part_mpii_train[index - self.size_coco_train]
  #             bndbox = self.bndbox_mpii_train[index - self.size_coco_train]
  #             imgname = self.imgname_mpii_train[index - self.size_coco_train]
  #             imgset = 'mpii'
  #         elif index < self.size_coco_val:
  #             part = self.part_coco_val[index]
  #             bndbox = self.bndbox_coco_val[index]
  #             imgname = self.imgname_coco_val[index]
  #             imgset = 'coco'
  #         else:
  #             part = self.part_mpii_val[index - self.size_coco_val]
  #             bndbox = self.bndbox_mpii_val[index - self.size_coco_val]
  #             imgname = self.imgname_mpii_val[index - self.size_coco_val]
  #             imgset = 'mpii'
  
  #         if imgset == 'coco':
  #             imgname = reduce(lambda x, y: x + y, map(lambda x: chr(int(x)), imgname))
  #         else:
  #             imgname = reduce(lambda x, y: x + y, map(lambda x: chr(int(x)), imgname))[:13]
  
  #         img_path = os.path.join(self.img_folder, imgset, 'images', imgname)
  
  #         metaData = generateSampleBox(img_path, bndbox, part, self.nJoints,
  #                                      imgset, sf, self, train=self.is_train)
  
  #         inp, out_bigcircle, out_smallcircle, out, setMask = metaData
  
  #         label = []
  #         for i in range(opt.nStack):
  #             if i < 2:
  #                 # label.append(out_bigcircle.clone())
  #                 label.append(out.clone())
  #             elif i < 4:
  #                 # label.append(out_smallcircle.clone())
  #                 label.append(out.clone())
  #             else:
  #                 label.append(out.clone())
  
  #         return inp, label, setMask, imgset
  
  #     def __len__(self):
  #         if self.is_train:
  #             return self.size_train
  #         else:
  #             return self.size_val
  