def read_and_prepocess_single_img(filename_queue, shortside_len, is_training): img_name, img, gtboxes_and_label, num_objects = read_single_example_and_decode( filename_queue) img = tf.cast(img, tf.float32) if is_training: img, gtboxes_and_label = image_preprocess.short_side_resize( img_tensor=img, gtboxes_and_label=gtboxes_and_label, target_shortside_len=shortside_len, length_limitation=cfgs.IMG_MAX_LENGTH) img, gtboxes_and_label = image_preprocess.random_flip_left_right( img_tensor=img, gtboxes_and_label=gtboxes_and_label) else: img, gtboxes_and_label = image_preprocess.short_side_resize( img_tensor=img, gtboxes_and_label=gtboxes_and_label, target_shortside_len=shortside_len, length_limitation=cfgs.IMG_MAX_LENGTH) if cfgs.NET_NAME in ['resnet152_v1d', 'resnet101_v1d', 'resnet50_v1d']: img = img / 255 - tf.constant([[cfgs.PIXEL_MEAN_]]) else: img = img - tf.constant([[cfgs.PIXEL_MEAN]]) # sub pixel mean at last return img_name, img, gtboxes_and_label, num_objects
def read_and_prepocess_single_img(filename_queue, shortside_len, is_training): img_name, img, gtboxes_and_label, num_objects = read_single_example_and_decode( filename_queue) img = tf.cast(img, tf.float32) img = img - tf.constant(cfgs.PIXEL_MEAN) if is_training: img, gtboxes_and_label = image_preprocess.short_side_resize( img_tensor=img, gtboxes_and_label=gtboxes_and_label, target_shortside_len=shortside_len) img, gtboxes_and_label = image_preprocess.random_flip_left_right( img_tensor=img, gtboxes_and_label=gtboxes_and_label) #print(img.shape) img = img + tf.random_normal( shape=tf.shape(img), mean=0.0, stddev=255.0 * 0.2) else: img, gtboxes_and_label = image_preprocess.short_side_resize( img_tensor=img, gtboxes_and_label=gtboxes_and_label, target_shortside_len=shortside_len) return img_name, img, gtboxes_and_label, num_objects
def preprocess_img(img_plac, gtbox_plac): ''' :param img_plac: [H, W, 3] uint 8 img. In RGB. :param gtbox_plac: shape of [-1, 5]. [xmin, ymin, xmax, ymax, label] :return: ''' img = tf.cast(img_plac, tf.float32) # gtboxes_and_label = tf.cast(gtbox_plac, tf.float32) img, gtboxes_and_label = image_preprocess.short_side_resize(img_tensor=img, gtboxes_and_label=gtbox_plac, target_shortside_len=cfgs.IMG_SHORT_SIDE_LEN, length_limitation=cfgs.IMG_MAX_LENGTH) img, gtboxes_and_label = image_preprocess.random_flip_left_right(img_tensor=img, gtboxes_and_label=gtboxes_and_label) if cfgs.NET_NAME in ['resnet152_v1d', 'resnet101_v1d', 'resnet50_v1d']: img = img / 255 - tf.constant([[cfgs.PIXEL_MEAN_]]) else: img = img - tf.constant([[cfgs.PIXEL_MEAN]]) img_batch = tf.expand_dims(img, axis=0) # gtboxes_and_label = tf.Print(gtboxes_and_label, [tf.shape(gtboxes_and_label)], message='gtbox shape') return img_batch, gtboxes_and_label
def read_and_prepocess_single_img(filename_queue, shortside_len, is_training): img_name, img, gtboxes_and_label, num_objects = read_single_example_and_decode(filename_queue) # img = tf.image.per_image_standardization(img) img = tf.cast(img, tf.float32) img = img - tf.constant([103.939, 116.779, 123.68]) if is_training: img, gtboxes_and_label = image_preprocess.short_side_resize(img_tensor=img, gtboxes_and_label=gtboxes_and_label, target_shortside_len=shortside_len) img, gtboxes_and_label = image_preprocess.random_flip_left_right(img_tensor=img, gtboxes_and_label=gtboxes_and_label) else: img, gtboxes_and_label = image_preprocess.short_side_resize(img_tensor=img, gtboxes_and_label=gtboxes_and_label, target_shortside_len=shortside_len) return img_name, img, gtboxes_and_label, num_objects
def read_and_prepocess_single_img(filename_queue, shortside_len, is_training): img_name, img, gtboxes_and_label, num_objects = read_single_example_and_decode(filename_queue) img = tf.cast(img, tf.float32) img = img - tf.constant([103.939, 116.779, 123.68]) if is_training: img, gtboxes_and_label = image_preprocess.short_side_resize(img_tensor=img, gtboxes_and_label=gtboxes_and_label, target_shortside_len=shortside_len) img, gtboxes_and_label = image_preprocess.random_flip_left_right(img_tensor=img, gtboxes_and_label=gtboxes_and_label) else: img, gtboxes_and_label = image_preprocess.short_side_resize(img_tensor=img, gtboxes_and_label=gtboxes_and_label, target_shortside_len=shortside_len) return img_name, img, gtboxes_and_label, num_objects
def read_and_prepocess_single_img(raw_dataset, shortside_len, is_training): img_name, img, gtboxes_and_label, num_objects = read_single_example_and_decode(raw_dataset) img = tf.cast(img, tf.float32) img = img - tf.constant(cfgs.PIXEL_MEAN) if is_training: img, gtboxes_and_label = image_preprocess.short_side_resize(img_tensor=img, gtboxes_and_label=gtboxes_and_label, target_shortside_len=shortside_len) img, gtboxes_and_label = image_preprocess.random_flip_left_right(img_tensor=img, gtboxes_and_label=gtboxes_and_label) else: img, gtboxes_and_label = image_preprocess.short_side_resize(img_tensor=img, gtboxes_and_label=gtboxes_and_label, target_shortside_len=shortside_len) return img_name, img, gtboxes_and_label, num_objects
def read_and_preprocess_single_image(filename_queue, shortside_len, longside_len, is_training): image_name, image, gt_boxes_and_label = read_single_example_and_decode( filename_queue) image = tf.cast(image, tf.float32) # image = image - tf.constant([103.939, 116.779, 123.68]) if is_training: image, gt_boxes_and_label = image_preprocess.short_side_resize( image, gt_boxes_and_label, shortside_len, longside_len) image, gt_boxes_and_label = image_preprocess.random_flip_left_right( image, gt_boxes_and_label) # 随机水平翻转 else: image, gt_boxes_and_label = image_preprocess.short_side_resize( image, gt_boxes_and_label, shortside_len, longside_len) # image = tf.divide(image, 255.) return image_name, image, gt_boxes_and_label
def read_and_prepocess_single_img(filename_queue, shortside_len, is_training): img_name, img, gtboxes_and_label, num_objects = read_single_example_and_decode( filename_queue) img = tf.cast(img, tf.float32) if is_training: # prob is 0.3: convert to gray img = image_preprocess.random_rgb2gray( img_tensor=img, gtboxes_and_label=gtboxes_and_label) # rotate with 0.5 prob. and if rotate, if will random choose a theta from : tf.range(-90, 90+16, delta=15) img, gtboxes_and_label = image_preprocess.random_rotate_img( img_tensor=img, gtboxes_and_label=gtboxes_and_label) img, gtboxes_and_label = image_preprocess.short_side_resize( img_tensor=img, gtboxes_and_label=gtboxes_and_label, target_shortside_len=shortside_len, max_len=cfgs.IMG_MAX_LENGTH) img, gtboxes_and_label = image_preprocess.random_flip_left_right( img_tensor=img, gtboxes_and_label=gtboxes_and_label) img, gtboxes_and_label = image_preprocess.random_flip_up_dowm( img_tensor=img, gtboxes_and_label=gtboxes_and_label) else: img, gtboxes_and_label = image_preprocess.short_side_resize( img_tensor=img, gtboxes_and_label=gtboxes_and_label, target_shortside_len=shortside_len) if cfgs.MXNET_NORM: print("Use Mxnet Norm") img /= 255.0 img = img - tf.constant([[cfgs.MXNET_MEAN]]) img = img / tf.constant(cfgs.MXNET_STD) else: img = img - tf.constant([[cfgs.PIXEL_MEAN]]) # sub pixel mean at last if cfgs.NET_NAME.endswith(('b', 'd')): print("Note: Use Mxnet ResNet, But Do Not Norm Img like MxNet....") print('\n') return img_name, img, gtboxes_and_label, num_objects
def preprocess_img(img_plac, gtbox_plac): ''' :param img_plac: [H, W, 3] uint 8 img. In RGB. :param gtbox_plac: shape of [-1, 5]. [xmin, ymin, xmax, ymax, label] :return: ''' img = tf.cast(img_plac, tf.float32) # gtboxes_and_label = tf.cast(gtbox_plac, tf.float32) img, gtboxes_and_label = image_preprocess.short_side_resize(img_tensor=img, gtboxes_and_label=gtbox_plac, target_shortside_len=cfgs.IMG_SHORT_SIDE_LEN, length_limitation=cfgs.IMG_MAX_LENGTH) img, gtboxes_and_label = image_preprocess.random_flip_left_right(img_tensor=img, gtboxes_and_label=gtboxes_and_label) img = img - tf.constant([[cfgs.PIXEL_MEAN]]) img_batch = tf.expand_dims(img, axis=0) return img_batch, gtboxes_and_label
def next_batch(dataset_name, batch_size, shortside_len, is_training): ''' :return: img_name_batch: shape(1, 1) img_batch: shape:(1, new_imgH, new_imgW, C) gtboxes_and_label_batch: shape(1, Num_Of_objects, 5] .each row is [x1, y1, x2, y2, label] ''' assert batch_size == 1, "we only support batch_size is 1.We may support large batch_size in the future" if dataset_name not in ['jyzdata', 'DOTA', 'ship', 'ICDAR2015', 'pascal', 'coco', 'DOTA_TOTAL', 'WIDER']: raise ValueError('dataSet name must be in pascal, coco spacenet and ship') if is_training: pattern = os.path.join('/home/work/tfrecord/', dataset_name + '_val.tfrecord') else: pattern = os.path.join('/content/drive/', dataset_name + '_test.tfrecord') print('tfrecord path is -->', os.path.abspath(pattern)) # filename_tensorlist = tf.train.match_filenames_once(pattern) # filename_queue = tf.train.string_input_producer([pattern]) raw_dataset = tf.data.TFRecordDataset(pattern) raw_dataset = raw_dataset.map(_parse_image_function) raw_dataset = raw_dataset.repeat() raw_dataset = raw_dataset.shuffle(1000) raw_dataset = tf.data.make_one_shot_iterator(raw_dataset) # parsed_image_dataset = raw_image_dataset.map(_parse_image_function) # raw_dataset = tf.python_io.tf_record_iterator(path=pattern) shortside_len = tf.constant(shortside_len) shortside_len = tf.random_shuffle(shortside_len)[0] single_ex = raw_dataset.get_next() img_name = single_ex['img_name'] img_height = tf.cast(single_ex['img_height'], tf.int32) img_width = tf.cast(single_ex['img_width'], tf.int32) img = tf.decode_raw(single_ex['img'], tf.uint8) img = tf.reshape(img, shape=[img_height, img_width, 3]) gtboxes_and_label = tf.decode_raw(single_ex['gtboxes_and_label'], tf.int32) gtboxes_and_label = tf.reshape(gtboxes_and_label, [-1, 9]) num_obs = tf.cast(single_ex['num_objects'], tf.int32) img = tf.cast(img, tf.float32) img = img - tf.constant(cfgs.PIXEL_MEAN) if is_training: img, gtboxes_and_label = image_preprocess.short_side_resize(img_tensor=img, gtboxes_and_label=gtboxes_and_label, target_shortside_len=shortside_len) img, gtboxes_and_label = image_preprocess.random_flip_left_right(img_tensor=img, gtboxes_and_label=gtboxes_and_label) else: img, gtboxes_and_label = image_preprocess.short_side_resize(img_tensor=img, gtboxes_and_label=gtboxes_and_label, target_shortside_len=shortside_len) # img_name, img, gtboxes_and_label, num_obs = read_and_prepocess_single_img(raw_dataset, shortside_len, # is_training=is_training) img_name_batch, img_batch, gtboxes_and_label_batch , num_obs_batch = \ tf.train.batch( [img_name, tf.to_float(img), gtboxes_and_label, num_obs], batch_size=batch_size, capacity=1, num_threads=1, dynamic_pad=True) return img_name_batch, img_batch, gtboxes_and_label_batch, num_obs_batch