基於Yolov3的口罩識別

Rodeson-James發表於2020-11-28

基於Yolov3的口罩識別

1、專案簡介

本專案是基於YoloV3,使用Keras進行口罩識別。

該專案原始碼已全部上傳至GitHub

https://github.com/Rodeson/MaskIdentification

2、參考資料

DataSet:

https://github.com/X-zhangyang/Real-World-Masked-Face-Dataset

Blogs:

https://blog.csdn.net/qinchang1/article/details/89608058

https://blog.csdn.net/cungudafa/article/details/105074825

Weights:

https://github.com/MacwinWin/face_mask_dataset

3、硬體軟體資訊

Software:

TensorFlow-GPU 2.3.0

Keras 2.4.3

CUDA 11.0

Python 3.7.4

Hardware:

GPU NVIDIA GeForce GTX 1050(4G)

CPU Inter® Core™ i7-8750H CPU @ 2.20GHz

4、專案檔案資訊

1.專案名稱:MaskIdentification

2.資料夾簡介:

​ Annotation:存放標籤,因為檔案太大,打包時已刪除

​ ImageSets:存放訓練集 測試集圖片名稱

​ JPEGImages:存放圖片檔案 因為檔案太大 打包時已刪除

​ LOG:存放權重檔案

​ yolo3:存放yolo模型

​ model_data:存放yolo模型配置檔案

3.檔案說明

​ convert.py 將.weight檔案轉為.h5檔案

​ makeTxt.py隨機生成訓練集 測試集編號

​ voc_label.py將訓練集路徑資訊與標籤連結

​ yolo.py yolo設定模型引數,路徑

​ yolo_video.py呼叫攝像頭進行測試

4.程式執行方式

​ 使用終端開啟該資料夾,並執行 pyhton yolo_video.py 等待片刻即可。

5、專案教程

5.1環境配置

參考連結https://blog.csdn.net/gangeqian2/article/details/79358543

5.2驗證環境是否配置正確

5.2.1 Python版本:開啟Command

python

理論輸出

Python 3.7.4 (default, Aug  9 2019, 18:34:13) [MSC v.1915 64 bit (AMD64)] :: Anaconda, Inc. on win32

5.2.2 TensorFlow Keras版本

cmd >python

>>> import tensorflow as tf
2020-11-28 00:07:06.379481: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library cudart64_101.dll
>>> tf.__version__
'2.3.0'
>>> import keras as K
>>> K.__version__
'2.4.3'

可以看到TensorFlow版本為2.3.0 Keras版本為2.4.3

5.2.3 CUDA版本

 nvcc --version
 nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2020 NVIDIA Corporation
Built on Wed_Jul_22_19:09:35_Pacific_Daylight_Time_2020
Cuda compilation tools, release 11.0, V11.0.221
Build cuda_11.0_bu.relgpu_drvr445TC445_37.28845127_0

可以看到CUDA版本為11.0

5.3下載資料集

本專案使用的資料集為武漢大學開源口罩資料集

https://github.com/X-zhangyang/Real-World-Masked-Face-Dataset

吐槽:該資料集沒有標籤,並且分類混亂,建議下載後自己手動標籤

5.4安裝Labelimg

https://blog.csdn.net/zong596568821xp/article/details/80395079

總結 在終端輸入以下命令

pip install PyQt5

輸出以下內容(筆者已安裝所以為already satisfied)

Requirement already satisfied: PyQt5 in 		     d:\anaconda\anaconda3\lib\site-packages (5.15.1)
Requirement already satisfied: PyQt5-sip<13,>=12.8 in    d:\anaconda\anaconda3\lib\site-packages (from PyQt5) (12.8.1)

輸入以下命令安裝tools

pip install pyqt5-tools

輸出以下內容(筆者為已安裝輸出)

Requirement already satisfied: pyqt5-tools in d:\anaconda\anaconda3\lib\site-packages (5.15.1.1.7.5)
Requirement already satisfied: click in d:\anaconda\anaconda3\lib\site-packages (from pyqt5-tools) (7.0)
Requirement already satisfied: python-dotenv in d:\anaconda\anaconda3\lib\site-packages (from pyqt5-tools) (0.14.0)
Requirement already satisfied: pyqt5==5.15.1 in d:\anaconda\anaconda3\lib\site-packages (from pyqt5-tools) (5.15.1)
Requirement already satisfied: PyQt5-sip<13,>=12.8 in d:\anaconda\anaconda3\lib\site-packages (from pyqt5==5.15.1->pyqt5-tools) (12.8.1)

輸入以下內容安裝labelimg

pip install labelimg

輸出以下內容(筆者為已安裝輸出)

Requirement already satisfied: labelimg in d:\anaconda\anaconda3\lib\site-packages (1.8.3)
Requirement already satisfied: lxml in d:\anaconda\anaconda3\lib\site-packages (from labelimg) (4.4.1)
Requirement already satisfied: pyqt5 in d:\anaconda\anaconda3\lib\site-packages (from labelimg) (5.15.1)
Requirement already satisfied: PyQt5-sip<13,>=12.8 in d:\anaconda\anaconda3\lib\site-packages (from pyqt5->labelimg) (12.8.1)

5.5使用Labelimg給圖片打標籤

終端開啟Labelimg(CMD)

>labelimg

以下為標籤工作截圖

在這裡插入圖片描述
在這裡插入圖片描述

5.6生成訓練相關檔案

執行該專案資料夾下的makeTxt.py

得到以下四個檔案
在這裡插入圖片描述

5.7給訓練集新增路徑地址

執行該專案資料夾下的voc_label.py

得到以下檔案

在這裡插入圖片描述

5.8權重轉換

因為.weight檔案為DarkNet使用格式 需要轉換為Keras適用格式.h5

執行該專案資料夾下的convert.py

python convert.py yolov3.cfg yolov3.weights model_data/yolo.h5

5.9修改yolo模型引數

開啟本專案資料夾下的LOG>yolov3.cfg檔案

修改yolo以下資訊
c l a s s = 2 class = 2 class=2

f i l t e r s = 7 × ( c l a s s + 1 ) = 7 × 3 = 21 filters = 7\times(class +1) = 7\times3 = 21 filters=7×(class+1)=7×3=21

5.10訓練

訓練前修改model_data資料夾下的voc_classes.txt 改為自己的標籤名稱

python train.py

漫長等待 可以去睡一覺

根據自己顯示卡視訊記憶體大小設定合適的batch_size值,否則訓練一半視訊記憶體會溢位。

5.11呼叫OpenCV進行實時監測

需要提前修改yolo.py 內路徑資訊

pyhton yolo_video.py

效果圖展示

在這裡插入圖片描述

6.聯絡方式

如果你在進行該口罩識別專案過程中遇到問題請郵件聯絡我。

Subject:MaskIdentificationCSDN

Email Address:lds947003754@outlook.com

7.權重檔案連結

本專案訓練好的權重檔案已上傳至百度雲盤(Github單個檔案上限100M)

連結:https://pan.baidu.com/s/1GNeG3sIZoEvrx7KPn0xbCw vdl5

相關文章