def create_yolo_datasetv2(image_dir, data_txt, batch_size, max_epoch, device_num, rank, config=None, shuffle=True): """ Create yolo dataset. """ yolo_dataset = COCOYoloDatasetv2(root=image_dir, data_txt=data_txt) distributed_sampler = DistributedSampler(len(yolo_dataset), device_num, rank, shuffle=shuffle) hwc_to_chw = CV.HWC2CHW() config.dataset_size = len(yolo_dataset) ds = de.GeneratorDataset(yolo_dataset, column_names=["image", "img_id"], sampler=distributed_sampler) compose_map_func = (lambda image, img_id: reshape_fn(image, img_id, config)) ds = ds.map(input_columns=["image", "img_id"], output_columns=["image", "image_shape", "img_id"], column_order=["image", "image_shape", "img_id"], operations=compose_map_func, num_parallel_workers=8) ds = ds.map(input_columns=["image"], operations=hwc_to_chw, num_parallel_workers=8) ds = ds.batch(batch_size, drop_remainder=True) ds = ds.repeat(max_epoch) return ds, len(yolo_dataset)
def create_yolo_dataset(image_dir, anno_path, batch_size, max_epoch, device_num, rank, config=None, is_training=True, shuffle=True): """Create dataset for YOLOV4.""" cv2.setNumThreads(0) if is_training: filter_crowd = True remove_empty_anno = True else: filter_crowd = False remove_empty_anno = False yolo_dataset = COCOYoloDataset(root=image_dir, ann_file=anno_path, filter_crowd_anno=filter_crowd, remove_images_without_annotations=remove_empty_anno, is_training=is_training) distributed_sampler = DistributedSampler(len(yolo_dataset), device_num, rank, shuffle=shuffle) hwc_to_chw = CV.HWC2CHW() config.dataset_size = len(yolo_dataset) cores = multiprocessing.cpu_count() num_parallel_workers = int(cores / device_num) if is_training: multi_scale_trans = MultiScaleTrans(config, device_num) dataset_column_names = ["image", "annotation", "bbox1", "bbox2", "bbox3", "gt_box1", "gt_box2", "gt_box3"] if device_num != 8: ds = de.GeneratorDataset(yolo_dataset, column_names=dataset_column_names, num_parallel_workers=min(32, num_parallel_workers), sampler=distributed_sampler) ds = ds.batch(batch_size, per_batch_map=multi_scale_trans, input_columns=dataset_column_names, num_parallel_workers=min(32, num_parallel_workers), drop_remainder=True) else: ds = de.GeneratorDataset(yolo_dataset, column_names=dataset_column_names, sampler=distributed_sampler) ds = ds.batch(batch_size, per_batch_map=multi_scale_trans, input_columns=dataset_column_names, num_parallel_workers=min(8, num_parallel_workers), drop_remainder=True) else: ds = de.GeneratorDataset(yolo_dataset, column_names=["image", "img_id"], sampler=distributed_sampler) compose_map_func = (lambda image, img_id: reshape_fn(image, img_id, config)) ds = ds.map(operations=compose_map_func, input_columns=["image", "img_id"], output_columns=["image", "image_shape", "img_id"], column_order=["image", "image_shape", "img_id"], num_parallel_workers=8) ds = ds.map(operations=hwc_to_chw, input_columns=["image"], num_parallel_workers=8) ds = ds.batch(batch_size, drop_remainder=True) ds = ds.repeat(max_epoch) return ds, len(yolo_dataset)
def create_yolo_dataset(image_dir, anno_path, batch_size, max_epoch, device_num, rank, config=None, is_training=True, shuffle=True): """Create dataset for YOLOV3.""" if is_training: filter_crowd = True remove_empty_anno = True else: filter_crowd = False remove_empty_anno = False yolo_dataset = COCOYoloDataset(root=image_dir, ann_file=anno_path, filter_crowd_anno=filter_crowd, remove_images_without_annotations=remove_empty_anno, is_training=is_training) distributed_sampler = DistributedSampler(len(yolo_dataset), device_num, rank, shuffle=shuffle) hwc_to_chw = CV.HWC2CHW() config.dataset_size = len(yolo_dataset) num_parallel_workers1 = int(64 / device_num) num_parallel_workers2 = int(16 / device_num) if is_training: multi_scale_trans = MultiScaleTrans(config, device_num) if device_num != 8: ds = de.GeneratorDataset(yolo_dataset, column_names=["image", "annotation"], num_parallel_workers=num_parallel_workers1, sampler=distributed_sampler) ds = ds.batch(batch_size, per_batch_map=multi_scale_trans, input_columns=['image', 'annotation'], num_parallel_workers=num_parallel_workers2, drop_remainder=True) else: ds = de.GeneratorDataset(yolo_dataset, column_names=["image", "annotation"], sampler=distributed_sampler) ds = ds.batch(batch_size, per_batch_map=multi_scale_trans, input_columns=['image', 'annotation'], num_parallel_workers=8, drop_remainder=True) else: ds = de.GeneratorDataset(yolo_dataset, column_names=["image", "img_id"], sampler=distributed_sampler) compose_map_func = (lambda image, img_id: reshape_fn(image, img_id, config)) ds = ds.map(input_columns=["image", "img_id"], output_columns=["image", "image_shape", "img_id"], columns_order=["image", "image_shape", "img_id"], operations=compose_map_func, num_parallel_workers=8) ds = ds.map(input_columns=["image"], operations=hwc_to_chw, num_parallel_workers=8) ds = ds.batch(batch_size, drop_remainder=True) ds = ds.repeat(max_epoch) return ds, len(yolo_dataset)