def _get_next_minibatch_mp(self):
"""For multiprocessing mode, read image in training process"""
db_inds = self._get_next_minibatch_inds()
datum = []
def addIm(img):
im = cv2.imread(img)
im = dataset.pad(im)
im = im - params._mean
# change (h,w,c) to (c,h,w)
im = np.rollaxis(im,2)
return im
#dataset = data.Dataset()
lock = threading.Lock()
def process(i):
for idx in xrange(3):
try:
im = addIm(self._db[i][idx])
except:
print "error with read line: ",self._db[i]
lock.acquire()
data[str(i)+str(idx)] = im
lock.release()
data = {}
arr = []
#p = ThreadPool(params._num_thread)
p.map(process, [i for i in db_inds])
for i in db_inds:
arr.append(data[str(i)+str(0)])
arr.append(data[str(i)+str(1)])
arr.append(data[str(i)+str(2)])
arr = np.array(arr)
datum.append(arr.copy())
blobs = {name: datum[i] for name,i in self._name_to_top_map.iteritems()}
return blobs
评论列表
文章目录