卷积神经网络-奥特曼识别

news2024/11/18 13:58:21

 数据集 

 四种奥特曼图片_数据集-飞桨AI Studio星河社区 (baidu.com)

 中间的隐藏层 已经使用参数的空间

Conv2D卷积层

ReLU激活层

MaxPool2D最大池化层

AdaptiveAvgPool2D自适应的平均池化

Linear全链接层

Dropout放置过拟合,随机丢弃神经元

--------------------------------------------------------------------------------
   Layer (type)          Input Shape          Output Shape         Param #    
================================================================================
     Conv2D-1        [[50, 3, 227, 227]]   [50, 64, 227, 227]       1,792     
      ReLU-1        [[50, 64, 227, 227]]   [50, 64, 227, 227]         0       
     Conv2D-2       [[50, 64, 227, 227]]   [50, 64, 227, 227]      36,928     
      ReLU-2        [[50, 64, 227, 227]]   [50, 64, 227, 227]         0       
    MaxPool2D-1     [[50, 64, 227, 227]]   [50, 64, 113, 113]         0       
     Conv2D-3       [[50, 64, 113, 113]]  [50, 128, 113, 113]      73,856     
      ReLU-3        [[50, 128, 113, 113]] [50, 128, 113, 113]         0       
     Conv2D-4       [[50, 128, 113, 113]] [50, 128, 113, 113]      147,584    
      ReLU-4        [[50, 128, 113, 113]] [50, 128, 113, 113]         0       
    MaxPool2D-2     [[50, 128, 113, 113]]  [50, 128, 56, 56]          0       
     Conv2D-5        [[50, 128, 56, 56]]   [50, 256, 56, 56]       295,168    
      ReLU-5         [[50, 256, 56, 56]]   [50, 256, 56, 56]          0       
     Conv2D-6        [[50, 256, 56, 56]]   [50, 256, 56, 56]       590,080    
      ReLU-6         [[50, 256, 56, 56]]   [50, 256, 56, 56]          0       
     Conv2D-7        [[50, 256, 56, 56]]   [50, 256, 56, 56]       590,080    
      ReLU-7         [[50, 256, 56, 56]]   [50, 256, 56, 56]          0       
    MaxPool2D-3      [[50, 256, 56, 56]]   [50, 256, 28, 28]          0       
     Conv2D-8        [[50, 256, 28, 28]]   [50, 512, 28, 28]      1,180,160   
      ReLU-8         [[50, 512, 28, 28]]   [50, 512, 28, 28]          0       
     Conv2D-9        [[50, 512, 28, 28]]   [50, 512, 28, 28]      2,359,808   
      ReLU-9         [[50, 512, 28, 28]]   [50, 512, 28, 28]          0       
     Conv2D-10       [[50, 512, 28, 28]]   [50, 512, 28, 28]      2,359,808   
      ReLU-10        [[50, 512, 28, 28]]   [50, 512, 28, 28]          0       
    MaxPool2D-4      [[50, 512, 28, 28]]   [50, 512, 14, 14]          0       
     Conv2D-11       [[50, 512, 14, 14]]   [50, 512, 14, 14]      2,359,808   
      ReLU-11        [[50, 512, 14, 14]]   [50, 512, 14, 14]          0       
     Conv2D-12       [[50, 512, 14, 14]]   [50, 512, 14, 14]      2,359,808   
      ReLU-12        [[50, 512, 14, 14]]   [50, 512, 14, 14]          0       
     Conv2D-13       [[50, 512, 14, 14]]   [50, 512, 14, 14]      2,359,808   
      ReLU-13        [[50, 512, 14, 14]]   [50, 512, 14, 14]          0       
    MaxPool2D-5      [[50, 512, 14, 14]]    [50, 512, 7, 7]           0       
AdaptiveAvgPool2D-1   [[50, 512, 7, 7]]     [50, 512, 7, 7]           0       
     Linear-1           [[50, 25088]]          [50, 4096]        102,764,544  
      ReLU-14           [[50, 4096]]           [50, 4096]             0       
     Dropout-1          [[50, 4096]]           [50, 4096]             0       
     Linear-2           [[50, 4096]]           [50, 4096]        16,781,312   
      ReLU-15           [[50, 4096]]           [50, 4096]             0       
     Dropout-2          [[50, 4096]]           [50, 4096]             0       
     Linear-3           [[50, 4096]]            [50, 4]            16,388     
================================================================================
Total params: 134,276,932
Trainable params: 134,276,932
Non-trainable params: 0
--------------------------------------------------------------------------------
Input size (MB): 29.49
Forward/backward pass size (MB): 11120.24
Params size (MB): 512.23
Estimated Total Size (MB): 11661.95
--------------------------------------------------------------------------------

如果paddle还没配置的话建议去网上搜一下,这里就不给链接了 

 用于训练模型的代码

import paddle
from paddle.io import Dataset,DataLoader
import os
from PIL import Image
import numpy as np
import paddle.vision.transforms as T
import matplotlib.pyplot as plt
from paddle.vision.datasets import DatasetFolder

transforms=T.Compose([T.Resize([227,227]),T.RandomRotation(degrees=[-10,10]),T.ColorJitter(0.4,0.4,0.4,0.4),T.ToTensor()])
dataset=DatasetFolder("aoteman",extensions=[".jpg"],transform=transforms)
#使用paddle.io.random_split切分训练集和测试集
from paddle.io import random_split
train_size=int(0.8*len(dataset))
test_size=len(dataset)-train_size
train_dataset,test_dataset=random_split(dataset=dataset,lengths=[train_size,test_size])
print(len(train_dataset),len(test_dataset))

# plt.figure(figsize=[3,3])
# for idx,data in enumerate(train_dataset):
#     plt.subplot(3,3,idx+1)
#     im=data[0];label=data[1]
#     im=im.reshape([224,224,3])
#     plt.imshow(im)
#     if idx+1>=9:
#         break
# plt.show()

print(dataset.class_to_idx)

net=paddle.vision.models.vgg16(pretrained=True, num_classes=4)
paddle.summary(net,(50,3,227,227))

#网络配置
lr=0.001
batch_size=50
#预训练模型优化器 Adam优化器
opt =paddle.optimizer.Adam(learning_rate=lr,parameters=net.classifier.parameters())
#损失函数
loss_fn=paddle.nn.CrossEntropyLoss()
#训练模式
net.train()
model=paddle.Model(net)
model.prepare(optimizer=opt,loss=loss_fn,metrics=paddle.metric.Accuracy())
import time
vsdl=paddle.callbacks.VisualDL(log_dir='vsdl/trainlog'+str(time.time()))
# model.load('mymodel/vgg_aoteman')
# res=model.predict()
model.fit(train_data=train_dataset,eval_data=test_dataset, batch_size=batch_size,
          epochs=1, verbose=1,shuffle=True,callbacks=vsdl)
model.save('mymodel/vgg_aoteman')

用于预测模型的代码

import math

import paddle
import paddle.vision.transforms as T

from PIL import Image
from paddle.vision.datasets import DatasetFolder
import numpy as np

transforms = T.Compose([T.Resize([227, 227]), T.ToTensor()])
# 使用paddle.io.random_split切分训练集和测试集

img = Image.open('aoteman/predict_demo.jpg')#输入图片
img.show()
img = transforms(img)
img = img.unsqueeze(0)

start_index = 0  # 开始切片的索引
end_index = 3    # 结束切片的索引
axes = [1]       # 要切片的轴(通道轴)
img = paddle.slice(img, axes=axes, starts=[start_index], ends=[end_index])



net = paddle.vision.models.vgg16(pretrained=True, num_classes=4)
# 网络配置
lr = 0.001
batch_size = 50
# 预训练模型优化器 Adam优化器
opt = paddle.optimizer.Adam(learning_rate=lr, parameters=net.classifier.parameters())
# 损失函数
loss_fn = paddle.nn.CrossEntropyLoss()
# 训练模式
net.train()
model = paddle.Model(net)
model.prepare(optimizer=opt, loss=loss_fn, metrics=paddle.metric.Accuracy())
import time

vsdl = paddle.callbacks.VisualDL(log_dir='vsdl/trainlog' + str(time.time()))
model.load('mymodel/vgg_aoteman')

# print(img)
res = model.predict_batch(img)

sum=0
maxx=-1000000
idx=0
for i in range(4):
    # sum+=math.exp(res[0][0][i])
    if res[0][0][i]>maxx:
        maxx=res[0][0][i]
        idx=i
    # print(res[0][0][i])
# print(res)
# print(math.exp(res[0][0][idx])/sum*100,end='%:   ')
if idx==0:
    print("迪迦")
elif idx==1:
    print('杰克')
elif idx==2:
    print('赛文')
else:
    print('泰罗')

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1692492.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

打包要求 minCompileSdk 使用指定版本及以上

我当前的 compileSdkVersion 30,因为依赖了 androidx.core:core:1.9.0 它要求最低 compileSdkVersion 33。 那么如果我不想升级 compileSdkVersion 应该怎么办? 答:当然是降低 core:core 版本! 看看谁依赖了这两个版本 android…

JavaSE——类和对象(二)~~封装

目录 一.封装 二.封装扩展之包 三.static成员 四. 代码块 五. 内部类(重要) 大家好呀,我是北纬,接着上节我们继续讲解Java中关于类和对象的相关知识,今天着重给大家介绍一下关于面向对象程序的特性之一——封装。…

FPGA 纯逻辑arinc818 ip core

1、 符合FC-FS、FC-AV、FC-ADVB协议规范; 2、符合ARINC818协议规范; 3、支持光纤通信Class1、Class3服务; 5、可动态配置光纤端口速率,支持1.0625Gbps、2.125Gbps、3.1875Gbps、4.25Gbps可配置; 6、DDR控制接口简洁…

【01】全面理解JVM虚拟机

一、前言 学习JVM是进行JVM调优的基础。写的代码部署到线上它会如何运行?要配多少内存?线上环境出问题了,服务崩溃了,应该怎么快速定位?这些问题都与JVM有着一定的关系。好的程序员都应该尽自己的能力把JVM每个底层逻…

记录github小程序短视频系统的搭建过程

GitHub - lkmc2/AwesomeVideoWxApp: 《倾心短视频》微信小程序 这个项目按readme中的来可以部署成功,但是会发现图片、视频全是空的,如下图: 修改源代码,更换图片上传与保存地址 大概涉及到这些代码块,进行更改即可。…

HarmonyOS interface router scale pageTransition SlideEffect.Left ArkTS ArkUI

🎬️create Component export default struct TitleBar {build(){Row(){Text(transition).fontSize(30fp).fontColor(Color.White)}.width(100%).height(8%).backgroundColor(#4169E1).padding({left:10})}}🎞️interface export interface IList{ti…

【zotero6】ZotCard笔记模板分享

zotcard插件下载链接:传送门 因为zotero出了新的zotero7,现在下载插件会出现zotero6和zotero7不兼容的情况,通过这个链接可以区分适配不同版本的插件。 下载后点击工具的附加组件 然后选择通过文件添加 就可以添加插件了 再通过 工具->…

第十三期Big Demo Day亮点项目:CCarbon重塑碳交易生态,助力全球绿色发展

第十三期Big Demo Day活动即将于2024年5月28日在香港数码港的CyberArena隆重举行。我们荣幸地宣布,利用区块链技术优化全球碳交易CCarbon项目将亮相,参与精彩的项目路演。本次活动由ZeeprLabs、BiKing Exchange、Gather冠名赞助,Central Rese…

commvault学习(8):备份与恢复sql server

1.安装sql server2008r2 安装sql server 2.在客户端添加cv代理mssql server 如果此前的cv代理中没有sql server,那么可以手动再补充 点击setup 添加MSSQL Server 将程序添加到windows防火墙排除表 勾选自动探寻实例 3.备份sql server 3.1配置数据库内容 右击默…

HLS入门

一. HLS是什么?与VHDL/Verilog编程技术有什么关系? 高层次综合 (HLS) 抽象级别更高:HLS允许设计者在更高的抽象级别上工作,使用高级编程语言来描述硬件的功能。这种方法减少了设计者需要处理的底层细节,使得设计过程更加高效。…

下一代Docker会让部署更丝滑吗

下一代Docker会让部署更丝滑吗 如何通俗易懂的理解DockerDocker有什么缺点Docker与AI结合,会让部署更加丝滑吗 随着互联网技术的不断发展,单机系统已经无法满足日益正常的用户量以及正常处理用户请求,这个时候就需要进行多机部署,…

JDBC(Java DataBase Connectivity)Java数据库连接

JDBC(Java DataBase Connectivity) Java 语言连接数据库 再本模块中,java提供里一组用于连接数据库的类和接口Java 语言开发者,本身没有提供如何具体连接数据库的功能只是定义了一组java程序连接数据库的访问接口 连接到数据库向数据库发送增,修改,删除这一类的sql发送查询sq…

学习Thymeleaf时遇到的问题

使用idea创建web项目,启动服务器后无法访问页面 原因是tomcat 新版本引用包名改变 由javax变为jakarta 解决办法1 把项目的poe.xml文件由 改为 解决办法2 新建项目时选择新版本,但是新版本不支持thymeleaf

uniapp android使用uni.chooseLocation,app云打包后,定位地址列表一直在加载中

复现BUG 1、自己生成一个证书 参考生成证书流程 2、使用刚生成证书的SHA1 ,重新创建一个高德key 高德开放平台地址 3、打包(打包的包名要与高德申请key所填的包名一致)

从零搭建python环境:深入解析虚拟环境与Python版本管理

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、引言:为何需要虚拟环境? 二、虚拟环境的创建与命名 1. 虚拟环境…

Spark SQL【Java API】

前言 之前对 Spark SQL 的影响一直停留在 DSL 语法上面,感觉可以用 SQL 表达的,没有必要用 Java/Scala 去写,但是面试一段时间后,发现不少公司还是在用 SparkSQL 的,京东也在使用 Spark On Hive 而不是我以为的 Hive O…

FastSAM 部署 rknn

基于yolov8(ultralytics)工程导出的FastSAM的onnx模型,后处理和yolov8seg是一样的。      模型和完整测试代码。 1 FastSAM 导出 onnx 导出onnx的方式有两种,一种使用FastSAM工程,一种是使用yolov8(ultralytics)工程。本篇博客使用yolov…

Unity在Windows平台播放HEVC/H.265格式视频的底层原理

相关术语、概念 HEVC/H.265 HEVC(High Efficiency Video Coding)是一种视频压缩标准,也被称为H.265。它是一种高效的视频编码标准,可以提供比之前的标准(如H.264)更高的压缩率,同时保持较高的…

【LabVIEW FPGA入门】使用事件发生函数同步FPGA循环

1.使用事件发生函数 使用 Occurrences 函数来控制单独的同步活动。特别是,当您希望程序框图的一部分等待程序框图的另一部分完成任务而不强制 LabVIEW 进行轮询时,请使用这些函数。 您可以使用全局变量执行类似于occurrences函数的功能,通过一…

QT教程-一,初识QT

目录 一,QT是什么?能够使用它做什么? 二,Qt 能够使用的语言 三,Qt主要用于什么领域? 四,Qt开发的软件 一,QT是什么?能够使用它做什么? Qt是一个跨平台的 C 开发库,主…