导师优快云:太阳花的小绿豆、哔哩哔哩:霹雳吧啦Wz
优快云-Mask rcnn代码及详解链接: link
所有基础分类、检测、分割代码都可至霹雳吧啦Wz的GitHub获取 link
一、Mask_rcnn训练COCO数据集介绍:
1、mask_rcnn路径下data数据集构成如下:
其中,annotations为训练集的标注信息,train2017为训练图片,val2017为验证图片,分别如下所示:
对coco数据集不了解的朋友,可以点击链接: link
二、准备自己的数据集,然后进行labelme标注:
1、通过labelme.exe对自己准备的数据集进行标注,如下所示:
将标注的图片及对应json文件随意对应选取一部分用于训练,另一部分用于验证(可以通过代码随机挑选,也可以自己复制粘贴进行分离)
三、自行分离数据
将对应的训练集和验证集图片及json文件放至自己建立的文件夹下,切记不要错乱了。最后,还有标注文件的处理,第四点讲解。
四、labelme标注json文件转coco数据集标注json文件
提示:因为labelme标注生成的json文件信息与coco数据集标注json文件信息有所差异,Mask_rcnn训练以及推理需要coco数据集json格式。
如下图所示,将第三点中分离的train训练图以及对应的json文件放入如下文件夹内:
通过lableme2coco.py代码,将自己标注的数据集转成coco需要的格式,验证集也是如此,lableme2coco.py代码如下。
下面展示一些 内联代码片
。
// An highlighted block
import json
import glob
import PIL.Image
import PIL.ImageDraw
import os
import base64
import io
import numpy as np
import PIL.ExifTags
import PIL.Image
import PIL.ImageOps
import shutil
def img_b64_to_arr(img_b64):
f = io.BytesIO()
f.write(base64.b64decode(img_b64))
img_arr = np.array(PIL.Image.open(f))
return img_arr
def img_arr_to_b64(img_arr):
img_pil = PIL.Image.fromarray(img_arr)
f = io.BytesIO()
img_pil.save(f, format='PNG')
img_bin = f.getvalue()
if hasattr(base64, 'encodebytes'):
img_b64 = base64.encodebytes(img_bin)
else:
img_b64 = base64.encodestring(img_bin)
return img_b64
def img_data_to_png_data(img_data):
with io.BytesIO() as f:
f.write(img_data)
img = PIL.Image.open(f)
with io.BytesIO() as f:
img.save(f, 'PNG')
f.seek(0)
return f.read()
def apply_exif_orientation(image):
try:
exif = image._getexif()
except AttributeError:
exif = None