Mask_RCNN:ValueError: Dimension 1 in both shapes must be equal, but are 8 and 324.
1.问题描述
前几天有人在之前Mask_RCNN预测文章中:
Mask_RCNN:使用自己训练好的模型进行预测
https://blog.csdn.net/qq_15969343/article/details/80388311
评论了该问题:
软件环境:
Mask_RCNN版本基于:Python3,Keras,TensorFlow,我使用的具体版本为:
- Python 3.6.3
- TensorFlow 1.7
- Keras 2.1.5
Mask-RCNN 代码地址:
2.原因
我看了一下,上述文章中NUM_CLASS=1+5,这是因为我这边是自己训练的模型,然后数据里面只有5种类别。而官方的权重是基于COCO的80类物体训练的,产生上述报错的同学直接使用了官方给出的COCO权重进行预测(没有自己用自己的数据训练)但又只想预测person这一类,因此直接把NUM_CLASS改为了1+1,但是官方的权重里面还存在存在类别的物体(除开person还有79类);这样显然是不对的,因为1个类占了4个通道,因此是(1+80)*4=324,但是现在改为了(1+1)*4=8【8!=324】,模型自然会报错!
附:COCO数据集80个类的名称
- person
- bicycle
- car
- motorbike
- aeroplane
- bus
- train
- truck
- boat
- traffic light
- fire hydrant
- stop sign
- parking meter
- bench
- bird
- cat
- dog
- horse
- sheep
- cow
- elephant
- bear
- zebra
- giraffe
- backpack
- umbrella
- handbag
- tie
- suitcase
- frisbee
- skis
- snowboard
- sports ball
- kite
- baseball bat
- baseball glove
- skateboard
- surfboard
- tennis racket
- bottle
- wine glass
- cup
- fork
- knife
- spoon
- bowl
- banana
- apple
- sandwich
- orange
- broccoli
- carrot
- hot dog
- pizza
- donut
- cake
- chair
- sofa
- pottedplant
- bed
- diningtable
- toilet
- tvmonitor
- laptop
- mouse
- remote
- keyboard
- cell phone
- microwave
- oven
- toaster
- sink
- refrigerator
- book
- clock
- vase
- scissors
- teddy bear
- hair drier
- toothbrush
3.解决方法
因此使用官方给出的权重,而不是自己训练的,同时遇到这个问题的同学,请把这个地方改为:1+80:
当然,我们可以验证一下:将1+80改为1+70,会出现以下错误:
(1+70)*4正好等于284!结论正确!
都看到这里了,还不赶紧点赞,评论,收藏走一波?