赞
踩
主流的Mask RCNN主要有两个,一个是matterport的keras版本,另一个是facebookresearch的pytorch版本。
pytorch版本的编译报错问题较多,以下采用tensorflow-gpu版本。
检查gpu算力,低算力下高版本tf可能只调用cpu
验证gpu
- import tensorflow as tf
- tf.test.is_built_with_cuda()#验证tf是否调用GPU
- tf.config.list_physical_devices('GPU')#查看gpu列表
下载requirements,tensorflow,cuda,mask_rcnn_coco.h5权重
python setup.py install
划分数据集
data
——cv2_mask(掩膜)
——jason(jason)
——labelme_json(json文件夹)
——pic(原图)
其中labelme新版本在json文件夹生成info.yaml的方法
~\envs\xx\Lib\site-packages\labelme\cli\json_to_dataset.py
- f.write(lbl_name + '\n')
- # 添加部分
- logger.warning('info.yaml is being replaced by label_names.txt')
- info = dict(label_names=label_names)
- with open(osp.join(out_dir, 'info.yaml'), 'w') as f:
- yaml.safe_dump(info, f, default_flow_style=False)
-
- logger.info('Saved to: {}'.format(out_dir))
训练代码参考:修改train_shapes.ipynb
其中
ROOT_DIR = os.path.abspath("../../")#根目录地址
- #显存设置
- GPU_COUNT = 2
- IMAGES_PER_GPU = 1
COCO_MODEL_PATH = os.path.join(ROOT_DIR, "mask_rcnn_coco.h5")#权重文件地址
NUM_CLASSES = 1 + 80 # 背景加类别
- #图片像素大小(用自己数据中最低的分辨率)
- IMAGE_MIN_DIM = 768
- IMAGE_MAX_DIM = 1024
- #训练次数
- model.train(dataset_train, dataset_val,
- learning_rate=config.LEARNING_RATE,
- epochs=300,
- layers='heads')
self.add_class("shapes", 1, "box")#逐个添加每个类别
- #逐个添加每个类别
- if labels[i].find("box")!=-1:
- labels_form.append("box")
dataset_root_path=os.path.join(ROOT_DIR, "C:\\Users\\LARA\\Desktop\\Mask_RCNN-master\\train_data_test1")#数据集目录
- #图片尺寸
- width = 1024
- height = 768
- dataset_train.load_shapes(count, 768, 1024, img_floder, mask_floder, imglist,dataset_root_path)
- dataset_val.load_shapes(count, 768, 1024, img_floder, mask_floder, imglist,dataset_root_path)
改写train.py中的init_with=““last””,下次训练时会接着上一次的epoch继续训练。
运行问题
1>No module named ‘xxx‘
下载对应安装包
2>load() missing 1 required positional argument: ‘Loader‘
降低yaml版本到5.4.1
3>‘str‘ object has no attribute ‘decode‘
报错位置修改decode('utf-8')为encode('utf-8').decode('utf-8')
降级h5py到3以下版本
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。