iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Pytorch卷积神经网络resent网络实践
  • 924
分享到

Pytorch卷积神经网络resent网络实践

2024-04-02 19:04:59 924人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录前言一、技术介绍二、实现途径三、总结前言 上篇文章,讲了经典卷积神经网络-resnet,这篇文章通过resnet网络,做一些具体的事情。 一、技术介绍 总的来说,第一步首先要加载

前言

上篇文章,讲了经典卷积神经网络-resnet,这篇文章通过resnet网络,做一些具体的事情。

一、技术介绍

总的来说,第一步首先要加载数据集,对数据进行一些处理,第二步,调整学习率一些参数,训练好resnet网络模型,第三步输入图片或者视频通过训练好的模型,得到结果。

二、实现途径

1.加载数据集,对数据进行处理,加载的图片是(N,C,H,W )对图片进行处理成(C,H,W),通过图片名称获取标签,进行分类。

train_paper=r'E:\桌面\资料\cv3\数据集\罚拳_公开\train\paper'
train_rock=r'E:\桌面\资料\cv3\数据集\罚拳_公开\train\rock'
train_scissors=r'E:\桌面\资料\cv3\数据集\罚拳_公开\train\scissors'
test_paper=r'E:\桌面\资料\cv3\数据集\罚拳_公开\test\paper'
test_rock=r'E:\桌面\资料\cv3\数据集\罚拳_公开\test\rock'
test_scission=r'E:\桌面\资料\cv3\数据集\罚拳_公开\test\scissors'
Batch_files=10
transs=trans.Compose([
    trans.ToTensor(),
    trans.NORMalize((0.5,0.5,0.5),(0.5,0.5,0.5))
])
def read_img(batch_files):
    images=[]
    labels=[]
    for file in batch_files:
        image=Image.open(file)
        image=image.convert('RGB')
        image=image.resize((64,64))
        tensor=transs(image)
        images.append(tensor)
        if 'rock' in file :
            labels.append(torch.tensor(0,dtype=torch.int64))
        if 'paper' in file:
            labels.append(torch.tensor(1,dtype=torch.int64))
        if 'scissors' in file:
            labels.append(torch.tensor(2,dtype=torch.int64))
    return images,labels
if __name__ == '__main__':

2.写入resnet模型:

这里用的是resnet18

class tiao(nn.Module):
    def __init__(self,shuru,shuchu):
        super(tiao, self).__init__()
        self.conv1=nn.Conv2d(in_channels=shuru,out_channels=shuchu,kernel_size=(3,3),padding=(1,1))
        self.bath=nn.BatchNorm2d(shuchu)
        self.relu=nn.ReLU()
    def forward(self,x):
        x1=self.conv1(x)
        x2=self.bath(x1)
        x3=self.relu(x2)
        x4=self.conv1(x3)
        x5=self.bath(x4)
        x6=self.relu(x5)
        x7=x6+x
        return x7
class tiao2(nn.Module):
    def __init__(self,shuru):
        super(tiao2, self).__init__()
        self.conv1=nn.Conv2d(in_channels=shuru,out_channels=shuru*2,kernel_size=(3,3),stride=(2,2),padding=(1,1))
        self.conv11=nn.Conv2d(in_channels=shuru,out_channels=shuru*2,kernel_size=(1,1),stride=(2,2))
        self.batch=nn.BatchNorm2d(shuru*2)
        self.relu=nn.ReLU()
        self.conv2=nn.Conv2d(in_channels=shuru*2,out_channels=shuru*2,kernel_size=(3,3),stride=(1,1),padding=(1,1))
    def forward(self,x):
        x1=self.conv1(x)
        x2=self.batch(x1)
        x3=self.relu(x2)
        x4=self.conv2(x3)
        x5=self.batch(x4)
        x6=self.relu(x5)
        x11=self.conv11(x)
        x7=x11+x6
        return x7
class resnet18(nn.Module):
    def __init__(self):
        super(resnet18, self).__init__()
        self.conv1=nn.Conv2d(in_channels=3,out_channels=64,kernel_size=(7,7),stride=(2,2),padding=(3,3))
        self.bath=nn.BatchNorm2d(64)
        self.relu=nn.ReLU()
        self.max=nn.MaxPool2d(2,2)
        self.tiao1=tiao(64,64)
        self.tiao2=tiao(64,64)
        self.tiao3=tiao2(64)
        self.tiao4=tiao(128,128)
        self.tiao5=tiao2(128)
        self.tiao6=tiao(256,256)
        self.tiao7=tiao2(256)
        self.tiao8=tiao(512,512)
        self.a=nn.AdaptiveAvgPool2d(output_size=(1,1))
        self.l=nn.Linear(512,3)
    def forward(self,x):
        x1=self.conv1(x)
        x2=self.bath(x1)
        x3=self.relu(x2)
        x4=self.tiao1(x3)
        x5=self.tiao2(x4)
        x6=self.tiao3(x5)
        x7=self.tiao4(x6)
        x8=self.tiao5(x7)
        x9=self.tiao6(x8)
        x10=self.tiao7(x9)
        x11=self.tiao8(x10)
        x12=self.a(x11)
        x13=x12.view(x12.size()[0],-1)
        x14=self.l(x13)
        return x14

第三步:调用读取数据函数,读取数据,打乱,开始训练:

 train_rock=[os.path.join(train_rock,file) for file in os.listdir(train_rock)]
    train_paper= [os.path.join(train_paper, file) for file in os.listdir(train_paper)]
    train_scissors = [os.path.join(train_scissors, file) for file in os.listdir(train_scissors)]
    test_rock=[os.path.join(test_rock,file) for file in os.listdir(test_rock)]
    test_paper=[os.path.join(test_paper,file) for file in os.listdir(test_paper)]
    test_scission=[os.path.join(test_scission,file) for file in os.listdir(test_scission)]
    train=train_rock+train_paper+train_scissors
    test=test_rock+test_paper+test_scission
    random.shuffle(train)
    random.shuffle(test)
    model=resnet18().cuda()
    opt = torch.optim.ASGD(model.parameters(), lr=0.001, weight_decay=0.8)
    loss = nn.CrossEntropyLoss()
    print("开始训练")

第四步:训练模型,完成后保存模型:

  for i in range(5):
        running_loss=0
        for index in range(0,len(train),Batch_files):
            images,labels=read_img(train[index:index+Batch_files])
            inputs=torch.stack(images,0).cuda()
            labels=torch.stack(labels,0).cuda()
            inputs, labels = Variable(inputs), Variable(labels)
            opt.zero_grad()
            h=model(inputs)
            loss1=loss(h,labels)
            loss1.backward()
            opt.step()
            running_loss+=loss1.item()
            if index%41==40:
                avg_loos=running_loss/41
                running_loss=0
                print('avg_loss',avg_loos)
            if index%101==99:
                test_files=random.sample(test,100)
                test_image,test_label=read_img(test_files)
                test_images=torch.stack(test_image,0).cuda()
                test_labels=torch.stack(test_label,0).cuda()
                test_h=model(test_images)
                _,prediction=torch.max(test_h.data,1)
                total=test_labels.size(0)
                correct=(prediction==test_labels).sum()
                print('100张测试集准确率%d %%'%(100*correct/total))
    torch.save(model.state_dict(),'resnet_caiq猜拳.pth')

第五步:加载模型,进行测试:

model.load_state_dict(torch.load('resnet_caiq猜拳.pth'))
labels={0:'rock',1:'paper',2:'scissors'}
    images=[]
    image=Image.open(r'E:\桌面\1.png')
    image=image.convert('RGB')
    image=image.resize((64,64))
    image=transs(image)
    images.append(image)
    image= torch.stack(images, 0).cuda()
    label=model(image)
    _,prediction=torch.max(label.data,1)
    print("预测类别",labels[prediction.item()])

三、总结

本文只是简单介绍了,通过PyTorch训练resnet模型。调用训练好的模型,对图片,视频,摄像头进行检测。

本文只是简单对图片进行检测,得到预测结果。

在这里运用了resnet18模型进行训练,其实还有更好的模型,得到更好的训练结果。

在目标检测领域,最著名的是YOLO,检测速度非常快,在实时检测领域很受欢迎,在一些游戏上,可以通过YOLO脚本,实现自动定,追踪之类的,比如现在欢迎的吃鸡游戏,玩家通过脚本,实现自动识别人,进行射击操作。在yolov3中,作者提到过yolo已经运用到军事中,出于道德层面的考虑,作者暂停了yolo的更新,在这之后v4,v5,v6以及之后的版本都是一些大佬接棒的。

在实时检测中,现在AI在一些方面已经超越人类了,在准确率上虽然人脑的高层次演绎归纳能力是远胜于AI的,但是在低级信息处理速度和精确度上,人类就很难比得过专精某个功能的AI了。

以上就是Pytorch卷积神经网络resent网络实践的详细内容,更多关于卷积神经网络resent的资料请关注编程网其它相关文章!

--结束END--

本文标题: Pytorch卷积神经网络resent网络实践

本文链接: http://www.lsjlt.com/news/117942.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Pytorch卷积神经网络resent网络实践
    目录前言一、技术介绍二、实现途径三、总结前言 上篇文章,讲了经典卷积神经网络-resnet,这篇文章通过resnet网络,做一些具体的事情。 一、技术介绍 总的来说,第一步首先要加载...
    99+
    2024-04-02
  • pytorch如何搭建卷积神经网络
    在PyTorch中搭建卷积神经网络通常涉及以下步骤: 导入必要的库和模块: import torch import torch....
    99+
    2024-04-08
    pytorch
  • pytorch怎么搭建卷积神经网络
    在PyTorch中搭建卷积神经网络(Convolutional Neural Network,CNN)通常需要使用torch.nn模...
    99+
    2024-04-02
  • PyTorch中的卷积神经网络怎么实现
    在PyTorch中,可以使用torch.nn模块中的Conv2d类来实现卷积神经网络。以下是一个简单的示例,展示如何在PyTorch...
    99+
    2024-03-05
    PyTorch
  • PyTorch实现卷积神经网络的搭建详解
    目录PyTorch中实现卷积的重要基础函数1、nn.Conv2d:2、nn.MaxPool2d(kernel_size=2)3、nn.ReLU()4、x.view()全部代码PyTo...
    99+
    2024-04-02
  • Python深度学习pytorch卷积神经网络LeNet
    目录LeNet模型训练不变性 在本节中,我们将介绍LeNet,它是最早发布的卷积神经网络之一。这个模型是由AT&T贝尔实验室的研究院Yann LeCun在1989年提出的(并...
    99+
    2024-04-02
  • 卷积神经网络Inception V3网络结构图
    目录1.基于大滤波器尺寸分解卷积1.1分解到更小的卷积1.2. 空间分解为不对称卷积2. 利用辅助分类器3.降低特征图大小Inception-V3模型:总结:《Rethinking ...
    99+
    2024-04-02
  • 图卷积神经网络(GCN)综述与实现(PyTorch版)
    图卷积神经网络(GCN)综述与实现(PyTorch版) 本文的实验环境为PyTorch = 1.11.0 + cu113,PyG = 2.0.4,相关依赖库和数据集的下载请见链接。 一、图卷积神经...
    99+
    2023-09-28
    pytorch cnn 深度学习 python
  • pytorch搭建卷积神经网络要注意什么
    搭建卷积神经网络时,需要注意以下几点: 确保输入数据的维度和通道数与网络的输入层匹配。 确保卷积核的大小、步长和填充大小设置合理。...
    99+
    2024-04-08
    pytorch
  • pytorch卷积神经网络搭建要注意什么
    在搭建PyTorch卷积神经网络时,需要注意以下几点: 输入数据的维度和通道数必须与网络模型中的输入层匹配。 确保卷积核的大小、步...
    99+
    2024-04-02
  • Python中如何实现卷积神经网络
    这篇文章主要介绍了Python中如何实现卷积神经网络,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、卷积神经网络Yann LeCun 和Yoshua Bengio在1995...
    99+
    2023-06-15
  • 怎么用TensorFlow实现卷积神经网络
    这篇文章主要介绍“怎么用TensorFlow实现卷积神经网络”,在日常操作中,相信很多人在怎么用TensorFlow实现卷积神经网络问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用TensorFlow实现...
    99+
    2023-06-25
  • Lasagne中怎么实现卷积神经网络
    Lasagne是一个轻量级的神经网络库,可以很容易地实现卷积神经网络。 以下是一个简单的示例,展示如何在Lasagne中实现一个简单...
    99+
    2024-04-02
  • Python编程pytorch深度卷积神经网络AlexNet详解
    目录 容量控制和预处理读取数据集2012年,AlexNet横空出世。它首次证明了学习到的特征可以超越手工设计的特征。它一举打破了计算机视觉研究的现状。AlexNet使用了8...
    99+
    2024-04-02
  • keras怎么搭建卷积神经网络
    在Keras中搭建卷积神经网络(CNN)可以通过Sequential模型或Functional API来实现。下面分别介绍这两种方法...
    99+
    2024-04-02
  • 深度学习实验3 - 卷积神经网络
    文章目录 实验要求数据集定义1 手写二维卷积1.1 自定义卷积通道1.2 自定义卷积层1.3 添加卷积层导模块中1.4 定义超参数1.5 初始化模型、损失函数、优化器1.6 定义模型训练和测试...
    99+
    2023-09-02
    深度学习 cnn python
  • Pytorch深度学习经典卷积神经网络resnet模块训练
    目录前言一、resnet二、resnet网络结构三、resnet181.导包2.残差模块2.通道数翻倍残差模块3.rensnet18模块4.数据测试5.损失函数,优化器6.加载数据集...
    99+
    2024-04-02
  • 如何用tensorflow搭建卷积神经网络
    要用TensorFlow搭建卷积神经网络(CNN),首先需要导入TensorFlow库并定义网络的结构。以下是一个简单的示例代码,展...
    99+
    2024-04-03
    tensorflow
  • Pytorch深度学习经典卷积神经网络resnet模块实例分析
    这篇文章主要介绍“Pytorch深度学习经典卷积神经网络resnet模块实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Pytorch深度学习经典卷积神经网络resnet模块实例分析”文章能帮...
    99+
    2023-06-30
  • Keras中如何使用卷积神经网络
    使用卷积神经网络(CNN)在Keras中非常简单。以下是一个简单的例子,演示如何构建一个简单的CNN模型: from keras.m...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作