基於Yolov3的口罩識別
文章目錄
基於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
相關文章
- 人工智慧-深度學習-yolov3口罩佩戴識別人工智慧深度學習YOLO
- 基於口罩識別模型,探索機器學習自動化的技術應用模型機器學習
- 基於OCaml的識別程式
- 基於Python實現的口罩佩戴檢測Python
- 基於MATLAB公式識別Matlab公式
- 基於神經網路的OCR識別神經網路
- 基於OPENCV的手勢識別技術OpenCV
- opencv python 基於KNN的手寫體識別OpenCVPythonKNN
- opencv python 基於SVM的手寫體識別OpenCVPython
- 基於百度雲的OCR識別(Python)Python
- 基於 Kotlin Native 的基本文字識別程式Kotlin
- 基於matlab的車牌識別(含子程式)Matlab
- 基於Python的人臉自動戴口罩系統Python
- 基於PCA和SVM的人臉識別PCA
- 基於OpenCV和YOLOv3深度學習的目標檢測OpenCVYOLO深度學習
- 基於TensorflowLite的人聲識別在端上的實現
- 基於人工智慧的微表情識別技術人工智慧
- 基於OpenCV的車牌識別(Sobel、顏色定位)OpenCV
- 基於 OpenCv 和 Python 的手指識別及追蹤OpenCVPython
- Action Recognition——基於表示的動作識別綜述
- 【實戰】基於OpenCV的水錶字元識別(OCR)OpenCV字元
- 【摸魚神器】基於python的BOSS識別系統Python
- 基於人工智慧的摔倒識別攝像頭人工智慧
- 電梯電車識別 yolov5 yolov4 yolov3YOLO
- WEB 人臉識別並給照片戴上口罩,極簡版Web
- AI開發實踐丨客流分析之未佩戴口罩識別AI
- 關於halcon基於表面的3d識別定位3D
- Java基於百度API的圖片文字識別JavaAPI
- 基於 SVM 和增強型 PCP 特徵的和絃識別特徵
- 基於語音識別的會議記錄系統
- MATLAB——基於影像相減的紙牌識別系統Matlab
- 基於Android平臺實現人臉識別Android
- 基於Matlab的車牌識別系統(帶介面、模板庫)Matlab
- Action Recognition——基於深度學習的動作識別綜述深度學習
- 基於施工現場安全的安全帽識別系統
- 基於DNN的人臉識別中的反欺騙機制DNN
- TrOCR:基於Transformer的新一代光學字元識別ORM字元
- 寫給程式設計師的機器學習入門 (十一) - 物件識別 YOLO - 識別人臉位置與是否戴口罩程式設計師機器學習物件YOLO