最先生成的json文件里面记录着图像轮廓的坐标和类别,需要将json文件转换成png格式的mask文件,使用的是labelme的labelme_json_to_databaset函数,执行json2dataset.py文件可以批量转换,生成的文件夹如图1所示,文件夹里面的文件如图2
图1
图2
首先创建一个文件夹,我这里叫的是data,在里面创建四个文件夹,存放内容和名字需要如下图一致:
数据集文件夹data中各个文件夹的说明
png最初你看到的应该是label.png,需要对此简单重命名为1.png(否则后面就要去训练代码中改,比较麻烦),比如你的json文件夹叫1_json,那这个png的图就应该改成1.png
在msak-rcnn的目录下找到train.py,修改以下地方
- NUM_CLASS,类别总数,后面的加1是背景,不用改
- 添加自己的类别,这里的类别名字要与label保持一致,否则会报错
- 修改这里的leibie1为自己对应的名字
- 修改数据集所在的路径dataset_root_path =”sample/data/”
- 其他设置
默认batch_size设置为8,效果还可以(除非你的数据集特别大/小的时候需要调整)
epoch的设置在代码最后面。
step的设置在代码前段,默认是50,改的话最好是50的倍数,因为模型的日志保存是每100步保存一次,我之前把它设置成30结果tensorboard什么也没存下来(也有可能是我的问题,没仔细看),当然你也可以修改模型保存的参数。
anchor的尺寸,在step设置的前面。
可能会遇到的问题:
会提示一堆缺少model,根据提示安装它就可以了。
如果报了错误IndexError: boolean index did not match indexed array along dimension 0; dim
dimension相关的错误,要么是你的数据没有没有处理好(比如名称、路径不对,labelme中的类别名和代码中的类别名不匹配等等),要么是代码里的类别数量没设置对,或者某些拼写错误,总之仔细检查一遍应该可以解决。