使用单个 class 为小型数据集构建对象检测器

Building an object detector for a small dataset with a single class

我有一个 class(矩形对象)的数据集,大小为 130 张图像。我的目标是检测物体并在物体的中心画一个 circle/dot/mark。

因为物体是矩形的,所以我的想法是获取预测边界框的尺寸并将circle/dot/mark取为(width/2,height/2)。

但是,如果我要进行迁移学习,YOLO 是否是检测小型数据集中单个 class 对象的好选择?

YOLO 应该没问题。不过现在已经老了。试试 YoloV4 以获得更好的结果。 人们已经尝试从 FasterRCNN 迁移学习来检测具有 300 张图像的单个对象,并且效果很好。 (Link)。但是 130 张图像有点小。如果结果不佳,请尝试增强图像 - 翻转、旋转等。

在进行平移、旋转、翻转增强时,也对注释使用相同的增强。例如在pytorch中,为了分割,我使用:

    if random.random()<0.5:   # Horizontal Flip
        image = T.functional.hflip(image)
        mask  = T.functional.hflip(mask)

    if random.random()<0.25:  # Rotation
        rotation_angle = random.randrange(-10,11)
        image = T.functional.rotate(image,angle = rotation_angle)
        mask  = T.functional.rotate(mask ,angle = rotation_angle)

对于边界框,您必须创建坐标,对于水平翻转,x 变为 width-x

对象位置不变的增强:不更改注释,例如:伽马强度变换