6/22/24, 10:26 PM Copy of Facial Expression Recognition with PyTorch.
ipynb - Colab
keyboard_arrow_down Dataset available at kaggle
[Link]
keyboard_arrow_down Install libraries, packages and dataset
[Link] 1/6
6/22/24, 10:26 PM Copy of Facial Expression Recognition with [Link] - Colab
!git clone [Link]
!pip install -U git+[Link]
!pip install timm
!pip install --upgrade opencv-contrib-python
Cloning into 'Facial-Expression-Dataset'...
remote: Enumerating objects: 34052, done.
remote: Total 34052 (delta 0), reused 0 (delta 0), pack-reused 34052
Receiving objects: 100% (34052/34052), 52.31 MiB | 41.49 MiB/s, done.
Resolving deltas: 100% (4/4), done.
Updating files: 100% (35887/35887), done.
Collecting git+[Link]
Cloning [Link] to /tmp/pip-req-build
Running command git clone --filter=blob:none --quiet [Link]
Resolved [Link] to commit 904b20b46c7
Installing build dependencies ... done
Getting requirements to build wheel ... done
Preparing metadata ([Link]) ... done
Requirement already satisfied: numpy<2,>=1.24.4 in /usr/local/lib/python3.10/dist-pack
Requirement already satisfied: scipy>=1.10.0 in /usr/local/lib/python3.10/dist-package
Collecting scikit-image>=0.21.0 (from albumentations==1.4.10)
Downloading scikit_image-0.24.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 14.9/14.9 MB 12.0 MB/s eta [Link]
Requirement already satisfied: PyYAML in /usr/local/lib/python3.10/dist-packages (from
Requirement already satisfied: typing-extensions>=4.9.0 in /usr/local/lib/python3.10/d
Collecting scikit-learn>=1.3.2 (from albumentations==1.4.10)
Downloading scikit_learn-1.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_6
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 13.3/13.3 MB 58.1 MB/s eta [Link]
Requirement already satisfied: pydantic>=2.7.0 in /usr/local/lib/python3.10/dist-packa
Collecting albucore>=0.0.11 (from albumentations==1.4.10)
Downloading [Link] (8.4 kB)
Requirement already satisfied: opencv-python-headless>=[Link] in /usr/local/lib/pyth
Requirement already satisfied: tomli>=2.0.1 in /usr/local/lib/python3.10/dist-packages
Requirement already satisfied: annotated-types>=0.4.0 in /usr/local/lib/python3.10/dis
Requirement already satisfied: pydantic-core==2.18.4 in /usr/local/lib/python3.10/dist
Requirement already satisfied: networkx>=2.8 in /usr/local/lib/python3.10/dist-package
Requirement already satisfied: pillow>=9.1 in /usr/local/lib/python3.10/dist-packages
Collecting imageio>=2.33 (from scikit-image>=0.21.0->albumentations==1.4.10)
Downloading [Link] (313 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 313.5/313.5 kB 28.0 MB/s eta [Link]
Requirement already satisfied: tifffile>=2022.8.12 in /usr/local/lib/python3.10/dist-p
Requirement already satisfied: packaging>=21 in /usr/local/lib/python3.10/dist-package
Requirement already satisfied: lazy-loader>=0.4 in /usr/local/lib/python3.10/dist-pack
Requirement already satisfied: joblib>=1.2.0 in /usr/local/lib/python3.10/dist-package
Requirement already satisfied: threadpoolctl>=3.1.0 in /usr/local/lib/python3.10/dist
Building wheels for collected packages: albumentations
Building wheel for albumentations ([Link]) ... done
Created wheel for albumentations: filename=[Link] si
Stored in directory: /tmp/pip-ephem-wheel-cache-i6d222uc/wheels/51/4d/ab/5aafa8b9800
Successfully built albumentations
Installing collected packages: imageio, scikit-learn, scikit-image, albucore, albument
Attempting uninstall: imageio
Found existing installation: imageio 2.31.6
Uninstalling imageio-2.31.6:
Successfully uninstalled imageio-2.31.6
Attempting uninstall: scikit-learn
[Link] 2/6
6/22/24, 10:26 PM Copy of Facial Expression Recognition with [Link] - Colab
Found existing installation: scikit-learn 1.2.2
Uninstalling scikit-learn-1.2.2:
Successfully uninstalled scikit-learn-1.2.2
Attempting uninstall: scikit-image
Found existing installation: scikit-image 0.19.3
Uninstalling scikit-image-0.19.3:
keyboard_arrow_down Imports
import numpy as np
import [Link] as plt
import torch
keyboard_arrow_down Configurations
Start coding or generate with AI.
keyboard_arrow_down Load Dataset
from [Link] import ImageFolder
from torchvision import transforms as T
Start coding or generate with AI.
Start coding or generate with AI.
print(f"Total no. of examples in trainset : {len(trainset)}")
print(f"Total no. of examples in validset : {len(validset)}")
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-5-73aea5aa42e8> in <cell line: 1>()
----> 1 print(f"Total no. of examples in trainset : {len(trainset)}")
2 print(f"Total no. of examples in validset : {len(validset)}")
NameError: name 'trainset' is not defined
print(trainset.class_to_idx)
[Link] 3/6
6/22/24, 10:26 PM Copy of Facial Expression Recognition with [Link] - Colab
Start coding or generate with AI.
keyboard_arrow_down Load Dataset into Batches
from [Link] import DataLoader
Start coding or generate with AI.
print(f"Total no. of batches in trainloader : {len(trainloader)}")
print(f"Total no. of batches in validloader : {len(validloader)}")
print(f"One image batch shape : {[Link]}")
print(f"One label batch shape : {[Link]}")
keyboard_arrow_down Create Model
import timm
from torch import nn
Start coding or generate with AI.
Start coding or generate with AI.
keyboard_arrow_down Create Train and Eval Function
from tqdm import tqdm
def multiclass_accuracy(y_pred,y_true):
top_p,top_class = y_pred.topk(1,dim = 1)
equals = top_class == y_true.view(*top_class.shape)
return [Link]([Link]([Link]))
Start coding or generate with AI.
[Link] 4/6
6/22/24, 10:26 PM Copy of Facial Expression Recognition with [Link] - Colab
Start coding or generate with AI.
keyboard_arrow_down Create Training Loop
Start coding or generate with AI.
Start coding or generate with AI.
keyboard_arrow_down Inference
def view_classify(img, ps):
classes = ['angry', 'disgust', 'fear', 'happy', 'neutral', 'sad', 'surprise']
ps = [Link]().numpy().squeeze()
img = [Link]().transpose(1,2,0)
fig, (ax1, ax2) = [Link](figsize=(5,9), ncols=2)
[Link](img)
[Link]('off')
[Link](classes, ps)
ax2.set_aspect(0.1)
ax2.set_yticks(classes)
ax2.set_yticklabels(classes)
ax2.set_title('Class Probability')
ax2.set_xlim(0, 1.1)
plt.tight_layout()
return None
Start coding or generate with AI.
For updates about upcoming and current guided projects
follow me on...
Twitter : @parth_AI
Linkedin : [Link]/in/pdhameliya
[Link] 5/6
6/22/24, 10:26 PM Copy of Facial Expression Recognition with [Link] - Colab
[Link] 6/6