All Projects → vlgiitr → Group Level Emotion Recognition

vlgiitr / Group Level Emotion Recognition

Licence: mit
Model submitted for the ICMI 2018 EmotiW Group-Level Emotion Recognition Challenge

Projects that are alternatives of or similar to Group Level Emotion Recognition

Graph attention pool
Attention over nodes in Graph Neural Networks using PyTorch (NeurIPS 2019)
Stars: ✭ 186 (+165.71%)
Mutual labels:  jupyter-notebook, attention-mechanism
Attention is all you need
Transformer of "Attention Is All You Need" (Vaswani et al. 2017) by Chainer.
Stars: ✭ 303 (+332.86%)
Mutual labels:  jupyter-notebook, attention-mechanism
Csa Inpainting
Coherent Semantic Attention for image inpainting(ICCV 2019)
Stars: ✭ 202 (+188.57%)
Mutual labels:  jupyter-notebook, attention-mechanism
Abstractive Summarization
Implementation of abstractive summarization using LSTM in the encoder-decoder architecture with local attention.
Stars: ✭ 128 (+82.86%)
Mutual labels:  jupyter-notebook, attention-mechanism
Deeplearning.ai Natural Language Processing Specialization
This repository contains my full work and notes on Coursera's NLP Specialization (Natural Language Processing) taught by the instructor Younes Bensouda Mourri and Łukasz Kaiser offered by deeplearning.ai
Stars: ✭ 473 (+575.71%)
Mutual labels:  jupyter-notebook, attention-mechanism
Pytorch Question Answering
Important paper implementations for Question Answering using PyTorch
Stars: ✭ 154 (+120%)
Mutual labels:  jupyter-notebook, attention-mechanism
Da Rnn
📃 **Unofficial** PyTorch Implementation of DA-RNN (arXiv:1704.02971)
Stars: ✭ 256 (+265.71%)
Mutual labels:  jupyter-notebook, attention-mechanism
Triplet Attention
Official PyTorch Implementation for "Rotate to Attend: Convolutional Triplet Attention Module." [WACV 2021]
Stars: ✭ 222 (+217.14%)
Mutual labels:  jupyter-notebook, attention-mechanism
Pytorch Original Transformer
My implementation of the original transformer model (Vaswani et al.). I've additionally included the playground.py file for visualizing otherwise seemingly hard concepts. Currently included IWSLT pretrained models.
Stars: ✭ 411 (+487.14%)
Mutual labels:  jupyter-notebook, attention-mechanism
Action Recognition Visual Attention
Action recognition using soft attention based deep recurrent neural networks
Stars: ✭ 350 (+400%)
Mutual labels:  jupyter-notebook, attention-mechanism
Yolov3 Point
从零开始学习YOLOv3教程解读代码+注意力模块(SE,SPP,RFB etc)
Stars: ✭ 119 (+70%)
Mutual labels:  jupyter-notebook, attention-mechanism
Show Attend And Tell
TensorFlow Implementation of "Show, Attend and Tell"
Stars: ✭ 869 (+1141.43%)
Mutual labels:  jupyter-notebook, attention-mechanism
Linear Attention Recurrent Neural Network
A recurrent attention module consisting of an LSTM cell which can query its own past cell states by the means of windowed multi-head attention. The formulas are derived from the BN-LSTM and the Transformer Network. The LARNN cell with attention can be easily used inside a loop on the cell state, just like any other RNN. (LARNN)
Stars: ✭ 119 (+70%)
Mutual labels:  jupyter-notebook, attention-mechanism
Poetry Seq2seq
Chinese Poetry Generation
Stars: ✭ 159 (+127.14%)
Mutual labels:  jupyter-notebook, attention-mechanism
Adaptiveattention
Implementation of "Knowing When to Look: Adaptive Attention via A Visual Sentinel for Image Captioning"
Stars: ✭ 303 (+332.86%)
Mutual labels:  jupyter-notebook, attention-mechanism
Pytorch Gat
My implementation of the original GAT paper (Veličković et al.). I've additionally included the playground.py file for visualizing the Cora dataset, GAT embeddings, an attention mechanism, and entropy histograms. I've supported both Cora (transductive) and PPI (inductive) examples!
Stars: ✭ 908 (+1197.14%)
Mutual labels:  jupyter-notebook, attention-mechanism
Attentional Interfaces
🔍 Attentional interfaces in TensorFlow.
Stars: ✭ 58 (-17.14%)
Mutual labels:  jupyter-notebook, attention-mechanism
Dsb17 Walkthrough
An end-to-end walkthrough of the winning submission by grt123 for the Kaggle Data Science Bowl 2017
Stars: ✭ 69 (-1.43%)
Mutual labels:  jupyter-notebook
Nyumath2048
NYU Math-GA 2048: Scientific Computing in Finance
Stars: ✭ 69 (-1.43%)
Mutual labels:  jupyter-notebook
Cnn Interpretability
🏥 Visualizing Convolutional Networks for MRI-based Diagnosis of Alzheimer’s Disease
Stars: ✭ 68 (-2.86%)
Mutual labels:  jupyter-notebook

repository_overview

Group-Level Emotion Recognition

This repository contains the code of our model submitted for the ICMI 2018 EmotiW Group-Level Emotion Recognition Challenge. The model was ranked 4th in the challenge.

Short Paper of our challenge submission can be found here. If you find our research work helpful, please consider citing:

@inproceedings{Gupta:2018:AMG:3242969.3264985,
 author = {Gupta, Aarush and Agrawal, Dakshit and Chauhan, Hardik and Dolz, Jose and Pedersoli, Marco},
 title = {An Attention Model for Group-Level Emotion Recognition},
 booktitle = {Proceedings of the 2018 on International Conference on Multimodal Interaction},
 series = {ICMI `18},
 year = {2018},
 isbn = {978-1-4503-5692-3},
 location = {Boulder, CO, USA},
 pages = {611--615},
 numpages = {5},
 url = {http://doi.acm.org/10.1145/3242969.3264985},
 doi = {10.1145/3242969.3264985},
 acmid = {3264985},
 publisher = {ACM},
 address = {New York, NY, USA},
 keywords = {attention mechanisms, convolutional neural networks, deep learning, group-level emotion recognition},
} 

Contents

  1. Summary of the Model
    1. Corresponding Code for Models explained in Short Paper
  2. Setup Instructions and Dependencies
  3. Repository Overview
  4. Dataset Folder Overview
  5. Credits
  6. Guidelines for Contributors
    1. Reporting Bugs and Opening Issues
    2. Pull Requests
  7. License

1. Summary of the Model

We propose an end-to-end model for jointly learning the scene and facial features of an image for group-level emotion recognition. An overview of the approach is presented in the following figure.

model_overview

Our model is composed of two branches. The first branch is a global-level CNN that detects emotions on the basis of the image as a whole. The second is a local-level CNN that detects emotions on the basis of the faces present in the image. The content of each face is merged into a single representation by an attention mechanism. This single representation of the facial features is then concatenated with the image feature vector from the Global-Level CNN to build an end-to-end trainable model.

There are four different types of attention mechanisms that we use:

  1. Average Features
  2. Attention A: Global Image Feature Vector
  3. Attention B: Intermediate Feature Vector
  4. Attention C: Feature Score

The following figure gives an overview of the different attention mechanisms stated above.

attention_mechanism_overview

More details of the model and our approach towards the challenge can be found in our short paper.

1.1. Corresponding Code for Models explained in Short Paper

S. No. Model in Paper Code File in Repository
1 Global_Simple DenseNet161_emotiW
2 Global_EmotiC Densenet_Emotiw_PretrainEmotiC_lr001
3 Local AlignedModel_EmotiW_lr01_Softmax
4 Local_FineTune AlignedModelTrainerSoftmax_AlignedModel_EmotiW_lr01_Softmax
5 Local_FineTune_LSoftmax AlignedModelTrainerLSoftmax_AlignedModel_EmotiW_lr001
6 Average PretrainedDenseNetAvgFaceFeatures_FineTune_2208_3_NoSoftmax
7 Attention_A FaceAttention_AlignedModel_FullTrain_lr001_dropout_BN_SoftmaxLr01
8 Attention_B FaceAttention_AlignedModel_FullTrain_3para_lr001_dropout_BN_SoftmaxLr01
9 Attention_B_EmotiC FaceAttention_AlignedModel_FullTrain_3para_lr001_dropout_BN_SoftmaxLr01_EmotiC
10 Attention_C FaceAttention_AlignedModel_FullTrain_4para_lr01_dropout_BN_SoftmaxLr01
11 Attention_C_EmotiC FaceAttention_AlignedModel_FullTrain_4para_lr001_dropout_BN_SoftmaxLr01_EmotiC

For our best performing model, we use an ensemble of the 14 models defined in the repository.

2. Setup Instructions and Dependencies

You may setup the repository on your local machine by either downloading it or running the following line on cmd prompt.

git clone https://github.com/vlgiitr/Group-Level-Emotion-Recognition.git

Due to the large sizes of Dataset and TrainedModels, they have been stored on Google Drive. You may go to the Google Drive links given in the respective folders to download them.

The following dependencies are required by the repository:

  • PyTorch v0.4
  • TorchVision v0.2.1
  • NumPy
  • SciPy
  • Scikit-Learn
  • Matplotlib
  • PIL
  • Pickle

3. Repository Overview

The repository has the following directories and files:

  1. Dataset: Contains various datasets used in the model.

  2. Ensemble_Models: This contains code for the following:

    • saving outputs of the models.
    • evaluation of ensemble models using the saved outputs. Two kinds of ensembles are present:
      • Weights of models in ensemble determined by handpicking.
      • Weights of models in ensemble selected by SVM.
  3. MTCNN: This contains iPython Notebooks for extracting individual face features and images using the MTCNN face detection model.

  4. ModelOutputs: This contains .npz files containing the outputs of all the models.

  5. Models_FullTrained: This contains the code for models trained on both the train and VAL subset of emotiw dataset.

  6. Models_TrainDataset: This contains the code for models trained only on the train subset of emotiw dataset.

  7. TrainedModels: This contains pretrained checkpoints of the models used.

  8. AlignedFaces_Extractor_Train.ipynb and AlignedFaces_Extractor_Test.ipynb contains code to apply similarity transform to faces extracted from images using MTCNN model.

  9. Calculator_NumberOfFaces.ipynb contains code to find the number of faces covering a certain percentage of emotiw dataset.

  10. GlobalCNN_DenseNet161_EmotiC_lr001.py is code for the Global DenseNet-161 model trained on the EmotiC dataset.

4. Dataset Folder Overview

The Dataset folder contains the following datasets:

  1. AlignedCroppedImages: This contains .jpg image files of aligned faces corresponding to each image in the emotiw dataset.

    • It is generated from CroppedFaces dataset using AlignedFaces_Extractor_Train.ipynb and AlignedFaces_Extractor_Test.ipynb.
  2. CroppedFaces: This contains .npz files for each image corresponding to the emotiw dataset.

    • It is generated from emotiw and FaceCoordinates dataset using Face_Cropper_TestDataset.ipynb and Face_Cropper_TrainValDataset.ipynb.

    • Each .npz file contains the following:

      • a: This contains a list of the faces in the image in rgb array form
      • b: This contains landmark coordinates for the corresponding faces.
  3. emotic: This contains the EmotiC dataset used for pretraining the models.

    • Images may be downloaded from here.
    • train_annotations.npz and val_annotations.npz contain the following data:
      • image: list of image names in training subset or validation subset (corresponding to file).
      • folder: list of folder names corresponding to each image in image list.
      • valence: list of valence scores corresponding to each image in 'image' list.
  4. emotiw: This is the EmotiW 2018 Group-Level Emotion Recognition Dataset.

  5. FaceCoordinates: This contains .npz files for each image corresponding to the emotiw dataset.

    • It is generated from emotiw dataset using MTCNN/Face_Extractor_BB_Landmarks_Test.ipynb and MTCNN/Face_Extractor_BB_Landmarks_Train.ipynb. These files extract faces using MTCNN model.
    • Each .npz file contains the following:
      • a: This contains a list of bounding boxes coordinates of the faces present in an image.
      • b: This contains landmark coordinates for the corresponding faces.
  6. FaceFeatures: This contains .npz files for each image corresponding to the emotiw dataset.

    • It is generated from emoti dataset using Face_Extractor_Feature_Test.py and Face_Extractor_Feature_Train.ipynb. These files extract feature vector of faces in an image using MTCNN.
    • Each .npz file contains the following:
      • a: This contains a list of 256-dimensional facial features of faces in the corresponding image extracted from the last layer of MTCNN.
  7. Removed_EmotiW: This contains images removed from the emotiw dataset as they were not detected properly by the MTCNN model.

  8. test_list: This contains a list of images from the emotiw dataset to be used as EVAL dataset (as mentioned in paper).

  9. val_list: This contains a list of images from the emotiw dataset to be used as VAL dataset (as mentioned in paper).

5. Credits

  1. The implementation of the MTCNN model has been adapted from this repository.
  2. The implementation of the SphereFace model (used in aligned models) has been adapted from this repository.
  3. We have used the EmotiW 2018 Group-Level Emotion Recognition Challenge dataset (given in Dataset/emotiw), cited here:
@INPROCEEDINGS{7163151, 
author={A. Dhall and J. Joshi and K. Sikka and R. Goecke and N. Sebe}, 
booktitle={2015 11th IEEE International Conference and Workshops on Automatic Face and Gesture Recognition (FG)}, 
title={The more the merrier: Analysing the affect of a group of people in images}, 
year={2015}, 
volume={1}, 
number={}, 
pages={1-8}, 
keywords={emotion recognition;learning (artificial intelligence);social networking (online);automatic affect analysis;emotion labelled database;mood display;multiple kernel learning based hybrid affect inference model;scene context based affect inference model;social media;Computational modeling;Context;Databases;Gold;Kernel;Mood;Videos}, 
doi={10.1109/FG.2015.7163151}, 
ISSN={}, 
month={May},}

6. Guidelines for Contributors

6.1. Reporting Bugs and Opening Issues

If you'd like to report a bug or open an issue then please:

Check if there is an existing issue. If there is then please add any more information that you have, or give it a 👍.

When submitting an issue please describe the issue as clearly as possible, including how to reproduce the bug. If you can include a screenshot of the issues, that would be helpful.

6.2. Pull Requests

Please first discuss the change you wish to make via an issue.

We don't have a set format for Pull Requests, but expect you to list changes, bugs generated and other relevant things in the PR message.

7. License

This repository is licensed under MIT license.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].