【发布时间】: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
-
此代码是否会将增强随机应用于任何输入批量图像
-
当我给
RandomCrop时,为什么它会爆炸损失?FloatingPointError:预测框或分数包含 Inf/NaN。训练有分歧。
【问题讨论】:
-
在输入到网络之前是否对图像进行了归一化处理?
-
你必须在 transform_list 中进行标准化吗?
-
我正在使用detectron2并尝试自定义它
-
然后检查detectron2 文档,了解他们是否正在执行标准化,或者他们是否期望已经标准化的图像。如果后者是真的,那么是的,
transform_list应该有规范化。 -
我不确定他们是否使用了标准化
标签: computer-vision pytorch crop detectron