先上圖!
十天+兩台電腦才摸索出來的~~!
環境:
Ubuntu18.04+RTX3090+CUDA11.0+Cudnn v8+Pytorch-nightly
沒錯,是3090!(手動滑稽)
第一個坑:Windows(尤其是Win7)屬實不行,Pytorch裝不上,另外3090只能搭配Pytorch-nightly版本,而且這個版本沒有國內源。
如果你的下載源是國內的,還要恢復默認源才可以。
復現的代碼選擇是github上6k star的那個。
數據集選擇COCO2017數據集(后續會介紹)
說實話,一開始老是報錯,我還以為是代碼的問題,事實上是菜罷了。(要不是身邊的人說,肯定是你的問題,我真的不確定會不會繼續搞下去)
ctrl+v
然后就會有第一個錯誤(大概意思就是downloading weights...),如果你的電腦不能FQ,那么在2分鍾之后就會報錯,下載失敗,然后運行失敗(FQ的電腦能不能繼續運行我不清楚,如果能運行,那么每次運行程序都要下載一次)。
錯誤的原因是:weights文件夾下的download_yolov3_weights.sh文件,每次運行程序都會去執行這個文件。
解決:預先下載好weights放到weights文件夾下,just like this
解決之后繼續運行,會報第二個錯誤(找不到文件夾coco.2017.txt....)
錯誤的原因就在數據集了。
下載的coco2017數據集約(30G)包括train_2017,val_2017約20G的圖片,和annotations_trainval2017的label。
需要對label處理一下,解壓的label你會發現並不是真正的標簽,而是6個json文件,6個json文件分別是描述圖片(看圖說話)、人體關鍵點檢測和目標檢測的訓練json和測試json。
程序中是讀的txt,所以要對json文件進行處理,以目標檢測為例:
json-->xml-->txt(這是我的代碼,好像json可以直接到txt?)
每份json文件會得到兩個txt,分別是包含圖片名稱的txt和包含標簽的txt(分類和box 坐標)
這里修改包含圖片名稱的txt文件位置。
重點來了!!!
要把包含標簽的txt復制到訓練圖片train_2017中,不然會報錯(找不到label...)
然后繼續運行...
success!
以3090的算力單次運行train為30分鍾左右,300個循環共花了7天~
確實值得紀念~~