【问题标题】:Give randomCrop augmentation and loss become explode给 randomCrop 增加和损失变得爆炸
【发布时间】:2021-03-04 12:17:09
【问题描述】:

我正在尝试测试不同类型的增强,
但是当我使用 RandomCrop 给出选项时,它给出的损失值是 NaN 或无穷大。

这是我的随机增强优化

def mapper2(dataset_dict):
    dataset_dict = copy.deepcopy(dataset_dict)  # it will be modified by code below
    image = utils.read_image(dataset_dict["file_name"], format="BGR")    
    transform_list = [
                     T.RandomFlip(prob=0.5, horizontal=True, vertical=False), 
                     T.ResizeShortestEdge(short_edge_length=(640, 672, 704, 736, 768, 800), max_size=1333, sample_style='choice')

                     ,T.RandomCrop('relative_range', (0.9, 0.9))
                      ]
    image, transforms = T.apply_transform_gens(transform_list, image)
    dataset_dict["image"] = torch.as_tensor(image.transpose(2, 0, 1).astype("float32"))

    annos = [
        utils.transform_instance_annotations(obj, transforms, image.shape[:2])
        for obj in dataset_dict.pop("annotations")
        if obj.get("iscrowd", 0) == 0
    ]

    instances = utils.annotations_to_instances(annos, image.shape[:2])
    dataset_dict["instances"] = instances
    return dataset_dict
  1. 此代码是否会将增强随机应用于任何输入批量图像

  2. 当我给RandomCrop 时,为什么它会爆炸损失?

    FloatingPointError:预测框或分数包含 Inf/NaN。训练有分歧。

【问题讨论】:

  • 在输入到网络之前是否对图像进行了归一化处理?
  • 你必须在 transform_list 中进行标准化吗?
  • 我正在使用detectron2并尝试自定义它
  • 然后检查detectron2 文档,了解他们是否正在执行标准化,或者他们是否期望已经标准化的图像。如果后者是真的,那么是的,transform_list 应该有规范化。
  • 我不确定他们是否使用了标准化

标签: computer-vision pytorch crop detectron


【解决方案1】:
  1. 没有。它会随机翻转一个图像,每张图像都有 50% 的可能性。它会 100% 调整大小并随机裁剪每张图片。
  2. 它可能会爆炸,因为它调整了图像的大小,而不是裁剪我可以成像的同一图像有时会导致问题。最好只使用 1 个调整大小或裁剪参数

【讨论】:

    猜你喜欢
    • 2018-08-07
    • 2018-09-06
    • 2020-07-01
    • 2021-07-24
    • 2021-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-08
    相关资源
    最近更新 更多