Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def custom_generator(generator, train_gt, train_img_dir):
- train_data = np.zeros((len(train_gt), 100, 100, 3))
- train_labels = np.zeros((len(train_gt), 100, 100, 1)).astype(int)
- for idx, (img_name, img_points) in enumerate(train_gt.items()):
- img = imread(join(train_img_dir, img_name), plugin="matplotlib")
- points = img_points.reshape((14, 2))
- new_img = resize(img, (100, 100, 3), anti_aliasing=False)
- new_points = np.around(np.multiply(points, 100 / np.array([img.shape[1], img.shape[0]]))).astype(int)
- new_mask = np.zeros((100, 100, 1)).astype(int)
- for numer, point in enumerate(new_points[[1, 0], :]):
- up_border = point[0] - 1 if point[0] - 1 >= 0 else 0
- down_border = point[0] + 2 if point[0] + 2 <= new_mask.shape[0] else new_mask.shape[0]
- left_border = point[1] - 1 if point[1] - 1 >= 0 else 0
- right_border = point[1] + 2 if point[1] + 2 <= new_mask.shape[1] else new_mask.shape[1]
- new_mask[up_border:down_border, left_border:right_border] = (numer + 1) * 10
- plt.imshow(new_img + new_mask * 255)
- plt.show()
- break
- train_data[idx, ...] = new_img
- train_labels[idx, ...] = new_mask
- it = generator.flow(train_data, batch_size=64, seed=1337)
- il = generator.flow(train_labels, batch_size=64, seed=1337)
- while True:
- batch = it.next()
- masks = il.next()
- ext_batch = []
- ext_points = []
- for idx, current in enumerate(masks):
- points = np.zeros((14, 2))
- try:
- for numer in range(14):
- indeces = np.argwhere(current == (numer + 1) * 10)
- if len(indeces) == 0:
- raise StopIteration
- points[numer] = np.around(np.array([np.mean(indeces[1, ...]), np.mean(indeces[0, ...])]))
- ext_batch.extend(batch[idx])
- ext_points.extend(points.reshape(-1))
- except StopIteration:
- continue
- yield np.array(ext_batch), np.array(ext_points)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement