cityscapes.py 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. # Copyright (c) OpenMMLab. All rights reserved.
  2. import argparse
  3. import os.path as osp
  4. from cityscapesscripts.preparation.json2labelImg import json2labelImg
  5. from mmengine.utils import (mkdir_or_exist, scandir, track_parallel_progress,
  6. track_progress)
  7. def convert_json_to_label(json_file):
  8. label_file = json_file.replace('_polygons.json', '_labelTrainIds.png')
  9. json2labelImg(json_file, label_file, 'trainIds')
  10. def parse_args():
  11. parser = argparse.ArgumentParser(
  12. description='Convert Cityscapes annotations to TrainIds')
  13. parser.add_argument('cityscapes_path', help='cityscapes data path')
  14. parser.add_argument('--gt-dir', default='gtFine', type=str)
  15. parser.add_argument('-o', '--out-dir', help='output path')
  16. parser.add_argument(
  17. '--nproc', default=1, type=int, help='number of process')
  18. args = parser.parse_args()
  19. return args
  20. def main():
  21. args = parse_args()
  22. cityscapes_path = args.cityscapes_path
  23. out_dir = args.out_dir if args.out_dir else cityscapes_path
  24. mkdir_or_exist(out_dir)
  25. gt_dir = osp.join(cityscapes_path, args.gt_dir)
  26. poly_files = []
  27. for poly in scandir(gt_dir, '_polygons.json', recursive=True):
  28. poly_file = osp.join(gt_dir, poly)
  29. poly_files.append(poly_file)
  30. if args.nproc > 1:
  31. track_parallel_progress(convert_json_to_label, poly_files, args.nproc)
  32. else:
  33. track_progress(convert_json_to_label, poly_files)
  34. split_names = ['train', 'val', 'test']
  35. for split in split_names:
  36. filenames = []
  37. for poly in scandir(
  38. osp.join(gt_dir, split), '_polygons.json', recursive=True):
  39. filenames.append(poly.replace('_gtFine_polygons.json', ''))
  40. with open(osp.join(out_dir, f'{split}.txt'), 'w') as f:
  41. f.writelines(f + '\n' for f in filenames)
  42. if __name__ == '__main__':
  43. main()