@@ -114,35 +114,26 @@ def reader_creator(data_file,
114114 :return: data reader
115115 :rtype: callable
116116 '''
117- scio = try_import ('scipy.io' )
118-
119- labels = scio .loadmat (label_file )['labels' ][0 ]
120- indexes = scio .loadmat (setid_file )[dataset_name ][0 ]
121-
122- img2label = {}
123- for i in indexes :
124- img = "jpg/image_%05d.jpg" % i
125- img2label [img ] = labels [i - 1 ]
126- file_list = batch_images_from_tar (data_file , dataset_name , img2label )
127117
128118 def reader ():
129- while True :
130- with open (file_list , 'r' ) as f_list :
131- for file in f_list :
132- file = file .strip ()
133- batch = None
134- with open (file , 'rb' ) as f :
135- batch = pickle .load (f , encoding = 'bytes' )
136-
137- if six .PY3 :
138- batch = cpt .to_text (batch )
139- data_batch = batch ['data' ]
140- labels_batch = batch ['label' ]
141- for sample , label in six .moves .zip (data_batch ,
142- labels_batch ):
143- yield sample , int (label ) - 1
144- if not cycle :
145- break
119+ scio = try_import ('scipy.io' )
120+
121+ labels = scio .loadmat (label_file )['labels' ][0 ]
122+ indexes = scio .loadmat (setid_file )[dataset_name ][0 ]
123+
124+ img2label = {}
125+ for i in indexes :
126+ img = "jpg/image_%05d.jpg" % i
127+ img2label [img ] = labels [i - 1 ]
128+
129+ tf = tarfile .open (data_file )
130+ mems = tf .getmembers ()
131+ file_id = 0
132+ for mem in mems :
133+ if mem .name in img2label :
134+ image = tf .extractfile (mem ).read ()
135+ label = img2label [mem .name ]
136+ yield image , int (label )
146137
147138 if use_xmap :
148139 return xmap_readers (mapper , reader , min (4 , cpu_count ()), buffered_size )
0 commit comments