目标:
实现自己的图像分类算法模型训练,应用。
- 掌握数据集配置方式;
- 掌握训练、预测命令语句
- 掌握训练结果分析
学习内容:
1.图像分类数据集配置方式
例如:
- 制作一个表情分类数据集。
# 0 - 6 文件夹分别label为:
# angry ,disgust ,fear ,happy ,sad ,surprise ,neutral
#0,1, 2,3 ,4 , 5 , 6
保存文件形式如下:
每一个数字标签文件夹里面是面部表情图片。
2.yolov8训练图像分类算法模型
注意,此处数据与分割,检测,关键点算法的数据输入yaml不同.data=数据集文件夹地址imageFER(根据自己存放地址而变)
result = model.train(data='D:/xxx/Datasets/datasetFER2024/imagesFER'-----
。
# Begin to show your code!
import torch
from ultralytics import YOLO
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
def trainModel(mode_pt=None):
if mode_pt is None:
# model = YOLO(model=r'D:/xxx/Models/yolov8/classify/yolov8m-cls.pt') # 加载预训练模型方法导入分类模型参数
model = YOLO('yolov8m-cls.yaml').load('yolov8m-cls.pt') # 在线下载预训练模型,加载训练方式
else:
model = YOLO(model=mode_pt) # 加载待优化模型
model.to(device)
result = model.train(data='D:/xxx/Datasets/datasetFER2024/imagesFER', epochs=100, batch=32, single_cls=False, imgsz=64, workers=0)
if __name__ == "__main__":
mode_pt = r'D:/xxx/Models/yolov8/classify/yolov8m-cls.pt'
trainModel()
注意:# 加载预训练模型方法导入分类模型参数,可能因为自行下载的YOLOv8-cls.pt预训练模型文件有问题,会报bug
ModuleNotFoundError: No module named ‘ultralytics.utils‘
,建议使用在线下载最新模型。
3.掌握训练结果分析
根据损失函数,精确度曲线,调整参数或新增数据均衡类别。
学习产出:
完成表情分类识别算法模型: FER,Facial expression recognition表情识别算法模型
from ultralytics import YOLO
import cv2
# Load the YOLO model
model = YOLO('best.pt') # Adjust model as needed
# Open your video
cap = cv2.VideoCapture('path/to/your/video.mp4')
while cap.isOpened():
ret, frame = cap.read()
if not ret:
break
# Run detection
results = model(frame)
# Extract detected objects (for example, filtering by confidence and class)
for *box, conf, cls in results.pred[0]:
if conf > 0.5: # Example confidence threshold
# Your custom processing here
pass
# Example: Show the frame with detections
cv2.imshow('Frame', np.squeeze(results.render()))
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()