ImageAI 口罩辨識練習-樣本製作篇


前情提要,關於口罩配戴辨識練習:
https://madeinti.blogspot.com/2020/05/imageai.html


樣本是什麼,我挑了怎樣的樣本
用來給電腦做機器學習的輸入資料,以是否有配戴口罩的辨識應用為例,我選擇了"有戴口罩的臉"和"沒戴口罩的臉".另外也有確保兩種類別都有有無配戴眼鏡的影像. 之所以選擇"有沒有戴口罩的臉"而非選擇"口罩"或是"人臉",主要的原因在於希望避免影像中有出現口罩就會被偵測到的情形.









有戴口罩,有戴眼鏡
















沒戴口罩,沒戴眼鏡












有戴口罩,沒戴眼鏡















沒戴口罩,有戴眼鏡

樣本上哪找?要多少張?
如果以這個口罩辨識的練習來說,我的作法是在google上搜尋face, mask...等這類的關鍵字,並選擇搜尋圖片的功能,然後再一張一張下載.如有需要,建議也可以在搜尋圖片中指定圖片的大小.另外要注意的是圖片的格式,基本上jpg,png對於後續進行樣本製作或機器學習都沒太大的問題,但有些格式可能就要注意,例如我曾有幾張webp影像,樣本做得出來,但在學習過程中一直有些問題. 最後關於張數的問題,基本上當然是愈多愈好,但我覺得這跟選擇的圖片內容也有關係,這點我也還在摸索中~~@@.至於這個口罩辨識練習,可以下載我蒐集的樣本圖,總共284張,自行看看張數和內容.

https://drive.google.com/file/d/1lvP8jp6I7JcIOxnMJf9v9x7V2-5b7Bou/view?usp=sharing



ImageAI YoloV3樣本資料集:
要將樣本用ImageAI 的範例進行object detection的機器學習,需將樣本整理成如下的檔案格式.我們先看"train"資料夾,內含"images"和"annotations"兩個子資料夾.理論上可以將蒐集到的影像全部丟進去.至於"annotations"則是"images"資料夾中每一張影像的標籤檔,基本上"images""images"和"annotations""裡的檔案數量會剛好一樣,主檔名也都會一樣,但當然檔案格式是不同的. "annotations""裡的xml標籤檔會紀載"images"中對應影像的標籤資訊. 這些xml檔案是需要人工製作的(有協助製作的軟體工具,如"Labelimg".
























大致上來說,"Labelimg"就是把圖一張一張畫上框框,並在框框內寫入標籤,存檔後,Labeling就會產生一個xml檔,裡面包含被框的是什麼東西(填入的標籤)及框的位置和範圍. 操作上大致就是每框完一張圖並存檔,就會得到一個相對應的xml檔. 以我們的練習來說,我是將框選的範圍包含眼睛至下巴處,不管有無配戴口罩. 眼部最主要是確認偵測到的為人臉.所以如果只是一個沒人戴的口罩在畫面中,是不會被偵測到的




這邊有我使用上的一些筆記

-快速鍵:建議使用快速鍵, "w":啟動框框, "s":存檔對話框,"d":下一張

-儲存格式:雖然我們在ImageAI是使用yoloV3,但在Labeling中我是選擇"PascalVOC"(而非Yolo)做為標籤檔的格式.由於我是做完後才發現,所以我也不知道選擇"Yolo"會怎樣,目前也還沒去查~~~~
-檔名:我曾遇到幾張圖,Labeling一直抓不到,不過換檔名後就可以使用了,可能是檔名太長或有什麼特殊字元,由於我圖大部分都是在google上用圖片搜尋找來的,所以檔名真的是千奇百怪.我目前的對策是所有的圖,不管檔名是什麼,我一定都會重新命名(例如就直接給個流水號).但這使用這個方式缺點是這次訓練完後,往後新增影像,可能無法直接用檔名的方式將重複的圖片找出來. 建議可以使用"Advanced renamer"這個免費軟體來幫忙建立建立影像的新檔名(流水號) https://www.advancedrenamer.com/


-重複主檔名:由於Labeling產生的標籤XML檔是依照影像的主檔名命名,所以如果遇到兩個不同格式影像(副檔名不同),但主檔名卻相同,此時後面進行框選標籤的影像會蓋掉前面同一個主檔名影像所產生XML標籤.

-xml產生路徑: 每張影像的xml圖片在存檔時會生成在和影像相同的資料夾中,這樣似乎和我們前述的檔案結構不太一樣.我的作法是全部影像做完框選標記後,再到檔案總管中將xml檔找出來,再剪下貼上到他們因該要到的資料夾(annotations)中

-validations: 如果偷懶,或只是想趕快試試學習完的功能,其實可以不用管這個資料夾. 其主要功用是後續機器學習完後,用來測試用的影像及標籤,以用來評估學習效果


樣本製作流程:

大致上就是這樣,接下來就是把製作出來的樣本集送去做機器學習了



參考資料:
-https://github.com/OlafenwaMoses/ImageAI/blob/master/imageai/Detection/Custom/CUSTOMDETECTIONTRAINING.md
-https://blog.gtwang.org/useful-tools/labelimg-graphical-image-annotation-tool-tutorial/
-https://github.com/tzutalin/labelImg








留言

這個網誌中的熱門文章

Arduino ANN溫度控制實驗計畫

[馬尼拉]菲律賓職籃PBA!!

Arduino使用EEPROM練習(1)