Skip to content

Legit-Health/yolo-face-parts-detector

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Face parts detection with YOLOv8 🎯

Introduction

In this project I use the most recent implementation of YOLO by Ultralytics, YOLOv8. The goal is to train an algorithm that is able to detect separate face parts without having to use landmark detectors that don't do well when part of the face is occluded or missing. My goal is to also combine frontal, semi-frontal and profile face datasets so that the YOLO model works well on all of them.

It is also a great opportunity to try out the supervision library by Roboflow. Despite it's still in beta, it looks really helpful for some common YOLO-related tasks such as drawing the detections.

Data

For this experiment I'm using the following sources:

  • Existing datasets: all these datasets were processed by converting each group of facial landmarks (eye, mouth, nose, eyebrows) to a bounding box compatible with YOLO.
  • Custom datasets:
    • Pexels: I downloaded 85 images from this website and annotated them using CVAT. I am currently working on another two batches of images.

Results

Data quality

Some datasets such as Helen may generate noisy examples when the images have more than one face but only one set of landmarks (i.e. the ones corresponding to the "main" face in the image). This is probably affecting the precision because the model is actually detecting all the faces in these images (which is good, though). Other datasets such as AFW have as many landmarks as faces in the images.

A training batch with some images with incomplete labels

Performance

The model I've trained (nano) struggles with eyebrows, but it works really well on eyes and noses. I need to add more close-up images of each part to increase the number of incomplete faces.

F1 curve

About

Using YOLOv8 to detect face parts

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%