.json批量轉為.xml時ValueError: With n_samples=0,test_size=0.15and train_size=None的解決方法
阿新 • • 發佈:2020-12-25
今天在做目標檢測時,需要把.json批量轉為.xml(VOC2007資料集格式),程式碼參考的是下面這篇文章
Labelme標註的json檔案轉成xml檔案(voc2007所需格式)
把原始碼中labelme_path和saved_path換成自己的檔案路徑就可以成功轉格式了,原博程式碼很清晰,提供的程式碼轉格式轉得很成功
但在執行到劃分檔案這部分程式碼時出現了一個錯誤,ValueError: With n_samples=0, test_size=0.15 and train_size=None, the resulting train set will be empty.
見下圖
在網上搜了下都說是sklearn版本太高(我這裡的版本是0.24.0),要降成0.19.1,經檢視train_test_split( )的函式說明,這個錯誤和版本沒關係。
主要錯誤是輸入的total_files變數為空,長度為0,所以報錯。
然後找到total_files最開始定義的位置
在原博第98行
total_files = glob("./VOC2007/Annotations/*.xml")
"./VOC2007/Annotations/*.xml"的“.”指的是當前程式程式碼所在目錄,我的目標儲存資料夾VOC2007不在這個路徑下,所以total_files是空的。將這行改為
total_files = glob(saved_path + "Annotations/*.xml")
問題解決
還需要注意檢驗是否轉換成功和是否準確的步驟
- 開啟labelImg軟體
- 點選Change Save Dir,選擇標註檔案所在資料夾Annatations
- 點選Open Dir,選擇圖片所在資料夾JPEGImages
- 點選Next Image,一個一個檢視,是否標註正確