表情分类模型

news/2024/10/21 4:33:03/

文章目录

  • 前提
  • 模型下载
  • 表情分类:emotion.py
  • 结果

前提

注意,输入的图片是裁剪好的人脸图,如:
在这里插入图片描述
检测人脸与检测参考:YOLOv7-face人脸检测

模型下载

https://download.csdn.net/download/WhiffeYF/89654401
解压后使用 emotion.pth

表情分类:emotion.py

emotion.py
执行:

python emotion.py --weights emotion.pth --source crops/face/
'''
python emotion.py --weights emotion.pth --source crops/face/
'''
import os
import torch
from torchvision import transforms
from PIL import Image
import torch.nn as nn
import torchvision.models as models
import argparseclass EmotionClassifier:def __init__(self, model_path, device='cpu'):self.device = deviceself.class_names = ['angry', 'disgust', 'fear', 'happy', 'neutral', 'sad', 'surprise']self.model = self.load_model(model_path)self.transform = transforms.Compose([transforms.Resize((224, 224)),transforms.ToTensor(),transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),])def load_model(self, model_path):model = models.mobilenet_v2(pretrained=False)model.classifier[1] = nn.Linear(model.last_channel, len(self.class_names))model.load_state_dict(torch.load(model_path, map_location=self.device))model.eval()model.to(self.device)return modeldef predict(self, image_path):image = Image.open(image_path).convert('RGB')image = self.transform(image).unsqueeze(0).to(self.device)with torch.no_grad():outputs = self.model(image)_, predicted = torch.max(outputs, 1)predicted_class = self.class_names[predicted.item()]return predicted_classdef predict_folder(self, folder_path):results = {}for filename in os.listdir(folder_path):if filename.endswith(('.png', '.jpg', '.jpeg')):file_path = os.path.join(folder_path, filename)prediction = self.predict(file_path)results[filename] = predictionreturn resultsdef classify(self, input_path):if os.path.isdir(input_path):return self.predict_folder(input_path)elif os.path.isfile(input_path):return {os.path.basename(input_path): self.predict(input_path)}else:raise ValueError(f"Invalid path: {input_path}")if __name__ == "__main__":parser = argparse.ArgumentParser()parser.add_argument('--weights', type=str, default='emotion.pth')parser.add_argument('--source', type=str, default='crops/face/')opt = parser.parse_args()weights = opt.weightssource = opt.source # 可以是单张图片路径或图片文件夹路径'''model_path = 'emotion.pth'input_path = 'crops/face/'  '''classifier = EmotionClassifier(weights)predictions = classifier.classify(source)for filename, emotion in predictions.items():print(f'{filename}: {emotion}')

结果

在这里插入图片描述


http://www.ppmy.cn/news/1511924.html

相关文章

RCE的另外一些绕过练习

目录 被过滤了flag怎么办 方法 结果 过滤了flag、php、system 方法一 结果 ​编辑 方法二 过滤了很多但是主要的就是过滤了空格 和 注意一下这个就行 方法一 方法二 相对于上面一道题来说多过滤了一个括号 方法一 被过滤了flag怎么办 <?php error_reportin…

【ubuntu24.04】k8s 部署5:配置calico 镜像拉取

kubeadm - 中国大陆版建议:初始化Kubeadm –apiserver-advertise-address 这个地址是本地用于和其他节点通信的IP地址 –pod-network-cidr pod network 地址空间 sudo kubeadm init --image-repository registry.aliyuncs.com/google_containers --apiserver-advertise-add…

计算机网络速成(二)

计算机网络面试&#xff08;二&#xff09;-CSDN博客 OSI七层体系架构 OSI七层模型是什么&#xff1f;每层的功能是什么&#xff1f; OSI七层模型是国际标准化组织&#xff08;ISO&#xff09;制定的一个用于计算机或通信系统间互联的标准体系&#xff0c;它从上到下分别是&am…

MySQL 数据库经验总结

一、数据库操作 1. 创建数据库 CREATE DATABASE database_name;例如&#xff0c;创建一个名为 my_database 的数据库&#xff1a; CREATE DATABASE my_database;2. 选择数据库 USE database_name;要使用刚才创建的 my_database 数据库&#xff1a; USE my_database;3. 删除…

探索网络安全的深度与广度:挑战、策略与未来展望

一、引言 在当今数字化的时代&#xff0c;网络已经成为社会运转的核心基础设施之一。从个人的日常通信、娱乐到企业的业务运营、国家的关键服务&#xff0c;几乎所有领域都依赖于网络。然而&#xff0c;随着网络的普及和应用的深化&#xff0c;网络安全问题也日益凸显&#xf…

JavaEE项目总结(1)

一、在vue项目中安装axios 由于需要使用axios框架进行异步请求&#xff0c;所以需要在vue项目中安装axios框架。在官方下载速度较慢&#xff0c;所以选择更换镜像源&#xff08;我使用的是华为云镜像&#xff09; 在项目终端中输入npm config set registry http://mirrors.…

轻松解决找不到“MSVCP120.dll”的困扰

文章目录 轻松解决找不到“MSVCP120.dll”的困扰了解“MSVCP120.dll”可能导致问题的原因解决方法方法一&#xff1a;重新安装 Microsoft Visual C Redistributable 包&#xff08;亲测有效&#xff09;附官方网站链接两个安装包链接方法二&#xff1a;使用系统文件检查工具&am…

复旦微PS+PL异构多核开发案例分享,基于FMQL20SM国产处理器平台

本文主要介绍复旦微FMQL20S400M的PS PL异构多核开发案例&#xff0c;开发环境如下&#xff1a; Windows开发环境&#xff1a;Windows 7 64bit、Windows 10 64bit PL端开发环境&#xff1a;Procise IAR&#xff1a;IAR Embedded Workbench ARM 8.11.2 为了简化描述&#xf…