在完成了Mask RCNN的demo复现工作之后,用maskrcnn训练自己的数据集时,图片已标记完成,代码也已改好(代码修改参考的是博客:https://blog.csdn.net/u012746060/article/details/82143285#commentsedit),代码运行时报错
boolean index did not match indexed array along dimension 0; dimension is 4 but corresponding boolean dimension is 2
或与其类似的错误,布尔操作、矩阵。。。。。并不理解是什么原因,经过几天的研究后终于发现,是图片大小的原因。
我将图片大小统一改成1024*512,png格式,301张,命名为 image_000000.png~~~image_000300.png,代码还在训练中,由于我只有一块GPU,估计训练的时间会很长。
除此之外,我在尝试的过程中,还发现了如下问题:
1. 在https://blog.csdn.net/qq_29462849/article/details/81037343#commentsedit里的一张图,其中ETA为该图片训练的时间,第一个loss为后面五个loss之和,训练的epochs的不同应该是使loss越来越小,该图中loss已达到0.028附近,训练的效果较好(该例子训练集共有700张图片)
2. 在测试的代码里面,
这个位置若报错:(原谅我具体什么错误记不清了,当时忘记截屏了,大概是什么model找不到。。)将上面 model.load_weights(COCO_MODEL_PATH,by_name=True) 改成
model.load_weights(COCO_MODEL_PATH,by_name=True,exclude=["mrcnn_class_logits","mrcnn_bbox_fc","mrcnn_bbox","mrcnn_mask"])
3. 关于 labelme 编辑好的图片如何转化为 img.png , info.yaml , label.png , label_names.txt , label_viz.png 这五种格式的问题:
(1)打开anaconda prompt ,创建一个叫 labelme 的环境,
(2)键入activate labelme
(3)键入labelme 开始标记
(4)在图片所在的文件夹下面新建一个文件夹用于存放.json格式的文件(如:json文件夹),将标记好的json文件全部存在该文件夹下;
(5)打开python编辑器(我的是pycharm)键入:
import os
path='E:\\\\photos\\\\json\\\\' # path是你存放json的路径
json_file = os.listdir(path)
for file in json_file:
os.system("python E:\\\\anaconda\envs\labelme\Scripts\labelme_json_to_dataset.exe %s" % (path + file)) ###此处为你anaconda所在的文件夹
(6)发现json文件夹里面出现一堆 xxxxx_json文件夹,打开文件夹发现里面的 label.png 是彩色的,说明其已经是8bit了,不应再进行格式上的转换。
4. jupyter notebook如何出现行数:View---Toggle Line Numbers 即可。
5. 打开 Mask_RCNN/samples/balloon/balloon.py 发现里面的代码和我们的不一样,研究代码发现,它是用VGG Image Annotator (VIA)进行标记的,所以如果你也是用VIA进行标记的,就可以参照 balloon.py 的代码(不过我还没满月用过VIA)。
6. 其余的就是一些小错误:比如某处缩进不对,某处出现了中文字符。。。。。就讲报错的行数改改即可。
7. 关于图片尺寸以及训练的快慢问题:我的图片大小是1024*512的,训练起来特别慢,一块GPU;不知道你们训练的时候快慢如何呢?欢迎留言讨论;
后续再发现什么问题,会继续添加,希望此博客可以帮助到有同样问题的你。