三、使用YOLOv8n训练识别面部表情
3.1 存放数据集
在项目的根目录下创建一个文件夹命名为datasets,用来存放我们的数据集

3.2 规范数据集的储存结构
3.2.1 coco128数据集
我们先来参考一下coco128数据集文件夹的结构组成
coco128
---images
---train2017(训练数据集图片)
---1.jpg
---2.jpg
...
---val(验证数据集图片)
---6.jpg
---7.jpg
...
---labels
---train2017(训练数据集标注信息)
---1.txt
---2.txt
...
---val(验证数据集标注信息)
---6.txt
---7.txt
...
需要注意的是,coco128数据集里本身没有自带验证数据集,所以这里val目录只是一个示例,实际上val目录下的验证数据集亦可以和训练数据集一样亦可以不一样
coco128放在datasets文件夹下是这样的

我们自己的数据集的命名和排列方式也要按这个格式来,尤其是images和labels这两名称最好不要变。
3.2.2 coco数据集的yaml文件
coco128数据集的yaml文件如下所示,coco128.yaml

可以看到给出了数据集的路径、训练集和验证集所在的位置,其中names里的内容是classes.txt里的内容,所以仿照该文件写一个我们自己的yaml文件,lrz.yaml

3.3 自建数据集
我们使用lrz好大儿的数据集(哈哈哈),一共有三个类[happy,puzzled,sad],使用labelimg标注了3张图片,然后存放在lrz文件夹下

新建lrz.yaml放在和images、labels这两文件夹的同级目录下

图像文件如下

标签文件如下

lrz.yaml文件内容如下,记得更改路径
# Ultralytics YOLO 🚀, AGPL-3.0 license
# COCO128 dataset https://www.kaggle.com/ultralytics/coco128 (first 128 images from COCO train2017) by Ultralytics
# Example usage: yolo train data=coco128.yaml
# parent
# ├── ultralytics
# └── datasets
# └── coco128 ← downloads here (7 MB)
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: G:\Github\ultralytics\datasets\lrz # dataset root dir
train: images/train2024 # train images (relative to 'path') 128 images
val: images/train2024 # val images (relative to 'path') 128 images
test: # test images (optional)
# Classes
names:
0: happy
1: puzzled
2: sad
3.4 训练自己的数据集
3.4.1 训练并验证
在项目的根目录下新建文件yolo_train.py,运行以下内容(示例用的是coco数据集,lrz好大儿的图片太少了训练出来没反应目前)
from ultralytics import YOLO
def main():
# Load model
model = YOLO("yolov8n.pt")
# Train
model.train(data="datasets\coco128\coco128.yaml", epochs=100)
# Validate
model.val()
if __name__ == "__main__":
main()
训练结束后训练结果都保存在runs这个文件夹下,可以看到有所有的指标曲线的可视化;
还有模型训练出来的权重在runs\detect\train\weights下,best.pt为训练的最好的一组权重,后面可以使用。
3.4.2 预测
在项目的根目录下新建文件yolo_predict.py,运行以下内容
from ultralytics import YOLO
def main():
model = YOLO("runs/detect/train/weights/best.pt")
model.predict("cjq.jpg", save=True, imgsz=320, conf=0.5)
if __name__ == "__main__":
main()
四、使用YOLOv8n-pose训练识别人体姿态
源码下载界面中的readme文件中往下翻,找到yolovn8-pose的预训练权重,点击下载,然后把下载好的文件放在项目代码的根目录下。

4.2 更换标注工具
由于识别人体姿态需要pose关键点检测,而labelimg中没有关键点标记功能,经过一系列探索最终决定更换标注工具,使用YOLO官方的标注工具——roboflow
参考文章
适合小白的超详细yolov8环境配置+实例运行教程,从零开始教你如何使用yolov8训练自己的数据集(Windows+conda+pycharm)
Comments | 1 条评论
xc