|
--- |
|
license: apache-2.0 |
|
language: |
|
- en |
|
datasets: |
|
- AiresPucrs/CelebA-Smiles |
|
metrics: |
|
- accuracy |
|
tags: |
|
- image-classification |
|
--- |
|
|
|
# LeNNon-Smile-Detector |
|
|
|
## Model Overview |
|
|
|
The LeNNon-Smile-Detector is a convolutional neural network trained to detect the presence of a human smile in a facial image. |
|
|
|
### Details |
|
|
|
- **Size:** 2,566,506 parameters |
|
- **Model type:** Convolutional neural network |
|
- **Optimizer**: `torch.optim.Adam` with a learning rate of 0.001 |
|
- **Number of Epochs:** 20 |
|
- **Batch Size:** 256 |
|
- **Hardware:** Tesla V4 |
|
- **Emissions:** Not measured |
|
- **Total Energy Consumption:** Not measured |
|
|
|
### How to Use |
|
|
|
To run inference on this model, you can use the following code snippet: |
|
|
|
```python |
|
import torch |
|
from PIL import Image |
|
from lennon import LeNNon |
|
from torchvision import transforms |
|
from huggingface_hub import hf_hub_download |
|
|
|
# Download the pytorch model |
|
hf_hub_download(repo_id="AiresPucrs/LeNNon-Smile-Detector", |
|
filename="LeNNon-Smile-Detector.pt", |
|
local_dir="./", |
|
repo_type="model" |
|
) |
|
|
|
# Download the source implementation of the model's architecture |
|
hf_hub_download(repo_id="AiresPucrs/LeNNon-Smile-Detector", |
|
filename="lennon.py", |
|
local_dir="./", |
|
repo_type="model" |
|
) |
|
|
|
# Check if GPU is available |
|
device = torch.device("cuda" if torch.cuda.is_available() else "cpu") |
|
|
|
# Load the model an pass it to the proper device |
|
model = torch.load('./LeNNon-Smile-Detector.pt') |
|
model = model.to(device) |
|
model.eval() |
|
|
|
# This `transform` object will transform our test images into proper tensors |
|
transform = transforms.Compose([ |
|
transforms.Resize((100, 100)), # Resize the image to 100x100 |
|
transforms.ToTensor(), |
|
]) |
|
|
|
image_path = "your_image_path_here" |
|
|
|
# Open and preprocess he image |
|
image = Image.open(image_path) |
|
tensor = transform(image) |
|
tensor = tensor.to(device) |
|
|
|
# forward pass trough the model |
|
with torch.no_grad(): |
|
|
|
outputs = model(tensor) |
|
|
|
# Get the class prediction |
|
_, predicted = torch.max(outputs.data, 1) |
|
|
|
print("Smiling" if predicted.item() > 0 else "Not Smiling") |
|
``` |
|
|
|
## Intended Use |
|
|
|
This model was created for research purposes only. Specifically, it was designed to explore discriminatory biases present in a subset of the CelebA dataset (the [CelebA-Smiles](https://huggingface.co/datasets/AiresPucrs/CelebA-Smiles)). We do not recommend any application of this model outside this scope. |
|
|
|
|
|
## Performance Metrics |
|
|
|
The model achieved an accuracy of 97% in a test set split containing 5000 images from the [CelebA-Smiles](https://huggingface.co/datasets/AiresPucrs/CelebA-Smiles). |
|
|
|
## Training Data |
|
|
|
The model was trained on a subset of the [CelebA dataset](https://www.kaggle.com/datasets/jessicali9530/celeba-dataset), i.e., CelebA-Smiles. |
|
|
|
CelebA-Smiles contains 50K images. 25K of smiling faces, and 25K of non smiling faces. |
|
|
|
Images on the CelebA-Smiles were resized to 100 x 100 pixels before training the model. For more details on the features contained in the CelebA-Smiles dataset, check its [dataset card](https://huggingface.co/datasets/AiresPucrs/CelebA-Smiles). |
|
|
|
## Limitations |
|
|
|
We performed a simple fairness analysis of our model regarding the sensitive attribute **age**. |
|
|
|
According to our analysis, the model has no discriminatory bias regarding this feature. Results can be found [here](https://github.com/Nkluge-correa/teeny-tiny_castle/blob/master/ML%20Fairness/fair_metrics_celeba.ipynb). |
|
|
|
Other possible biases were not investigated, but further investigations are likely given that other sensitive attributes present in the training dataset are available. |
|
|
|
In conclusion, we do not recommend using this model in real-world applications. It was solely developed for academic and educational purposes. |
|
|
|
## Cite as |
|
|
|
```latex |
|
@misc{teenytinycastle, |
|
doi = {10.5281/zenodo.7112065}, |
|
url = {https://github.com/Nkluge-correa/teeny-tiny_castle}, |
|
author = {Nicholas Kluge Corr{\^e}a}, |
|
title = {Teeny-Tiny Castle}, |
|
year = {2024}, |
|
publisher = {GitHub}, |
|
journal = {GitHub repository}, |
|
} |
|
``` |
|
|
|
## License |
|
|
|
This model is licensed under the Apache License, Version 2.0. See the [LICENSE](LICENSE) file for more details. |
|
|
|
|