2021年4月9日 星期五

如何使用LabelImg標記相片以供AI訓練模型用?

 使用軟件: LabelImg (Windows)V.

下載網站: https://tzutalin.github.io/labelImg/

V1.8

 

參考視頻: https://youtu.be/IWk1-Q-8iIk

 

[準備工作]

開始前重要步驟: 先清除LabelImg內預設的物件名稱。

 

重要提示: 如不清除的話,標記後後的txt內的數據資料會出錯的! 上載去Colab後便無法正確辨認!

 

準備工作1: 刪除predefined_classes.txt內的資料

找出Labellmg.exe所在的資料夾(這裡是下載> windows_v1.8.9 > windows_v1.8.0),這資料夾內有個data的資料夾,內裡有一個txt文件,名predefined_classes.txt,開啟這文件,會看到以下預設的類別名稱。




把這些資料完全刪掉,然後貯存文件便成,如下圖。

 




準備工作2: SD卡的資料上載至電腦內,以便進行標記。

1.      SD卡的資料夾應如下圖顯示,資料夾dataset是預設用來貯存拍照後的文件的位置,把這個資料夾複製至電腦內。



2.      其實複製至任何位置皆可以的。習慣上會把這些用作訓練的相片文件統一放在一資料夾內(這裡是myproject內,當然這個資料夾的名稱可自定。)



3.      這個dataset內有10個資料夾,可刪走一些沒有文件的資料夾。

由於這例子祇拍攝2種物件,祇貯存於資料夾12,其他都空的。



4.      把空的資料夾刪除,如下圖。



5.      由於SD卡的資料夾名稱預設一定是dataset的,為了方便將來再拍攝及上載資料夾,建議更改這資料夾名稱,可自定的,這裡是fsstest。最後,要於這一層資料夾新增一個純文字的文件,名叫fsstest.names。前面的fsstest要跟這資料夾同名,這名稱亦是項目(project)的名稱。於這文件內填入你要標記的物件類別名稱。這裡是supermandoraemon


 檢查一下fsstest文件夾內兩個子文件夾的內容,如下例,有5張相片。

重要提示: 實際上進行AI辨識時不應拍攝這麼少張數的,這裡僅用作學習之用。


檢查文件夾2的內容。


準備工作已完成,可以正式開始進行標記。

--------------------------------------------------------------------------------------------

正式開始進行標記相片。(建議參考以上youtube視頻,因為步驟不多,看一次便應可掌握的了) 請開啟labelImg程式。

 

步驟1: 選擇labelImg 程式。


步驟2: 開啟後,應出現以下畫面。首先把左功能下的PascalVOC改成YOLO


如下圖所示,PascalVOC已變成YOLO

備註: YOLO代表You only learn once,是人工智能識別物件其中一種算法。



步驟3: 選擇相片所在的文件夾,Open Dir



例如以下,相片所在的文件夾是於fsstest內,因此選取fsstest,按「選擇資料夾」。


步驟 4: 選取相關資料夾後,會顯示這資料夾(fsstest)內所有文件。可以開始進行標記了。


步驟5: 選取第一張,會出現相關的相片。正式進行標記,請選取上方功能表edit-->Create RectBox



步驟 6: 用滑鼠拖曵出物件四邊的範圍,如下圖。然後選取把這物件標記成甚麼名稱,如是第一次的話,需要自行輸入,例如以下superman,然後按OK提示: 第一次標記後,如發現Labellmg視窗內出現其他不相關的物件名稱,建議退出程式,然後刪除predefined_classes.txt內資料才再開啟進行標記,否則標記完後需要進行大量手動修改的步驟,非常麻煩。



步驟 7: 留意! 這是重要步驟! 不要漏掉! 按左方功能表的Save 貯存。



Save後,會出現以下畫面,按Save 便可以。系統會貯存一個同名的txt文件於相同的資料夾內。



步驟 8: 再逐一選擇其他文件,重覆以上步驟便可以。



步驟 9: 留意,如已選取到另一物件的話,步驟仍是一樣的。



但留意,由於物件名稱不同,再輸入新的物件名稱便可以,如下圖。



步驟10: 一直重複以上動作,直至全部標記完成為止。如下圖,然後可關閉LabelImg這程式。



步驟11: 之後可於相片的資料夾查看是否正確標記及貯存。



留意,於每一個資料夾(例如1)內,除了在原來的相片文件外,也應有相同數目,與相應相片名稱相同的txt文件。txt文件內,其實祇貯存了一些座標的數據。例如,以下1_0.txt是對應1_0.jpg的,由於這資料夾名叫1,這txt文件最前的數字應是0,如下圖。



如資料夾名叫2,相應txt文件最前的數字應是1,如下圖。如此類推。如不是的話,可手動改回,但要逐一開啟所有txt文件修改。



另外,每一個資料夾內應有一個名叫classes.txt的文件的,如下圖,不用修改任何資料。



資料夾1classes.txt文件內容如下,也不需要任何修改。



 

步驟12: 完成。可以把這個資料夾fsstest上載至Google Drive 進行下一階段的物件識別過程。


-----------------補充---------------

備註: 以下的相片並不是用CocoRobo A.I. 的相機組件拍攝,因此檔案的名稱不一樣。但一樣可以使用labellmg 進行標記的。

祇是必須先把不同類別的相片文件貯存於不同的資料夾內(要自己新增啦!),如下圖,把doraemon 放入資料夾1,而superman 放入資料夾2

也一樣要自行於fsstest3的資料夾內新增一個名叫fsstest3.names的文件。

重要提示: 資料夾名稱,請不要使用 _ 或大寫字母,也不要有空格。



 

 

沒有留言:

張貼留言

如何第一次使用CocoRobo Pi ?

  如何第一次使用 CocoRobo Pi ?   步驟 : 1. 使用 Chrome 連結以下網站 : https://v.cocorobo.hk/   ## 留意,跟第二代的 CocoRobo AI 主板的網上平台網址不同。   2. 如第一次使用...