1. 程式人生 > 其它 >.json批量轉為.xml時ValueError: With n_samples=0,test_size=0.15and train_size=None的解決方法

.json批量轉為.xml時ValueError: With n_samples=0,test_size=0.15and train_size=None的解決方法

技術標籤:python目標檢測pythonjsonxml

今天在做目標檢測時,需要把.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")

問題解決

還需要注意檢驗是否轉換成功和是否準確的步驟

  1. 開啟labelImg軟體
  2. 點選Change Save Dir,選擇標註檔案所在資料夾Annatations
  3. 點選Open Dir,選擇圖片所在資料夾JPEGImages
  4. 點選Next Image,一個一個檢視,是否標註正確