最近在尝试使用Mask RCNN训练一个工件识别的网络,但是在准备数据集遇到了问题,看了很多篇文章发现讲的都不够详细,最后本人决定实验一下,毕竟实践出真知。
如上图,图中有两类目标,其中一类是bolt(螺栓),另一类是nut(螺母),且两类都存在多个目标,这时候该怎么标注。
首先是第一种方法,整体划分两类,然后分别将对应的物体归到对应类中,如下图。
这种标注方式乍看之下没有问题 ,笔者最初也是采取这种方式标注的,但是训练好模型后,用图片去验证,发现整个图片中所有的螺母或者螺栓会被归为同一类。没有实现分割的效果,但是如果整个图片里只有一个螺栓和一个螺母则显示正常。
效果笔者忘记保存了,这里用画图工具简单表示一下。
我们想要的效果:
但是实际的效果:
第二种方法,将图片中的同类目标按bolt1,bolt2,nut1,nut2的方式进行命名,效果如下。
这种标注方式,最初笔者觉得有点问题,因为这样标注,像是整个数据集多出了bolt2,nut2这些类一样,不知道在NUM_CLASSES 和class_names这些需要表出类的地方填什么合适。
但是测试发现NUM_CLASSES = 1+2 ;class_names =[‘BG’, ‘nut’,‘blot’]采用第二种方式就可以得到我们想要的结果。
具体原理咱也不懂,如果有大佬看到希望可以解惑,感激不尽。