下面為你詳細介紹如何使用YOLOv8模型進行基于深度學習的吸煙行為檢測,包含環境配置、數據準備、模型訓練以及推理等步驟。
1. 環境配置
首先,你需要安裝必要的庫,主要是ultralytics
庫,它包含了YOLOv8模型。你可以使用以下命令進行安裝:
pip install ultralytics
2. 數據準備
要進行吸煙行為檢測,你需要準備一個包含吸煙和非吸煙圖像的數據集。數據集應按照YOLOv8所需的格式進行組織,具體如下:
dataset/
├── images/
│ ├── train/
│ ├── val/
│ └── test/
└── labels/├── train/├── val/└── test/
其中,images
文件夾存放圖像文件,labels
文件夾存放對應的標注文件。標注文件是.txt
格式,每行代表一個目標,格式為class x_center y_center width height
,坐標值均為相對于圖像寬高的歸一化值。
同時,你需要創建一個data.yaml
文件,內容如下:
train: ../dataset/images/train
val: ../dataset/images/val
test: ../dataset/images/testnc: 1 # 類別數量,這里只有吸煙一個類別
names: ['smoking']
3. 模型訓練
以下是使用Python代碼進行模型訓練的示例:
from ultralytics import YOLO# 加載預訓練的YOLOv8模型
model = YOLO('yolov8n.pt')# 訓練模型
results = model.train(data='data.yaml', # 數據集配置文件路徑epochs=10, # 訓練輪數imgsz=640 # 輸入圖像的大小
)
4. 模型推理
訓練完成后,你可以使用訓練好的模型進行吸煙行為檢測。以下是推理代碼示例:
from ultralytics import YOLO
import cv2# 加載訓練好的模型
model = YOLO('runs/detect/train/weights/best.pt')# 讀取圖像
image = cv2.imread('path/to/your/image.jpg')# 進行推理
results = model(image)# 獲取檢測結果
for result in results:boxes = result.boxesfor box in boxes:class_id = int(box.cls[0])confidence = float(box.conf[0])bbox = box.xyxy[0].cpu().numpy().astype(int)if class_id == 0 and confidence > 0.5: # 類別ID為0表示吸煙,置信度閾值設為0.5x1, y1, x2, y2 = bboxcv2.rectangle(image, (x1, y1), (x2, y2), (0, 255, 0), 2)cv2.putText(image, f'Smoking: {confidence:.2f}', (x1, y1 - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.9, (0, 255, 0), 2)# 顯示結果圖像
cv2.imshow('Smoking Detection', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
代碼解釋
-
模型訓練:
- 首先使用
YOLO('yolov8n.pt')
加載預訓練的YOLOv8模型。 - 然后調用
model.train()
方法進行訓練,指定數據集配置文件、訓練輪數和輸入圖像大小。
- 首先使用
-
模型推理:
- 使用
YOLO('runs/detect/train/weights/best.pt')
加載訓練好的模型。 - 讀取圖像并調用
model(image)
進行推理。 - 遍歷檢測結果,根據類別ID和置信度繪制邊界框和標簽。
- 使用
通過以上步驟,你就可以使用YOLOv8模型進行吸煙行為檢測了。