赞
踩
和Mask_RCNN入门(一)—— 跑通代码一样,本文将列出自己参考的教程,重点介绍注意点和踩的坑。
本文主要参考教程:Mask R-CNN tensorflow 训练自己的数据
废话不多说,按照教程开始实践
关于labelme的安装和使用,这里不再赘述,请参考:图片标注工具Labelme的安装及使用方法,当然有几个小建议:
@echo.
@echo ***进入conda命令行,并直接切换到labelme环境***
@echo.
@echo.
@echo.
CALL C:\ProgramData\Anaconda3\Scripts\activate.bat C:\ProgramData\Anaconda3\envs\labelme
@echo.
@echo.
@echo.
@echo ***启动labelme***
@echo.
@echo.
@echo.
::不知道为啥,直接labelme就会陷入死循环,换成labelme.exe
labelme.exe
这样每次双击bat即可启动labelme:
接下来就是使用labelme标注好要训练的图片,原始图片和json单独放置,这里不再赘述:
单个json文件的转化,参考:labelme安装与使用,但这里坑:
C:/ProgramData/Anaconda3/3envs/labelme/Scripts/labelme_json_to_dataset xxx.json
(labelme_json_to_dataset和json文件路径根据自己机器位置修改)
C:\ProgramData\Anaconda3\envs\labelme\Lib\site-packages\labelme\cli
按照资料中修改,之后就可以正常生成info.yaml
import os
path = r'C:\Users\apple\Desktop\labelme\json' # path是你存放json的路径
json_file = os.listdir(path)
for file in json_file:
os.system("C:\ProgramData\Anaconda3\envs\labelme\Scripts\labelme_json_to_dataset.exe %s" % (path + '/' + file))
其中的labelme_json_to_dataset.exe和json位置根据自己机器修改。下面是结果:
转化后的json和原json文件在一个文件夹下,单独一个xx_json文件:
按照[教程[(https://blog.csdn.net/doudou_here/article/details/87855273)直接跟着做。
项目目录下,新建directory目录结构如下:
其中pic放入标注的原图,json放入labelme标注得到的所有json文件,labelme_json放入转化后的json文件,cv2_mask放入每个labelme_json文件下的label文件。
其中,前三个直接copy过来就可以,但cv2_mask要重新命名,翻看每个转化之后的json文件夹可以发现,里面的掩膜图片名字都为label.png:
需要将label.png命名为对应的“文件名.png”格式,建议使用代码实现,下面这是我的代码(其中的文件路径根据自己需要修改):
import os import shutil filename = "C:/Users/apple/Desktop/labelme/json/" # 存放json转化得到的文件夹名称,需要保证没有隐藏的文件夹 fileList = os.listdir(filename) """ 抽取json转化得到的5个文件中的label.png,并重新命名 """ for i in range(len(fileList)): path = filename + fileList[i]; # 如果不是文件夹,跳过 if os.path.isfile(path): continue no = fileList[i][:-5] # 从文件夹上取出文件名 mask_source = path + "/label.png" mask_target = "train_data/cv2_mask/{}.png".format(no) # 命名为“文件名.png” shutil.copy(mask_source, mask_target) # 利用shutil直接copy过去
注意,很多教程都会提示label.png是16位的,而训练(要用cv2处理)需要使用8位的,所以需要对label.png进行转化才能使用,但是我参考的Mask R-CNN tensorflow 训练自己的数据说得很明白,labelme升级以后转化得到的label.png就是8位的,不用转换,教程也说明:打开的图片是彩色的就说明已经是8位的了,这一点我想还是做到有理有据比较好:
按照教程在项目目录下新建train.py,内容不再赘述,直接copy即可,经实测,修改的地方按教程来即可。
在之前创建的conda环境下,进入项目目录,直接:
python train.py
即可开始训练,不一会儿可以看到项目目录下多了logs目录:
这个h5文件就是我们下面进行预测用到的模型。
同样在项目目录下新建test.py(教程中名字为fortest.py),内容直接copy即可,但经实测,如果只按教程中修改h5模型路径和测试图片路径,运行test.py 会报错:
这是因为就和train.py一样,在:
需要按自己训练集修改。修改后再运行,报错:
这是因为还有一处需要修改:
除了保留“BG”外,后面放上自己训练的label。运行,OK:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。