Mask_RCNN训练自己的模型(练习)

数据集目录结构(在train_data目录下):

pic目录下的部分图片:

cv2_mask目录下部分图片:

json目录下部分文件:

labelme_json目录下部分文件:

#############代码块一##############

import os
import sys
import random
import math
import re
import time
import numpy as np
import cv2
import matplotlib
import matplotlib.pyplot as plt

from config import Config
import utils
import model as modellib
import visualize
import yaml
from model import log
from PIL import Image

# Root directory of the project
ROOT_DIR = os.getcwd()

# Directory to save logs and trained model
MODEL_DIR = os.path.join(ROOT_DIR, "logs")

iter_num=0

# Local path to trained weights file
COCO_MODEL_PATH = os.path.join(ROOT_DIR, "mask_rcnn_coco.h5")
# Download COCO trained weights from Releases if needed
if not os.path.exists(COCO_MODEL_PATH):
utils.download_trained_weights(COCO_MODEL_PATH)

##################代码块2#########

class ShapesConfig(Config):
"""Configuration for training on the toy shapes dataset.
Derives from the base Config class and overrides values specific
to the toy shapes dataset.
"""
# Give the configuration a recognizable name
NAME = "shapes"

# Train on 1 GPU and 8 images per GPU. We can put multiple images on each
# GPU because the images are small. Batch size is 8 (GPUs * images/GPU).
GPU_COUNT = 1
IMAGES_PER_GPU = 1

# Number of classes (including background)
NUM_CLASSES = 1 + 1 # background + 3 shapes

# Use small images for faster training. Set the limits of the small side
# the large side, and that determines the image shape.
IMAGE_MIN_DIM = 80
IMAGE_MAX_DIM = 512

# Use smaller anchors because our image and objects are small
RPN_ANCHOR_SCALES = (8 * 6, 16 * 6, 32 * 6, 64 * 6, 128 * 6) # anchor side in pixels

# Reduce training ROIs per image because the images are small and have
# few objects. Aim to allow ROI sampling to pick 33% positive ROIs.
TRAIN_ROIS_PER_IMAGE = 32

# Use a small epoch since the data is simple
STEPS_PER_EPOCH = 100

# use small validation steps since the epoch is small
VALIDATION_STEPS = 5

config = ShapesConfig()
config.display()

----------------------------------------

#输出:

Configurations:
BACKBONE                       resnet101
BACKBONE_STRIDES               [4, 8, 16, 32, 64]
BATCH_SIZE                     1
BBOX_STD_DEV                   [0.1 0.1 0.2 0.2]
COMPUTE_BACKBONE_SHAPE         None
DETECTION_MAX_INSTANCES        100
DETECTION_MIN_CONFIDENCE       0.7
DETECTION_NMS_THRESHOLD        0.3
FPN_CLASSIF_FC_LAYERS_SIZE     1024
GPU_COUNT                      1
GRADIENT_CLIP_NORM             5.0
IMAGES_PER_GPU                 1
IMAGE_MAX_DIM                  512
IMAGE_META_SIZE                14
IMAGE_MIN_DIM                  80
IMAGE_MIN_SCALE                0
IMAGE_RESIZE_MODE              square
IMAGE_SHAPE                    [512 512   3]
LEARNING_MOMENTUM              0.9
LEARNING_RATE                  0.001
LOSS_WEIGHTS                   {'rpn_class_loss': 1.0, 'rpn_bbox_loss': 1.0, 'mrcnn_class_loss': 1.0, 'mrcnn_bbox_loss': 1.0, 'mrcnn_mask_loss': 1.0}
MASK_POOL_SIZE                 14
MASK_SHAPE                     [28, 28]
MAX_GT_INSTANCES               100
MEAN_PIXEL                     [123.7 116.8 103.9]
MINI_MASK_SHAPE                (56, 56)
NAME                           shapes
NUM_CLASSES                    2
POOL_SIZE                      7
POST_NMS_ROIS_INFERENCE        1000
POST_NMS_ROIS_TRAINING         2000
ROI_POSITIVE_RATIO             0.33
RPN_ANCHOR_RATIOS              [0.5, 1, 2]
RPN_ANCHOR_SCALES              (48, 96, 192, 384, 768)
RPN_ANCHOR_STRIDE              1
RPN_BBOX_STD_DEV               [0.1 0.1 0.2 0.2]
RPN_NMS_THRESHOLD              0.7
RPN_TRAIN_ANCHORS_PER_IMAGE    256
STEPS_PER_EPOCH                100
TOP_DOWN_PYRAMID_SIZE          256
TRAIN_BN                       False
TRAIN_ROIS_PER_IMAGE           32
USE_MINI_MASK                  True
USE_RPN_ROIS                   True
VALIDATION_STEPS               5
WEIGHT_DECAY                   0.0001

-------------------------------------------

############代码块三######################

class DrugDataset(utils.Dataset):
  # 得到该图中有多少个实例(物体)
  def get_obj_index(self, image):
    n = np.max(image)
    return n

  # 解析labelme中得到的yaml文件,从而得到mask每一层对应的实例标签
  def from_yaml_get_class(self, image_id):
    info = self.image_info[image_id]
    with open(info['yaml_path']) as f:
      temp = yaml.load(f.read())
      labels = temp['label_names']
      del labels[0]
      return labels

  # 重新写draw_mask
  def draw_mask(self, num_obj, mask, image,image_id):
    info = self.image_info[image_id]
    for index in range(num_obj):
      for i in range(info['width']):
        for j in range(info['height']):
          at_pixel = image.getpixel((i, j))
          if at_pixel == index + 1:
            mask[j, i, index] = 1
    return mask

  # 重新写load_shapes,里面包含自己的自己的类别
  def load_shapes(self, count, img_floder, mask_floder, imglist, dataset_root_path):
    """Generate the requested number of synthetic images.
    count: number of images to generate.
    height, the size of the generated images.
    """
    # Add classes
    self.add_class("shapes", 1, "box") # box
    for i in range(count):
      # 获取图片宽和高

      filestr = imglist[i].split(".")[0]
      # filestr = filestr.split("_")[1]
      mask_path = mask_floder + "/" + filestr + ".png"
      yaml_path = dataset_root_path + "labelme_json/" + filestr + "-box_json/info.yaml"
      print(dataset_root_path + "labelme_json/" + filestr + "-box_json/img.png")
      cv_img = cv2.imread(dataset_root_path + "labelme_json/" + filestr + "-box_json/img.png")

      self.add_image("shapes", image_id=i, path=img_floder + "/" + imglist[i],width=cv_img.shape[1], height=cv_img.shape[0], mask_path=mask_path, yaml_path=yaml_path)

  # 重写load_mask
  def load_mask(self, image_id):
    """Generate instance masks for shapes of the given image ID."""
    global iter_num
    print("image_id",image_id)
    info = self.image_info[image_id]
    count = 1 # number of object
    img = Image.open(info['mask_path'])
    num_obj = self.get_obj_index(img)
    mask = np.zeros([info['height'], info['width'], num_obj], dtype=np.uint8)
    mask = self.draw_mask(num_obj, mask, img,image_id)
    occlusion = np.logical_not(mask[:, :, -1]).astype(np.uint8)
    for i in range(count - 2, -1, -1):
      mask[:, :, i] = mask[:, :, i] * occlusion

      occlusion = np.logical_and(occlusion, np.logical_not(mask[:, :, i]))
    labels = []
    labels = self.from_yaml_get_class(image_id)
    labels_form = []
    for i in range(len(labels)):
      if labels[i].find("box") != -1:
        # print "box"
        labels_form.append("box")
    class_ids = np.array([self.class_names.index(s) for s in labels_form])
    return mask, class_ids.astype(np.int32)

###############代码块四#################

def get_ax(rows=1, cols=1, size=8):
  """Return a Matplotlib Axes array to be used in
  all visualizations in the notebook. Provide a
  central point to control graph sizes.

  Change the default size attribute to control the size
  of rendered images
  """
  _, ax = plt.subplots(rows, cols, figsize=(size * cols, size * rows))
  return ax

##############代码块五####################

#基础设置
dataset_root_path="train_data/"
img_floder = dataset_root_path + "pic"
mask_floder = dataset_root_path + "cv2_mask"
#yaml_floder = dataset_root_path
imglist = os.listdir(img_floder)
count = len(imglist)

#train与val数据集准备
dataset_train = DrugDataset()
dataset_train.load_shapes(count, img_floder, mask_floder, imglist,dataset_root_path)
dataset_train.prepare()

#print("dataset_train-->",dataset_train._image_ids)

dataset_val = DrugDataset()
dataset_val.load_shapes(10, img_floder, mask_floder, imglist,dataset_root_path)
dataset_val.prepare()

-----------------------------------------

输出:

train_data/labelme_json/0-box_json/img.png
train_data/labelme_json/1-box_json/img.png
train_data/labelme_json/10-box_json/img.png
train_data/labelme_json/100-box_json/img.png
train_data/labelme_json/101-box_json/img.png
train_data/labelme_json/102-box_json/img.png
train_data/labelme_json/103-box_json/img.png
train_data/labelme_json/104-box_json/img.png
train_data/labelme_json/105-box_json/img.png
train_data/labelme_json/106-box_json/img.png
train_data/labelme_json/107-box_json/img.png
train_data/labelme_json/108-box_json/img.png
train_data/labelme_json/109-box_json/img.png
train_data/labelme_json/11-box_json/img.png
train_data/labelme_json/110-box_json/img.png
train_data/labelme_json/111-box_json/img.png
train_data/labelme_json/112-box_json/img.png
train_data/labelme_json/113-box_json/img.png
train_data/labelme_json/114-box_json/img.png
train_data/labelme_json/115-box_json/img.png
train_data/labelme_json/116-box_json/img.png
train_data/labelme_json/117-box_json/img.png
train_data/labelme_json/118-box_json/img.png
train_data/labelme_json/119-box_json/img.png
train_data/labelme_json/12-box_json/img.png
train_data/labelme_json/120-box_json/img.png
train_data/labelme_json/121-box_json/img.png
train_data/labelme_json/122-box_json/img.png
train_data/labelme_json/123-box_json/img.png
train_data/labelme_json/124-box_json/img.png
train_data/labelme_json/125-box_json/img.png
train_data/labelme_json/126-box_json/img.png
train_data/labelme_json/127-box_json/img.png
train_data/labelme_json/128-box_json/img.png
train_data/labelme_json/129-box_json/img.png
train_data/labelme_json/13-box_json/img.png
train_data/labelme_json/130-box_json/img.png
train_data/labelme_json/131-box_json/img.png
....................train_data/labelme_json/101-box_json/img.pngtrain_data/labelme_json/102-box_json/img.png
train_data/labelme_json/103-box_json/img.png
train_data/labelme_json/104-box_json/img.png
train_data/labelme_json/105-box_json/img.png
train_data/labelme_json/106-box_json/img.png



#################代码块六###################

# Load and display random samples
image_ids = np.random.choice(dataset_train.image_ids, 10)
for image_id in image_ids:
image = dataset_train.load_image(image_id)
mask, class_ids = dataset_train.load_mask(image_id)
visualize.display_top_masks(image, mask, class_ids, dataset_train.class_names)

-------------------------------------

输出:

###################代码块七#######################

# Create model in training mode
model = modellib.MaskRCNN(mode="training", config=config,model_dir=MODEL_DIR)

# Which weights to start with?
init_with = "coco" # imagenet, coco, or last

if init_with == "imagenet":
  model.load_weights(model.get_imagenet_weights(), by_name=True)
elif init_with == "coco":
  # Load weights trained on MS COCO, but skip layers that
  # are different due to the different number of classes
  # See README for instructions to download the COCO weights
  model.load_weights(COCO_MODEL_PATH, by_name=True,exclude=["mrcnn_class_logits", "mrcnn_bbox_fc","mrcnn_bbox", "mrcnn_mask"])
elif init_with == "last":
  # Load the last model you trained and continue training
  model.load_weights(model.find_last()[1], by_name=True)

# Train the head branches
# Passing layers="heads" freezes all layers except the head
# layers. You can also pass a regular expression to select
# which layers to train by name pattern.
model.train(dataset_train, dataset_val,learning_rate=config.LEARNING_RATE,epochs=1,layers='heads')

----------------------------------------------------------

输出:

Starting at epoch 0. LR=0.001

Checkpoint Path: G:TensorflowProjectMask_RCNN-mastersamples0820shapeslogsshapes20180820T1503mask_rcnn_shapes_{epoch:04d}.h5
Selecting layers to train
fpn_c5p5               (Conv2D)
fpn_c4p4               (Conv2D)
fpn_c3p3               (Conv2D)
fpn_c2p2               (Conv2D)
fpn_p5                 (Conv2D)
fpn_p2                 (Conv2D)
fpn_p3                 (Conv2D)
fpn_p4                 (Conv2D)
In model:  rpn_model
    rpn_conv_shared        (Conv2D)
    rpn_class_raw          (Conv2D)
    rpn_bbox_pred          (Conv2D)
mrcnn_mask_conv1       (TimeDistributed)
mrcnn_mask_bn1         (TimeDistributed)
mrcnn_mask_conv2       (TimeDistributed)
mrcnn_mask_bn2         (TimeDistributed)
mrcnn_class_conv1      (TimeDistributed)
mrcnn_class_bn1        (TimeDistributed)
mrcnn_mask_conv3       (TimeDistributed)
mrcnn_mask_bn3         (TimeDistributed)
mrcnn_class_conv2      (TimeDistributed)
mrcnn_class_bn2        (TimeDistributed)
mrcnn_mask_conv4       (TimeDistributed)
mrcnn_mask_bn4         (TimeDistributed)
mrcnn_bbox_fc          (TimeDistributed)
mrcnn_mask_deconv      (TimeDistributed)
mrcnn_class_logits     (TimeDistributed)
mrcnn_mask             (TimeDistributed)
 
F:Anaconda3libsite-packages	ensorflowpythonopsgradients_impl.py:98: UserWarning: Converting sparse IndexedSlices to a dense Tensor of unknown shape. This may consume a large amount of memory.
  "Converting sparse IndexedSlices to a dense Tensor of unknown shape. "
 
Epoch 1/1
image_id 36
  1/100 [..............................] - ETA: 11:08 - loss: 3.4756 - rpn_class_loss: 0.0133 - rpn_bbox_loss: 0.3852 - mrcnn_class_loss: 0.5015 - mrcnn_bbox_loss: 0.9523 - mrcnn_mask_loss: 1.6233image_id 810
  2/100 [..............................] - ETA: 9:16 - loss: 3.6586 - rpn_class_loss: 0.0164 - rpn_bbox_loss: 0.4885 - mrcnn_class_loss: 0.7338 - mrcnn_bbox_loss: 0.9817 - mrcnn_mask_loss: 1.4381 image_id 678
  3/100 [..............................] - ETA: 8:39 - loss: 3.5231 - rpn_class_loss: 0.0231 - rpn_bbox_loss: 0.4982 - mrcnn_class_loss: 0.6031 - mrcnn_bbox_loss: 1.0954 - mrcnn_mask_loss: 1.3033image_id 442
  4/100 [>.............................] - ETA: 8:23 - loss: 3.3568 - rpn_class_loss: 0.0400 - rpn_bbox_loss: 0.4198 - mrcnn_class_loss: 0.6943 - mrcnn_bbox_loss: 0.9911 - mrcnn_mask_loss: 1.2116image_id 168
  5/100 [>.............................] - ETA: 8:15 - loss: 3.2762 - rpn_class_loss: 0.0376 - rpn_bbox_loss: 0.4459 - mrcnn_class_loss: 0.6119 - mrcnn_bbox_loss: 1.0050 - mrcnn_mask_loss: 1.1758image_id 65
  6/100 [>.............................] - ETA: 8:07 - loss: 3.9527 - rpn_class_loss: 0.0383 - rpn_bbox_loss: 1.2320 - mrcnn_class_loss: 0.5637 - mrcnn_bbox_loss: 0.9653 - mrcnn_mask_loss: 1.1534image_id 474
  7/100 [=>............................] - ETA: 7:59 - loss: 3.7770 - rpn_class_loss: 0.0368 - rpn_bbox_loss: 1.1319 - mrcnn_class_loss: 0.5358 - mrcnn_bbox_loss: 0.9403 - mrcnn_mask_loss: 1.1323image_id 48
  8/100 [=>............................] - ETA: 7:47 - loss: 3.7060 - rpn_class_loss: 0.0350 - rpn_bbox_loss: 1.0478 - mrcnn_class_loss: 0.5300 - mrcnn_bbox_loss: 0.9446 - mrcnn_mask_loss: 1.1486image_id 22
  9/100 [=>............................] - ETA: 7:38 - loss: 3.6051 - rpn_class_loss: 0.0338 - rpn_bbox_loss: 0.9859 - mrcnn_class_loss: 0.5081 - mrcnn_bbox_loss: 0.9577 - mrcnn_mask_loss: 1.1196image_id 715
 10/100 [==>...........................] - ETA: 7:30 - loss: 3.6313 - rpn_class_loss: 0.0309 - rpn_bbox_loss: 0.9577 - mrcnn_class_loss: 0.4624 - mrcnn_bbox_loss: 0.9966 - mrcnn_mask_loss: 1.1837image_id 149
 11/100 [==>...........................] - ETA: 7:24 - loss: 3.6685 - rpn_class_loss: 0.0416 - rpn_bbox_loss: 0.8967 - mrcnn_class_loss: 0.4808 - mrcnn_bbox_loss: 1.0296 - mrcnn_mask_loss: 1.2197image_id 518
 12/100 [==>...........................] - ETA: 7:17 - loss: 3.5888 - rpn_class_loss: 0.0396 - rpn_bbox_loss: 0.8463 - mrcnn_class_loss: 0.4641 - mrcnn_bbox_loss: 1.0344 - mrcnn_mask_loss: 1.2044image_id 137
 13/100 [==>...........................] - ETA: 7:12 - loss: 3.5220 - rpn_class_loss: 0.0387 - rpn_bbox_loss: 0.8281 - mrcnn_class_loss: 0.4469 - mrcnn_bbox_loss: 1.0414 - mrcnn_mask_loss: 1.1669image_id 713
 14/100 [===>..........................] - ETA: 7:06 - loss: 3.4769 - rpn_class_loss: 0.0376 - rpn_bbox_loss: 0.8080 - mrcnn_class_loss: 0.4552 - mrcnn_bbox_loss: 1.0203 - mrcnn_mask_loss: 1.1558image_id 501
 15/100 [===>..........................] - ETA: 7:00 - loss: 3.4009 - rpn_class_loss: 0.0419 - rpn_bbox_loss: 0.7711 - mrcnn_class_loss: 0.4483 - mrcnn_bbox_loss: 1.0137 - mrcnn_mask_loss: 1.1259image_id 282
 16/100 [===>..........................] - ETA: 6:54 - loss: 3.3244 - rpn_class_loss: 0.0397 - rpn_bbox_loss: 0.7250 - mrcnn_class_loss: 0.4330 - mrcnn_bbox_loss: 1.0061 - mrcnn_mask_loss: 1.1206image_id 638
 17/100 [====>.........................] - ETA: 6:48 - loss: 3.2559 - rpn_class_loss: 0.0425 - rpn_bbox_loss: 0.6960 - mrcnn_class_loss: 0.4164 - mrcnn_bbox_loss: 1.0075 - mrcnn_mask_loss: 1.0936image_id 314
 18/100 [====>.........................] - ETA: 6:42 - loss: 3.2037 - rpn_class_loss: 0.0460 - rpn_bbox_loss: 0.6883 - mrcnn_class_loss: 0.4014 - mrcnn_bbox_loss: 0.9962 - mrcnn_mask_loss: 1.0717image_id 62
 19/100 [====>.........................] - ETA: 6:38 - loss: 3.1404 - rpn_class_loss: 0.0444 - rpn_bbox_loss: 0.6790 - mrcnn_class_loss: 0.3861 - mrcnn_bbox_loss: 0.9782 - mrcnn_mask_loss: 1.0526image_id 556
 20/100 [=====>........................] - ETA: 6:33 - loss: 3.0993 - rpn_class_loss: 0.0427 - rpn_bbox_loss: 0.6804 - mrcnn_class_loss: 0.3816 - mrcnn_bbox_loss: 0.9577 - mrcnn_mask_loss: 1.0369image_id 256
 21/100 [=====>........................] - ETA: 6:27 - loss: 3.0755 - rpn_class_loss: 0.0507 - rpn_bbox_loss: 0.6751 - mrcnn_class_loss: 0.3769 - mrcnn_bbox_loss: 0.9528 - mrcnn_mask_loss: 1.0200image_id 428
 22/100 [=====>........................] - ETA: 6:22 - loss: 3.1179 - rpn_class_loss: 0.0536 - rpn_bbox_loss: 0.6918 - mrcnn_class_loss: 0.4033 - mrcnn_bbox_loss: 0.9641 - mrcnn_mask_loss: 1.0052image_id 310
 23/100 [=====>........................] - ETA: 6:17 - loss: 3.1016 - rpn_class_loss: 0.0515 - rpn_bbox_loss: 0.6962 - mrcnn_class_loss: 0.3935 - mrcnn_bbox_loss: 0.9704 - mrcnn_mask_loss: 0.9900image_id 353
 24/100 [======>.......................] - ETA: 6:12 - loss: 3.0987 - rpn_class_loss: 0.0496 - rpn_bbox_loss: 0.6854 - mrcnn_class_loss: 0.4006 - mrcnn_bbox_loss: 0.9886 - mrcnn_mask_loss: 0.9745image_id 213
 25/100 [======>.......................] - ETA: 6:07 - loss: 3.0504 - rpn_class_loss: 0.0485 - rpn_bbox_loss: 0.6810 - mrcnn_class_loss: 0.3852 - mrcnn_bbox_loss: 0.9747 - mrcnn_mask_loss: 0.9610image_id 156
 26/100 [======>.......................] - ETA: 6:01 - loss: 3.0056 - rpn_class_loss: 0.0487 - rpn_bbox_loss: 0.6670 - mrcnn_class_loss: 0.3794 - mrcnn_bbox_loss: 0.9613 - mrcnn_mask_loss: 0.9491image_id 517
 27/100 [=======>......................] - ETA: 5:55 - loss: 2.9727 - rpn_class_loss: 0.0474 - rpn_bbox_loss: 0.6699 - mrcnn_class_loss: 0.3692 - mrcnn_bbox_loss: 0.9479 - mrcnn_mask_loss: 0.9384image_id 171
 28/100 [=======>......................] - ETA: 5:50 - loss: 2.9539 - rpn_class_loss: 0.0475 - rpn_bbox_loss: 0.6725 - mrcnn_class_loss: 0.3700 - mrcnn_bbox_loss: 0.9346 - mrcnn_mask_loss: 0.9294image_id 505
 29/100 [=======>......................] - ETA: 5:44 - loss: 2.9411 - rpn_class_loss: 0.0470 - rpn_bbox_loss: 0.6640 - mrcnn_class_loss: 0.3694 - mrcnn_bbox_loss: 0.9441 - mrcnn_mask_loss: 0.9165image_id 747
 30/100 [========>.....................] - ETA: 5:39 - loss: 2.8848 - rpn_class_loss: 0.0457 - rpn_bbox_loss: 0.6434 - mrcnn_class_loss: 0.3626 - mrcnn_bbox_loss: 0.9300 - mrcnn_mask_loss: 0.9032image_id 733
 31/100 [========>.....................] - ETA: 5:34 - loss: 2.8629 - rpn_class_loss: 0.0458 - rpn_bbox_loss: 0.6338 - mrcnn_class_loss: 0.3532 - mrcnn_bbox_loss: 0.9393 - mrcnn_mask_loss: 0.8907image_id 94
 32/100 [========>.....................] - ETA: 5:29 - loss: 2.8659 - rpn_class_loss: 0.0461 - rpn_bbox_loss: 0.6322 - mrcnn_class_loss: 0.3451 - mrcnn_bbox_loss: 0.9575 - mrcnn_mask_loss: 0.8850image_id 363
 33/100 [========>.....................] - ETA: 5:24 - loss: 2.8531 - rpn_class_loss: 0.0480 - rpn_bbox_loss: 0.6323 - mrcnn_class_loss: 0.3450 - mrcnn_bbox_loss: 0.9511 - mrcnn_mask_loss: 0.8767image_id 634
 34/100 [=========>....................] - ETA: 5:19 - loss: 2.8641 - rpn_class_loss: 0.0482 - rpn_bbox_loss: 0.6347 - mrcnn_class_loss: 0.3485 - mrcnn_bbox_loss: 0.9645 - mrcnn_mask_loss: 0.8681image_id 460
 35/100 [=========>....................] - ETA: 5:14 - loss: 2.8316 - rpn_class_loss: 0.0490 - rpn_bbox_loss: 0.6287 - mrcnn_class_loss: 0.3419 - mrcnn_bbox_loss: 0.9501 - mrcnn_mask_loss: 0.8619image_id 612
 36/100 [=========>....................] - ETA: 5:08 - loss: 2.7951 - rpn_class_loss: 0.0479 - rpn_bbox_loss: 0.6133 - mrcnn_class_loss: 0.3391 - mrcnn_bbox_loss: 0.9394 - mrcnn_mask_loss: 0.8554image_id 549
 37/100 [==========>...................] - ETA: 5:03 - loss: 2.8040 - rpn_class_loss: 0.0476 - rpn_bbox_loss: 0.6216 - mrcnn_class_loss: 0.3399 - mrcnn_bbox_loss: 0.9467 - mrcnn_mask_loss: 0.8483image_id 577
 38/100 [==========>...................] - ETA: 4:58 - loss: 2.7978 - rpn_class_loss: 0.0469 - rpn_bbox_loss: 0.6310 - mrcnn_class_loss: 0.3332 - mrcnn_bbox_loss: 0.9413 - mrcnn_mask_loss: 0.8454image_id 123
 39/100 [==========>...................] - ETA: 4:53 - loss: 2.7614 - rpn_class_loss: 0.0462 - rpn_bbox_loss: 0.6189 - mrcnn_class_loss: 0.3255 - mrcnn_bbox_loss: 0.9340 - mrcnn_mask_loss: 0.8369image_id 259
 
 40/100 [===========>..................] - ETA: 4:48 - loss: 2.7412 - rpn_class_loss: 0.0460 - rpn_bbox_loss: 0.6356 - mrcnn_class_loss: 0.3186 - mrcnn_bbox_loss: 0.9147 - mrcnn_mask_loss: 0.8262image_id 656
 41/100 [===========>..................] - ETA: 4:43 - loss: 2.7314 - rpn_class_loss: 0.0466 - rpn_bbox_loss: 0.6428 - mrcnn_class_loss: 0.3173 - mrcnn_bbox_loss: 0.9067 - mrcnn_mask_loss: 0.8180image_id 754
 42/100 [===========>..................] - ETA: 4:38 - loss: 2.7247 - rpn_class_loss: 0.0465 - rpn_bbox_loss: 0.6488 - mrcnn_class_loss: 0.3141 - mrcnn_bbox_loss: 0.9042 - mrcnn_mask_loss: 0.8110image_id 632
 43/100 [===========>..................] - ETA: 4:33 - loss: 2.7007 - rpn_class_loss: 0.0456 - rpn_bbox_loss: 0.6423 - mrcnn_class_loss: 0.3074 - mrcnn_bbox_loss: 0.9031 - mrcnn_mask_loss: 0.8023image_id 114
 44/100 [============>.................] - ETA: 4:28 - loss: 2.6852 - rpn_class_loss: 0.0455 - rpn_bbox_loss: 0.6389 - mrcnn_class_loss: 0.3024 - mrcnn_bbox_loss: 0.9000 - mrcnn_mask_loss: 0.7984image_id 248
 45/100 [============>.................] - ETA: 4:23 - loss: 2.6722 - rpn_class_loss: 0.0453 - rpn_bbox_loss: 0.6350 - mrcnn_class_loss: 0.3005 - mrcnn_bbox_loss: 0.8975 - mrcnn_mask_loss: 0.7939image_id 375
 46/100 [============>.................] - ETA: 4:18 - loss: 2.6610 - rpn_class_loss: 0.0449 - rpn_bbox_loss: 0.6331 - mrcnn_class_loss: 0.2998 - mrcnn_bbox_loss: 0.8929 - mrcnn_mask_loss: 0.7903image_id 176
 47/100 [=============>................] - ETA: 4:13 - loss: 2.6427 - rpn_class_loss: 0.0443 - rpn_bbox_loss: 0.6243 - mrcnn_class_loss: 0.3015 - mrcnn_bbox_loss: 0.8915 - mrcnn_mask_loss: 0.7811image_id 289
 48/100 [=============>................] - ETA: 4:08 - loss: 2.6470 - rpn_class_loss: 0.0436 - rpn_bbox_loss: 0.6326 - mrcnn_class_loss: 0.3058 - mrcnn_bbox_loss: 0.8890 - mrcnn_mask_loss: 0.7760image_id 639
 49/100 [=============>................] - ETA: 4:03 - loss: 2.6159 - rpn_class_loss: 0.0431 - rpn_bbox_loss: 0.6258 - mrcnn_class_loss: 0.2997 - mrcnn_bbox_loss: 0.8803 - mrcnn_mask_loss: 0.7671image_id 454
 50/100 [==============>...............] - ETA: 3:58 - loss: 2.5960 - rpn_class_loss: 0.0427 - rpn_bbox_loss: 0.6192 - mrcnn_class_loss: 0.2959 - mrcnn_bbox_loss: 0.8782 - mrcnn_mask_loss: 0.7600image_id 95
 51/100 [==============>...............] - ETA: 3:54 - loss: 2.5792 - rpn_class_loss: 0.0426 - rpn_bbox_loss: 0.6159 - mrcnn_class_loss: 0.2951 - mrcnn_bbox_loss: 0.8721 - mrcnn_mask_loss: 0.7535image_id 33
 52/100 [==============>...............] - ETA: 3:49 - loss: 2.5728 - rpn_class_loss: 0.0424 - rpn_bbox_loss: 0.6153 - mrcnn_class_loss: 0.2916 - mrcnn_bbox_loss: 0.8736 - mrcnn_mask_loss: 0.7499image_id 417
 53/100 [==============>...............] - ETA: 3:44 - loss: 2.5555 - rpn_class_loss: 0.0416 - rpn_bbox_loss: 0.6097 - mrcnn_class_loss: 0.2886 - mrcnn_bbox_loss: 0.8695 - mrcnn_mask_loss: 0.7460image_id 762
 54/100 [===============>..............] - ETA: 3:39 - loss: 2.5466 - rpn_class_loss: 0.0413 - rpn_bbox_loss: 0.6246 - mrcnn_class_loss: 0.2859 - mrcnn_bbox_loss: 0.8568 - mrcnn_mask_loss: 0.7380image_id 808
 55/100 [===============>..............] - ETA: 3:34 - loss: 2.5405 - rpn_class_loss: 0.0420 - rpn_bbox_loss: 0.6173 - mrcnn_class_loss: 0.2924 - mrcnn_bbox_loss: 0.8549 - mrcnn_mask_loss: 0.7339image_id 769
 56/100 [===============>..............] - ETA: 3:29 - loss: 2.5340 - rpn_class_loss: 0.0415 - rpn_bbox_loss: 0.6236 - mrcnn_class_loss: 0.2891 - mrcnn_bbox_loss: 0.8528 - mrcnn_mask_loss: 0.7269image_id 368
 57/100 [================>.............] - ETA: 3:25 - loss: 2.5249 - rpn_class_loss: 0.0411 - rpn_bbox_loss: 0.6311 - mrcnn_class_loss: 0.2887 - mrcnn_bbox_loss: 0.8433 - mrcnn_mask_loss: 0.7207image_id 484
 58/100 [================>.............] - ETA: 3:20 - loss: 2.5134 - rpn_class_loss: 0.0407 - rpn_bbox_loss: 0.6281 - mrcnn_class_loss: 0.2879 - mrcnn_bbox_loss: 0.8404 - mrcnn_mask_loss: 0.7164image_id 433
 59/100 [================>.............] - ETA: 3:15 - loss: 2.5018 - rpn_class_loss: 0.0401 - rpn_bbox_loss: 0.6262 - mrcnn_class_loss: 0.2856 - mrcnn_bbox_loss: 0.8357 - mrcnn_mask_loss: 0.7142image_id 146
 60/100 [=================>............] - ETA: 3:10 - loss: 2.4818 - rpn_class_loss: 0.0396 - rpn_bbox_loss: 0.6171 - mrcnn_class_loss: 0.2832 - mrcnn_bbox_loss: 0.8337 - mrcnn_mask_loss: 0.7081image_id 525
 61/100 [=================>............] - ETA: 3:05 - loss: 2.4822 - rpn_class_loss: 0.0396 - rpn_bbox_loss: 0.6178 - mrcnn_class_loss: 0.2814 - mrcnn_bbox_loss: 0.8355 - mrcnn_mask_loss: 0.7080image_id 70
 62/100 [=================>............] - ETA: 3:01 - loss: 2.4654 - rpn_class_loss: 0.0391 - rpn_bbox_loss: 0.6110 - mrcnn_class_loss: 0.2783 - mrcnn_bbox_loss: 0.8282 - mrcnn_mask_loss: 0.7088image_id 426
 63/100 [=================>............] - ETA: 2:56 - loss: 2.4604 - rpn_class_loss: 0.0387 - rpn_bbox_loss: 0.6111 - mrcnn_class_loss: 0.2774 - mrcnn_bbox_loss: 0.8296 - mrcnn_mask_loss: 0.7037image_id 226
 64/100 [==================>...........] - ETA: 2:51 - loss: 2.4666 - rpn_class_loss: 0.0397 - rpn_bbox_loss: 0.6115 - mrcnn_class_loss: 0.2806 - mrcnn_bbox_loss: 0.8327 - mrcnn_mask_loss: 0.7022image_id 438
 65/100 [==================>...........] - ETA: 2:46 - loss: 2.4781 - rpn_class_loss: 0.0392 - rpn_bbox_loss: 0.6313 - mrcnn_class_loss: 0.2776 - mrcnn_bbox_loss: 0.8321 - mrcnn_mask_loss: 0.6980image_id 128
 66/100 [==================>...........] - ETA: 2:41 - loss: 2.4707 - rpn_class_loss: 0.0398 - rpn_bbox_loss: 0.6317 - mrcnn_class_loss: 0.2744 - mrcnn_bbox_loss: 0.8300 - mrcnn_mask_loss: 0.6948image_id 471
 67/100 [===================>..........] - ETA: 2:36 - loss: 2.4479 - rpn_class_loss: 0.0395 - rpn_bbox_loss: 0.6238 - mrcnn_class_loss: 0.2720 - mrcnn_bbox_loss: 0.8239 - mrcnn_mask_loss: 0.6888image_id 58
 68/100 [===================>..........] - ETA: 2:32 - loss: 2.4615 - rpn_class_loss: 0.0391 - rpn_bbox_loss: 0.6297 - mrcnn_class_loss: 0.2814 - mrcnn_bbox_loss: 0.8252 - mrcnn_mask_loss: 0.6861image_id 659
 69/100 [===================>..........] - ETA: 2:27 - loss: 2.4440 - rpn_class_loss: 0.0386 - rpn_bbox_loss: 0.6269 - mrcnn_class_loss: 0.2810 - mrcnn_bbox_loss: 0.8182 - mrcnn_mask_loss: 0.6794image_id 332
 70/100 [====================>.........] - ETA: 2:22 - loss: 2.4722 - rpn_class_loss: 0.0387 - rpn_bbox_loss: 0.6677 - mrcnn_class_loss: 0.2788 - mrcnn_bbox_loss: 0.8128 - mrcnn_mask_loss: 0.6741image_id 558
 71/100 [====================>.........] - ETA: 2:17 - loss: 2.4636 - rpn_class_loss: 0.0390 - rpn_bbox_loss: 0.6631 - mrcnn_class_loss: 0.2767 - mrcnn_bbox_loss: 0.8141 - mrcnn_mask_loss: 0.6708image_id 18
 72/100 [====================>.........] - ETA: 2:13 - loss: 2.4480 - rpn_class_loss: 0.0391 - rpn_bbox_loss: 0.6578 - mrcnn_class_loss: 0.2755 - mrcnn_bbox_loss: 0.8100 - mrcnn_mask_loss: 0.6656image_id 323
 73/100 [====================>.........] - ETA: 2:08 - loss: 2.4514 - rpn_class_loss: 0.0397 - rpn_bbox_loss: 0.6561 - mrcnn_class_loss: 0.2770 - mrcnn_bbox_loss: 0.8165 - mrcnn_mask_loss: 0.6621image_id 361
 74/100 [=====================>........] - ETA: 2:03 - loss: 2.4286 - rpn_class_loss: 0.0393 - rpn_bbox_loss: 0.6479 - mrcnn_class_loss: 0.2737 - mrcnn_bbox_loss: 0.8110 - mrcnn_mask_loss: 0.6568image_id 96
 75/100 [=====================>........] - ETA: 1:58 - loss: 2.4283 - rpn_class_loss: 0.0391 - rpn_bbox_loss: 0.6442 - mrcnn_class_loss: 0.2744 - mrcnn_bbox_loss: 0.8169 - mrcnn_mask_loss: 0.6536image_id 676
 76/100 [=====================>........] - ETA: 1:54 - loss: 2.4190 - rpn_class_loss: 0.0389 - rpn_bbox_loss: 0.6399 - mrcnn_class_loss: 0.2753 - mrcnn_bbox_loss: 0.8139 - mrcnn_mask_loss: 0.6510image_id 223
 77/100 [======================>.......] - ETA: 1:49 - loss: 2.4286 - rpn_class_loss: 0.0388 - rpn_bbox_loss: 0.6388 - mrcnn_class_loss: 0.2779 - mrcnn_bbox_loss: 0.8184 - mrcnn_mask_loss: 0.6546image_id 373
 78/100 [======================>.......] - ETA: 1:44 - loss: 2.4137 - rpn_class_loss: 0.0385 - rpn_bbox_loss: 0.6357 - mrcnn_class_loss: 0.2757 - mrcnn_bbox_loss: 0.8142 - mrcnn_mask_loss: 0.6496image_id 330
 
 79/100 [======================>.......] - ETA: 1:39 - loss: 2.4111 - rpn_class_loss: 0.0383 - rpn_bbox_loss: 0.6309 - mrcnn_class_loss: 0.2809 - mrcnn_bbox_loss: 0.8127 - mrcnn_mask_loss: 0.6483image_id 162
 80/100 [=======================>......] - ETA: 1:35 - loss: 2.4116 - rpn_class_loss: 0.0384 - rpn_bbox_loss: 0.6265 - mrcnn_class_loss: 0.2806 - mrcnn_bbox_loss: 0.8168 - mrcnn_mask_loss: 0.6493image_id 546
 81/100 [=======================>......] - ETA: 1:30 - loss: 2.3967 - rpn_class_loss: 0.0381 - rpn_bbox_loss: 0.6210 - mrcnn_class_loss: 0.2780 - mrcnn_bbox_loss: 0.8153 - mrcnn_mask_loss: 0.6443image_id 311
 82/100 [=======================>......] - ETA: 1:25 - loss: 2.3796 - rpn_class_loss: 0.0377 - rpn_bbox_loss: 0.6162 - mrcnn_class_loss: 0.2774 - mrcnn_bbox_loss: 0.8094 - mrcnn_mask_loss: 0.6389image_id 60
 83/100 [=======================>......] - ETA: 1:20 - loss: 2.3775 - rpn_class_loss: 0.0377 - rpn_bbox_loss: 0.6349 - mrcnn_class_loss: 0.2741 - mrcnn_bbox_loss: 0.7996 - mrcnn_mask_loss: 0.6312image_id 145
 84/100 [========================>.....] - ETA: 1:16 - loss: 2.3729 - rpn_class_loss: 0.0374 - rpn_bbox_loss: 0.6306 - mrcnn_class_loss: 0.2842 - mrcnn_bbox_loss: 0.7929 - mrcnn_mask_loss: 0.6279image_id 354
 85/100 [========================>.....] - ETA: 1:11 - loss: 2.3779 - rpn_class_loss: 0.0374 - rpn_bbox_loss: 0.6328 - mrcnn_class_loss: 0.2837 - mrcnn_bbox_loss: 0.7915 - mrcnn_mask_loss: 0.6325image_id 574
 86/100 [========================>.....] - ETA: 1:06 - loss: 2.3769 - rpn_class_loss: 0.0376 - rpn_bbox_loss: 0.6309 - mrcnn_class_loss: 0.2859 - mrcnn_bbox_loss: 0.7910 - mrcnn_mask_loss: 0.6315image_id 778
 87/100 [=========================>....] - ETA: 1:01 - loss: 2.3688 - rpn_class_loss: 0.0374 - rpn_bbox_loss: 0.6253 - mrcnn_class_loss: 0.2849 - mrcnn_bbox_loss: 0.7908 - mrcnn_mask_loss: 0.6305image_id 799
 88/100 [=========================>....] - ETA: 57s - loss: 2.3610 - rpn_class_loss: 0.0371 - rpn_bbox_loss: 0.6200 - mrcnn_class_loss: 0.2834 - mrcnn_bbox_loss: 0.7893 - mrcnn_mask_loss: 0.6312 image_id 527
 89/100 [=========================>....] - ETA: 52s - loss: 2.3548 - rpn_class_loss: 0.0368 - rpn_bbox_loss: 0.6225 - mrcnn_class_loss: 0.2805 - mrcnn_bbox_loss: 0.7866 - mrcnn_mask_loss: 0.6284image_id 229
 90/100 [==========================>...] - ETA: 47s - loss: 2.3514 - rpn_class_loss: 0.0365 - rpn_bbox_loss: 0.6203 - mrcnn_class_loss: 0.2823 - mrcnn_bbox_loss: 0.7852 - mrcnn_mask_loss: 0.6270image_id 250
 91/100 [==========================>...] - ETA: 42s - loss: 2.3457 - rpn_class_loss: 0.0364 - rpn_bbox_loss: 0.6163 - mrcnn_class_loss: 0.2841 - mrcnn_bbox_loss: 0.7836 - mrcnn_mask_loss: 0.6253image_id 164
 92/100 [==========================>...] - ETA: 38s - loss: 2.3411 - rpn_class_loss: 0.0360 - rpn_bbox_loss: 0.6139 - mrcnn_class_loss: 0.2853 - mrcnn_bbox_loss: 0.7808 - mrcnn_mask_loss: 0.6250image_id 805
 93/100 [==========================>...] - ETA: 33s - loss: 2.3348 - rpn_class_loss: 0.0358 - rpn_bbox_loss: 0.6099 - mrcnn_class_loss: 0.2847 - mrcnn_bbox_loss: 0.7785 - mrcnn_mask_loss: 0.6260image_id 813
 94/100 [===========================>..] - ETA: 28s - loss: 2.3224 - rpn_class_loss: 0.0354 - rpn_bbox_loss: 0.6075 - mrcnn_class_loss: 0.2847 - mrcnn_bbox_loss: 0.7733 - mrcnn_mask_loss: 0.6215image_id 761
 95/100 [===========================>..] - ETA: 23s - loss: 2.3116 - rpn_class_loss: 0.0356 - rpn_bbox_loss: 0.6034 - mrcnn_class_loss: 0.2831 - mrcnn_bbox_loss: 0.7696 - mrcnn_mask_loss: 0.6199image_id 599
 96/100 [===========================>..] - ETA: 18s - loss: 2.3066 - rpn_class_loss: 0.0354 - rpn_bbox_loss: 0.6015 - mrcnn_class_loss: 0.2813 - mrcnn_bbox_loss: 0.7685 - mrcnn_mask_loss: 0.6198image_id 242
 97/100 [============================>.] - ETA: 14s - loss: 2.3021 - rpn_class_loss: 0.0353 - rpn_bbox_loss: 0.5989 - mrcnn_class_loss: 0.2822 - mrcnn_bbox_loss: 0.7684 - mrcnn_mask_loss: 0.6173image_id 50
 98/100 [============================>.] - ETA: 9s - loss: 2.2898 - rpn_class_loss: 0.0352 - rpn_bbox_loss: 0.5949 - mrcnn_class_loss: 0.2807 - mrcnn_bbox_loss: 0.7656 - mrcnn_mask_loss: 0.6134 image_id 480
 99/100 [============================>.] - ETA: 4s - loss: 2.2870 - rpn_class_loss: 0.0352 - rpn_bbox_loss: 0.5957 - mrcnn_class_loss: 0.2800 - mrcnn_bbox_loss: 0.7648 - mrcnn_mask_loss: 0.6113image_id 708
image_id 4
image_id 1
image_id 8
image_id 9
image_id 0
100/100 [==============================] - 488s 5s/step - loss: 2.2875 - rpn_class_loss: 0.0349 - rpn_bbox_loss: 0.5931 - mrcnn_class_loss: 0.2825 - mrcnn_bbox_loss: 0.7684 - mrcnn_mask_loss: 0.6085 - val_loss: 2.3259 - val_rpn_class_loss: 0.0170 - val_rpn_bbox_loss: 0.4478 - val_mrcnn_class_loss: 0.3944 - val_mrcnn_bbox_loss: 0.9476 - val_mrcnn_mask_loss: 0.5191

############代码块八###########

# Fine tune all layers
# Passing layers="all" trains all layers. You can also
# pass a regular expression to select which layers to
# train by name pattern.
model.train(dataset_train, dataset_val,
learning_rate=config.LEARNING_RATE / 10,
epochs=1,
layers="all")

----------------------------------------------------------

输出:

Starting at epoch 1. LR=0.0001

Checkpoint Path: G:TensorflowProjectMask_RCNN-mastersamples0820shapeslogsshapes20180820T1503mask_rcnn_shapes_{epoch:04d}.h5
Selecting layers to train
conv1                  (Conv2D)
bn_conv1               (BatchNorm)
res2a_branch2a         (Conv2D)
bn2a_branch2a          (BatchNorm)
res2a_branch2b         (Conv2D)
bn2a_branch2b          (BatchNorm)
res2a_branch2c         (Conv2D)
res2a_branch1          (Conv2D)
bn2a_branch2c          (BatchNorm)
bn2a_branch1           (BatchNorm)
res2b_branch2a         (Conv2D)
bn2b_branch2a          (BatchNorm)
res2b_branch2b         (Conv2D)
bn2b_branch2b          (BatchNorm)
res2b_branch2c         (Conv2D)
bn2b_branch2c          (BatchNorm)
res2c_branch2a         (Conv2D)
bn2c_branch2a          (BatchNorm)
res2c_branch2b         (Conv2D)
bn2c_branch2b          (BatchNorm)
res2c_branch2c         (Conv2D)
bn2c_branch2c          (BatchNorm)
res3a_branch2a         (Conv2D)
bn3a_branch2a          (BatchNorm)
res3a_branch2b         (Conv2D)
bn3a_branch2b          (BatchNorm)
res3a_branch2c         (Conv2D)
res3a_branch1          (Conv2D)
bn3a_branch2c          (BatchNorm)
bn3a_branch1           (BatchNorm)
res3b_branch2a         (Conv2D)
bn3b_branch2a          (BatchNorm)
res3b_branch2b         (Conv2D)
bn3b_branch2b          (BatchNorm)
res3b_branch2c         (Conv2D)
bn3b_branch2c          (BatchNorm)
res3c_branch2a         (Conv2D)
bn3c_branch2a          (BatchNorm)
res3c_branch2b         (Conv2D)
bn3c_branch2b          (BatchNorm)
res3c_branch2c         (Conv2D)
bn3c_branch2c          (BatchNorm)
res3d_branch2a         (Conv2D)
bn3d_branch2a          (BatchNorm)
res3d_branch2b         (Conv2D)
bn3d_branch2b          (BatchNorm)
res3d_branch2c         (Conv2D)
bn3d_branch2c          (BatchNorm)
res4a_branch2a         (Conv2D)
bn4a_branch2a          (BatchNorm)
res4a_branch2b         (Conv2D)
bn4a_branch2b          (BatchNorm)
res4a_branch2c         (Conv2D)
res4a_branch1          (Conv2D)
bn4a_branch2c          (BatchNorm)
bn4a_branch1           (BatchNorm)
res4b_branch2a         (Conv2D)
bn4b_branch2a          (BatchNorm)
res4b_branch2b         (Conv2D)
bn4b_branch2b          (BatchNorm)
res4b_branch2c         (Conv2D)
bn4b_branch2c          (BatchNorm)
res4c_branch2a         (Conv2D)
bn4c_branch2a          (BatchNorm)
res4c_branch2b         (Conv2D)
bn4c_branch2b          (BatchNorm)
res4c_branch2c         (Conv2D)
bn4c_branch2c          (BatchNorm)
res4d_branch2a         (Conv2D)
bn4d_branch2a          (BatchNorm)
res4d_branch2b         (Conv2D)
bn4d_branch2b          (BatchNorm)
res4d_branch2c         (Conv2D)
bn4d_branch2c          (BatchNorm)
res4e_branch2a         (Conv2D)
bn4e_branch2a          (BatchNorm)
res4e_branch2b         (Conv2D)
bn4e_branch2b          (BatchNorm)
res4e_branch2c         (Conv2D)
bn4e_branch2c          (BatchNorm)
res4f_branch2a         (Conv2D)
bn4f_branch2a          (BatchNorm)
res4f_branch2b         (Conv2D)
bn4f_branch2b          (BatchNorm)
res4f_branch2c         (Conv2D)
bn4f_branch2c          (BatchNorm)
res4g_branch2a         (Conv2D)
bn4g_branch2a          (BatchNorm)
res4g_branch2b         (Conv2D)
bn4g_branch2b          (BatchNorm)
res4g_branch2c         (Conv2D)
bn4g_branch2c          (BatchNorm)
res4h_branch2a         (Conv2D)
bn4h_branch2a          (BatchNorm)
res4h_branch2b         (Conv2D)
bn4h_branch2b          (BatchNorm)
res4h_branch2c         (Conv2D)
bn4h_branch2c          (BatchNorm)
res4i_branch2a         (Conv2D)
bn4i_branch2a          (BatchNorm)
res4i_branch2b         (Conv2D)
bn4i_branch2b          (BatchNorm)
res4i_branch2c         (Conv2D)
bn4i_branch2c          (BatchNorm)
res4j_branch2a         (Conv2D)
bn4j_branch2a          (BatchNorm)
res4j_branch2b         (Conv2D)
bn4j_branch2b          (BatchNorm)
res4j_branch2c         (Conv2D)
bn4j_branch2c          (BatchNorm)
res4k_branch2a         (Conv2D)
bn4k_branch2a          (BatchNorm)
res4k_branch2b         (Conv2D)
bn4k_branch2b          (BatchNorm)
res4k_branch2c         (Conv2D)
bn4k_branch2c          (BatchNorm)
res4l_branch2a         (Conv2D)
bn4l_branch2a          (BatchNorm)
res4l_branch2b         (Conv2D)
bn4l_branch2b          (BatchNorm)
res4l_branch2c         (Conv2D)
bn4l_branch2c          (BatchNorm)
res4m_branch2a         (Conv2D)
bn4m_branch2a          (BatchNorm)
res4m_branch2b         (Conv2D)
bn4m_branch2b          (BatchNorm)
res4m_branch2c         (Conv2D)
bn4m_branch2c          (BatchNorm)
res4n_branch2a         (Conv2D)
bn4n_branch2a          (BatchNorm)
res4n_branch2b         (Conv2D)
bn4n_branch2b          (BatchNorm)
res4n_branch2c         (Conv2D)
bn4n_branch2c          (BatchNorm)
res4o_branch2a         (Conv2D)
bn4o_branch2a          (BatchNorm)
res4o_branch2b         (Conv2D)
bn4o_branch2b          (BatchNorm)
res4o_branch2c         (Conv2D)
bn4o_branch2c          (BatchNorm)
res4p_branch2a         (Conv2D)
bn4p_branch2a          (BatchNorm)
res4p_branch2b         (Conv2D)
bn4p_branch2b          (BatchNorm)
res4p_branch2c         (Conv2D)
bn4p_branch2c          (BatchNorm)
res4q_branch2a         (Conv2D)
bn4q_branch2a          (BatchNorm)
res4q_branch2b         (Conv2D)
bn4q_branch2b          (BatchNorm)
res4q_branch2c         (Conv2D)
bn4q_branch2c          (BatchNorm)
res4r_branch2a         (Conv2D)
bn4r_branch2a          (BatchNorm)
res4r_branch2b         (Conv2D)
bn4r_branch2b          (BatchNorm)
res4r_branch2c         (Conv2D)
bn4r_branch2c          (BatchNorm)
res4s_branch2a         (Conv2D)
bn4s_branch2a          (BatchNorm)
res4s_branch2b         (Conv2D)
bn4s_branch2b          (BatchNorm)
res4s_branch2c         (Conv2D)
bn4s_branch2c          (BatchNorm)
res4t_branch2a         (Conv2D)
bn4t_branch2a          (BatchNorm)
res4t_branch2b         (Conv2D)
bn4t_branch2b          (BatchNorm)
res4t_branch2c         (Conv2D)
bn4t_branch2c          (BatchNorm)
res4u_branch2a         (Conv2D)
bn4u_branch2a          (BatchNorm)
res4u_branch2b         (Conv2D)
bn4u_branch2b          (BatchNorm)
res4u_branch2c         (Conv2D)
bn4u_branch2c          (BatchNorm)
res4v_branch2a         (Conv2D)
bn4v_branch2a          (BatchNorm)
res4v_branch2b         (Conv2D)
bn4v_branch2b          (BatchNorm)
res4v_branch2c         (Conv2D)
bn4v_branch2c          (BatchNorm)
res4w_branch2a         (Conv2D)
bn4w_branch2a          (BatchNorm)
res4w_branch2b         (Conv2D)
bn4w_branch2b          (BatchNorm)
res4w_branch2c         (Conv2D)
bn4w_branch2c          (BatchNorm)
res5a_branch2a         (Conv2D)
bn5a_branch2a          (BatchNorm)
res5a_branch2b         (Conv2D)
bn5a_branch2b          (BatchNorm)
res5a_branch2c         (Conv2D)
res5a_branch1          (Conv2D)
bn5a_branch2c          (BatchNorm)
bn5a_branch1           (BatchNorm)
res5b_branch2a         (Conv2D)
bn5b_branch2a          (BatchNorm)
res5b_branch2b         (Conv2D)
bn5b_branch2b          (BatchNorm)
res5b_branch2c         (Conv2D)
bn5b_branch2c          (BatchNorm)
res5c_branch2a         (Conv2D)
bn5c_branch2a          (BatchNorm)
res5c_branch2b         (Conv2D)
bn5c_branch2b          (BatchNorm)
res5c_branch2c         (Conv2D)
bn5c_branch2c          (BatchNorm)
fpn_c5p5               (Conv2D)
fpn_c4p4               (Conv2D)
fpn_c3p3               (Conv2D)
fpn_c2p2               (Conv2D)
fpn_p5                 (Conv2D)
fpn_p2                 (Conv2D)
fpn_p3                 (Conv2D)
fpn_p4                 (Conv2D)
In model:  rpn_model
    rpn_conv_shared        (Conv2D)
    rpn_class_raw          (Conv2D)
    rpn_bbox_pred          (Conv2D)
mrcnn_mask_conv1       (TimeDistributed)
mrcnn_mask_bn1         (TimeDistributed)
mrcnn_mask_conv2       (TimeDistributed)
mrcnn_mask_bn2         (TimeDistributed)
mrcnn_class_conv1      (TimeDistributed)
mrcnn_class_bn1        (TimeDistributed)
mrcnn_mask_conv3       (TimeDistributed)
mrcnn_mask_bn3         (TimeDistributed)
mrcnn_class_conv2      (TimeDistributed)
mrcnn_class_bn2        (TimeDistributed)
mrcnn_mask_conv4       (TimeDistributed)
mrcnn_mask_bn4         (TimeDistributed)
mrcnn_bbox_fc          (TimeDistributed)
mrcnn_mask_deconv      (TimeDistributed)
mrcnn_class_logits     (TimeDistributed)
mrcnn_mask             (TimeDistributed)




原文地址:https://www.cnblogs.com/herd/p/9506162.html