TypeError: Could not build a TypeSpec with type KerasTensor

12,497

Solution 1

You should using Tensorflow 1.x. Change TF version on colab using %tensorflow_version 1.x After that I think you will get other problem with keras version, add command to install keras 2.1.5. !pip install keras==2.1.5

Solution 2

I got this error when upgrading from tensorflow 1.2.1 to 2.4. It appears the statement "x, K.shape(input_image)[1:3]))(input_gt_boxes)" is causing the bug. This is possibly due to an API change in tensorflow and/or Keras. I suspect the code you're trying to run is made for a different version of tensorflow than the one you got installed. You could try to install a matching version of tensorflow and keras or you can try to fix the code to comply with your current version. In my case I had to make slight changes to the way I constructed the model, but it is not easy to see how that can be done for your case without downloading the model library.

Solution 3

To run MaskR-CNN on tensorflow 2.x versions use the code from leekunhee's fork of matterport repo for compatability : https://github.com/leekunhee/Mask_RCNN

Works on:

Python version 3.8
Tensorflow 2.3.1 cpu+gpu
keras 2.4.3

Solution 4

This is because of version compatibility.
Or try using the shortened library name like so:

import tensorflow as tf
tf.compat.v1.disable_eager_execution()
Share:
12,497
REDBONE07
Author by

REDBONE07

Updated on June 21, 2022

Comments

  • REDBONE07
    REDBONE07 almost 2 years

    I am a newbie to deep learning so while I am trying to build a Masked R-CNN model for training my Custom Dataset I am getting an error which reads:

    TypeError: Could not build a TypeSpec for <KerasTensor: shape=(None, None, 4) dtype=float32 (created by layer 'tf.math.truediv')> with type KerasTensor
    

    Below is the PYTHON CODE I am trying to implement for building my ** Masked R-CNN model**:

    Mask R-CNN
    Configurations and data loading code for MS COCO.
    
    Copyright (c) 2017 Matterport, Inc.
    Licensed under the MIT License (see LICENSE for details)
    Written by Waleed Abdulla
    
    ------------------------------------------------------------
    
    Usage: import the module (see Jupyter notebooks for examples), or run from
           the command line as such:
    
        # Train a new model starting from pre-trained COCO weights
        python3 coco.py train --dataset=/path/to/coco/ --model=coco
    
        # Train a new model starting from ImageNet weights. Also auto download COCO dataset
        python3 coco.py train --dataset=/path/to/coco/ --model=imagenet --download=True
    
        # Continue training a model that you had trained earlier
        python3 coco.py train --dataset=/path/to/coco/ --model=/path/to/weights.h5
    
        # Continue training the last model you trained
        python3 coco.py train --dataset=/path/to/coco/ --model=last
    
        # Run COCO evaluatoin on the last model you trained
        python3 coco.py evaluate --dataset=/path/to/coco/ --model=last
    """
    
    import os
    import sys
    import time
    import numpy as np
    import imgaug  # https://github.com/aleju/imgaug (pip3 install imgaug)
    
    # Download and install the Python COCO tools from https://github.com/waleedka/coco
    # That's a fork from the original https://github.com/pdollar/coco with a bug
    # fix for Python 3.
    # I submitted a pull request https://github.com/cocodataset/cocoapi/pull/50
    # If the PR is merged then use the original repo.
    # Note: Edit PythonAPI/Makefile and replace "python" with "python3".
    from pycocotools.coco import COCO
    from pycocotools.cocoeval import COCOeval
    from pycocotools import mask as maskUtils
    
    import zipfile
    import urllib.request
    import shutil
    
    # Root directory of the project
    ROOT_DIR = os.path.abspath("../../")
    
    # Import Mask RCNN
    sys.path.append(ROOT_DIR)  # To find local version of the library
    from mrcnn.config import Config
    from mrcnn import model as modellib, utils
    
    # Path to trained weights file
    COCO_MODEL_PATH = os.path.join(ROOT_DIR, "mask_rcnn_coco.h5")
    
    # Directory to save logs and model checkpoints, if not provided
    # through the command line argument --logs
    DEFAULT_LOGS_DIR = os.path.join(ROOT_DIR, "Mask_RCNN\\logs")
    DEFAULT_DATASET_YEAR = "2014"
    
    ############################################################
    #  Configurations
    ############################################################
    
    
    class CocoConfig(Config):
        """Configuration for training on MS COCO.
        Derives from the base Config class and overrides values specific
        to the COCO dataset.
        """
        # Give the configuration a recognizable name
        NAME = "coco"
    
        # We use a GPU with 12GB memory, which can fit two images.
        # Adjust down if you use a smaller GPU.
        IMAGES_PER_GPU = 2
    
        # Uncomment to train on 8 GPUs (default is 1)
        # GPU_COUNT = 8
    
        # Number of classes (including background)
        NUM_CLASSES = 1 + 80  # COCO has 80 classes
    
    
    ############################################################
    #  Dataset
    ############################################################
    
    class CocoDataset(utils.Dataset):
        def load_coco(self, dataset_dir, subset, year=DEFAULT_DATASET_YEAR, class_ids=None,
                      class_map=None, return_coco=False, auto_download=False):
            """Load a subset of the COCO dataset.
            dataset_dir: The root directory of the COCO dataset.
            subset: What to load (train, val, minival, valminusminival)
            year: What dataset year to load (2014, 2017) as a string, not an integer
            class_ids: If provided, only loads images that have the given classes.
            class_map: TODO: Not implemented yet. Supports maping classes from
                different datasets to the same class ID.
            return_coco: If True, returns the COCO object.
            auto_download: Automatically download and unzip MS-COCO images and annotations
            """
    
            if auto_download is True:
                self.auto_download(dataset_dir, subset, year)
    
            coco = COCO("{}/annotations/instances_{}{}.json".format(dataset_dir, subset, year))
            if subset == "minival" or subset == "valminusminival":
                subset = "val"
            image_dir = "{}/{}{}".format(dataset_dir, subset, year)
    
            # Load all classes or a subset?
            if not class_ids:
                # All classes
                class_ids = sorted(coco.getCatIds())
    
            # All images or a subset?
            if class_ids:
                image_ids = []
                for id in class_ids:
                    image_ids.extend(list(coco.getImgIds(catIds=[id])))
                # Remove duplicates
                image_ids = list(set(image_ids))
            else:
                # All images
                image_ids = list(coco.imgs.keys())
    
            # Add classes
            for i in class_ids:
                self.add_class("coco", i, coco.loadCats(i)[0]["name"])
    
            # Add images
            for i in image_ids:
                self.add_image(
                    "coco", image_id=i,
                    path=os.path.join(image_dir, coco.imgs[i]['file_name']),
                    width=coco.imgs[i]["width"],
                    height=coco.imgs[i]["height"],
                    annotations=coco.loadAnns(coco.getAnnIds(
                        imgIds=[i], catIds=class_ids, iscrowd=None)))
            if return_coco:
                return coco
    
        def auto_download(self, dataDir, dataType, dataYear):
            """Download the COCO dataset/annotations if requested.
            dataDir: The root directory of the COCO dataset.
            dataType: What to load (train, val, minival, valminusminival)
            dataYear: What dataset year to load (2014, 2017) as a string, not an integer
            Note:
                For 2014, use "train", "val", "minival", or "valminusminival"
                For 2017, only "train" and "val" annotations are available
            """
    
            # Setup paths and file names
            if dataType == "minival" or dataType == "valminusminival":
                imgDir = "{}/{}{}".format(dataDir, "val", dataYear)
                imgZipFile = "{}/{}{}.zip".format(dataDir, "val", dataYear)
                imgURL = "http://images.cocodataset.org/zips/{}{}.zip".format("val", dataYear)
            else:
                imgDir = "{}/{}{}".format(dataDir, dataType, dataYear)
                imgZipFile = "{}/{}{}.zip".format(dataDir, dataType, dataYear)
                imgURL = "http://images.cocodataset.org/zips/{}{}.zip".format(dataType, dataYear)
            # print("Image paths:"); print(imgDir); print(imgZipFile); print(imgURL)
    
            # Create main folder if it doesn't exist yet
            if not os.path.exists(dataDir):
                os.makedirs(dataDir)
    
            # Download images if not available locally
            if not os.path.exists(imgDir):
                os.makedirs(imgDir)
                print("Downloading images to " + imgZipFile + " ...")
                with urllib.request.urlopen(imgURL) as resp, open(imgZipFile, 'wb') as out:
                    shutil.copyfileobj(resp, out)
                print("... done downloading.")
                print("Unzipping " + imgZipFile)
                with zipfile.ZipFile(imgZipFile, "r") as zip_ref:
                    zip_ref.extractall(dataDir)
                print("... done unzipping")
            print("Will use images in " + imgDir)
    
            # Setup annotations data paths
            annDir = "{}/annotations".format(dataDir)
            if dataType == "minival":
                annZipFile = "{}/instances_minival2014.json.zip".format(dataDir)
                annFile = "{}/instances_minival2014.json".format(annDir)
                annURL = "https://dl.dropboxusercontent.com/s/o43o90bna78omob/instances_minival2014.json.zip?dl=0"
                unZipDir = annDir
            elif dataType == "valminusminival":
                annZipFile = "{}/instances_valminusminival2014.json.zip".format(dataDir)
                annFile = "{}/instances_valminusminival2014.json".format(annDir)
                annURL = "https://dl.dropboxusercontent.com/s/s3tw5zcg7395368/instances_valminusminival2014.json.zip?dl=0"
                unZipDir = annDir
            else:
                annZipFile = "{}/annotations_trainval{}.zip".format(dataDir, dataYear)
                annFile = "{}/instances_{}{}.json".format(annDir, dataType, dataYear)
                annURL = "http://images.cocodataset.org/annotations/annotations_trainval{}.zip".format(dataYear)
                unZipDir = dataDir
            # print("Annotations paths:"); print(annDir); print(annFile); print(annZipFile); print(annURL)
    
            # Download annotations if not available locally
            if not os.path.exists(annDir):
                os.makedirs(annDir)
            if not os.path.exists(annFile):
                if not os.path.exists(annZipFile):
                    print("Downloading zipped annotations to " + annZipFile + " ...")
                    with urllib.request.urlopen(annURL) as resp, open(annZipFile, 'wb') as out:
                        shutil.copyfileobj(resp, out)
                    print("... done downloading.")
                print("Unzipping " + annZipFile)
                with zipfile.ZipFile(annZipFile, "r") as zip_ref:
                    zip_ref.extractall(unZipDir)
                print("... done unzipping")
            print("Will use annotations in " + annFile)
    
        def load_mask(self, image_id):
            """Load instance masks for the given image.
    
            Different datasets use different ways to store masks. This
            function converts the different mask format to one format
            in the form of a bitmap [height, width, instances].
    
            Returns:
            masks: A bool array of shape [height, width, instance count] with
                one mask per instance.
            class_ids: a 1D array of class IDs of the instance masks.
            """
            # If not a COCO image, delegate to parent class.
            image_info = self.image_info[image_id]
            if image_info["source"] != "coco":
                return super(CocoDataset, self).load_mask(image_id)
    
            instance_masks = []
            class_ids = []
            annotations = self.image_info[image_id]["annotations"]
            # Build mask of shape [height, width, instance_count] and list
            # of class IDs that correspond to each channel of the mask.
            for annotation in annotations:
                class_id = self.map_source_class_id(
                    "coco.{}".format(annotation['category_id']))
                if class_id:
                    m = self.annToMask(annotation, image_info["height"],
                                       image_info["width"])
                    # Some objects are so small that they're less than 1 pixel area
                    # and end up rounded out. Skip those objects.
                    if m.max() < 1:
                        continue
                    # Is it a crowd? If so, use a negative class ID.
                    if annotation['iscrowd']:
                        # Use negative class ID for crowds
                        class_id *= -1
                        # For crowd masks, annToMask() sometimes returns a mask
                        # smaller than the given dimensions. If so, resize it.
                        if m.shape[0] != image_info["height"] or m.shape[1] != image_info["width"]:
                            m = np.ones([image_info["height"], image_info["width"]], dtype=bool)
                    instance_masks.append(m)
                    class_ids.append(class_id)
    
            # Pack instance masks into an array
            if class_ids:
                mask = np.stack(instance_masks, axis=2).astype(np.bool)
                class_ids = np.array(class_ids, dtype=np.int32)
                return mask, class_ids
            else:
                # Call super class to return an empty mask
                return super(CocoDataset, self).load_mask(image_id)
    
        def image_reference(self, image_id):
            """Return a link to the image in the COCO Website."""
            info = self.image_info[image_id]
            if info["source"] == "coco":
                return "http://cocodataset.org/#explore?id={}".format(info["id"])
            else:
                super(CocoDataset, self).image_reference(image_id)
    
        # The following two functions are from pycocotools with a few changes.
    
        def annToRLE(self, ann, height, width):
            """
            Convert annotation which can be polygons, uncompressed RLE to RLE.
            :return: binary mask (numpy 2D array)
            """
            segm = ann['segmentation']
            if isinstance(segm, list):
                # polygon -- a single object might consist of multiple parts
                # we merge all parts into one mask rle code
                rles = maskUtils.frPyObjects(segm, height, width)
                rle = maskUtils.merge(rles)
            elif isinstance(segm['counts'], list):
                # uncompressed RLE
                rle = maskUtils.frPyObjects(segm, height, width)
            else:
                # rle
                rle = ann['segmentation']
            return rle
    
        def annToMask(self, ann, height, width):
            """
            Convert annotation which can be polygons, uncompressed RLE, or RLE to binary mask.
            :return: binary mask (numpy 2D array)
            """
            rle = self.annToRLE(ann, height, width)
            m = maskUtils.decode(rle)
            return m
    
    
    ############################################################
    #  COCO Evaluation
    ############################################################
    
    def build_coco_results(dataset, image_ids, rois, class_ids, scores, masks):
        """Arrange resutls to match COCO specs in http://cocodataset.org/#format
        """
        # If no results, return an empty list
        if rois is None:
            return []
    
        results = []
        for image_id in image_ids:
            # Loop through detections
            for i in range(rois.shape[0]):
                class_id = class_ids[i]
                score = scores[i]
                bbox = np.around(rois[i], 1)
                mask = masks[:, :, i]
    
                result = {
                    "image_id": image_id,
                    "category_id": dataset.get_source_class_id(class_id, "coco"),
                    "bbox": [bbox[1], bbox[0], bbox[3] - bbox[1], bbox[2] - bbox[0]],
                    "score": score,
                    "segmentation": maskUtils.encode(np.asfortranarray(mask))
                }
                results.append(result)
        return results
    
    
    def evaluate_coco(model, dataset, coco, eval_type="bbox", limit=0, image_ids=None):
        """Runs official COCO evaluation.
        dataset: A Dataset object with valiadtion data
        eval_type: "bbox" or "segm" for bounding box or segmentation evaluation
        limit: if not 0, it's the number of images to use for evaluation
        """
        # Pick COCO images from the dataset
        image_ids = image_ids or dataset.image_ids
    
        # Limit to a subset
        if limit:
            image_ids = image_ids[:limit]
    
        # Get corresponding COCO image IDs.
        coco_image_ids = [dataset.image_info[id]["id"] for id in image_ids]
    
        t_prediction = 0
        t_start = time.time()
    
        results = []
        for i, image_id in enumerate(image_ids):
            # Load image
            image = dataset.load_image(image_id)
    
            # Run detection
            t = time.time()
            r = model.detect([image], verbose=0)[0]
            t_prediction += (time.time() - t)
    
            # Convert results to COCO format
            # Cast masks to uint8 because COCO tools errors out on bool
            image_results = build_coco_results(dataset, coco_image_ids[i:i + 1],
                                               r["rois"], r["class_ids"],
                                               r["scores"],
                                               r["masks"].astype(np.uint8))
            results.extend(image_results)
    
        # Load results. This modifies results with additional attributes.
        coco_results = coco.loadRes(results)
    
        # Evaluate
        cocoEval = COCOeval(coco, coco_results, eval_type)
        cocoEval.params.imgIds = coco_image_ids
        cocoEval.evaluate()
        cocoEval.accumulate()
        cocoEval.summarize()
    
        print("Prediction time: {}. Average {}/image".format(
            t_prediction, t_prediction / len(image_ids)))
        print("Total time: ", time.time() - t_start)
    
    
    ############################################################
    #  Training
    ############################################################
    
    
    if __name__ == '__main__':
        import argparse
    
        # Parse command line arguments
        parser = argparse.ArgumentParser(
            description='Train Mask R-CNN on MS COCO.')
        parser.add_argument("command",
                            metavar="<command>",
                            help="'train' or 'evaluate' on MS COCO")
        parser.add_argument('--dataset', required=True,
                            metavar="C:\\Users\\HP\\TEST\\Train",
                            help='Directory of the MS-COCO dataset')
        parser.add_argument('--year', required=False,
                            default=DEFAULT_DATASET_YEAR,
                            metavar="<year>",
                            help='Year of the MS-COCO dataset (2014 or 2017) (default=2014)')
        parser.add_argument('--model', required=False,
                            #metavar="C:\\Users\\HP\\mask_rcnn_coco.h5"
                metavar="C:\\Users\\HP\\Mask_RCNN\\samples\\coco\\coco.py",
                            help="Path to weights .h5 file or 'coco'")
        parser.add_argument('--logs', required=False,
                            default=DEFAULT_LOGS_DIR,
                            metavar="/path/to/logs/",
                            help='Logs and checkpoints directory (default=logs/)')
        parser.add_argument('--limit', required=False,
                            default=500,
                            metavar="<image count>",
                            help='Images to use for evaluation (default=500)')
        parser.add_argument('--download', required=False,
                            default=False,
                            metavar="<True|False>",
                            help='Automatically download and unzip MS-COCO files (default=False)',
                            type=bool)
        args = parser.parse_args()
        print("Command: ", args.command)
        print("Model: ", args.model)
        print("Dataset: ", args.dataset)
        print("Year: ", args.year)
        print("Logs: ", args.logs)
        print("Auto Download: ", args.download)
    
        # Configurations
        if args.command == "train":
            config = CocoConfig()
        else:
            class InferenceConfig(CocoConfig):
                # Set batch size to 1 since we'll be running inference on
                # one image at a time. Batch size = GPU_COUNT * IMAGES_PER_GPU
                GPU_COUNT = 1
                IMAGES_PER_GPU = 1
                DETECTION_MIN_CONFIDENCE = 0
            config = InferenceConfig()
        config.display()
    
        # Create model
        if args.command == "train":
            model = modellib.MaskRCNN(mode="training", config=config,
                                      model_dir=args.logs)
        else:
            model = modellib.MaskRCNN(mode="inference", config=config,
                                      model_dir=args.logs)
    
        # Select weights file to load
        if args.model.lower() == "coco":
            model_path = COCO_MODEL_PATH
        elif args.model.lower() == "last":
            # Find last trained weights
            model_path = model.find_last()
        elif args.model.lower() == "imagenet":
            # Start from ImageNet trained weights
            model_path = model.get_imagenet_weights()
        else:
            model_path = args.model
    
        # Load weights
        print("Loading weights ", model_path)
        model.load_weights(model_path, by_name=True)
    
        # Train or evaluate
        if args.command == "train":
            # Training dataset. Use the training set and 35K from the
            # validation set, as as in the Mask RCNN paper.
            dataset_train = CocoDataset()
            dataset_train.load_coco(args.dataset, "train", year=args.year, auto_download=args.download)
            if args.year in '2014':
                dataset_train.load_coco(args.dataset, "valminusminival", year=args.year, auto_download=args.download)
            dataset_train.prepare()
    
            # Validation dataset
            dataset_val = CocoDataset()
            val_type = "val" if args.year in '2017' else "minival"
            dataset_val.load_coco(args.dataset, val_type, year=args.year, auto_download=args.download)
            dataset_val.prepare()
    
            # Image Augmentation
            # Right/Left flip 50% of the time
            augmentation = imgaug.augmenters.Fliplr(0.5)
    
            # *** This training schedule is an example. Update to your needs ***
    
            # Training - Stage 1
            print("Training network heads")
            model.train(dataset_train, dataset_val,
                        learning_rate=config.LEARNING_RATE,
                        epochs=40,
                        layers='heads',
                        augmentation=augmentation)
    
            # Training - Stage 2
            # Finetune layers from ResNet stage 4 and up
            print("Fine tune Resnet stage 4 and up")
            model.train(dataset_train, dataset_val,
                        learning_rate=config.LEARNING_RATE,
                        epochs=120,
                        layers='4+',
                        augmentation=augmentation)
    
            # Training - Stage 3
            # Fine tune all layers
            print("Fine tune all layers")
            model.train(dataset_train, dataset_val,
                        learning_rate=config.LEARNING_RATE / 10,
                        epochs=160,
                        layers='all',
                        augmentation=augmentation)
    
        elif args.command == "evaluate":
            # Validation dataset
            dataset_val = CocoDataset()
            val_type = "val" if args.year in '2017' else "minival"
            coco = dataset_val.load_coco(args.dataset, val_type, year=args.year, return_coco=True,auto_download=args.download)
            dataset_val.prepare()
            print("Running COCO evaluation on {} images.".format(args.limit))
            evaluate_coco(model, dataset_val, coco, "bbox", limit=int(args.limit))
        else:
            print("'{}' is not recognized. "
                  "Use 'train' or 'evaluate'".format(args.command))
    

    Now after I saved this code as a .py file and executed the following command on my terminal:

    (base) C:\Users\HP>python C:\Users\HP\Mask_RCNN\samples\coco\coco.py train --dataset=C:\Users\HP\Test\Train --model=coco
    

    I got the following:

    2020-12-21 00:41:06.252236: W tensorflow/stream_executor/platform/default/dso_loader.cc:60] Could not load dynamic library 'cudart64_110.dll'; dlerror: cudart64_110.dll not found
    2020-12-21 00:41:06.260248: I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine.
    
    (base) C:\Users\HP>python C:\Users\HP\Desktop\try.py train --dataset=C:\Users\HP\Test\Train --model=C:\Users\HP\mask_rcnn_coco.h5
    2020-12-21 00:42:34.586446: W tensorflow/stream_executor/platform/default/dso_loader.cc:60] Could not load dynamic library 'cudart64_110.dll'; dlerror: cudart64_110.dll not found
    2020-12-21 00:42:34.594568: I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine.
    
    (base) C:\Users\HP>python C:\Users\HP\Mask_RCNN\samples\coco\coco.py train --dataset=C:\Users\HP\Test\Train --model=coco
    2020-12-21 00:44:41.479421: W tensorflow/stream_executor/platform/default/dso_loader.cc:60] Could not load dynamic library 'cudart64_110.dll'; dlerror: cudart64_110.dll not found
    2020-12-21 00:44:41.490317: I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine.
    Command:  train
    Model:  coco
    Dataset:  C:\Users\HP\Test\Train
    Year:  2014
    Logs:  C:\Mask_RCNN\logs
    Auto Download:  False
    
    Configurations:
    BACKBONE                       resnet101
    BACKBONE_STRIDES               [4, 8, 16, 32, 64]
    BATCH_SIZE                     2
    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                 2
    IMAGE_MAX_DIM                  1024
    IMAGE_META_SIZE                93
    IMAGE_MIN_DIM                  800
    IMAGE_MIN_SCALE                0
    IMAGE_RESIZE_MODE              square
    IMAGE_SHAPE                    [1024 1024    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                           coco
    NUM_CLASSES                    81
    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              (32, 64, 128, 256, 512)
    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                1000
    TOP_DOWN_PYRAMID_SIZE          256
    TRAIN_BN                       False
    TRAIN_ROIS_PER_IMAGE           200
    USE_MINI_MASK                  True
    USE_RPN_ROIS                   True
    VALIDATION_STEPS               50
    WEIGHT_DECAY                   0.0001
    
    
    Traceback (most recent call last):
      File "C:\Users\HP\Mask_RCNN\samples\coco\coco.py", line 456, in <module>
        model_dir=args.logs)
      File "C:\Users\HP\anaconda3\lib\site-packages\mrcnn\model.py", line 1832, in __init__
        self.keras_model = self.build(mode=mode, config=config)
      File "C:\Users\HP\anaconda3\lib\site-packages\mrcnn\model.py", line 1871, in build
        x, K.shape(input_image)[1:3]))(input_gt_boxes)
      File "C:\Users\HP\anaconda3\lib\site-packages\tensorflow\python\keras\engine\base_layer.py", line 952, in __call__
        input_list)
      File "C:\Users\HP\anaconda3\lib\site-packages\tensorflow\python\keras\engine\base_layer.py", line 1091, in _functional_construction_call
        inputs, input_masks, args, kwargs)
      File "C:\Users\HP\anaconda3\lib\site-packages\tensorflow\python\keras\engine\base_layer.py", line 822, in _keras_tensor_symbolic_call
        return self._infer_output_signature(inputs, args, kwargs, input_masks)
      File "C:\Users\HP\anaconda3\lib\site-packages\tensorflow\python\keras\engine\base_layer.py", line 869, in _infer_output_signature
        keras_tensor.keras_tensor_from_tensor, outputs)
      File "C:\Users\HP\anaconda3\lib\site-packages\tensorflow\python\util\nest.py", line 659, in map_structure
        structure[0], [func(*x) for x in entries],
      File "C:\Users\HP\anaconda3\lib\site-packages\tensorflow\python\util\nest.py", line 659, in <listcomp>
        structure[0], [func(*x) for x in entries],
      File "C:\Users\HP\anaconda3\lib\site-packages\tensorflow\python\keras\engine\keras_tensor.py", line 606, in keras_tensor_from_tensor
        out = keras_tensor_cls.from_tensor(tensor)
      File "C:\Users\HP\anaconda3\lib\site-packages\tensorflow\python\keras\engine\keras_tensor.py", line 205, in from_tensor
        type_spec = type_spec_module.type_spec_from_value(tensor)
      File "C:\Users\HP\anaconda3\lib\site-packages\tensorflow\python\framework\type_spec.py", line 554, in type_spec_from_value
        (value, type(value).__name__))
    TypeError: Could not build a TypeSpec for <KerasTensor: shape=(None, None, 4) dtype=float32 (created by layer 'tf.math.truediv')> with type KerasTensor
    
  • REDBONE07
    REDBONE07 over 3 years
    After doing this I am getting this error........loading annotations into memory... OSError: [Errno 22] Invalid argument: 'C:/Users/HP/Mask_RCNN/TEST/Annotations.json--weights=C:/Use‌​rs/HP/Mask_RCNN/mask‌​_rcnn_coco.h5/annota‌​tions/instances_trai‌​n2014.json' I am using this command to train my model:- python "C:/Users/HP/Mask_RCNN/samples/coco/coco.py" train --dataset="C:/Users/HP/Mask_RCNN/TEST/Annotations.json"--wei‌​ghts="C:/Users/HP/Ma‌​sk_RCNN/mask_rcnn_co‌​co.h5"