如何解决如何避免在推理过程中出现重叠的关键点?
我一直在使用 Detectron2 来识别每张图像上的 4 个关键点, 我的虚拟数据集包含 1000 张图像,我应用了增强。
def build_train_loader(cls,cfg):
augs = [
T.RandomFlip(prob=0.5,horizontal=True),T.RandomFlip(prob=0.5,horizontal=False,vertical=True),T.Randomrotation(angle=[0,180]),T.RandomSaturation(0.9,1.9)
]
return build_detection_train_loader(cfg,mapper=DatasetMapper(cfg,is_train=True,augmentations=augs)
)
我在应用了那些变换之后检查了图像(每种类型的变换都分别进行了测试),看起来效果很好,关键点定位正确。
现在在训练阶段(keypoint_rcnn_R_50_FPN_3x.yaml)之后, 我得到了一些相同的关键点,这意味着在许多图像中关键点重叠, 以下是我的结果中的一些示例:
[[[180.4211,332.8872,0.7105],[276.3517,369.3892,0.7390],366.9956,0.4788],[220.5920,296.9836,0.9515]]]
来自另一张图片:
[[[611.8049,268.8926,0.7576],[611.8049,1.2022],[699.7122,261.2566,1.7348],[724.5556,198.2591,1.4403]]]
我比较了有增强和没有增强的推理结果, 似乎通过增强,关键点几乎没有得到认可。天哪,怎么可能?
有人可以建议任何想法如何克服这些错误吗? 我做错了什么?
谢谢!
我添加了一个指向我的 google colab 笔记本的链接: https://colab.research.google.com/drive/1uIzvB8vCWdGrT7qnz2d2npEYCqOxET5S?usp=sharing
解决方法
问题是矩形的不同角没有什么独特之处。但是,在您的注释和损失函数中,有一个隐式假设,即角的顺序很重要:
角以特定顺序标记,网络经过训练以按特定顺序输出角。
然而,当你通过翻转和旋转图像来扩充数据集时,你改变了角的隐含顺序,现在网络不知道每次预测四个角中的哪一个。
据我所知,您有两种解决此问题的方法:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。