face_mask_detection / README.md
sreenathsree1578's picture
Create README.md
aab326d verified
# Mask Detection Model
## Model Overview
**Name:** Mask Detection CNN
**Author:** Your Name
**Date:** 2025-09-26
**Framework:** Keras (TensorFlow backend)
**Format:** HDF5 (`.h5`)
**License:** MIT / CC0 (choose as needed)
This model is designed to detect whether a person is wearing a mask or not from images of faces. It can be used in real-time applications such as webcam-based mask detection or image classification.
---
## Intended Use
- **Primary Use:** Classify face images as "Mask" or "No Mask".
- **Applications:** Public safety, automated mask compliance monitoring, educational demos.
- **Limitations:**
- The model works on cropped face images; it may produce inaccurate results if the input contains multiple faces without detection.
- Lighting, occlusions, or extreme angles may affect accuracy.
- Model trained on limited dataset; performance may vary on unseen ethnicities or environments.
---
## Model Details
- **Input:** RGB image of shape `(128, 128, 3)`
- **Preprocessing:**
- Resize to `128x128` pixels
- Normalize pixel values to range `[0, 1]`
- **Output:**
- `0`: Mask
- `1`: No Mask
- Output is a softmax probability distribution; prediction = `argmax(output)`
- **Architecture:** Convolutional Neural Network (CNN) with 2-3 Conv2D + MaxPooling layers, Flatten, Dense layers
---
## Training
- **Dataset:** Custom mask/no-mask face dataset
- **Loss Function:** Categorical Crossentropy
- **Optimizer:** Adam
- **Metrics:** Accuracy
- **Epochs:** Variable depending on training
- **Batch Size:** Variable depending on training
---
## Evaluation
- **Accuracy:** High on training/validation dataset (exact value depends on training)
- **Test Notes:** Recommended to evaluate on new faces under similar conditions to training images
---
## Usage Example
```python
import cv2
import numpy as np
from keras.models import load_model
# Load model
model = load_model("mask_detection_model.h5")
# Load image
image = cv2.imread("face.jpg")
image_resized = cv2.resize(image, (128, 128))
image_scaled = image_resized.astype("float32") / 255.0
image_input = np.expand_dims(image_scaled, axis=0)
# Predict
prediction = model.predict(image_input)
pred_label = np.argmax(prediction, axis=1)[0]
if pred_label == 0:
print("Mask 😷✅")
else:
print("No Mask ❌")