近日,在使用谷歌新推出來的一個網絡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的版本。
這個解決辦法有沒有效果我還沒有嘗試過,我在這里記錄下來僅供讀者參考。