Main function of image split.
()
| 534 | |
| 535 | |
| 536 | def main(): |
| 537 | """Main function of image split.""" |
| 538 | args = parse_args() |
| 539 | print("=====Converting FAIR dataset to DOTA format!=====") |
| 540 | |
| 541 | fair_to_dota(args.img_ann_dirs, args.converted_dota_dir) |
| 542 | ann_dir = os.path.join(args.converted_dota_dir,"labelTxt") |
| 543 | img_dir = os.path.join(args.converted_dota_dir,"images") |
| 544 | print(ann_dir, img_dir) |
| 545 | print("Convertion Finished!") |
| 546 | |
| 547 | if not os.path.exists(ann_dir): |
| 548 | ann_dir = None |
| 549 | padding_value = args.padding_value[0] \ |
| 550 | if len(args.padding_value) == 1 else args.padding_value |
| 551 | sizes, gaps = [], [] |
| 552 | for rate in args.rates: |
| 553 | sizes += [int(size / rate) for size in args.sizes] |
| 554 | gaps += [int(gap / rate) for gap in args.gaps] |
| 555 | save_imgs = osp.join(args.save_dir, 'images') |
| 556 | save_files = osp.join(args.save_dir, 'annfiles') |
| 557 | os.makedirs(save_imgs) |
| 558 | os.makedirs(save_files) |
| 559 | logger = setup_logger(args.save_dir) |
| 560 | |
| 561 | print('Loading original data!!!') |
| 562 | infos, img_dirs_ = [], [] |
| 563 | _infos = load_dota(img_dir=img_dir, ann_dir=ann_dir, nproc=args.nproc) |
| 564 | _img_dirs = [img_dir for _ in range(len(_infos))] |
| 565 | infos.extend(_infos) |
| 566 | img_dirs_.extend(_img_dirs) |
| 567 | |
| 568 | print('Start splitting images!!!') |
| 569 | start = time.time() |
| 570 | manager = Manager() |
| 571 | worker = partial( |
| 572 | single_split, |
| 573 | sizes=sizes, |
| 574 | gaps=gaps, |
| 575 | img_rate_thr=args.img_rate_thr, |
| 576 | iof_thr=args.iof_thr, |
| 577 | no_padding=args.no_padding, |
| 578 | padding_value=padding_value, |
| 579 | save_dir=save_imgs, |
| 580 | anno_dir=save_files, |
| 581 | img_ext=args.save_ext, |
| 582 | lock=manager.Lock(), |
| 583 | prog=manager.Value('i', 0), |
| 584 | total=len(infos), |
| 585 | logger=logger) |
| 586 | |
| 587 | if args.nproc > 1: |
| 588 | pool = Pool(args.nproc) |
| 589 | patch_infos = pool.map(worker, zip(infos, img_dirs_)) |
| 590 | pool.close() |
| 591 | else: |
| 592 | patch_infos = list(map(worker, zip(infos, img_dirs_))) |
| 593 |
no test coverage detected