我正在使用KITTI的目标检测数据集来训练一个更快的R-CNN和ResNet 101,在COCO女士上预先训练过。KITTI图像“大部分”尺寸为375x1242
当我有batch_size: 1
时,一切都很完美。我的keep_aspect_ratio_resizer
如下所示,它是由TensorFlow自己提出的。在
min_dimension: 600
max_dimension: 1987
但现在我想使用批处理大小:5,但我不断得到维度不匹配错误。因为有些图像的尺寸稍小,比如370x1224等等
我找不到通用的keep_aspect_ratio_resizer
值。我尝试了下面的一个基于我在错误消息中看到的值的值,但我不能使所有的图像大小都一样
您可以自己调整图像大小以避免舍入误差或您可以尝试将相同大小的项目分组到一起。在
假设您有一个图像生成器,并且这些图像具有一个大小属性,则可以创建一个生成器,该生成器将生成一批大小相同的图像,如下所示:
这里的主要部分是groupby,它按同一个键对连续的项进行分组,并返回该键和匹配该键的项的生成器。在我们的例子中,关键是图像的大小。在
然后,我们保存一个相同大小的项目的缓存,每当其中一个大小达到我们想要的批大小时,我们就会为该批生成一个生成器。在
我们可以用一个具有所需大小参数的假图像对象演示此操作:
^{pr2}$结果如下:
如果我们没有足够的空间填充一个批量大小的块,我们不能保证生成所有的图像,但是如果输入是一个无限的生成器,这不是问题。在
通过将
tf.image.resize_image_with_crop_or_pad(images, max_height, max_width)
添加到https://github.com/tensorflow/models/blob/master/research/object_detection/legacy/trainer.py中的create_input_queue()
进行修复相关问题 更多 >
编程相关推荐