目前VisionTrain的各类版本中,暂不支持对图像分割的各个类别做样本筛选,只支持OK和NG的搜索方法。
在日常使用中,尤其是多分类分割任务下,可能会遇到以下情况:
1. 多位操作员进行标注,在数据合并后发现有因为拼音错误、手误等原因,导致出现新的类别,但数据量庞大,定位该类别的出现位置十分困难
2. 对于某个类别的标注,需要合并或更改类别名,使类别区分更加合理
3. 多位操作员进行标注,但类别名顺序不同,合并后导致label_color乱序的情况
了解原理:
VisionTrain的图像分割在标注后,会生成原图带有的gt文件(或称作掩膜图)以及对应xml文件:
其中xml是根据gt图生成的点坐标和类别信息,类似htm的格式。可以看到类别对应<flags>class</flags>:
结论:只需要匹配查找到所需要的类别名,再做相应操作(如替换)即可
解决思路:
下面根据python正则匹配方法找到类别青斑:
1. 记录文件路径
上述查找文件的方法比较局限,简单的用点符号定位,各位根据所需可以继续拓展。
2. 匹配对象格式:pattern = re.compile(r'(<flags>)+(青斑)+(</flags>)+')
若需要全部查找或合并,则为pattern = re.compile(r'(<flags>)+.*+(</flags>)+')
3. 根据列表存储的xml绝对路径,打开文件,逐行匹配,找到该类别则输出绝对路径,方便复制路径,以找到该文件。
4. 运行结果,复制第二行的文件路径,到训练集中即可找到。
同理,也可根据匹配到的字符串,直接修改此类别名。
1. 如下图,修改f.write()方法,objText为需替换的字符,即匹配到的所有字符,changeText则是替换内容。
2. 打开visionTrain观察到类别已全部被修改
3. 统一修改的方式同步也解决了label_color乱序的问题