#############################################################
############ 编写人:常泽钰
############ 时间 : 2022/9/23
############ 功能 :实现明星的图片分类
############ 数据格式:
'''
--dataset
--train
--0
--**.jpg
--.......
--1
--2
--3
--val
'''
#############################################################
from tqdm import tqdm
batch_size = 32 #设置批次大小
learning_rate = 0.001 #设置学习率
epoches = 8 #设置训练的次数
num_of_classes=12 #要分的类别个数
import torch
import os
from torch.utils import data
import torchvision.datasets as dsets
import torchvision.transforms as transforms
trainpath = './dataset/train/'
valpath = './dataset/val/'
#数据增强的方式
traintransform = transforms .Compose([
transforms .RandomRotation (20), #随机旋转角度
transforms .ColorJitter(brightness=0.1), #颜色亮度
transforms .Resize([224, 224]), #设置成224×224大小的张量
transforms .ToTensor(), # 将图⽚数据变为tensor格式
# transforms.Normalize(mean=[0.485, 0.456, 0.406],
# std=[0.229, 0.224, 0.225]),
])
valtransform = transforms .Compose([
transforms .Resize([224, 224]),
transforms .ToTensor(), # 将图⽚数据变为tensor格式
])
trainData = dsets.ImageFolder (trainpath, transform =traintransform ) # 读取训练集,标签就是train⽬录下的⽂件夹的名字,图像保存在格⼦标签下的⽂件夹⾥
valData = dsets.ImageFolder (valpath, transform =valtransform ) #读取演正剧
trainLoader = torch.utils.data.DataLoader(dataset=trainData, batch_size=batch_size, shuffle=True) #将数据集分批次 并打乱顺序
valLoader = torch.utils.data.DataLoader(dataset=valData, batch_size=batch_size, shuffle=False) #将测试集分批次并打乱顺序
# test_sum = sum([len(x) for _, _, x in os.walk(os.path.dirname(trainpath))]) #计算 训练集和测试集的图片总数
# train_sum = sum([len(x) for _, _, x in os.walk(os.path.dirname(valpath))])
train_sum=len(trainData)
test_sum=len(valData)
import numpy as np
import torchvision.models as models
# model = models.resnet34(pretrained=True) #pretrained表⽰是否加载已经与训练好的参数
# model.fc = torch.nn.Linear(512, num_of_classes) #将最后的fc层的输出改为标签数量(如3),512取决于原始⽹络fc层的输⼊通道
model=torch.load("./resnet34_star.pt")
model = model.cuda() # 如果有GPU,⽽且确认使⽤则保留;如果没有GPU,请删除
#from MyLoss import Loss
#criterion=Loss("mean")
criterion = torch.nn.CrossEntropyLoss() # 定义损失函数
#optimizer = torch.optim.Adam(model.parameters (), lr=learning_rate )
optimizer = torch.optim.SGD(model.parameters(), lr=learning_rate) # 定义优化器
from torch.autograd import Variable
#定义训练的函数
def train(model, optimizer, criterion):
model.train()
total_loss = 0
train_corrects = 0
for i, (image, label) in enumerate (tqdm(trainLoader)):
image = Variable(image.cuda()) # 同理
label = Variable(label.cuda()) # 同理
#print(i,image,label)
optimizer.zero_grad ()
target = model(image)
loss = criterion(target, label)
loss.backward()
optimizer.step()
total_loss += loss.item()
max_value , max_index = torch.max(target, 1)
pred_label = max_index.cpu().numpy()
true_label = label.cpu().numpy()
train_corrects += np.sum(pred_label == true_label)
return total_loss / float(len(trainLoader)), train_corrects / train_sum
testLoader=valLoader
#定义测试的函数
def evaluate(model, criterion):
model.eval()
corrects = eval_loss = 0
with torch.no_grad():
for image, label in tqdm(testLoader):
image = Variable(image.cuda()) # 如果不使⽤GPU,删除.cuda()
label = Variable(label.cuda()) # 同理
pred = model(image)
print(pred.size())
print(label.size())
loss = criterion(pred, label)
eval_loss += loss.item()
max_value, max_index = torch.max(pred, 1)
pred_label = max_index.cpu().numpy()
true_label = label.cpu().numpy()
corrects += np.sum(pred_label == true_label)
return eval_loss / float(len(testLoader)), corrects, corrects / test_sum
#torch.save(model,"./resnet1.pt")
model.eval()
corrects = eval_loss = 0
from sklearn import metrics
pred_labels=np.array([])
true_labels=np.array([])
with torch.no_grad():
for image, label in tqdm(testLoader):
image = Variable(image.cuda()) # 如果不使⽤GPU,删除.cuda()
label = Variable(label.cuda()) # 同理
pred = model(image)
print(pred.size())
print(label.size())
loss = criterion(pred, label)
eval_loss += loss.item()
max_value, max_index = torch.max(pred, 1)
pred_label = max_index.cpu().numpy()
true_label = label.cpu().numpy()
corrects += np.sum(pred_label == true_label)
#return eval_loss / float(len(testLoader)), corrects, corrects / test_sum
pred_labels=np.append(pred_labels,pred_label)
true_labels = np.append(true_labels, true_label)
cm=metrics.confusion_matrix(pred_labels,true_labels,labels=[0,1,2,3,4])
print(cm)
import seaborn as sns
import matplotlib.pyplot as plt
sns.heatmap(cm,annot=True,fmt='.2e',cmap='GnBu')
plt.show()
#
# for i in range(epoches):
# print("第{}个epoch".format(i+1))
# #train_loss,train_acc=train(model,optimizer,criterion)
# #print("train_loss: {} train_acc: {}\n".format(train_loss,train_acc))
# test_loss,test_correct,test_acc=evaluate(model,criterion)
# print("test_loss: {} test_correct:{} test_acc:{}".format(test_loss,test_correct,test_acc))
# torch.save(model,"./resnet34_star.pt")#保存模型,第二个参数是保存的路径
没有合适的资源?快使用搜索试试~ 我知道了~
深度学习 明星图像识别 可以套用人脸识别
共2000个文件
jpg:1147个
png:833个
py:13个
需积分: 0 5 下载量 66 浏览量
2023-08-12
09:22:25
上传
评论 2
收藏 541.52MB ZIP 举报
温馨提示
本文对多个明星进行分类,主要是明星的人脸图片 网络构架:resnet34 深度学习框架:torch 种类:15种类 其中包含QT界面,可以实现选择图片上传和视频识别,并实时显示图片的预测结果和预测的置信度。
资源推荐
资源详情
资源评论
收起资源包目录
深度学习 明星图像识别 可以套用人脸识别 (2000个子文件)
49_0.jpg 557KB
f2d895a2-ea49-11e9-8f54-b025aa21b04b.jpg 554KB
f2d895a2-ea49-11e9-8f54-b025aa21b04b.jpg 554KB
61_0.jpg 510KB
e97e2ce2-ea49-11e9-bdf8-b025aa21b04b.jpg 378KB
e97e2ce2-ea49-11e9-bdf8-b025aa21b04b.jpg 378KB
88_0.jpg 348KB
11_0.jpg 289KB
11_0.jpg 289KB
18_0.jpg 254KB
d43f5522-ea49-11e9-9ba5-b025aa21b04b.jpg 227KB
d43f5522-ea49-11e9-9ba5-b025aa21b04b.jpg 227KB
16_0.jpg 213KB
16_0.jpg 213KB
dace1030-ea48-11e9-9216-b025aa21b04b.jpg 192KB
dace1030-ea48-11e9-9216-b025aa21b04b.jpg 192KB
86_0.jpg 189KB
69_0.jpg 185KB
41_0.jpg 157KB
15_0.jpg 131KB
15_0.jpg 131KB
72_0.jpg 129KB
dcbd5d12-ea48-11e9-b766-b025aa21b04b.jpg 125KB
dcbd5d12-ea48-11e9-b766-b025aa21b04b.jpg 125KB
de714ea2-ea48-11e9-ac65-b025aa21b04b.jpg 119KB
de714ea2-ea48-11e9-ac65-b025aa21b04b.jpg 119KB
25_0.jpg 116KB
25_0.jpg 116KB
41_0.jpg 115KB
69_0.jpg 111KB
3_0.jpg 107KB
3_0.jpg 107KB
13_0.jpg 103KB
13_0.jpg 103KB
62_0.jpg 102KB
19_0.jpg 98KB
ddfd5722-ea48-11e9-9a87-b025aa21b04b.jpg 98KB
ddfd5722-ea48-11e9-9a87-b025aa21b04b.jpg 98KB
ff0a1330-ea49-11e9-832e-b025aa21b04b.jpg 97KB
ff0a1330-ea49-11e9-832e-b025aa21b04b.jpg 97KB
1c05c5c0-ea49-11e9-aa11-b025aa21b04b.jpg 96KB
1c05c5c0-ea49-11e9-aa11-b025aa21b04b.jpg 96KB
20_0.jpg 94KB
79_0.jpg 93KB
c2fab570-ea49-11e9-84d9-b025aa21b04b.jpg 91KB
c2fab570-ea49-11e9-84d9-b025aa21b04b.jpg 91KB
51_0.jpg 91KB
db528d00-ea49-11e9-a66c-b025aa21b04b.jpg 89KB
db528d00-ea49-11e9-a66c-b025aa21b04b.jpg 89KB
3c6b13b0-ea49-11e9-8ca6-b025aa21b04b.jpg 89KB
3c6b13b0-ea49-11e9-8ca6-b025aa21b04b.jpg 89KB
87_0.jpg 88KB
68_0.jpg 86KB
54_0.jpg 86KB
38_0.jpg 84KB
34_0.jpg 84KB
2_0.jpg 82KB
16_0.jpg 82KB
16_0.jpg 82KB
da814fc0-ea48-11e9-88d6-b025aa21b04b.jpg 81KB
da814fc0-ea48-11e9-88d6-b025aa21b04b.jpg 81KB
da2aa440-ea48-11e9-b650-b025aa21b04b.jpg 80KB
da2aa440-ea48-11e9-b650-b025aa21b04b.jpg 80KB
62_0.jpg 79KB
2c28d362-ea4a-11e9-b866-b025aa21b04b.jpg 79KB
2c28d362-ea4a-11e9-b866-b025aa21b04b.jpg 79KB
29_0.jpg 78KB
29_0.jpg 78KB
11_0.jpg 78KB
11_0.jpg 78KB
0abba7d2-ea49-11e9-9626-b025aa21b04b.jpg 77KB
0abba7d2-ea49-11e9-9626-b025aa21b04b.jpg 77KB
57_0.jpg 76KB
4_0.jpg 76KB
4_0.jpg 76KB
39efcff0-ea48-11e9-a43f-b025aa21b04b.jpg 74KB
c0c70c92-ea49-11e9-8262-b025aa21b04b.jpg 74KB
c0c70c92-ea49-11e9-8262-b025aa21b04b.jpg 74KB
90_0.jpg 70KB
d7170630-ea49-11e9-94a1-b025aa21b04b.jpg 70KB
d7170630-ea49-11e9-94a1-b025aa21b04b.jpg 70KB
0f315170-ea49-11e9-a3a2-b025aa21b04b.jpg 70KB
0f315170-ea49-11e9-a3a2-b025aa21b04b.jpg 70KB
77_0.jpg 69KB
32_0.jpg 69KB
77_0.jpg 68KB
58_0.jpg 68KB
47_0.jpg 68KB
40948e92-ea48-11e9-bc1a-b025aa21b04b.jpg 68KB
18_0.jpg 67KB
18_0.jpg 67KB
44_0.jpg 67KB
24_0.jpg 66KB
24_0.jpg 66KB
76_0.jpg 65KB
12_0.jpg 65KB
74_0.jpg 64KB
31_0.jpg 63KB
48_0.jpg 63KB
53_0.jpg 63KB
共 2000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 20
资源评论
TechMasterPlus
- 粉丝: 2801
- 资源: 23
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C#通用固定资产管理系统源码带二维码数据库 SQL2008源码类型 WebForm
- Matlab 建立了并具有数字调压功能的空间矢量脉宽调制SVPWM逆变器仿真
- 毕业设计-毕业设计&课设-推荐系统项目:含协同过滤、矩阵分解等算法及相关代码
- 电力系统继电保护整定及其应用-发电机组与变压器保护
- C++极速内存池、跨平台高效C++内存池
- C#WMS仓库管理系统源码 WMS仓储管理系统源码数据库 SQL2008源码类型 WinForm
- 基于51单片机电子称称重压力检测阈值报警系统设计.zip
- C#ASP.NET工程项目管理源码带文档数据库 SQL2008源码类型 WebForm
- 20210203047_卢诗贝_大数据1班.rar
- GL《装成偏执狂攻略清冷师尊翻车后》作者:酸辣离蒿.txt
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功