訓練資料前處理實作

*資料前處理是極為龐大且複雜的工作


入坑之前

為了讓資料前處理更有效率,這邊提供幾樣工具,在適當的時機可以派上用場:

  1. GrepWin - 除了可以批次更改檔名外,最厲害的是可以批次更改文件中的文字。

  2. Flexible Renamer - 超強大的更名軟體,可以套用許多規則來大量命名資料夾或檔案。

  3. Ken Rename - 基礎的批次改檔名工具,適合不複雜、較有規律的工作。

跌入坑洞

由於我們蒐集完了馬偕醫院成錠區的 274 種藥品共 39517 張照片,所以資料前處理變成一件極龐大的工作。

Step 1. 照片彙整與檢查

要建立如此大量的照片資料庫,我們一共有 6 位參與拍照的夥伴,在彙整大家的檔案後,我們必須逐一檢查照片的數量方向尺寸是否正確。

有缺失、遮擋或損壞的照片,我們就得請負責該藥品的同學回到馬偕將資料補齊;而手機會自動旋轉照片方向的問題,我們也得手動將所有藥品轉正。

也因此,當初我們在拍攝照片時,會在藥品的上方放上一個明顯的物品作為「錨點」,以方便在手動轉向時可以較順利的進行。

Step 2. 資料夾命名

接著,我們得統一大家的資料夾命名規則。

根據馬偕醫院提供的藥品清單,我們將所有資料夾的命名規定為:

<位置>_DrugShortName_<劑量>_<back/front>

而且要去除全型文字與所有特殊符號,並將空格都使用底線來代替。

*為什麼要特別標注 front 或是 back 呢?

因為我們要將藥品的正反面分開訓練,以後我們就可以透過一台攝影機辨識正面、一台攝影機辨識背面,以提高辨識效果。

Step 3. 圖片尺寸重整

在上一份文件,我們有提到「在進行深度學習的 Training 時,如果送入的照片畫質太高,光是靠 YOLO 內建的 Re-Size 就會花費很多時間」。

所以我們使用格式工廠工具,將所有 4:3 的圖片都縮減為寬度為 1000px 的尺寸。

特別注意:使用格式工廠 Re-size 後,有些圖片會被旋轉,有些圖片會被縮成怪怪的尺寸(如變成高度 1000px),所以一定要再檢查並處理一次。

Step 4. Cropping 與 XML 製作

Re-size 後的照片,我們就分配給大家來進行這一步驟的處理。

這裡我們採用實驗室夥伴 rachelchan 的 GitBook 來建立環境,並實作 Cropping 與 XML 檔案的產生。

裡面的步驟有:環境建置 -> Cropping 並產生 txt 檔案 -> 將 txt 檔轉換為 XML 檔案。

Step 5. 上面這個步驟

要花很多時間。

超級多。

超級多。

超級多。

Step 6. 當你快受不了的時候

就代表你快處理完了。

處理完的檔案,會有這些東西:

  1. 每種藥品都有一堆 Re-size 後的圖檔。(之後會再用到)
  2. 每種藥品只有一個 txt 檔。(不會再用到)
  3. 每種藥品都有一堆 XML 檔。(之後會再用到)

Step 7. 順序編號

因為 YOLO 在訓練時,必須將所有訓練圖庫與檔案都放在同一個目錄下,所以我們得將 Re-size 後的圖檔與 XML 檔從數字 1 開始,一路編號到圖檔數量:正面為 1.jpg 到 19761.jpg、反面為 1.jpg 到 19756.jpg。

XML 檔也要用相同的規則編號:正面為 1.xml 到 19761.xml、反面為 1.xml 到 19756.xml。

這邊我們使用 Jeffrey Lin 所撰寫的 Python 工具,可以快速地將階層式資料夾中的所有檔案編號更名完成。你只需要在最後搜尋 .jpg 或 .xml 將編號完的檔案全部拉出來即可。

注意!

1.jpg 對應的圖片資訊,必須是 1.xml。 如果相同檔名的圖片與 XML 檔無法配對,訓練個半死也是不會有結果的!

Step 8. 建置 YOLO 環境

終於!我們完成一半了。

接下來就要跟隨文件中 YOLO 藥品辨識訓練章節的步驟進行。

results matching ""

    No results matching ""