Mask-RCNN,ValueError:无法将输入数组从形状(70)广播到形状(1)

时间:2019-09-09 16:46:06

标签: python-3.x tensorflow object-detection mask valueerror

我正在研究一个使用Mask-RCNN在SpaceNet数据集上检测建筑物的项目。当我运行此代码时:

model.train(dataset_train, dataset_val, 
            learning_rate=config.LEARNING_RATE, 
            epochs=1, 
            layers='heads')

我收到此错误:

    1772             batch_images[b] = mold_image(image.astype(np.float32), config)

-> 1773             batch_gt_class_ids[b, :gt_class_ids.shape[0]] = gt_class_ids

   1774             batch_gt_boxes[b, :gt_boxes.shape[0]] = gt_boxes

   1775             batch_gt_masks[b, :, :, :gt_masks.shape[-1]] = gt_masks

ValueError:无法将输入数组从形状(70)广播到形状(1)

也收到此警告: Warning Messages

当我调试变量:“ gt_class_ids”和“ batch_gt_class_ids”时, 我知道了:

Debug Image

2 个答案:

答案 0 :(得分:1)

正如@Mahesh所说,我调试了变量gt_class_ids,并意识到它的形状为(x,1)。 'x'可以是70、15或其他数值,问题出在gt_class_ids.shape[0]部分。 gt_class_ids.shape[0]给我们'x',x又可以是任何数字。所以我去了

  

model.py

     

(我的方向是:C:\ Users \ MUSTAFAAKTAS \ Desktop \ SpaceNet_MaskRCNN \ mrcnn \ model.py)

文件并更改为batch_gt_class_ids[b, :gt_class_ids.shape[1]] = gt_class_ids

代替batch_gt_class_ids[b, :gt_class_ids.shape[0]] = gt_class_ids

因此,它返回“ 1”而不是“ x”。

此解决方案对我有用:)

答案 1 :(得分:0)

ValueError: could not broadcast input array from shape (70) into shape (1)意味着在行1773 batch_gt_boxes[b, :gt_boxes.shape[0]] = gt_boxes中存在数组形状不匹配,更具体地说,您尝试将值从形状70的数组广播到形状1的数组。

您可以在此脚本上运行调试器并共享gt_class_idsbatch_gt_class_ids的值吗?这可以帮助更好地解决问题。谢谢