RedLee001 / Problems

0 stars 0 forks source link

Mask-RCNN #2

Open RedLee001 opened 3 years ago

RedLee001 commented 3 years ago

I've trained my own datesets by using the source code from matterport/Mask_RCNN and I got my own weight, but I got a problem when I ran the predict.py: ValueError: Dimension 1 in both shapes must be equal, but are 36 and 32. Shapes are [1024,36] and [1024,32]. for 'Assign_682' (op: 'Assign') with input shapes: [1024,36], [1024,32]. The full error message is as following: Traceback (most recent call last): File "D:\Anaconda\envs\tensorflow-gpu\lib\site-packages\tensorflow\python\framework\ops.py", line 1659, in _create_c_op c_op = c_api.TF_FinishOperation(op_desc) tensorflow.python.framework.errors_impl.InvalidArgumentError: Dimension 1 in both shapes must be equal, but are 36 and 32. Shapes are [1024,36] and [1024,32]. for 'Assign_682' (op: 'Assign') with input shapes: [1024,36], [1024,32].

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "D:/python/mask-rcnn-keras-master/predict.py", line 5, in mask_rcnn = MASK_RCNN() File "D:\python\mask-rcnn-keras-master\mask_rcnn.py", line 49, in init self.generate() File "D:\python\mask-rcnn-keras-master\mask_rcnn.py", line 90, in generate self.model.load_weights(self.model_path,by_name=True) File "D:\Anaconda\envs\tensorflow-gpu\lib\site-packages\keras\engine\topology.py", line 2653, in load_weights reshape=reshape) File "D:\Anaconda\envs\tensorflow-gpu\lib\site-packages\keras\engine\topology.py", line 3468, in load_weights_from_hdf5_group_by_name K.batch_set_value(weight_value_tuples) File "D:\Anaconda\envs\tensorflow-gpu\lib\site-packages\keras\backend\tensorflow_backend.py", line 2368, in batch_set_value assign_op = x.assign(assign_placeholder) File "D:\Anaconda\envs\tensorflow-gpu\lib\site-packages\tensorflow\python\ops\variables.py", line 1762, in assign name=name) File "D:\Anaconda\envs\tensorflow-gpu\lib\site-packages\tensorflow\python\ops\state_ops.py", line 223, in assign validate_shape=validate_shape) File "D:\Anaconda\envs\tensorflow-gpu\lib\site-packages\tensorflow\python\ops\gen_state_ops.py", line 68, in assign use_locking=use_locking, name=name) File "D:\Anaconda\envs\tensorflow-gpu\lib\site-packages\tensorflow\python\framework\op_def_library.py", line 788, in _apply_op_helper op_def=op_def) File "D:\Anaconda\envs\tensorflow-gpu\lib\site-packages\tensorflow\python\util\deprecation.py", line 507, in new_func return func(*args, **kwargs) File "D:\Anaconda\envs\tensorflow-gpu\lib\site-packages\tensorflow\python\framework\ops.py", line 3300, in create_op op_def=op_def) File "D:\Anaconda\envs\tensorflow-gpu\lib\site-packages\tensorflow\python\framework\ops.py", line 1823, in init control_input_ops) File "D:\Anaconda\envs\tensorflow-gpu\lib\site-packages\tensorflow\python\framework\ops.py", line 1662, in _create_c_op raise ValueError(str(e))

RedLee001 commented 3 years ago

This is my config: def load_shapes(self, count, img_floder, mask_floder, imglist, yaml_floder): self.add_class("shapes", 1, "person") self.add_class("shapes", 2, "book") self.add_class("shapes", 3, "stapler") self.add_class("shapes", 4, "cup") self.add_class("shapes", 5, "table") self.add_class("shapes", 6, "trash-can") self.add_class("shapes", 7, "cellphone") def load_mask(self, image_id): info = self.image_info[image_id] img = Image.open(info['mask_path']) num_obj = self.get_obj_index(img) mask = np.zeros([np.shape(img)[0], np.shape(img)[1], num_obj], dtype=np.uint8) mask = self.draw_mask(num_obj, mask, img, image_id) labels=[] labels=self.from_yaml_get_class(image_id) labels_form=[] for i in range(len(labels)): if labels[i].find("person") != -1:

            labels_form.append("person")

        if labels[i].find("book") != -1:

            labels_form.append("book")
        if labels[i].find("cup") != -1:

            labels_form.append("cup")
        if labels[i].find("stapler") != -1:

            labels_form.append("stapler")
        if labels[i].find("table") != -1:

            labels_form.append("table")
        if labels[i].find("cellphone") != -1:

            labels_form.append("cellphone")
        if labels[i].find("trash-can") != -1:

            labels_form.append("trash-can")

class ShapesConfig(Config): NAME = "shapes" GPU_COUNT = 1 IMAGES_PER_GPU = 1

BATCH_SIZE = 1

NUM_CLASSES = 1 + 7
RPN_ANCHOR_SCALES = (16, 32, 64, 128, 256)
IMAGE_MIN_DIM = 512
IMAGE_MAX_DIM = 512
STEPS_PER_EPOCH=1000
VALIDATION_STEPS=50

The vision of my tensorflow-gpu is 1.13.1, keras==2.1.15, python==3.6.2