@smcgann/node-red-face-detection-plus 0.0.3
Face Detection Node for Node-RED
@smcgann/node-red-face-detection-plus
A Node-RED node that detects faces using AI.
You can use the output with 🔗 @smcgann/node-red-vectorize-plus as part of a face recognition flow. You can also use it to crop the face images from the original image and save them as files.
This node is derived from 🔗 @GOOD-I-DEER/node-red-contrib-face-detection
Key Changes
✔ Added YOLOv8s-face model.
✔ Added postinstall script to download models.
✔ Updated dependencies.
✔ Image Buffer output now includes bounding boxes (useful for annotations).
✔ Moved data and originImg into separate msg
properties.
✔ Returns number of detected faces in msg.payload
.
✔ Supports runtime configuration through msg.faceOptions
for dynamic settings.
✔ Includes metadata in msg.faceConfig
(threshold and model).
✔ More robust error handling.
✔ Better Performance.
✔ Easier integration into Node-RED flows.
Installation
Either use the Edit Menu - Manage Palette option to install, or run the following command in your Node-RED user directory - typically ~/.node-red
cd ~/.node-red/
npm install @smcgann/node-red-face-detection-plus
Restart your Node-RED instance
Input Properties
🖼️ msg.payload → Image Buffer
- Accepts PNG, JPG, GIF, WEBP, TIFF, AVIF (binary image data).
⚙️ msg.faceOptions → Object
(Optional)
- Allows overriding node config settings dynamically.
- Example:
{
"threshold": 0.4,
"model": "yolov8n-face"
}
Node Properties

🏷 Name
- The name displayed in the Node-RED editor.
🔍 Model
Select the detection model:
- YOLOv8n (faster, good for larger faces)
- YOLOv8s (detects smaller faces, but slower)
📤 Return Value
Defines the type of data returned:
- Detected Object →
data.boxes
- Image Buffer →
data.faces
(array of cropped face images) +data.boxes
- Image File → Saves detected faces as separate files.
📂 Absolute Path Dir
(Visible if Image File is selected)
- Defines where the cropped face images are saved.
🎯 Confidence Threshold
Defines the minimum score required for a detected face to be considered valid (range: 0.1 - 1):
Threshold Effect Low (0.1 - 0.4) More faces detected, but higher risk of false positives. High (0.7 - 1.0) Fewer faces detected, reducing false positives but possibly missing faces.
Output
Data is output in the output format selected in the 'Return Value' property.
📌 msg.payload → Number
- Number of faces detected.
🖼️ msg.originImg → Buffer
- Input Image.
Detected Object

Image Buffer

Image File

⚙️ msg.faceConfig → Object
- Returns values used for detection.
{
"threshold": 0.4,
"model": "yolov8n-face"
}
✍️ Authors
S.McGann → Modified Version.
GOOD-I-DEER (Samsung Software Academy for Youth)
📜 Copyright and license
S.McGann → Modified Version
Samsung Automation Studio Team under the GNU General Public License v3.0 license.
References
🔗 Node-RED Creating Nodes
🔗 Samsung Automation Studio Github Repository
🔗 Ultralytics YOLOv8
🔗 YOLOv8 ONNX in JavaScript
🔗 YOLOv8 ONNX in Node.js
🔗 YOLOv8 Face Model