参考网站 https://blog.csdn.net/qq_29462849/article/details/81037343
248 上 Mask_RCNN-master的训练步骤,它是基于tensorflow 的
项目位于:/home/huoo/tensorflow-api-liulina/Mask_RCNN-master
标注工具:labeme
本文采用的是COCO数据集格式
一、准备训练数据集
训练数据集格式
下图中四个文件夹中是准备训练的数据
- 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