原文地址:http://siligence.ai/article-446-1.html
前言
最近迷上了mask rcnn,也是由于自己工作需要吧,特意研究了其源代码,并基于自己的数据进行训练~
本博客参考https://blog.csdn.net/disiwei1012/article/details/79928679#commentsedit
实验目的哎~说多了都是泪,谁让我是工科生呢?只能检测工件了。。。做不了高大上的东西了,哈哈!
主要参考及工具
基于Mask RCNN开源项目:https://github.com/matterport/Mask_RCNN
图片标记工具基于开源项目:https://github.com/wkentaro/labelme
训练工具:win10+GTX1060+cuda9.1+cudnn7+tensorflow-gpu-1.6.0+keras-2.1.6,140幅图像,一共3类,1小时左右
有关labelme的使用可以参考:https://blog.csdn.net/shwan_ma/article/details/77823281](https://blog.csdn.net/shwan_ma/article/details/77823281
有关mask-rcnn和Faster RCNN算法可以参考:
https://blog.csdn.net/linolzhang/article/details/71774168](https://blog.csdn.net/linolzhang/article/details/71774168
https://blog.csdn.net/lk123400/article/details/54343550/](https://blog.csdn.net/lk123400/article/details/54343550/
准备训练数据集
这是我简历的四个文件夹,下面一一道来~
1.pic
这是训练的图像 ,一共700幅
2.json
这是通过labelme处理训练图像后生成的文件
3.labelme_json
这个是处理.json文件后产生的数据,使用方法为labelme_json_to_dataset+空格+文件名称.json,这个前提是labelme要准确安装并激活。但是这样会产生一个问题,对多幅图像这样处理,太麻烦,在这里提供一个工具,可以直接在.json文件目录下转换所有的json文件,链接:https://download.csdn.net/download/qq_29462849/10540381。
4.cv2_mask文件
由于labelme生成的掩码标签 label.png为16位存储,opencv默认读取8位,需要将16位转8位,可通过C++程序转化,代码请参考这篇博文:http://blog.csdn.net/l297969586/article/details/79154150
一团黑,不过不要怕,正常的~
源代码
运行该代码,需要安装pycocotools,在windows下安装该工具非常烦,有的可以轻松的安装成功,有的重装系统也很难成功,哎,都是坑~~关于Windows下安装pycocotools请参考:
https://blog.csdn.net/chixia1785/article/details/80040172]
(https://blog.csdn.net/chixia1785/article/details/80040172,
https://blog.csdn.net/gxiaoyaya/article/details/78363391]
(https://blog.csdn.net/gxiaoyaya/article/details/78363391
测试的源代码
Github上开源的代码,是基于ipynb的,我直接把它转换成.py文件,首先做个测试,基于coco数据集上训练好的模型,可以调用摄像头~~~
[代码]py代码:`import os
import sys
import random
import math
import numpy as np
import skimage.io
import matplotlib
import matplotlib.pyplot as plt
import cv2
import time
Root directory of the project
ROOT_DIR = os.path.abspath("…/")
Import Mask RCNN
sys.path.append(ROOT_DIR) # To find local version of the library
from mrcnn import utils
import mrcnn.model as modellib
from mrcnn import visualize
Import COCO config
sys.path.append(os.path.join(ROOT_DIR, “samples/coco/”)) # To find local version
import coco
Directory to save logs and trained model
MODEL_DIR = os.path.join(ROOT_DIR, “logs”)