代码之家  ›  专栏  ›  技术社区  ›  Matěj Račinský

Tensorflow数据集api筛选无效图像[重复]

  •  0
  • Matěj Račinský  · 技术社区  · 6 年前

    简短版本:

    使用数据集时 map 操作,是否可以指定 地图 调用会导致错误被悄悄地过滤掉,而不是让错误冒泡并杀死整个会话?

    具体内容:

    我设置了一个输入管道(或多或少)执行以下操作:

    1. 读取本地存储的图像(不同尺寸的图像)的一组文件路径
    2. 从csv中读取一组建议的“边界框”
    3. 生成所有图像路径到边界框组合的集合
    4. 读取并解码图像,然后使用 tf.image.crop_to_bounding_box

    我的问题是,我建议的边界框超出给定图像边界的情况(非常罕见),所以(可以理解) tf。形象裁剪到边界框 抛出如下错误:

    tensorflow.python.framework.errors_impl.InvalidArgumentError: assertion failed: [width must be >= target + offset.]
    

    这会扼杀整个会话。

    我更希望忽略这些错误,并将管道转移到下一个组合。

    (我知道 对的 解决这个特定问题的方法是,在之前的步骤中,花时间检查每个边界框和图像尺寸是否可行,并使用 filter 在到达机场前进行了手术 地图 与种植操作有关。我想知道是否有一种简单的方法可以忽略一个错误,然后继续下一种情况,以便在这个特定情况下以及在更一般的情况下易于实现)

    0 回复  |  直到 6 年前
        1
  •  3
  •   fsan    4 年前

    tf.contrib.data.ignore_errors .我自己从来没试过,但根据 the docs 用法很简单

    dataset = dataset.map(some_map_function)
    dataset = dataset.apply(tf.contrib.data.ignore_errors())
    

    它应该只传递输入(即返回相同的数据集),但忽略任何引发错误的数据集。