近日,在使用谷歌新推出来的一个网络EfficientDet进行目标检测训练自己的数据集的时候,出现了如下错误:
其中项目开源地址是:https://github.com/toandaominh1997/EfficientDet.Pytorch
上面截图中的1和2代表我的类别名称。读者可以忽略不管。
No boxes to NMS No boxes to NMS No boxes to NMS No boxes to NMS No boxes to NMS No boxes to NMS No boxes to NMS No boxes to NMS No boxes to NMS No boxes to NMS No boxes to NMS No boxes to NMS 79/79 mAP: 1: 0.0 2: 0.0 avg mAP: 0.0 No boxes to NMS 79/79 mAP: 1: 0.0 2: 0.0 avg mAP: 0.0 30 epoch: start training....
最开始出现这个错误的时候我并没有管,我以为是因为模型刚开始训练效果不太行,直到后面运行到30 epoch时,依旧是这个错误并且mAP还是0.0,我就知道肯定哪个环节出现了问题。但是这个错误百度基本没有,于是我在issues里面查看是否有人遇到了相同的问题
尽管有人遇到了相同的问题,但是并没有什么好的解决方案。
几个小时过后,我突然灵机一动,会不会是我训练时导入的预训练的问题。如下面这行代码所示:
parser.add_argument('--network', default='efficientdet-d7', type=str, help='efficientdet-[d0, d1, ..]')
因为我在项目地址里面看到博主提到这个项目已经支持efficientdet-d0--- efficientdet-d7,所以我当时就没多想,但是我后面把这行代码稍微改一下
parser.add_argument('--network', default='efficientdet-d1’, type=str, help='efficientdet-[d0, d1, ..]')
这个问题就解决了,loss值也在下降了,mAP的值也不是0.0了。
总结:我也不知道到底什么原因引发了这个错误,但是我想我这个解决方案肯定不是唯一的解决方案,有可能只是对我本人有效,对于读者有没有效果我就不太清楚了,所以我这个解决方案仅供大家参考。
另外,在我解决掉这个错误后,我又在issues上发现了有大佬回答了这个错误。那就是降低torchvision的版本。
这个解决办法有没有效果我还没有尝试过,我在这里记录下来仅供读者参考。