Mask_RCNN-master的训练步骤

参考网站  https://blog.csdn.net/qq_29462849/article/details/81037343

248  上  Mask_RCNN-master的训练步骤,它是基于tensorflow 的

项目位于:/home/huoo/tensorflow-api-liulina/Mask_RCNN-master

标注工具:labeme 

本文采用的是COCO数据集格式

一、准备训练数据集

训练数据集格式

下图中四个文件夹中是准备训练的数据

  1. Pic

里存放的是待训练的图像,一共20000,全部来自于生产数据。

2. Json

这是通过labelme标注后生成的文件

3.1批量修改文件名(如jpg,json)

代码位置:G:\PycharmProjects\python35\ModifyJSON\reFilename.py   如下:

#coding=utf-8
import os
path = "G:\\xpaper\\damageImg\\test1600"
# 获取该目录下所有文件,存入列表中
fileList = os.listdir (path)
n = 0
for i in fileList:
    print("i---",i)
    # 设置旧文件名(就是路径+文件名)
    oldname = path + os.sep + fileList[n]  # os.sep添加系统分隔符
    print("oldname:",oldname)
    if os.path.splitext(oldname)[1] == ".jpg":
        # 设置新文件名
        print("-------------")
        newname = path + os.sep+"a"+str(n+1)+".jpg"
        print("newname:",newname)
        os.rename (oldname, newname)  # 用os模块中的rename方法对文件改名
        print (oldname, '======>', newname)
        n += 1
        print("n---",n)
    if os.path.splitext(oldname)[1] == ".json":
        # 设置新文件名
        newname = path + os.sep+"a"+str(n)+".json"
        print ("newname---json:", newname)
        os.rename (oldname, newname)  # 用os模块中的rename方法对文件改名
        print (oldname, '======>', newname)
        n += 1
        print ("n---", n)
        print ("++++++++++++")

3.2 批量json文件中某个字段内容

代码位置:G:\PycharmProjects\python35\ModifyJSON\modifyField.py   如下:

# import module
import os
import json

path_01='G:\\xpaper\\damageImg\\test1600--json'
path_02='G:\\xpaper\\damageImg\\test1'
#遍历一个文件夹中的所有文件
for root1, dirs1, files1 in os.walk(path_01):
    for name in files1:
        print(name)
        if os.path.splitext (name)[1] == ".json":
            filepath = '%s/%s' % (path_01, name)
            print("filepath:--",filepath)
            file =open (filepath, 'r')
            data = json.load (file)
            filename = os.path.splitext (name)[0]
            name1 = filename + ".jpg"
            print("name1:",name1)
            namejson = filename + ".json"
            data['imagePath'] = name1
            savepath = os.path.join (path_02, namejson)
            print("savepath----",savepath)
            # json.dump (data, file)  # 写入f2文件到本地
            with open (savepath, 'w') as f2:
                json.dump (data, f2)  # 写入f2文件到本地
                f2.close()
            file.close ()

把修改好的json和jpg 文件分别放到train_data 文件夹中

把修改好的json 放到/home/handkoo/disk/tensorflow-liu/Mask_RCNN-master/Label_json_to_dataset--liu/jsonFiles文件夹中,为的是接下来的转换

3. labelme_json

通过labelme文件夹下,json_to_dataset.py处理.json文件后产生的数据,使用方法为labelme_json_to_dataset+空格+文件名称.json。

方法:sudo python json_to_dataset.py  /home/handkoo/disk/tensorflow-liu/Mask_RCNN-master/Label_json_to_dataset--liu/jsonFiles

方法二:转到   /home/handkoo/disk/tensorflow-liu/Mask_RCNN-master 目录下再输入如下命令:

sudo python labelme/cli/json_to_dataset.py /home/handkoo/disk/tensorflow-liu/Mask_RCNN-master/train_data

会生成两个文件夹,如下图:

此 jsonFiles文件夹下的文件是labelme 标注生成的json文件,不包括图片。如下图:

json_to_dataset.py 文件所在的位置,如下图。这个是把labelme 安装目录下的labelme 文件夹,全都拷贝过来用的

4. cv2_mask文件

由于labelme生成的掩码标签

整理好后,放到/home/handkoo/disk/tensorflow-liu/Mask_RCNN-master/train_data 文件夹下。

二、训练

1、要修改config.py 文件,如类别,其它参数

2、要修改train_data.py 文件中的类别

3、转到   /home/handkoo/disk/tensorflow-liu/Mask_RCNN-master 目录下

mask_rcnn_coco.h5  是预训练模型

训练:python 3.5,命令如下:

   sudo python train_data.py

训练过程如下:

4、测试:sudo python test_img.py

修改点如下:训练好的模型要放到/home/handkoo/disk/tensorflow-liu/Mask_RCNN-master/logs目录下

 

 

参考文档:https://blog.csdn.net/qq_29462849/article/details/81037343

 

三、labelme 在系统中的具体安装路径

猜你喜欢

转载自blog.csdn.net/liulina603/article/details/84968629