人工智能开源项目之Mask_RCNN训练自己的模型

正文

1 数据集准备

1)拍摄
用自己的摄像头拍下物体,每个物体准备170张吧,为了方便,可以把不同物体放到同一图像中拍摄。

2)标注
参考: https://blog.csdn.net/sunmingyang1987/article/details/104246278

Labelme 是一个图形界面的图像标注软件。其的设计灵感来自于 http://labelme.csail.mit.edu/ 。它是用 Python 语言编写的,图形界面使用的是 Qt(PyQt)。
Labelme 可实现的功能:
(1)对图像进行多边形,矩形,圆形,多段线,线段,点形式的标注(可用于目标检测,图像分割,等任务)。
(2)对图像进行进行 flag 形式的标注(可用于图像分类 和 清理 任务)。
(3)视频标注
(4)生成 VOC 格式的数据集(for semantic / instance segmentation)
(5)生成 COCO 格式的数据集(for instance segmentation)
coco数据集的格式正是我们需要的

安装

#还没安装pyqt5,需要安装pyqt5
sudo apt-get install python3-pyqt5
#还没安装pillow,安装pillow
pip3 install pillow
#安装labelme
pip3 install labelme

使用还是很简单的,这里不赘述了。在这里插入图片描述

2 训练代码

通过标注会发现这东东就是分类标签和点集,所以这类基于形状的分类训练代码应该是一毛一样的,因为没啥差别,除了更换数据集和标签分类,木有其他变化。那么就参考官方的例子就ok了。
参考项目目录下 samples/shapes/train_shapes.ipynb

主要需要修改

"""
    Extend the Dataset class and add a method to load the shapes dataset, load_shapes(), and override the following methods:

    load_image()
    load_mask()
    image_reference()
    """

ps: 看说明就知道,主要修改数据加载部分,重写load_shapes加载自定义的数据,
load_image 返回imageid对应的图像
load_mask 返回对应标注的mask
image_reference 貌似不用怎么改

运行训练:

[问题1] tf.reduce_mean got an unexpected keyword argument ‘keepdims’
位于 mrcnn/model.py
由于安装的是tf 1.3.0 keepdims 需要改成keepdims
改完记得重新安装mask_rcnn
sudo python3 setup.py install

开始训练了,发现太慢,决定使用tensorflow-gpu来训练

3 gpu训练

前置的硬件gpu,安装驱动, cuda 等等不说了
我用的cuda 10 ,查看对应版本
在这里插入图片描述
至少得装tensorflow_gpu-1.13.0

如果还报错,请运行

sudo ldconfig  /usr/local/cuda-10.0/lib64

接着训练,会发现 [问题1] 中的keepdims不用改了,然后

然后就死机了- -!

打开了nvidia监视,发现是显存爆满,需要把每个gpu计算的图片降为1

接着运行:
[问题2] Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR
其实还是显存占满了导致的,配置keras的gpu使用率

import tensorflow as tf
from keras.backend.tensorflow_backend import set_session
config = tf.ConfigProto()
config.gpu_options.per_process_gpu_memory_fraction = 0.3
set_session(tf.Session(config=config))

[问题3] 出现告警:Input image dtype is bool. Interpolation is not defined with bool data type
解决办法是给 scikit-image 降级
pip install -U scikit-image==0.16.2

最终可以愉快的玩耍了:
在这里插入图片描述

训练完毕会在logs目录中产生权重文件
在这里插入图片描述

3-1 训练大图

当使用mask_rcnn训练1080p大图时gpu报OOM,目前还没解决,有知道的大佬告知一下。

改为cpu训练,安装了tf1.13.0 , 然后修改/mrcnn/model.py下的,max_queue_size=100 改为 max_queue_size=10

self.keras_model.fit_generator(
            train_generator,
            initial_epoch=self.epoch,
            epochs=epochs,
            steps_per_epoch=self.config.STEPS_PER_EPOCH,
            callbacks=callbacks,
            validation_data=val_generator,
            validation_steps=self.config.VALIDATION_STEPS,
            max_queue_size=10,
            workers=workers,
            use_multiprocessing=True,
        )

4 使用

使用代码参考samples/demo.ipynb即可

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值