Generate your own synthetic human head dataset for free using Blender software. The dataset can be used in face analysis, model pretraining, and other machine learning tasks.
The facial model has extensive deformations to ensure high variability. This makes it difficult to adapt eyes and teeth for such deformations. Therefore, eyes and teeth are not present in the 3D model. You cannot use the dataset for tasks that require eyes or teeth, for example relighting. A random background is drawn instead.
The simplicity is that I don't need to draw real world environments, real hats, real glasses, real clothes, and other things. Random pictures from the real world that don't contain faces (not noise) are enough for the neural network to ignore everything but the head or face itself.
Currently, the effectiveness of dataset for real-world tasks is unproven. Feel free to train the models and post your results in Issues section.
Blender 4.2 or higher. No additional dependencies or plugins required.
For ease of use, a ready-made one-click to run archive for Windows is available here, containing:
-
Blender 4.2 Portable
-
Project folder
-
.bat files
run SSHG_render.bat - infinite render using current settings. The output will be placed in SSHG\render\
run SSHG_render_CUDA.bat - same + override render device to CUDA
-
run SSHG_blender.bat
-
change SSHG settings in the SSHG tab
-
change device settings in Edit -> Preferences -> System
-
save the project
-
close Blender
Output square resolution of all images. Default: 1024
Increases facial coverage of the output image in all directions from the center. Default: 2.80
Shifts the face along the Y axis of the output image plane. Default: -0.14
Shifts the yaw-axis around which the head spins. With this parameter, the face can be aligned similar to classic umeyama-align by 2D Landmarks, or rotated around the center of the head. Default: 0.0
Allows hair simulation.
Allows facial occlusions with random backgrounds shaped like hands, microphones, glasses, cigarettes, and the like.
Add glare to HEAD and SKIN modes with random probability.
Name of output dir relative to .blend root dir.
Check the checkboxes for the desired output types.
Render single.
Render infinite. UI will not unlock.
HEAD
HEAD_DEPTH
Center head towards cam +15cm = 1.0 Center head towards cam -15cm = 0.0
HAIR
Hair-only on transparent background.
SKIN
SKIN_DEPTH
SKIN_EM_MASK
SKIN_NORMAL
SKIN_WF_MASK
FRONTAL_SKIN_NORMAL
FRONTAL_SKIN_WF_MASK
HAIR_MASK
BEARD_MASK
EYEBROWS_MASK
EYELASHES_MASK
OCCLUSION_MASK
JSON_DATA
{
"resolution" : 1024,
"face_coverage": 2.8,
"face_y_offset": -0.14,
"face_y_axis_offset": 0.0,
"pitch": -7.898, # Head pitch relative to view in degrees.
# Looking up is +90, straight is 0, down is -90.
"yaw": -96.860 # Head yaw relative to view in degrees.
# Looking left (from view) is -90, straight is 0, right is +90.
# no roll, because it is always zero
"landmarks": { # name : pos dict.
"l_eye_l_corner": [676.218, 469.937], # x,y from top-left corner
"l_eye_r_corner": [595.341, 486.307],
"r_eye_l_corner": [495.657, 489.591],
"r_eye_r_corner": [407.453, 478.049],
"nose_tip": [584.718, 593.121],
"nose_l_corner": [607.680, 599.532],
"nose_r_corner": [510.877, 604.725],
"mouth_l_corner": [626.172, 707.490],
"mouth_r_corner": [484.847, 708.083],
"chin_center": [559.415, 868.429]
}
}
Landmarks example
You can combine existing labels using a simple python script. For example you can produce SKIN_WF_MASK*(1-HAIR_MASK)
and get a WF mask without hair. You can also modify the .blend project for any of your fantasies.
It is recommended to apply different augmentations to increase the variability of the dataset.
2025.01.01 Initial release
@software{SSHG,
title = {Simple Synthetic Head Generator},
author = {iperov},
url = {https://github.com/iperov/SSHG},
year = {2025}
}