脸数据集yolov8
时间: 2025-02-17 12:20:13 浏览: 51
### 寻找适用于YOLOv8的人脸数据集
对于人脸识别和检测任务,多个公开可用的数据集能够满足需求并适配于YOLOv8模型训练。这些数据集中包含了大量带有人脸标签的图像样本。
#### WIDER Face 数据集
WIDER Face 是一个人脸检测领域广泛使用的基准数据集[^1]。该数据集提供了超过40,000张图片以及大约750,000个人脸框注释。它涵盖了各种场景下不同角度、光照条件下的真实世界照片,非常适合用来测试和改进人脸检测算法性能。
为了使这个数据集适应 YOLOv8 训练框架,需要将其转换成 YOLO 格式的标注文件。这通常意味着要创建对应的 `.txt` 文件来存储每一张图中所有人脸的位置信息(即边界框坐标),并且确保整个结构符合 `test`, `train`, 和 `val` 子目录的要求[^2]。
```bash
# 假设已经下载好wider_face_split.zip和WIDER_train.zip等压缩包
unzip wider_face_split.zip -d ./data/
unzip WIDER_train.zip -d ./data/
mkdir -p data/WIDER_FACE/images/{train,val,test}
mv data/WIDER_train/* data/WIDER_FACE/images/train/.
```
#### CelebA 数据集
CelebA (Celebrity Faces Attributes Dataset) 同样是一个流行的选择之一[^3]。此集合不仅拥有丰富的面部特征标记,而且规模庞大——约有20万名人肖像照及其属性描述。尽管最初设计用于多模态学习任务,但对于仅需简单矩形包围盒作为监督信号的情况来说也完全适用。
需要注意的是,在实际操作过程中可能还需要编写一些辅助脚本来完成从原始格式向目标格式之间的转化工作。例如,可以利用 Python 脚本来读取原生提供的列表文件并将之解析为 YOLO 所接受的形式:
```python
import os
def convert_celeba_to_yolo(annotations_file, output_dir):
with open(annotations_file, 'r') as f:
lines = f.readlines()
image_info = []
for line in lines[2:]:
parts = line.strip().split()
filename = parts[0]
bbox = list(map(int, map(float, parts[1:5])))
img_path = os.path.join('img_align_celeba', filename)
label_content = " ".join([str(x) for x in [
0, # 类别编号始终设定为人脸类别ID=0
*(bbox[i]/width if i%2==0 else bbox[i]/height for i in range(len(bbox))) # 归一化后的中心点xy及wh值
]])
save_label(img_path.replace('.jpg','.txt'),label_content)
def save_label(filepath,content):
dir_name = os.path.dirname(filepath)
if not os.path.exists(dir_name):
os.makedirs(dir_name)
with open(filepath,'w+') as file:
file.write(content)
convert_celeba_to_yolo('./Anno/list_bbox_celeba.txt','./celeba_labels')
```
阅读全文
相关推荐
















