| 597 | |
| 598 | @PIPELINES.register_module() |
| 599 | class LoadMultiViewImageFromMultiSweeps(object): |
| 600 | def __init__(self, |
| 601 | sweeps_num=5, |
| 602 | color_type='color', |
| 603 | test_mode=False): |
| 604 | self.sweeps_num = sweeps_num |
| 605 | self.color_type = color_type |
| 606 | self.test_mode = test_mode |
| 607 | |
| 608 | self.train_interval = [4, 8] |
| 609 | self.test_interval = 6 |
| 610 | |
| 611 | try: |
| 612 | mmcv.use_backend('turbojpeg') |
| 613 | except ImportError: |
| 614 | mmcv.use_backend('cv2') |
| 615 | |
| 616 | def load_offline(self, results): |
| 617 | cam_types = [ |
| 618 | 'CAM_FRONT', 'CAM_FRONT_RIGHT', 'CAM_FRONT_LEFT', |
| 619 | 'CAM_BACK', 'CAM_BACK_LEFT', 'CAM_BACK_RIGHT' |
| 620 | ] |
| 621 | |
| 622 | if len(results['sweeps']['prev']) == 0: |
| 623 | for _ in range(self.sweeps_num): |
| 624 | for j in range(len(cam_types)): |
| 625 | results['img'].append(results['img'][j]) |
| 626 | results['img_timestamp'].append(results['img_timestamp'][j]) |
| 627 | results['filename'].append(results['filename'][j]) |
| 628 | results['lidar2img'].append(np.copy(results['lidar2img'][j])) |
| 629 | results['intrinsics'].append(np.copy(results['intrinsics'][j])) |
| 630 | else: |
| 631 | if self.test_mode: |
| 632 | interval = self.test_interval |
| 633 | choices = [(k + 1) * interval - 1 for k in range(self.sweeps_num)] |
| 634 | elif len(results['sweeps']['prev']) <= self.sweeps_num: |
| 635 | pad_len = self.sweeps_num - len(results['sweeps']['prev']) |
| 636 | choices = list(range(len(results['sweeps']['prev']))) + [len(results['sweeps']['prev']) - 1] * pad_len |
| 637 | else: |
| 638 | max_interval = len(results['sweeps']['prev']) // self.sweeps_num |
| 639 | max_interval = min(max_interval, self.train_interval[1]) |
| 640 | min_interval = min(max_interval, self.train_interval[0]) |
| 641 | interval = np.random.randint(min_interval, max_interval + 1) |
| 642 | |
| 643 | # interval = 6 # here |
| 644 | |
| 645 | choices = [(k + 1) * interval - 1 for k in range(self.sweeps_num)] |
| 646 | |
| 647 | for idx in sorted(list(choices)): |
| 648 | sweep_idx = min(idx, len(results['sweeps']['prev']) - 1) |
| 649 | sweep = results['sweeps']['prev'][sweep_idx] |
| 650 | |
| 651 | if len(sweep.keys()) < len(cam_types): |
| 652 | sweep = results['sweeps']['prev'][sweep_idx - 1] |
| 653 | |
| 654 | for sensor in cam_types: |
| 655 | results['img'].append(mmcv.imread(sweep[sensor]['data_path'], self.color_type)) |
| 656 | results['img_timestamp'].append(sweep[sensor]['timestamp'] / 1e6) |
nothing calls this directly
no outgoing calls
no test coverage detected