應用程序報錯環境:
在linux下,調用darknet訓練的模型,報錯:First section must be [net] or [network]:No such file or directory,并提示:"./src/utils.c:256: error: Assertion '0' failed."
如下圖所示:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?此段文字為防爬蟲而設置的
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?原文為CSDN作者:三月微暖尋春筍
網上查了下,配置文件問題,如下圖所示:
?后來發現,更重要的是括號中的一句。因為我運行的環境是linux環境,而整套程序來自Windows,對于源碼cpp來說,不可能有影響,因為一般cpp在Windows下調試的差不多了,才會移植到linux環境下調試,這不可能有問題。而圖中的報錯又是顯示在darknet的源碼文件“./src/utils.c”中報的錯,是不是可能我在其他jetpack環境下編譯的庫才出現的問題,于是我又把darknet庫重新編譯了一遍,問題仍然存在。
后來我又在終端輸出一些調試點,發現是在調用darknet模型時報的錯,調用接口肯定沒問題啊,之前一直用的,難道是模型文件問題,也不應該啊,之前也一直用這個模型。后來不知怎么的鬼使神差似得把模型文件又重新拷貝一次,這次直接從linux本地拷貝,再次運行應用程序,發現問題沒有了。
啰嗦了一大堆,總結解決方案是:把模型文件從linux平臺拷貝至運行環境,不要從Windows平臺拷貝過去。不要把linux環境下訓練的模型拷貝至Windows平臺,否則模型文件就不能在linux平臺用了。
打個不恰當的比喻:不要把linux平臺下訓練的模型去Windows平臺“洗澡”。
后續思考:雖然問題解決了,但原因沒有整明白。權重文件是一個二進制文件,為什么在linux環境下訓練好了,把它拷貝到Windows平臺,然后再拷貝至linux平臺就不能用了???有大佬知道的可以在評論區告知下嗎,感謝。