三.模型测试
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: 模型训练】(全部流程总结+部分释义)