mayorx/PointDETR

请问给的标注文件的points的生成方式和代码里训练阶段的生成方式(relative_x,relative_y)一样吗?

Opened this issue · 6 comments

请问给的标注文件的points的生成方式和代码里训练阶段的生成方式(relative_x,relative_y)一样吗?

Hi, Flyooofly,
感谢您对PointDETR的关注, 抱歉回复的有些晚。
如我们在文章中所说的:
截屏2022-10-10 上午10 49 00

如果有seg mask的物体, 是从mask里随机选一个点作为标注; 对于没有mask的物体, 则是bounding box中随机选一个点作为标注。
代码大意如下:

def draw_mask(seg, wh):
    rles = mask_utils.frPyObjects(seg, wh, wh)
    rle = mask_utils.merge(rles)
    mask = mask_utils.decode(rle)
    return mask

....
    seg = annos[i]['segmentation']
    box = annos[i]['bbox']

    wh = int(max(box[0]+box[2], box[1]+box[3]))+1

    mask = draw_mask(seg, wh)

    points = np.where(mask==1)
    points = np.stack((points[1], points[0]))
    points = points.transpose()

    if len(points) == 0: # too small objects
        random_point = np.array([box[0] + box[2] * np.random.rand(), box[1] + box[3] * np.random.rand()])
    else:
        random_point = points[np.random.randint(0, len(points))]

希望能帮到您

  1. 十个点的生成方式是都是这种方式。之所以生成十个点是为了多次实验取平均, 实际一次实验的整个过程中只会用到十个点中的一个。

  2. 我们假设标注人员只标注了一个点。 如果在训练阶段也仅使用标注文件中的点, 则训练时数据量非常少, 可能会影响性能。

  1. 十个点的生成方式是都是这种方式。之所以生成十个点是为了多次实验取平均, 实际一次实验的整个过程中只会用到十个点中的一个。
  2. 我们假设标注人员只标注了一个点。 如果在训练阶段也仅使用标注文件中的点, 则训练时数据量非常少, 可能会影响性能。

您好,再打扰您一下。我阅读了论文的实验部分,发现对于FCOS and Faster R-CNN作为教师模型时为了适配点标注方式,对模型做了一些修改。虽然在论文中也阐释了修改的思路,但还是想问下可以开源这部分的实验代码吗,小白改代码不太会改/(ㄒoㄒ)/~~,谢谢。

gnftau commented
  1. 十个点的生成方式是都是这种方式。之所以生成十个点是为了多次实验取平均, 实际一次实验的整个过程中只会用到十个点中的一个。
  2. 我们假设标注人员只标注了一个点。 如果在训练阶段也仅使用标注文件中的点, 则训练时数据量非常少, 可能会影响性能。

您好,再打扰您一下。我阅读了论文的实验部分,发现对于FCOS and Faster R-CNN作为教师模型时为了适配点标注方式,对模型做了一些修改。虽然在论文中也阐释了修改的思路,但还是想问下可以开源这部分的实验代码吗,小白改代码不太会改/(ㄒoㄒ)/~~,谢谢。

您好,我最近也在做point的工作,您还在做这方面的工作吗?可以的话能跟您请教一下嘛?