問題描述
不知道有多少人遇到過和我一樣的情況,這個問題困擾了我很長時間,這裏特別做一下筆記。
本人在Windows10環境下,使用Pycharm進行模型訓練。訓練的時候一切正常,loss值也有明顯下降,但是在使用模型的時候發現與預料結果截然不同。
訓練結果如下圖:
圖片中並沒有出現錨框。
解決方案
既然是Yolo模型,那麼你的代碼中肯定有一部分是用來描述產生錨框的條件的。
每個人的代碼不同,但是一定有一部分類似的代碼。
其中score表示生成錨框的閾值,只有當預測的可信度高於你設定的閾值時,纔會顯示錨框。
iou表示預測的矩形框和真實目標的交集與並集之比。
換句話說,你只要把這兩個參數的值改小後,原本不會顯示出來的錨框就會顯示了。
修改後的效果:
總結
這種方案在理論上一定是可行的,但是這種做法治標不治本。
問題的本質是,你訓練模型的可行度太低。就算你把錨框顯示出來了,本質問題也沒有得到絲毫改善。
舉個例子:
在這張圖片中,你確實可以把這些錨框都顯示出來,但是這樣的顯示方式實在是沒有任何意義。
所以,調整這些參數只是爲了讓大家對Yolov3的顯示機制有進一步的體會,關於解決沒有錨框問題的核心方法請參照我的另一篇文章:Yolov3模型沒有框的解決方案之——提高訓練模型的置信度。