基于飞浆resnet50的102分类

目录

1.数据预处理

2.数据导入

3.模型导入

4.批训练

[5. 输出结果](#5. 输出结果)

6.结果参考


1.数据预处理

python 复制代码
T=transforms.Compose([
    transforms.Resize((250,250)),
    transforms.RandomCrop(size=224),
    transforms.RandomHorizontalFlip(0.5),
    transforms.RandomRotation(degrees=15),
    transforms.ColorJitter(brightness=0.2, contrast=0.2, saturation=0.2),
    transforms.ToTensor(),
    transforms.Normalize(mean=[0.46010968,0.4837371,0.49916607],std=[0.25398722,0.25408414,0.25931123])
])

2.数据导入

python 复制代码
datas=[]
labels=[]
train_path='data/data146107/dataset/train.txt'
eval_path='data/data146107/dataset/test.txt'
base='data/data146107/dataset/images/'
contents=[]
with open(train_path,mode='r',encoding='utf-8') as f:
    contents=f.read().split('\n')
for content in contents:
    if content=='':continue
    img=content.split('\t')[0]
    label=content.split('\t')[1]
    data=np.array(T(cv2.imread(base+img)))
    datas.append(data)
    labels.append(int(label))
datas=np.array(datas)
labels=np.array(labels)

3.模型导入

python 复制代码
model=resnet50(pretrained=True,num_classes=102)
criterion=paddle.nn.CrossEntropyLoss()
optimizer=paddle.optimizer.Adam(learning_rate=0.0001,parameters=model.parameters(),weight_decay=0.001)

4.批训练

python 复制代码
epochs=30
batch_size=125
dataset=TensorDataset([datas,labels])
dataloader=DataLoader(dataset,shuffle=True,batch_size=batch_size)
total_loss=[]
for epoch in range(epochs):
    for batch_data,batch_label in dataloader:
        batch_data=paddle.to_tensor(batch_data,dtype='float32')
        batch_label=paddle.to_tensor(batch_label,dtype='int64')
        output=model(batch_data)
        loss=criterion(output,batch_label)
        print(epoch,loss.numpy()[0])
        total_loss.append(loss.numpy()[0])
        optimizer.clear_grad()
        loss.backward()
        optimizer.step()
paddle.save({'model':model.state_dict(),'optimizer':optimizer.state_dict()},'checkpoint.param')
plt.plot(range(len(total_loss)),total_loss)
plt.show()

5. 输出结果

python 复制代码
contents=[]
batch_size=64
with open('data/data146107/dataset/test.txt',mode='r',encoding='utf-8') as f:
    contents=f.read().split('\n')
evals=[]
imgs=[]
base='data/data146107/dataset/images/'
for content in contents:
    if content=='':continue
    img=content
    data=np.array(T(cv2.imread(base+img)))
    evals.append(data)
    imgs.append(img)
evals=np.array(evals)
imgs=np.array(imgs)
dataset=TensorDataset([evals,imgs])
dataloader=DataLoader(dataset,shuffle=True,batch_size=batch_size)
with open('result.txt',mode='w',encoding='utf-8'):
    pass
with paddle.no_grad():
    for batch_data,batch_img in dataloader:
        batch_data=paddle.to_tensor(batch_data,dtype='float32')
        output=model(batch_data)
        output=np.array(paddle.argmax(output,axis=1))
        with open('result.txt',mode='a',encoding='utf-8') as f:
            for img,ans in zip(batch_img,output):
                f.write(img+'\t'+str(ans)+'\n')

6.结果参考

loss收敛到0.001 ,准确率到达93%左右

相关推荐
qq_452396239 分钟前
【模型手术室】第四篇:全流程实战 —— 使用 LLaMA-Factory 开启你的第一个微调任务
人工智能·python·ai·llama
another heaven22 分钟前
【深度学习 超参调优】lr0与lrf 的关系
人工智能·深度学习
放下华子我只抽RuiKe523 分钟前
深度学习全景指南:硬核实战版
人工智能·深度学习·神经网络·算法·机器学习·自然语言处理·数据挖掘
天空之城_tsf38 分钟前
通用多模态检索——大模型微调
人工智能·深度学习·计算机视觉
财迅通Ai44 分钟前
天立国际携手电子科技大学对话凯文・凯利,共探科技与教育未来
人工智能·科技·天立国际控股
zhojiew1 小时前
在RAG系统中对FAISS,HNSW,BM25向量检索引擎选型的问题
人工智能·机器学习·faiss
深藏功yu名1 小时前
Day24:向量数据库 Chroma_FAISS 入门
数据库·人工智能·python·ai·agent·faiss·chroma
OpenBayes贝式计算1 小时前
教程上新|低门槛部署英伟达最新 Physical AI 模型,覆盖人形机器人/人体运动生成/扩散模型微调等
人工智能·深度学习·机器学习
3DVisionary1 小时前
突破3C质检产能瓶颈:XTOM蓝光扫描仪配合自动化转台实现精密件批量检测
运维·人工智能·自动化·xtom扫描仪·自动化检测·消费电子质检·良率控制
子木HAPPY阳VIP2 小时前
Ubuntu 22.04 VMware 设置固定IP配置
人工智能·后端·目标检测·机器学习·目标跟踪