不滿足於已訓練好的模型,小白怎樣30分鐘搞定Tensorflow模型訓練?

望舒  個推 Android 高級開發工程師

 

前言

史上最長春假結束,全國各地企業陸續復工。機場、火車站等地又將迎來人流高峯,我們對疫情防護仍然不能有所懈怠。如何實時檢測人羣口罩佩戴情況從而快速發現未按要求佩戴口罩的人,對於防疫工作來說,是個頭大的問題。


目前AI人臉口罩檢測方案已成爲返工潮中衆多社區、企業、商場解決該問題的首選方案,並得到了較好的應用。各大企業也積極爲AI戰“疫”做出貢獻,百度開源了業界首個口罩人臉檢測及分類模型,滴滴隨後也免費開放了口罩佩戴識別技術。那麼,它們是如何建立口罩檢測模型的呢?其背後原理是什麼?今天小編將爲你揭開TensorFlow模型訓練的祕密,讓你看完本篇文章,就能學會自己訓練模型。

 

 

知識點

TensorFlow™ 是一個採用數據流圖(data flow graphs)對數值予以計算的開源軟件庫。數據流圖根據“節點”(nodes)和“線”(edges)的有向圖來描述數學計算。“節點” 一般表示施加的數學操作,但也可以代表數據輸入(feed in)的起點/輸出(push out)的終點,或者是讀取/寫入持久變量(persistent variable)的終點。“線”表示“節點”之間的輸入/輸出關係。這些數據“線”可以傳遞“size可動態調整”的多維數據數組,即“張量”(tensor)。一旦輸入端的所有張量準備好,節點將被分配到各種計算設備完成異步並行運算。

 

(圖片來源於TensorFlow社區)

 

 

Faster R-CNN主要包括兩個模塊:一個是深度全卷積網絡RPN,該網絡用來產生候選區域;另一個是Fast R-CNN檢測器,它依賴RPN網絡產生的候選區域進行分類與邊框迴歸計算。

(圖片來源於arxiv.org)

 

FasterR-CNN網絡的核心點就是RPN候選區域生成網絡的設計。RPN網絡結構的設計基於卷積神經網絡,輸入一張圖像,RPN網絡便會輸出一系列的候選物體矩形框,每個矩形框附帶一個分數來表示其屬於真實物體的信念值。RPN由一個全卷積網絡構建,方便與Fast R-CNN共享參數,RPN與Fast R-CNN共享卷積層。

 

(圖片來源於doutugou)

 

 

 

開始動工

問題:
如何基於TensorFlow訓練口罩檢測模型?
 

 

相關資源

1、TensorFlow Models

下載地址:https://dwz.cn/nw3xPTLZ
配置參見:https://dwz.cn/9vJY5MKs

2、COCO數據集預訓練模型

下載地址:https://dwz.cn/KD9mWgQA

3、LabelImg

下載地址:https://dwz.cn/KWrIjpAk

 

 

準備樣本數據

 

1、使用Labellmg工具對每張圖片的目標位置進行框選,隨後打上分類標籤(mask,nomask),保存後輸出XML文件。

(圖片來源於UnSplash)

 

2、將用於訓練的XML文件轉換爲CSV格式

調用xml2csv.py,並更改數據輸入和輸出目錄,從而將數據分爲三部分(訓練集、驗證集、測試集),最後運行腳本,即可完成CSV文件轉換。

 

3、將CSV文件轉換爲TFRecord格式

TFRecord格式由TensorFlow制定,是結合圖片和標籤數據產生的二進制文件,能更好地利用內存機制,實現快速讀取、複製、移動、存儲等功能。我們使用generate_tfrecord.py指定輸入、輸出路徑便可完成轉換。

 

 

 

配置標籤文件

前文已經把用於訓練集和驗證集的record文件準備好了,接下來我們需要仿照TensorFlow Models 中 models/research/object_detection/data/pet_label_map.pbtxt 創建一個標籤文件mask.pbtxt,用於定義模型的分類。

 

 

 

配置訓練參數

仿照TensorFlow Models 中models/research/object_detection/samples/configs/faster_rcnn_resnet101_coco.config創建 mask.config將num_classes修改爲當前的分類數量;

 

將所有PATH_TO_BE_CONFIGURED改爲本機路徑;

 

 

開始訓練

調用model_main.py訓練

 

動態監測

使用tensorboard工具進行訓練情況監測

 

 

訓練結果

場景人臉口罩檢測(圖片來源於pixabay)

 

 

 

注意

準備樣本時,爲什麼要對待檢測目標進行分類?

圖片分類是將圖片分爲某一類別,理論上,正確答案只有一個;而物體檢測則是將待檢測圖片中所出現的全部物體用矩形進行框選標註,物體的類別除了我們文中提到的口罩,還可以有其他選擇,例如人、手機、車、樓等。換句話說,這是個多選題,答案不止一個。

 

 

 

結語

口罩檢測模型訓練,首先要準備充足的樣本數據,其次將待檢測樣本予以標註分類,分爲佩戴口罩和未佩戴口罩兩類;然後通過大量的樣本數據訓練得出檢測模型;最後針對訓練得到的模型進行驗證評估和相關參數調優。

 

抗擊疫情,我們在行動。小編希望,這項技術的運用可以減少公衆場所的安全隱患,讓開發者的力量影響到更多人,從而爲疫情防護做出貢獻。

 

 

如何獲取口罩訓練項目源代碼

關注【個推技術學院】微信公衆號

(微信號:getuitech)

回覆關鍵詞“口罩”

即可獲取源代碼

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章