Downloads · 30 days
6.9K
3% of all-time downloads
py-feat/resmasknet
resmasknet is a image feature extraction model from py-feat. Use it for the image feature extraction task on the model card, and read the license before you ship it in a product. It is set up for py-feat. The card lists the license as mit.
resmasknet combines residual masking with unet architecture to predict 7 facial emotion categories from images.
Downloads · 30 days
6.9K
3% of all-time downloads
All-time downloads
207K
Public
Repo size
2.2 GB
Likes
0
Public
Click a slice to open those files.
.pth552 MB · 100%
From the Hugging Face model README
resmasknet combines residual masking with unet architecture to predict 7 facial emotion categories from images.
If you use the svm_au model in your research or application, please cite the following paper:
Pham Luan, The Huynh Vu, and Tuan Anh Tran. "Facial Expression Recognition using Residual Masking Network". In: Proc. ICPR. 2020.
@inproceedings{pham2021facial,
title={Facial expression recognition using residual masking network},
author={Pham, Luan and Vu, The Huynh and Tran, Tuan Anh},
booktitle={2020 25th International Conference on Pattern Recognition (ICPR)},
pages={4513--4519},
year={2021},
organization={IEEE}
}
We thank Luan Pham for generously sharing this model with a permissive license.
import numpy as np
import torch
import torch.nn as nn
from feat.emo_detectors.ResMaskNet.resmasknet_test import ResMasking
from huggingface_hub import hf_hub_download
# Load Configs
emotion_config_file = hf_hub_download(repo_id= "py-feat/resmasknet", filename="config.json", cache_dir=get_resource_path())
with open(emotion_config_file, "r") as f:
emotion_config = json.load(f)
device = 'cpu'
emotion_detector = ResMasking("", in_channels=emotion_config['in_channels'])
emotion_detector.fc = nn.Sequential(nn.Dropout(0.4), nn.Linear(512, emotion_config['num_classes']))
emotion_model_file = hf_hub_download(repo_id='py-feat/resmasknet', filename="ResMaskNet_Z_resmasking_dropout1_rot30.pth")
emotion_checkpoint = torch.load(emotion_model_file, map_location=device)["net"]
emotion_detector.load_state_dict(emotion_checkpoint)
emotion_detector.eval()
emotion_detector.to(device)
# Test model
face_image = "path/to/your/test_image.jpg" # Replace with your extracted face image that is [224, 224]
# Classification - [angry, disgust, fear, happy, sad, surprise, neutral]
emotions = emotion_detector.forward(face_image)
emotion_probabilities = torch.softmax(emotions, 1)