1.3 【Mask-RCNN训练自己的数据集】---- Part Three: 用自己训练的模型进行测试(全部流程总结+部分释义)

三.模型测试

import os
import sys
sys.path.remove('/opt/ros/kinetic/lib/python2.7/dist-packages')
import random
import math
import numpy as np
import skimage.io
import matplotlib
import matplotlib.pyplot as plt
import cv2
import time
 
ROOT_DIR = os.path.abspath("/home/***/Mask_RCNN-master/")
 
sys.path.append(ROOT_DIR)
 
from mrcnn.config import Config
from datetime import datetime
from mrcnn import utils
import mrcnn.model as modellib
from mrcnn import visualize
 
sys.path.append(os.path.join(ROOT_DIR, "samples/coco/"))
from samples.coco import coco
 
MODEL_DIR = os.path.join(ROOT_DIR, "logs/shapes20200108T1438")
#MODEL_DIR = os.path.join(ROOT_DIR, "logs")
 
COCO_MODEL_PATH = os.path.join(MODEL_DIR, "mask_rcnn_shapes_0020.h5")
#COCO_MODEL_PATH = os.path.join(MODEL_DIR, "mask_rcnn_coco.h5")
 
IMAGE_DIR = os.path.join(ROOT_DIR, "testimg")
#IMAGE_DIR = os.path.join(ROOT_DIR, "images")
 
class ShapesConfig(Config):
    NAME = "shapes"
    
    GPU_COUNT = 1
    IMAGES_PER_GPU = 1
    
    NUM_CLASSES = 1 + 1
    
    IMAGE_MIN_DIM = 1080
    IMAGE_MAX_DIM = 1920
    
    RPN_ANCHOR_SCALES = (8 * 10, 16 * 10, 32 *10, 64 * 10, 128 * 10)
    
    TRAIN_ROIS_PER_IMAGE =100
    
    STEPS_PER_EPOCH = 10
    
    VALIDATION_STEPS = 10
    
class InferenceConfig(ShapesConfig):
    
    GPU_COUNT = 1
    IMAGES_PER_GPU = 1
    
config = InferenceConfig()
 
model = modellib.MaskRCNN(mode="inference", model_dir=MODEL_DIR, config=config)
 
model = modellib.MaskRCNN(mode="inference", model_dir=MODEL_DIR, config=config)
 
model.load_weights(COCO_MODEL_PATH, by_name=True)
 
class_names = ['BG', 'tank']
i=1
while(i<2):
    i=i+1
    file_names = next(os.walk(IMAGE_DIR))[2]
#    image = skimage.io.imread(os.path.join(IMAGE_DIR, random.choice(file_names)))
    image = skimage.io.imread(os.path.join(IMAGE_DIR, "000002.jpg"))
    a=datetime.now()
 
    results = model.detect([image], verbose=1)
    b=datetime.now()
 
    print("time:",(b-a).seconds)
    r = results[0]
    visualize.display_instances(image, r['rois'], r['masks'], r['class_ids'], class_names, r['scores'])

注意更改要测试的图片大小,其余的就不多做解释了,上篇博客几乎都讲到了。

2.1 Mask-RCNN训练自己的数据集【Part One:制作数据集】(全部流程总结+部分释义)
2.2 Mask-RCNN训练自己的数据集【Part Two: 模型训练】(全部流程总结+部分释义)

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用自己的数据集训练Mask-RCNN过程中,可能会遇到以下一些坑: 1. 数据集标注问题:自己的数据集可能没有经过仔细的标注。标注不准确或不一致的物体边界框和分割掩码会影响模型训练效果。因此,建议在标注数据集时要仔细检查和修正可能存在的错误。 2. 类别不平衡:如果数据集中的某些类别样本数量明显少于其他类别,训练模型时会导致类别不平衡的问题。这会影响模型对于少样本类别的学习效果。可以采用数据增强技术来扩充少样本类别的数据量,或者使用一些类别平衡的损失函数来解决此问题。 3. 没有合适的预训练模型Mask-RCNN通常需要使用预训练模型进行初始化,以便更快地收敛到一个好的模型。但是,如果没有找到与自己的数据集相似的预训练模型模型可能需要更多的训练时间和更多的数据才能达到较好的性能。 4. 训练参数选择:在使用自己的数据集训练Mask-RCNN时,一些关键的训练参数需要根据数据集的特点进行适当选择,如学习率、迭代次数、步长等。选择不合适的参数可能导致训练过程出现问题,如梯度爆炸、模型不收敛等。 5. 过拟合问题:如果训练集和验证集的样本相似度较高,模型很容易出现过拟合。过拟合会导致模型训练集上表现较好,但在未见过的数据上表现较差。可以通过增加训练数据、使用正则化技术或减小模型复杂度等方法来缓解过拟合问题。 解决这些坑的方法包括:仔细检查和修正数据集标注问题,处理类别不平衡,寻找适合的预训练模型,合理选择训练参数,并采取防止过拟合的措施。同时,可以参考相关文献和开源代码,从其他人的经验中学习,并进行模型调优和改进。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值