{"id":28296211,"url":"https://github.com/zjykzj/yolo11face","last_synced_at":"2026-03-07T05:06:48.673Z","repository":{"id":273187546,"uuid":"918931909","full_name":"zjykzj/YOLO11Face","owner":"zjykzj","description":"[ultralytics v8.3.75][yolov8/yolo11-pose][WIDER FACE]Upgrade YOLO5Face to YOLO8Face and YOLO11Face","archived":false,"fork":false,"pushed_at":"2025-08-28T00:55:35.000Z","size":5165,"stargazers_count":6,"open_issues_count":3,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-04T22:36:55.699Z","etag":null,"topics":["landmark-detection","landmarks","python","pytorch","ultralytics","widerface","yolo","yolo11","yolo11-pose","yolo11face","yolo5face","yolo8face","yolov8","yolov8-pose"],"latest_commit_sha":null,"homepage":"https://arxiv.org/abs/2105.12931","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zjykzj.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-01-19T09:01:55.000Z","updated_at":"2025-09-03T01:58:00.000Z","dependencies_parsed_at":"2025-01-19T10:28:36.126Z","dependency_job_id":"67377e06-9ad1-4afd-9be7-8817c646d1dd","html_url":"https://github.com/zjykzj/YOLO11Face","commit_stats":null,"previous_names":["zjykzj/yolo8face","zjykzj/yolo11face"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/zjykzj/YOLO11Face","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zjykzj%2FYOLO11Face","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zjykzj%2FYOLO11Face/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zjykzj%2FYOLO11Face/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zjykzj%2FYOLO11Face/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zjykzj","download_url":"https://codeload.github.com/zjykzj/YOLO11Face/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zjykzj%2FYOLO11Face/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30208730,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-07T03:24:23.086Z","status":"ssl_error","status_checked_at":"2026-03-07T03:23:11.444Z","response_time":53,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["landmark-detection","landmarks","python","pytorch","ultralytics","widerface","yolo","yolo11","yolo11-pose","yolo11face","yolo5face","yolo8face","yolov8","yolov8-pose"],"created_at":"2025-05-22T20:13:01.595Z","updated_at":"2026-03-07T05:06:48.658Z","avatar_url":"https://github.com/zjykzj.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!-- \u003cdiv align=\"right\"\u003e\n  Language:\n    🇺🇸\n  \u003ca title=\"Chinese\" href=\"./README.zh-CN.md\"\u003e🇨🇳\u003c/a\u003e\n\u003c/div\u003e --\u003e\n\n\u003cdiv align=\"center\"\u003e\u003ca title=\"\" href=\"https://github.com/zjykzj/YOLO11Face\"\u003e\u003cimg align=\"center\" src=\"yolo11face/assets/logo/YOLO11Face.png\" alt=\"\"\u003e\u003c/a\u003e\u003c/div\u003e\n\n\u003cp align=\"center\"\u003e\n  «YOLO11Face» combined YOLO5Face and YOLOv8/YOLO11 for face and keypoint detection\n\u003cbr\u003e\n\u003cbr\u003e\n  \u003ca href=\"https://github.com/RichardLitt/standard-readme\"\u003e\u003cimg src=\"https://img.shields.io/badge/standard--readme-OK-green.svg?style=flat-square\" alt=\"\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://conventionalcommits.org\"\u003e\u003cimg src=\"https://img.shields.io/badge/Conventional%20Commits-1.0.0-yellow.svg\" alt=\"\"\u003e\u003c/a\u003e\n  \u003ca href=\"http://commitizen.github.io/cz-cli/\"\u003e\u003cimg src=\"https://img.shields.io/badge/commitizen-friendly-brightgreen.svg\" alt=\"\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\nThis warehouse has attempted to train two model architectures in total. The first one is to train and validate the `WIDERFACE` dataset using only the `yolov5/yolov8/yolo11 detection model` architecture.\n\n|                       |     ARCH     | GFLOPs | Easy  | Medium | Hard  |\n|:---------------------:|:------------:|:------:|:-----:|:------:|:-----:|\n| **zjykzj/YOLO11Face** |   yolov5nu   |  7.1   | 93.86 | 91.70  | 80.37 |\n| **zjykzj/YOLO11Face** |   yolov5su   |  23.8  | 95.13 | 93.47  | 84.33 |\n| **zjykzj/YOLO11Face** |   yolov8s    |  28.4  | 95.77 | 94.18  | 84.54 |\n| **zjykzj/YOLO11Face** |   yolo11s    |  21.3  | 95.55 | 93.91  | 84.85 |\n\nThe second method uses `Ultralytics' pose model` for joint training of faces and keypoints, and finally evaluates only the facial performance of the validation set in the original way.\n\n*Note that the facial keypoint annotation here comes from RetinaFace, which only annotated facial keypoints on the original training set. Therefore, when training the pose model, the training part of the original WIDERFACE `train` dataset is divided into `training/validation` datasets in an `8:2` ratio, and the `val` dataset is evaluated after training is completed.*\n\n|                       |     ARCH     | GFLOPs | Easy  | Medium | Hard  |\n|:---------------------:|:------------:|:------:|:-----:|:------:|:-----:|\n| **zjykzj/YOLO5Face**  | yolov5n-v7.0 |  4.2   | 93.25 | 91.11  | 80.33 |\n| **zjykzj/YOLO5Face**  | yolov5s-v7.0 |  15.8  | 94.84 | 93.28  | 84.67 |\n|                       |              |        |       |        |       |\n| **zjykzj/YOLO11Face** | yolov8n-pose |  8.3   | 94.61 | 92.46  | 80.98 |\n| **zjykzj/YOLO11Face** | yolov8s-pose |  29.4  | 95.50 | 93.95  | 84.65 |\n|                       |              |        |       |        |       |\n| **zjykzj/YOLO11Face**  | yolo11n-pose |  6.6   | 94.62 | 92.56  | 81.02 |\n| **zjykzj/YOLO11Face**  | yolo11s-pose |  22.3  | 95.72 | 94.19  | 85.24 |\n\n*During the eval phase, using VGA resolution input images (the longer edge of the input image is scaled to 640, and the shorter edge is scaled accordingly)*\n\n## Table of Contents✨\n\n- [Table of Contents✨](#table-of-contents)\n- [News🚀](#news)\n- [Background🏷](#background)\n- [Installation](#installation)\n- [Usage✨](#usage)\n  - [Train⭐](#train)\n  - [Eval⭐](#eval)\n  - [Predict⭐](#predict)\n- [Maintainers🔥](#maintainers)\n- [Thanks♥️](#thanks️)\n- [Contributing🌞](#contributing)\n- [License✒️](#license️)\n\n## News🚀\n\n* **2025/03/01**: Training and evaluation of WIDERFACE using the `detection and pose` model architecture of `yolov5/yolov8/yolo11`.\n* **2025/02/21**: Upgrade the baseline version of the repository to `ultralytics v8.3.75`.\n* **2025/02/15**: Trains a face and landmarks detector based on `YOLOv8-pose` and the WIDERFACE dataset.\n* **2023/02/03**: Trains a face detector based on `YOLOv8` and the WIDERFACE dataset.\n* **2025/01/09**: Initialize this repository using `ultralytics v8.2.103`.\n\n## Background🏷\n\nAccording to the [YOLO5Face](https://github.com/zjykzj/YOLO5Face) implementation, it adds `Landmarks-HEAD` to `YOLOv5` to achieve synchronous detection of faces and keypoints. The `YOLOv8/YOLO11` is an upgraded version of YOLOv5, which naturally improves the performance of face and keypoint detection by combining YOLO5Face and YOLOv8/YOLO11.\n\nThrough experiments, it was found that using `YOLOv8-pose/YOLO11-pose` can simultaneously detect faces and facial keypoints. Thank to ultralytics !!!\n\nNote: the latest implementation of `YOLO11Face` in our warehouse is entirely based on [ultralytics/ultralytics v8.3.75](https://github.com/ultralytics/ultralytics/releases/tag/v8.3.75)\n\n## Installation\n\nSee [INSTALL.md](./yolo8face/docs/INSTALL.md)\n\n## Usage✨\n\n### Train⭐ \n\n```shell\n$ python3 pose_train.py --model yolo11s-pose.pt --data ./yolo11face/cfg/datasets/widerface-landmarks.yaml --epochs 300 --imgsz 800 --batch 8 --device 0\n```\n\n### Eval⭐ \n\n```shell\n# python pose_widerface.py --model yolo11s-pose_widerface.pt --source ../datasets/widerface/images/val/ --folder_pict ../datasets/widerface/wider_face_split/wider_face_val_bbx_gt.txt --save_txt true --imgsz 640 --conf 0.001 --iou 0.6 --max_det 1000 --batch 1 --device 7\nargs: Namespace(data=None, device=[7], folder_pict='../datasets/widerface/wider_face_split/wider_face_val_bbx_gt.txt', model='yolo11s-pose_widerface.pt', source='../datasets/widerface/images/val/') - unknown: ['--save_txt', 'true', '--imgsz', '640', '--conf', '0.001', '--iou', '0.6', '--max_det', '1000', '--batch', '1']\n{'model': 'yolo11s-pose_widerface.pt', 'data': None, 'device': [7], 'source': '../datasets/widerface/images/val/', 'folder_pict': '../datasets/widerface/wider_face_split/wider_face_val_bbx_gt.txt', 'save_txt': True, 'imgsz': 640, 'conf': 0.001, 'iou': 0.6, 'max_det': 1000, 'batch': 1, 'mode': 'predict'}\n3226\n\nUltralytics 8.3.75 🚀 Python-3.8.19 torch-1.12.1+cu113 CUDA:7 (NVIDIA GeForce RTX 3090, 24268MiB)\nYOLO11s-pose summary (fused): 257 layers, 9,700,560 parameters, 0 gradients, 22.3 GFLOPs\n...\n...\nSpeed: 2.0ms preprocess, 14.4ms inference, 1.4ms postprocess per image at shape (1, 3, 640, 448)\nResults saved to /data/zj/YOLO11Face/runs/detect/predict3\n0 label saved to /data/zj/YOLO11Face/runs/detect/predict3/labels\n# cd widerface_evaluate/\n# python3 evaluation.py -p ../runs/detect/predict3/labels/ -g ./ground_truth/\nReading Predictions : 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 61/61 [00:00\u003c00:00, 115.26it/s]\nProcessing easy: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 61/61 [00:19\u003c00:00,  3.20it/s]\nProcessing medium: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 61/61 [00:18\u003c00:00,  3.22it/s]\nProcessing hard: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 61/61 [00:18\u003c00:00,  3.21it/s]\n==================== Results ====================\nEasy   Val AP: 0.9572097672239526\nMedium Val AP: 0.9419027051471077\nHard   Val AP: 0.8523522955677869\n=================================================\n```\n\n### Predict⭐ \n\n```shell\n# python3 pose_predict.py --model yolo11s-pose_widerface.pt --source ./yolo11face/assets/widerface_val/ --imgsz 640 --device 0\nargs: Namespace(data=None, device=[0], model='yolo11s-pose_widerface.pt', source='./yolo11face/assets/widerface_val/') - unknown: ['--imgsz', '640']\n\nUltralytics 8.3.75 🚀 Python-3.8.19 torch-1.12.1+cu113 CUDA:0 (NVIDIA GeForce RTX 3090, 24268MiB)\nYOLO11s-pose summary (fused): 257 layers, 9,700,560 parameters, 0 gradients, 22.3 GFLOPs\nimage 1/2 /data/zj/YOLO11Face/yolo11face/assets/widerface_val/39_Ice_Skating_iceskiing_39_351.jpg: 640x640 3 faces, 22.8ms\nimage 2/2 /data/zj/YOLO11Face/yolo11face/assets/widerface_val/9_Press_Conference_Press_Conference_9_632.jpg: 640x640 1 face, 22.8ms\nSpeed: 3.1ms preprocess, 22.8ms inference, 1.8ms postprocess per image at shape (2, 3, 640, 640)\nResults saved to /data/zj/YOLO11Face/runs/detect/predict10\n```\n\n\u003cp align=\"left\"\u003e\u003cimg src=\"yolo11face/assets/predict/9_Press_Conference_Press_Conference_9_632.jpg\" height=\"240\"\\\u003e  \u003cimg src=\"yolo11face/assets/predict/39_Ice_Skating_iceskiing_39_351.jpg\" height=\"240\"\\\u003e\u003c/p\u003e\n\n## Maintainers🔥\n\n* zhujian - *Initial work* - [zjykzj](https://github.com/zjykzj)\n\n## Thanks♥️\n\n* [ultralytics/ultralytics](https://github.com/ultralytics/ultralytics)\n* [zjykzj/YOLO5Face](https://github.com/zjykzj/YOLO5Face)\n* [deepcam-cn/yolov5-face](https://github.com/deepcam-cn/yolov5-face)\n\n## Contributing🌞\n\nAnyone's participation is welcome! Open an [issue](https://github.com/zjykzj/YOLO11Face/issues) or submit PRs.\n\n## License✒️\n\n[Apache License 2.0](LICENSE) © 2025 zjykzj","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzjykzj%2Fyolo11face","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzjykzj%2Fyolo11face","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzjykzj%2Fyolo11face/lists"}