這不是第一次轉模型了,但是還是折騰了兩天,然後將轉換之中遇到的問題總結以下:
1)caffe的prototxt手動構建時一定要仔細,不然容易出錯;(我自己在構建時就是拿着代碼forward運行一行一行進行的對比記錄);
2)數據的預處理一定要保持一致,否則模型轉換後,可能參數拷貝已經成功,但是由於預處理的差距,導致最終結果不一樣;
3)SSD中有detectout層,而detectout層中有很多閾值,所以也需要仔細看代碼,進行解析;
4)注意自己使用的類別數,本次轉換的時候,由於沒有注意類別數,對分類結果進行reshape時,參數填寫錯誤,改正後:
5)pytorch和caffe環境不統一時,可以使用json文件對模型參數,依照字典的格式進行參數保存,然後再進行json格式的文件讀取;
json保存文件:all_data就是pytorch模型的所有層參數:
all_data = data..numpy().tolist()
with open('/pytorch_model_data.json', 'w') as f:
json.dump(all_data, f)
加載json文件:
json_file = "pytorch_model_data.json"
with open(json_file, 'r') as f:
data = np.array(json.load(f))