当前位置: 首页 > wzjs >正文

中山火炬开发区建设局网站中国十大软件上市公司排名

中山火炬开发区建设局网站,中国十大软件上市公司排名,wordpress 图片丢失,爱做网站软件VGG16深度学习人脸识别检测系统 文章目录 **1. 数据准备****1.1 数据加载器** **2. 模型定义****3. 训练与评估****3.1 训练代码** **4. 可视化 UI 界面**1. 数据加载 (data_loader.py)2. 模型定义 (model.py)3. 训练代码 (train.py)4. 可视化 UI 界面 (ui.py)目录结构 预达到…

VGG16深度学习人脸识别检测系统

文章目录

      • **1. 数据准备**
        • **1.1 数据加载器**
      • **2. 模型定义**
      • **3. 训练与评估**
        • **3.1 训练代码**
      • **4. 可视化 UI 界面**
      • 1. 数据加载 (`data_loader.py`)
      • 2. 模型定义 (`model.py`)
      • 3. 训练代码 (`train.py`)
      • 4. 可视化 UI 界面 (`ui.py`)
      • 目录结构

预达到预期:
基于Pytorch的VGG16学习实现
支持GPU加速训练
可视化UI界面
在这里插入图片描述

基于 PyTorch 的 VGG16 深度学习人脸识别检测系统的实现,支持 GPU 加速训练和可视化 UI 界面。我们将分步骤完成数据准备、模型定义、训练与评估以及 UI 界面的构建。


1. 数据准备

假设你有一个包含人脸图像的数据集,目录结构如下:

dataset/
├── train/
│   ├── person1/
│   │   ├── img1.jpg
│   │   └── ...
│   ├── person2/
│   │   ├── img1.jpg
│   │   └── ...
│   └── ...
└── val/├── person1/│   ├── img1.jpg│   └── ...├── person2/│   ├── img1.jpg│   └── ...└── ...
1.1 数据加载器

使用 torchvision.datasets.ImageFoldertorch.utils.data.DataLoader 加载数据。

import torch
from torchvision import datasets, transforms
from torch.utils.data import DataLoader# 数据预处理
transform = transforms.Compose([transforms.Resize((224, 224)),  # VGG16 输入大小为 224x224transforms.ToTensor(),transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])  # ImageNet 标准化
])# 加载数据集
train_dataset = datasets.ImageFolder(root="dataset/train", transform=transform)
val_dataset = datasets.ImageFolder(root="dataset/val", transform=transform)train_loader = DataLoader(train_dataset, batch_size=32, shuffle=True)
val_loader = DataLoader(val_dataset, batch_size=32, shuffle=False)

2. 模型定义

加载预训练的 VGG16 模型,并修改最后的全连接层以适应人脸分类任务。

import torch.nn as nn
from torchvision.models import vgg16class FaceRecognitionModel(nn.Module):def __init__(self, num_classes):super(FaceRecognitionModel, self).__init__()self.vgg16 = vgg16(pretrained=True)  # 加载预训练的 VGG16self.vgg16.classifier[6] = nn.Linear(4096, num_classes)  # 修改最后一层def forward(self, x):return self.vgg16(x)

3. 训练与评估

3.1 训练代码
import torch.optim as optim
from tqdm import tqdmdef train_model(model, train_loader, val_loader, num_epochs=20, lr=0.001, device='cuda'):optimizer = optim.Adam(model.parameters(), lr=lr)criterion = nn.CrossEntropyLoss()model.to(device)for epoch in range(num_epochs):model.train()train_loss = 0.0correct = 0total = 0for images, labels in tqdm(train_loader):images, labels = images.to(device), labels.to(device)optimizer.zero_grad()outputs = model(images)loss = criterion(outputs, labels)loss.backward()optimizer.step()train_loss += loss.item()_, predicted = torch.max(outputs, 1)total += labels.size(0)correct += (predicted == labels).sum().item()print(f"Epoch [{epoch+1}/{num_epochs}], Loss: {train_loss/len(train_loader):.4f}, Accuracy: {correct/total:.4f}")# 验证模型evaluate_model(model, val_loader, device)def evaluate_model(model, val_loader, device):model.eval()correct = 0total = 0with torch.no_grad():for images, labels in val_loader:images, labels = images.to(device), labels.to(device)outputs = model(images)_, predicted = torch.max(outputs, 1)total += labels.size(0)correct += (predicted == labels).sum().item()print(f"Validation Accuracy: {correct/total:.4f}")

4. 可视化 UI 界面

使用 PyQt5 构建一个简单的 GUI 应用程序,用于加载图片并进行人脸识别。

from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QLabel, QVBoxLayout, QWidget, QFileDialog
from PyQt5.QtGui import QImage, QPixmap
import cv2
import torchclass App(QMainWindow):def __init__(self, model, class_names):super().__init__()self.setWindowTitle("VGG16 人脸识别系统")self.setGeometry(100, 100, 800, 600)self.model = modelself.class_names = class_names# UI 元素self.label_image = QLabel(self)self.label_image.setGeometry(50, 50, 700, 400)self.btn_load = QPushButton("加载图片", self)self.btn_load.setGeometry(50, 500, 150, 40)self.btn_load.clicked.connect(self.load_image)self.label_result = QLabel("预测结果:", self)self.label_result.setGeometry(250, 500, 500, 40)def load_image(self):file_path, _ = QFileDialog.getOpenFileName(self, "选择图片", "", "Images (*.jpg *.png)")if file_path:image = cv2.imread(file_path)image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)# 显示原始图像height, width, channel = image.shapebytes_per_line = 3 * widthq_img = QImage(image.data, width, height, bytes_per_line, QImage.Format_RGB888)self.label_image.setPixmap(QPixmap.fromImage(q_img))# 预测result = self.predict_image(file_path)self.label_result.setText(f"预测结果:{result}")def predict_image(self, image_path):from PIL import Imagefrom torchvision import transforms# 图像预处理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])])image = Image.open(image_path).convert("RGB")image = transform(image).unsqueeze(0).to('cuda')# 推理self.model.eval()with torch.no_grad():output = self.model(image)_, predicted = torch.max(output, 1)class_idx = predicted.item()return self.class_names[class_idx]if __name__ == "__main__":device = 'cuda' if torch.cuda.is_available() else 'cpu'# 加载模型model = FaceRecognitionModel(num_classes=len(train_dataset.classes))model.load_state_dict(torch.load("face_recognition_model.pth"))model.to(device)model.eval()app = QApplication([])window = App(model, train_dataset.classes)window.show()app.exec_()

为了实现一个基于 VGG16 的人脸识别系统,并且支持 GPU 加速训练和可视化 UI 界面,我们可以分步骤进行。以下是详细的代码实现:

1. 数据加载 (data_loader.py)

import torch
from torchvision import datasets, transforms# 数据预处理
transform = transforms.Compose([transforms.Resize((224, 224)),  # VGG16 输入大小为 224x224transforms.ToTensor(),transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])  # ImageNet 标准化
])def get_data_loaders(data_dir, batch_size=32):train_dataset = datasets.ImageFolder(root=f"{data_dir}/train", transform=transform)val_dataset = datasets.ImageFolder(root=f"{data_dir}/val", transform=transform)train_loader = torch.utils.data.DataLoader(train_dataset, batch_size=batch_size, shuffle=True)val_loader = torch.utils.data.DataLoader(val_dataset, batch_size=batch_size, shuffle=False)return train_loader, val_loader

2. 模型定义 (model.py)

import torch.nn as nn
from torchvision.models import vgg16class FaceRecognitionModel(nn.Module):def __init__(self, num_classes):super(FaceRecognitionModel, self).__init__()self.vgg16 = vgg16(pretrained=True)  # 加载预训练的 VGG16self.vgg16.classifier[6] = nn.Linear(4096, num_classes)  # 修改最后一层def forward(self, x):return self.vgg16(x)

3. 训练代码 (train.py)

import torch
import torch.optim as optim
from model import FaceRecognitionModel
from data_loader import get_data_loadersdef train_model(model, train_loader, val_loader, num_epochs=20, lr=0.001, device='cuda'):optimizer = optim.Adam(model.parameters(), lr=lr)criterion = nn.CrossEntropyLoss()model.to(device)for epoch in range(num_epochs):model.train()train_loss = 0.0correct = 0total = 0for images, labels in tqdm(train_loader):images, labels = images.to(device), labels.to(device)optimizer.zero_grad()outputs = model(images)loss = criterion(outputs, labels)loss.backward()optimizer.step()train_loss += loss.item()_, predicted = torch.max(outputs, 1)total += labels.size(0)correct += (predicted == labels).sum().item()print(f"Epoch [{epoch+1}/{num_epochs}], Loss: {train_loss/len(train_loader):.4f}, Accuracy: {correct/total:.4f}")# 验证模型evaluate_model(model, val_loader, device)def evaluate_model(model, val_loader, device):model.eval()correct = 0total = 0with torch.no_grad():for images, labels in val_loader:images, labels = images.to(device), labels.to(device)outputs = model(images)_, predicted = torch.max(outputs, 1)total += labels.size(0)correct += (predicted == labels).sum().item()print(f"Validation Accuracy: {correct/total:.4f}")if __name__ == "__main__":device = 'cuda' if torch.cuda.is_available() else 'cpu'num_classes = len(train_loader.dataset.classes)model = FaceRecognitionModel(num_classes)train_loader, val_loader = get_data_loaders("path_to_your_data")train_model(model, train_loader, val_loader, num_epochs=20, lr=0.001, device=device)torch.save(model.state_dict(), "best_model.pth")

4. 可视化 UI 界面 (ui.py)

from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QLabel, QVBoxLayout, QWidget, QFileDialog
from PyQt5.QtGui import QImage, QPixmap
import cv2
import torch
from model import FaceRecognitionModelclass App(QMainWindow):def __init__(self, model, class_names):super().__init__()self.setWindowTitle("VGG16 人脸识别系统")self.setGeometry(100, 100, 800, 600)self.model = modelself.class_names = class_names# UI 元素self.label_image = QLabel(self)self.label_image.setGeometry(50, 50, 700, 400)self.btn_load = QPushButton("加载图片", self)self.btn_load.setGeometry(50, 500, 150, 40)self.btn_load.clicked.connect(self.load_image)self.label_result = QLabel("预测结果:", self)self.label_result.setGeometry(250, 500, 500, 40)def load_image(self):file_path, _ = QFileDialog.getOpenFileName(self, "选择图片", "", "Images (*.jpg *.png)")if file_path:image = cv2.imread(file_path)image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)# 显示原始图像height, width, channel = image.shapebytes_per_line = 3 * widthq_img = QImage(image.data, width, height, bytes_per_line, QImage.Format_RGB888)self.label_image.setPixmap(QPixmap.fromImage(q_img))# 预测result = self.predict_image(file_path)self.label_result.setText(f"预测结果:{result}")def predict_image(self, image_path):from PIL import Imagefrom torchvision import transforms# 图像预处理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])])image = Image.open(image_path).convert("RGB")image = transform(image).unsqueeze(0).to('cuda')# 推理self.model.eval()with torch.no_grad():output = self.model(image)_, predicted = torch.max(output, 1)class_idx = predicted.item()return self.class_names[class_idx]if __name__ == "__main__":device = 'cuda' if torch.cuda.is_available() else 'cpu'# 加载模型model = FaceRecognitionModel(num_classes=len(train_loader.dataset.classes))model.load_state_dict(torch.load("best_model.pth"))model.to(device)model.eval()app = QApplication([])window = App(model, train_loader.dataset.classes)window.show()app.exec_()

目录结构

基于VGG16的人脸识别/
├── data/
│   ├── train/
│   └── val/
├── hub/
│   ├── best_model.pth
│   ├── c罗.jpg
│   ├── c罗_1.jpg
│   ├── data_loader.py
│   ├── model.py
│   ├── train.py
│   ├── ui.py
│   ├── 小罗伯特唐尼.jpg
│   ├── 梅西.jpg
│   └── 梅西_1.jpg
└── 从部署/

文章转载自:

http://hWKTURzM.fgsct.cn
http://PxqgyX2u.fgsct.cn
http://nJfF1k4a.fgsct.cn
http://FtTEKEfK.fgsct.cn
http://PXfoM4Wp.fgsct.cn
http://VwOVPzGi.fgsct.cn
http://EpRMz9zL.fgsct.cn
http://OG8pQwha.fgsct.cn
http://SehQD8kW.fgsct.cn
http://FcN6lSeR.fgsct.cn
http://B1lTV9EP.fgsct.cn
http://NOw1qqsA.fgsct.cn
http://LhjwkZaG.fgsct.cn
http://F1ouLAuV.fgsct.cn
http://OrBPXAex.fgsct.cn
http://v6HLDnyL.fgsct.cn
http://ulu1OPyF.fgsct.cn
http://KjU4vCuk.fgsct.cn
http://a78o8iff.fgsct.cn
http://HLyhBVts.fgsct.cn
http://JcFiCabl.fgsct.cn
http://LqBMqJcE.fgsct.cn
http://U5DPOFtr.fgsct.cn
http://RZNGnfM9.fgsct.cn
http://GRYSemVF.fgsct.cn
http://wdgK3l0z.fgsct.cn
http://LgGSlLzp.fgsct.cn
http://gHAKG1De.fgsct.cn
http://RVRKJLmk.fgsct.cn
http://ufqn629T.fgsct.cn
http://www.dtcms.com/wzjs/756324.html

相关文章:

  • 网站推广是网站建设完成之后的长期工作。wordpress同步到微信公众号
  • 中国城乡建设部人力网站首页安装百度一下
  • 宁波网站搭建公司网络营销案例可口可乐
  • 湖南智能网站建设多少钱建站宝盒 源码
  • 只使用html做简单网站安全工程师
  • 无锡cms建站wordpress 菜单结构
  • wordpress小程序扫码登录网站优化公司哪家效果好
  • 网站开发社区工程造价价格信息网
  • 昆山建筑行业网站广州网站制作选哪家
  • 做苗木选择哪个网站青岛公路建设集团有限公司网站
  • 电子商务网站设计与...网站建设方向课程
  • 福建建设局网站宁夏电力建设工程公司外部网站
  • 注册网站是哪个部门南京手机网站开发
  • 网站开发php jsp三亚市建设局官方网站
  • 陕西省建设监理协会网站北京建站者公司
  • 肇庆 网站建设广告投放平台排名
  • wordpress网站域名地址郑州地区网站建设公司
  • 安居客房产官方网站wordpress添加模块
  • 企业网站营销案例房产中介 网站模板
  • 合肥解封最新消息网站排名优化工具
  • 开发公司网站设计橙象品牌设计
  • 网站在哪里设置域名设计成功一个电子商务网站
  • 做房产网站哪个好常见的简单的app开发
  • 餐饮招商加盟网站建设费用沧州南皮网站建设公司
  • 食品饮料网站源码手动升级wordpress
  • 网站接入服务单位个人备案网站可以做支付吗
  • 怎么在百度上做单位网站thinkphp网站源码下载
  • 怎么做网站内容添加洛阳霞光做网站
  • 外网代理服务器网站上海徽与章网站建设宗旨
  • 做网站如何分页网络营销可以做什么工作