基於yolo5工地安全帽和禁入危險區域識別系統,附數據集

向AI轉型的程序員都關注了這個號👇👇👇
機器學習AI算法工程 公眾號:datayx
該項目是使用 YOLOv5 來訓練在智能工地安全領域中頭盔目標檢測的應用



代碼及運行教程,訓練模型,數據集 獲取:
關注微信公眾號 datayx 然后回復 安全帽 即可獲取。
AI項目體驗地址 https://loveai.tech
創建自己的數據集配置文件
因為我這里只是判斷 【人沒有帶安全帽】、【人有帶安全帽】、【人體】 3個類別 ,基於 data/coco128.yaml 文件,創建自己的數據集配置文件 custom_data.yaml

創建每個圖片對應的標簽文件
使用標注工具類似於 Labelbox 、CVAT 、精靈標注助手 標注之后,需要生成每個圖片對應的 .txt 文件,其規范如下:
-
每一行都是一個目標
-
類別序號是零索引開始的(從0開始)
-
每一行的坐標
class x_center y_center width height格式 -
框坐標必須采用歸一化的 xywh格式(從0到1)。如果您的框以像素為單位,則將
x_center和width除以圖像寬度,將y_center和height除以圖像高度。代碼如下:

生成的 .txt 文件放置的名字是圖片的名字,放置在 label 文件夾中,例如:

聚類得出先驗框(可選)

選擇一個你需要的模型
在文件夾 ./models 下選擇一個你需要的模型然后復制一份出來,將文件開頭的 nc = 修改為數據集的分類數,下面是借鑒 ./models/yolov5s.yaml來修改的


開始訓練
這里選擇了 yolov5s 模型進行訓練,權重也是基於 yolov5s.pt 來訓練

其中,yolov5s.pt 需要自行下載放在本工程的根目錄即可,下載地址 官方權重
看訓練之后的結果
訓練之后,權重會保存在 ./runs 文件夾里面的每個 exp 文件里面的 weights/best.py ,里面還可以看到訓練的效果
偵測圖片會保存在 ./inferenct/output/ 文件夾下
運行命令:

檢測危險區域內是否有人
危險區域標注方式,
我這里使用的是 精靈標注助手 標注,生成了對應圖片的 json 文件
偵測圖片會保存在 ./inferenct/output/ 文件夾下
運行命令:

效果:在危險區域里面的人體會被 紅色框 選出來
生成 ONNX
安裝 onnx 庫
pip install onnx
執行生成

增加數據集的分類
關於增加數據集分類的方法:
SHWD 數據集里面沒有 person 的類別,先將現有的自己的數據集執行腳本生成 yolov5 需要的標簽文件 .txt,之后再用 yolov5x.pt 加上 yolov5x.yaml ,使用指令檢測出人體
python detect.py --save-txt --source ./自己數據集的文件目錄 --weights ./weights/yolov5x.pt
yolov5 會推理出所有的分類,並在 inference/output 中生成對應圖片的 .txt 標簽文件;
修改 ./data/gen_data/merge_data.py 中的自己數據集標簽所在的路徑,執行這個python腳本,會進行 person 類型的合並
