Beispiel #1
0
def create_dataset2():
    """
    Concat the original images with output of the JNET to train the network
    :return:
    """

    logger.info("We are loading UADetrac!!")
    cfg = uad
    dataset = UADDetection(transform=SSDAugmentation(cfg['min_dim'], MEANS))
    loader = UADetracLoader()
    images = loader.load_cached_images(name='uad_train_images.npy',
                                       vi_name='uad_train_vi.npy')
    boxes = loader.load_cached_boxes(name='uad_train_boxes.npy')
    labels = loader.load_cached_labels(name='uad_train_labels.npy')

    labels = labels['vehicle']
    images, labels, boxes = loader.filter_input3(images, labels, boxes)

    images2 = loader.load_cached_images(name='jnet_train-200-300.npy',
                                        vi_name='uad_train_vi.npy')
    boxes2 = loader.load_cached_boxes(name='uad_train_boxes.npy')
    labels2 = loader.load_cached_labels(name='uad_train_labels.npy')
    labels2 = labels2['vehicle']
    images2, labels2, boxes2 = loader.filter_input3(images2, labels2, boxes2)

    final_images = np.concatenate((images, images2), axis=0)
    final_boxes = np.concatenate((boxes, boxes2), axis=0)
    final_labels = np.concatenate((labels, labels2), axis=0)

    logger.info(f"original: {images.shape}, {len(labels)}, {len(boxes)}")
    logger.info(
        f"final: {final_images.shape}, {final_boxes.shape}, {final_labels.shape}"
    )

    dataset.set_images(images)
    dataset.set_labels(labels)
    dataset.set_boxes(boxes)

    return dataset, cfg
Beispiel #2
0
class Runner:
    def __init__(self):
        self.loader = UADetracLoader()
        self.preprocess = PreprocessingModule()
        self.network = UNet()
        self.cluster = ClusterModule()
        self.index = IndexingModule()

    def run(self):
        """
        Steps:
        1. Load the data
        2. Preprocess the data
        3. Train the network
        4a. Cluster the data
        4b. Postprocess the data
        5a. Generate compressed form
        5b. Generate indexes and preform CBIR
        :return: ???
        """
        import time
        st = time.time()
        # 1. Load the image
        images = self.loader.load_cached_images()
        labels = self.loader.load_cached_labels()
        vehicle_labels = labels['vehicle']
        video_start_indices = self.loader.get_video_start_indices()
        print("Done loading images in", time.time() - st, "(sec)")

        # 2. Begin preprocessing
        st = time.time()
        segmented_images = self.preprocess.run(images, video_start_indices)
        print("Done with background subtraction in", time.time() - st, "(sec)")
        self.preprocess.saveSegmentedImages()

        st = time.time()
        self.network.train(images, segmented_images)
        final_compressed_images, final_segmented_images = self.network.execute(
        )
        print("Done training the main network in", time.time() - st, "(sec)")

        st = time.time()
        cluster_labels = self.cluster.run(final_compressed_images)
        print("Done clustering in", time.time() - st, "(sec)")

        st = time.time()
        self.index.train(images, final_segmented_images, vehicle_labels)
Beispiel #3
0
        segmented_images = self.preprocess.run(images, video_start_indices)
        print("Done with background subtraction in", time.time() - st, "(sec)")
        self.preprocess.saveSegmentedImages()

        st = time.time()
        self.network.train(images, segmented_images)
        final_compressed_images, final_segmented_images = self.network.execute(
        )
        print("Done training the main network in", time.time() - st, "(sec)")

        st = time.time()
        cluster_labels = self.cluster.run(final_compressed_images)
        print("Done clustering in", time.time() - st, "(sec)")

        st = time.time()
        self.index.train(images, final_segmented_images, vehicle_labels)


if __name__ == "__main__":
    # 0. Initialize the modules
    loader = UADetracLoader()
    preprocess = PreprocessingModule()
    network = UNet()

    import time
    st = time.time()
    # 1. Load the images (cached images is fine)
    images = loader.load_cached_images()
    labels = loader.load_cached_labels()
    video_start_indices = loader.get_video_start_indices()
Beispiel #4
0
                (left / image_width, top / image_height, right / image_width,
                 bottom / image_height))
        new_boxes.append(new_boxes_per_frame)

    assert (len(new_boxes) == len(all_boxes))
    for i, boxes_per_frame in enumerate(all_boxes):
        assert (len(boxes_per_frame) == len(new_boxes[i]))

    return new_boxes


if __name__ == "__main__":
    loader = UADetracLoader()
    logger = Logger()
    images_train = loader.load_cached_images()
    labels_train = loader.load_cached_labels()
    boxes_train = loader.load_cached_boxes()

    ### we need to take out frames that don't have labels / boxes
    labels_train = labels_train['vehicle']
    images_train, labels_train, boxes_train = filter_input(
        images_train, labels_train, boxes_train)
    image_width, image_height = images_train.shape[1], images_train.shape[2]

    logger.info("Finished loading the UADetrac Dataset")

    ## we need to create a UA Dataset_lite..
    ## divide the set into train and validation
    val_division = int(0.8 * len(images_train))
    images_val = images_train[val_division:]
    images_train = images_train[:val_division]
Beispiel #5
0
    logger.info(f"Loaded model {args.trained_model}")
    # load data
    loader = UADetracLoader()

    #images = loader.load_images(dir = os.path.join(home_dir, 'data', 'ua_detrac', '5_images'))
    #labels, boxes = loader.load_labels(dir = os.path.join(home_dir, 'data', 'ua_detrac', '5_xml'))

    ### uad test
    #images = loader.load_cached_images(name = 'uad_test_images.npy', vi_name = 'uad_test_vi.npy')
    #labels = loader.load_cached_labels(name = 'uad_test_labels.npy')
    #boxes = loader.load_cached_boxes(name = 'uad_test_boxes.npy')

    ### jnet_test
    images = loader.load_cached_images(name='jnet_test-200-300.npy',
                                       vi_name='uad_test_vi.npy')
    labels = loader.load_cached_labels(name='uad_test_labels.npy')
    boxes = loader.load_cached_boxes(name='uad_test_boxes.npy')

    labels = labels['vehicle']

    images, labels, boxes = loader.filter_input3(images, labels, boxes)

    ## let's sample images
    images = images[::10]
    labels = labels[::10]
    boxes = boxes[::10]

    dataset = UADDetection(transform=BaseTransform(300, dataset_mean),
                           target_transform=UADAnnotationTransform())
    dataset.set_images(images)
    dataset.set_labels(labels)
Beispiel #6
0
def create_dataset(dataset_name, is_train=None, cache_name=None):
    if dataset_name not in available_datasets.keys():
        logger.error(
            f"dataset: {dataset_name} not in {available_datasets.keys()}")

    if (dataset_name is 'UAD'
            or dataset_name is 'JNET') and (is_train is None):
        logger.error(f"Must specify training or testing for UAD and JNET!")

    if dataset_name == 'COCO':
        if not os.path.exists(COCO_ROOT):
            logger.error('Must specify dataset_root if specifying dataset')
        cfg = coco
        dataset = COCODetection(root=COCO_ROOT,
                                transform=SSDAugmentation(
                                    cfg['min_dim'], MEANS))
    elif dataset_name == 'VOC':
        cfg = voc
        dataset = VOCDetection(root=VOC_ROOT,
                               transform=SSDAugmentation(
                                   cfg['min_dim'], MEANS))

    elif dataset_name == 'UAD' and is_train:
        logger.info("We are loading UADetrac!!")
        cfg = uad
        dataset = UADDetection(
            transform=SSDAugmentation(cfg['min_dim'], MEANS))
        loader = UADetracLoader()
        images = loader.load_cached_images(name='uad_train_images.npy',
                                           vi_name='uad_train_vi.npy')
        boxes = loader.load_cached_boxes(name='uad_train_boxes.npy')
        labels = loader.load_cached_labels(name='uad_train_labels.npy')

        labels = labels['vehicle']
        images, labels, boxes = loader.filter_input3(images, labels, boxes)
        dataset.set_images(images)
        dataset.set_labels(labels)
        dataset.set_boxes(boxes)

    elif dataset_name == 'UAD' and not is_train:
        logger.info("We are loading UADetrac!!")
        cfg = uad
        dataset = UADDetection(
            transform=SSDAugmentation(cfg['min_dim'], MEANS))
        loader = UADetracLoader()
        images = loader.load_cached_images(name='uad_test_images.npy',
                                           vi_name='uad_test_vi.npy')
        boxes = loader.load_cached_boxes(name='uad_test_boxes.npy')
        labels = loader.load_cached_labels(name='uad_test_labels.npy')
        labels = labels['vehicle']
        images, labels, boxes = loader.filter_input3(images, labels, boxes)
        images = images[:4000]
        labels = labels[:4000]
        boxes = boxes[:4000]

        dataset.set_images(images)
        dataset.set_labels(labels)
        dataset.set_boxes(boxes)

    elif dataset_name == 'JNET' and is_train:
        if cache_name is None:
            logger.error("Cache name is required for JNET!! returning...")
            return None
        logger.info("We are loading JNET - UADetrac!!")
        cfg = uad
        dataset = UADDetection(
            transform=SSDAugmentation(cfg['min_dim'], MEANS))
        loader = UADetracLoader()
        images = loader.load_cached_images(name=cache_name,
                                           vi_name='uad_train_vi.npy')
        labels = loader.load_cached_labels(name='uad_train_labels.npy')
        boxes = loader.load_cached_boxes(name='uad_train_boxes.npy')
        labels = labels['vehicle']

        images, labels, boxes = loader.filter_input3(images, labels, boxes)

        logger.info(f"images shape is {images.shape}")
        logger.info(f"labels length is {len(labels)}")
        logger.info(f"boxes length is {len(boxes)}")
        assert (images.shape[0] == len(labels))
        assert (len(labels) == len(boxes))
        dataset.set_images(images)
        dataset.set_labels(labels)
        dataset.set_boxes(boxes)

    elif dataset_name == 'JNET' and not is_train:
        if cache_name is None:
            logger.error("Cache name is required for JNET! returning....")
            return
        logger.info("We are loading JNET - UADetrac!!")
        cfg = uad
        dataset = UADDetection(
            transform=SSDAugmentation(cfg['min_dim'], MEANS))
        loader = UADetracLoader()
        images = loader.load_cached_images(name=cache_name,
                                           vi_name='uad_test_vi.npy')
        labels = loader.load_cached_labels(name='uad_test_labels.npy')
        boxes = loader.load_cached_boxes(name='uad_test_boxes.npy')
        labels = labels['vehicle']
        images, labels, boxes = loader.filter_input3(images, labels, boxes)

        ###FIXED: we will make this really small so that numbers appear fast
        images = images[:2000]
        labels = labels[:2000]
        boxes = boxes[:2000]

        logger.info(f"images shape is {images.shape}")
        logger.info(f"labels length is {len(labels)}")
        logger.info(f"boxes length is {len(boxes)}")
        dataset.set_images(images)
        dataset.set_labels(labels)
        dataset.set_boxes(boxes)

    return dataset, cfg