首先整體架構使用的是torchvision0.3版本自帶的模塊。所以找問題都是從自己寫的代碼開始。
自己架構是否有問題:
固定一下optimizer = torch.optim.SGD(model.parameters(), lr = lr, momentum=0.9, weight_decay=1e-2)
1:圖像處理:根據官方給的手冊歸一化到了[0, 1]之間應該沒問題,
2:標籤問題:target對應的標籤信息確實對應的是bottle -->39,這也不是造成nan 的原因,通過測試程序發現不是
3:對於一張圖片只有一個目標框的情況,發現IOU>0.7的目標框只有幾個,剩下的基本上是由負文本框填充湊足256個,然後做迴歸loss,然而,這些也不是造成loss = nan 的原因, 因爲當正樣本達到一半的時候其實這時候對應的loss也會得到nan
4:數據問題:
5:不用shuffle 單個分析,看看是否是數據問題,看看是第幾個出現的nan,如果把這個調換到第一個loss還會爲loss嗎
出來的第一個是loss = nan的結果是0000050.jpg,將0000050.jpg作爲圖片輸出發現一開始就得到了nan 發現了一部分問題了,跟蹤發現其實在target對應回回歸值出現的nan,迴歸值中其實中心座標點也不會出現nan的情況,出現nan的情況是對應的w,h對應的比例係數,這種是最容易出現問題的,最終找到問題,標註信息給錯了,有的對應的xmin > xmax, ymin > ymax。
關鍵點:爲什麼只有 loss_rpn_box_reg = nan 而其他的都沒有問題?
針對這個問題做出具體應對措施:
1:查看faster rcnn論文,仔細查看rpn loss 管理的是哪一塊。
2:百度查出爲什麼會出現迴歸損失出現nan
3: