def generate_batch(image):
    """
    preprocess image, return batch
    :param im: cv2.imread returns [height, width, channel] in BGR
    :return:
    data_batch: MXNet input batch
    data_names: names in data_batch
    im_scale: float number
    """
    data = []
    data_shapes = []
    im_scale = []
    data_name = []
    t1 = []
    t2 = []
    for i in range(0, image.qsize()):
        im = image.get()
        im_array, im_scalet = resize(im, SHORT_SIDE, LONG_SIDE)
        im_array = transform(im_array, PIXEL_MEANS)
        im_info = np.array([[im_array.shape[2], im_array.shape[3], im_scalet]],
                           dtype=np.float32)
        t1.append(im_array.shape)
        t2.append(im_info.shape)
        data.append([mx.nd.array(im_array), mx.nd.array(im_info)])
        data_shapes.append([('data', im_array.shape),
                            ('im_info', im_info.shape)])
        im_scale.append(im_scalet)
        data_name.append(DATA_NAMES)

    data_batch = mx.io.DataBatch(data=data,
                                 label=None,
                                 provide_data=data_shapes,
                                 provide_label=None)

    return data_batch, data_name, im_scale
Beispiel #2
0
def generate_batch(im):
    """
    preprocess image, return batch
    :param im: cv2.imread returns [height, width, channel] in BGR
    :return:
    data_batch: MXNet input batch
    data_names: names in data_batch
    im_scale: float number
    """
    im_array, im_scale = resize(im, SHORT_SIDE, LONG_SIDE)

    im_info = np.array([[im_array.shape[0], im_array.shape[1], im_scale]], dtype=np.float32)

    if im_array.shape[0] == SHORT_SIDE or im_array.shape[0] == LONG_SIDE:
        if im_array.shape[1] % 32 != 0:
            pad_size = int(math.ceil(im_array.shape[1] / 32.) * 32 - im_array.shape[1])
            im_array = cv2.copyMakeBorder(im_array, 0, 0, 0, pad_size, cv2.BORDER_CONSTANT, value=(0, 0, 0))
    elif im_array.shape[1] == SHORT_SIDE or im_array.shape[1] == LONG_SIDE:
        if im_array.shape[0] % 32 != 0:
            pad_size = int(math.ceil(im_array.shape[0] / 32.) * 32 - im_array.shape[0])
            im_array = cv2.copyMakeBorder(im_array, 0, pad_size, 0, 0, cv2.BORDER_CONSTANT, value=(0, 0, 0))

    im_array = transform(im_array, config.PIXEL_MEANS)
    # im_info = np.array([[im_array.shape[2], im_array.shape[3], im_scale]], dtype=np.float32)
    data = [mx.nd.array(im_array), mx.nd.array(im_info)]
    data_shapes = [('data', im_array.shape), ('im_info', im_info.shape)]
    data_batch = mx.io.DataBatch(data=data, label=None, provide_data=data_shapes, provide_label=None)
    return data_batch, DATA_NAMES, im_scale
Beispiel #3
0
def generate_batch(im):
    """
    preprocess image, return batch
    :param im: cv2.imread returns [height, width, channel] in BGR
    :return:
    data_batch: MXNet input batch
    data_names: names in data_batch
    im_scale: float number
    """
    import ipdb
    ipdb.set_trace()
    im_array, im_scale = resize(im,
                                SHORT_SIDE,
                                LONG_SIDE,
                                stride=config.IMAGE_STRIDE)
    im_array = transform(im_array, PIXEL_MEANS)
    im_info = np.array([[im_array.shape[2], im_array.shape[3], im_scale]],
                       dtype=np.float32)
    data = [mx.nd.array(im_array), mx.nd.array(im_info)]
    data_shapes = [('data', im_array.shape), ('im_info', im_info.shape)]
    data_batch = mx.io.DataBatch(data=data,
                                 label=None,
                                 provide_data=data_shapes,
                                 provide_label=None)
    return data_batch, DATA_NAMES, im_scale
Beispiel #4
0
def generate_batch(im):
    """
    preprocess image, return batch
    :param im: cv2.imread returns [height, width, channel] in BGR
    :return:
    data_batch: MXNet input batch
    data_names: names in data_batch
    im_scale: float number
    """
    im_array, im_scale = resize(im, SHORT_SIDE, LONG_SIDE)
    im_array = transform(im_array, PIXEL_MEANS)
    im_info = np.array([[im_array.shape[2], im_array.shape[3], im_scale]], dtype=np.float32)
    data = [mx.nd.array(im_array), mx.nd.array(im_info)]
    data_shapes = [('data', im_array.shape), ('im_info', im_info.shape)]
    data_batch = mx.io.DataBatch(data=data, label=None, provide_data=data_shapes, provide_label=None)
    return data_batch, DATA_NAMES, im_scale
Beispiel #5
0
def load_data():
    # load demo data
    demo_folder = '../data/demo/'
    image_list = os.listdir(demo_folder)
    data = []
    im_scales = []
    for im_name in image_list:
        assert os.path.exists(demo_folder + im_name), ('%s does not exist'.format(demo_folder + im_name))
        im = cv2.imread(demo_folder + im_name, cv2.IMREAD_COLOR) # | cv2.IMREAD_IGNORE_ORIENTATION)
        target_size = config.SCALES[0][0]
        max_size = config.SCALES[0][1]
        im, im_scale = resize(im, target_size, max_size, stride=config.IMAGE_STRIDE)
        im_tensor = transform(im, config.PIXEL_MEANS)
        im_info = np.array([[im_tensor.shape[2], im_tensor.shape[3], im_scale]], dtype=np.float32)
        data.append({'data': im_tensor, 'im_info': im_info})
        im_scales.append(im_scale)

    return data, image_list, im_scales