deeplabv3+: 输入模块全解析 输入数据 更多维度 多标注

本文详细解析了如何将数据转换为TFRecord并构建TensorFlow Dataset,适用于Deeplabv3+框架。主要步骤包括:将源数据(如图像和矩阵)通过build_data.py转化为TFRecord,然后使用data_generator.py创建Dataset。在处理过程中,需要修改数据读取、转换和预处理部分,以便支持多维度和多标注数据。预处理包括图像和新数据的缩放、多尺度测试及padding等操作。
摘要由CSDN通过智能技术生成

之前已经讲过了generator,这次是要建立一个更详细的框架,数据到底怎么被处理的。可以作为样例学习。写的并不详细,因为你如果要做更深的工作,你需要很高自主能力,大多数人都具备,所以我就不废话了(主要是忙)。

源数据:图片/矩阵

目标数据:tensorflow 标准的Dataset

主要过程:

  1. 源数据->build_voc_data.py->tfrecord
  2. tfrecord->data_generator.py->Dataset

第一步将数据转换成tfrecord

直接读入的是二进制图像数据

之后利用类build_data.py直接将其转换成feature存入tfrecord,其实就是转换一下格式成为feature,然后用tf.train.Example画个格子装进去。

所以如果要多存入一些数据,比如深度数据,比如视频数据,那就需要改三个点:

1.build_data.py :def image_seg_to_tfexample加入你自己的定义。注意你的数据如果是整数就用_int64,浮点数就自己写个浮点数的,或者用string

  return tf.train.Example(features=tf.train.Features(feature={
      'image/encoded': _bytes_list_feature(image_data),
      'image/filename': _bytes_list_feature(filename),
      'image/format': _bytes_list_feature(
          _IMAGE_FORMAT_MAP[FLAGS.image_format]),
      'image/height': _int64_list_feature(height),
      'image/width': _int64_list_feature(width),
      'image/channels': _int64_list_feature(3),
      'image/segmentation/class/encoded': (
          _bytes_list_feature(seg_data)),
      'image/segmentation/class/format': _bytes_list_feature(
          FLAGS.label_format),
  }))

2.build_voc_data.py:读入你自己的数据,下面就是读取图像和标注。你需要写你自己的数据读入。

        image_filename = os.path.join(
            FLAGS.image_folder, filenames[i] + '.' + FLAGS.image_format)
        image_data = tf.gfile.FastGFile(image_filename, 'rb').read()
        height, width = image_reader.read_image_dims(image_data)
        # Read the semantic segmentation annotation.
        seg_filename = os.path.join(
            FLAGS.semantic_segmentation_folder,
            filenames[i] + '.' + FLAGS.label_format)
        seg_data = tf.gfile.FastGFile(seg_filename, 'rb').read()
        seg_height, seg_width = label_reader.read_image_dims(seg_data)

3.build_voc_data.py:传递你的数据直接转换。

        example = build_data.image_seg_to_tfexample(
            image_data, filenames[i], height, width, seg_data)

第二步通过tfrecord建立Dataset

1.主函数是data_generator,调用了input_preprocess.py,preprocess调用了core.preprocess_utils.py

data_generator 读取tfrecord 需要改变features字典

    features = {
        'image/encoded':
            tf.FixedLenFeature((), tf.string, default_value=''),
        'image/filename':
            tf.FixedLenFeature((), tf.string, default_value=''),
        'image/format':
            tf.FixedLenFeature((), tf.string, default_value='jpeg'),
        'image/height':
            tf.FixedLenFeature((), tf.int64, default_value=0),
        'image/width':
            tf.FixedLe
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值