有任何问题欢迎在下面留言
本篇文章的代码运行界面均在Pycharm中进行
本篇文章配套的代码资源已经上传
Mask R-CNN for Object Detection and Segmentation
MaskRCNN是一个通用的物体检测框架,不仅仅有检测,还有分类,是一个在计算机视觉中非常重要、非常有意义、非常有趣的一个项目或者论文。
即便相同的都是车,也用了不同颜色来区分,因为这里做了一个实例分割的操作,使用掩码把车全部标注出来了
这是在道路上实时的检测车和行人,只有语义分割,没有实例分割
这是实时的检测气球
这是实际工业上的检测
医学中的细胞检测
这些都是使用MaskRCNN训练自己的数据的任务,在这个GitHub项目中还有很多各种各样的数据。
MaskRCNN是计算机视觉中一个比较通用的框架,不光能做检测,比如论文中提到的人体关键点识别、姿态识别、骨架图的建设、行为识别,很多传统的计算机视觉任务都能套用到MaskRCNN当中。
所以说这个框架的学习价值是非常大的。
在GitHub项目中,提供了多个不同版本的MaskRCNN
直接使用2.1版本去做就可以了,这个版本是在一个气球数据集上做的,coco数据集实在太大了
第一个是数据集
第二个是专门的气球数据集的预训练权重
第三个和第四个都是源码
ballon文件夹就是这个气球数据集,一共两个train和val:
训练集有62张图像,验证集有14张图像mask_rcnn_coco.h5,就是预训练权重
samples/balloon/logs就是训练模型保存的位置,会自动根据时间来保存
inspect_balloon_data.ipynb、inspect_balloon_model.ipynb、inspect_weights.ipynb是在jupyter notebook中打开,是对训练数据、模型、训练权重的一些解释,一些可视化操作方便理解模型的
项目中涉及到的代码文件比较多,算上所有空白、注释一共有13859行代码,去掉空白和注释有6767行代码,主要的核心操作其实都在model.py中
在model.py中,有2560行代码,在代码量上可以说是非常多的
这还是没算上辅助函数
运行这个项目的文件主要是这个:
samples/balloon/balloon.py,训练验证都是这个文件,根据命令行参数来选择进行训练还是验证:
验证和测试的配置参数:
训练配置参数
train
--dataset=../../balloon
--weights=coco
测试配置参数
splash
--weights=./logs/balloon20191023T1451/mask_rcnn_balloon_0030.h5
--image=../../balloon/val/14898532020_ba6199dd22_k.jpg
运行本项目的环境:
python3.7
numpy
scipy
Pillow
cython
matplotlib
scikit-image
tensorflow1.5.0
keras2.0.8
opencv-python
h5py
imgaug
protobuf3.20
这个版本确实太老了,但是老版本稳定啊,因为MaskRCNN这个项目本来就很老,这里一定注意protobuf==3.20,比这个版本高的话就无法运行了