data_to_h5py.py 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. import cv2
  2. import h5py
  3. import os
  4. import argparse
  5. import numpy as np
  6. import sys
  7. sys.path.append('..')
  8. from voc import VOCDetection
  9. from coco import COCODataset
  10. # ---------------------- Opt ----------------------
  11. parser = argparse.ArgumentParser(description='Cache-Dataset')
  12. parser.add_argument('-d', '--dataset', default='voc',
  13. help='coco, voc, widerface, crowdhuman')
  14. parser.add_argument('--root', default='/Users/liuhaoran/Desktop/python_work/object-detection/dataset/',
  15. help='data root')
  16. parser.add_argument('-size', '--img_size', default=640, type=int,
  17. help='input image size.')
  18. parser.add_argument('--mosaic', default=None, type=float,
  19. help='mosaic augmentation.')
  20. parser.add_argument('--mixup', default=None, type=float,
  21. help='mixup augmentation.')
  22. parser.add_argument('--keep_ratio', action="store_true", default=False,
  23. help='keep aspect ratio.')
  24. parser.add_argument('--show', action="store_true", default=False,
  25. help='keep aspect ratio.')
  26. args = parser.parse_args()
  27. # ---------------------- Build Dataset ----------------------
  28. if args.dataset == 'voc':
  29. root = os.path.join(args.root, 'VOCdevkit')
  30. dataset = VOCDetection(args.img_size, root)
  31. elif args.dataset == 'coco':
  32. root = os.path.join(args.root, 'COCO')
  33. dataset = COCODataset(args.img_size, args.root)
  34. print('Data length: ', len(dataset))
  35. # ---------------------- Main Process ----------------------
  36. cached_image = []
  37. dataset_size = len(dataset)
  38. for i in range(len(dataset)):
  39. if i % 5000 == 0:
  40. print("[{} / {}]".format(i, dataset_size))
  41. # load an image
  42. image, image_id = dataset.pull_image(i)
  43. orig_h, orig_w, _ = image.shape
  44. # resize image
  45. if args.keep_ratio:
  46. r = args.img_size / max(orig_h, orig_w)
  47. if r != 1:
  48. interp = cv2.INTER_LINEAR
  49. new_size = (int(orig_w * r), int(orig_h * r))
  50. image = cv2.resize(image, new_size, interpolation=interp)
  51. else:
  52. image = cv2.resize(image, (int(args.img_size), int(args.img_size)))
  53. cached_image.append(image)
  54. if args.show:
  55. cv2.imshow('image', image)
  56. # cv2.imwrite(str(i)+'.jpg', img)
  57. cv2.waitKey(0)
  58. save_path = "dataset/cache/"
  59. os.makedirs(save_path, exist_ok=True)
  60. np.save(save_path + '{}_train_images.npy'.format(args.dataset), cached_image)