基于CNN的10种物体识别项目

一:数据导入和处理

1.导入相关包:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import tensorflow as tf

2.下载数据

(x_train_all, y_train_all), (x_test, y_test) = tf.keras.datasets.cifar10.load_data()# x_valid:测试的图片集 x_train:训练的图片集。y_valid:测试的目标集,y_train:训练的目标集
x_valid, x_train = x_train_all[:5000], x_train_all[5000:]
y_valid, y_train = y_train_all[:5000], y_train_all[5000:]“”“
x_valid.shape:(5000,32,32,3)
x_text.shape:(45000, 32, 32, 3)
y_test.shape: (10000,1)
”“”

3.数据归一化

from sklearn.preprocessing import StandardScaler# 这里使用StandardScaler标准差标准化
scaler = StandardScaler()
# 先将数据转换为numpy中的float32类型后再改变形状
x_train_scaled = scaler.fit_transform(x_train.astype(np.float32).reshape(-1, 1)).reshape(-1, 32, 32, 3)
x_valid_scaled = scaler.transform(x_valid.astype(np.float32).reshape(-1, 1)).reshape(-1, 32, 32, 3)
x_test_scaled = scaler.transform(x_test.astype(np.float32).reshape(-1, 1)).reshape(-1, 32, 32, 3)

二:定义卷积神经网络

# 定义卷积神经网络.
model = tf.keras.models.Sequential()
# 2次卷积, 一次池化, 总共3层. 
# 第一层
model.add(tf.keras.layers.Conv2D(filters=32, kernel_size=3, padding='same', activation='relu', input_shape=(32, 32, 3)))
model.add(tf.keras.layers.Conv2D(filters=32, kernel_size=3, padding='same', activation='relu'))
model.add(tf.keras.layers.MaxPool2D(pool_size=2))# 第二层
model.add(tf.keras.layers.Conv2D(filters=64, kernel_size=3, padding='same', activation='relu', ))
model.add(tf.keras.layers.Conv2D(filters=64, kernel_size=3, padding='same', activation='relu'))
model.add(tf.keras.layers.MaxPool2D(pool_size=2))# 第三层
model.add(tf.keras.layers.Conv2D(filters=128, kernel_size=3, padding='same', activation='relu', ))
model.add(tf.keras.layers.Conv2D(filters=128, kernel_size=3, padding='same', activation='relu'))
model.add(tf.keras.layers.MaxPool2D(pool_size=2))# 将数据展平
model.add(tf.keras.layers.Flatten())# 全连接层
model.add(tf.keras.layers.Dense(256, activation='relu'))
# 加入dropout减轻过拟合现象
model.add(tf.keras.layers.AlphaDropout(0.3))
model.add(tf.keras.layers.Dense(10, activation='softmax'))

配置网格

# 配置网络,损失,优化器,函数
model.compile(loss='sparse_categorical_crossentropy',optimizer='sgd',metrics=['acc'])

三:训练

# 传入训练图片集,训练目标集,共迭代十次
# validation_data中传入测试图片集,测试目标集
history = model.fit(x_train_scaled, y_train, epochs=10,validation_data=(x_valid_scaled, y_valid))

画出损失看一下

pd.DataFrame(history.history).plot(figsize=(8, 5))
plt.grid()
plt.gca().set_ylim(0, 2)
plt.show()

总结:

对于图片分类:

1.先确定使用什么算法来对物体识别

2.将数据处理到适用于这个算法的格式

3. 构建这个算法的卷积神经网络

4.训练调参

5.预测

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

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

相关文章

【Qt笔记】QTabWidget控件详解

目录 引言 一、基本功能 二、核心属性 2.1 标签页管理 2.2 标签位置 2.3 标签形状 2.4 标签可关闭性 2.5 标签可移动性 三、信号与槽 四、高级功能 4.1 动态添加和删除标签页 4.2 自定义标签页的关闭按钮行为 4.3 标签页的上下文菜单 五、样式设置 六、应用示例…

android 14.0 USB连接模式默认设为MTP

1.概述 在14.0android系统产品开发中,在通过otg连接设备的时候,会弹出usb连接模式这时候会让客户选择当前连接电脑是 哪种模式,在项目开发中,需要以mtp模式,就是可以在电脑查看设备的内部存储的样式来设置otg连接电脑的模式, 接下来分析下相关模式,来具体实现相关功能 …

快速使用react 全局状态管理工具--redux

redux Redux 是 JavaScript 应用中管理应用状态的工具,特别适用于复杂的、需要共享状态的中大型应用。Redux 的核心思想是将应用的所有状态存储在一个单一的、不可变的状态树(state tree)中,状态只能通过触发特定的 action 来更新…

Linux系统管理包命令大盘点

在Linux系统中,管理包的命令通常依赖于你使用的包管理器。不同的Linux发行版使用不同的包管理器。以下是一些常见的包管理器及其相关的命令: 一、Linux不同版本,包管理器及其命令 1. APT (Advanced Package Tool)- 主要用于Debian及其衍生版…

硬件基础知识

驱动开发分为:裸机驱动、linux驱动 嵌入式:以计算机技术为基础,软硬结合的、可移植、可剪裁的专用计算机 单片机最小单元:vcc gnd reset 晶振 cpu --- soc :system on chip 片上外设 所有的程序都是在soc(cpu&…

学习贵在善假于物

以前我们学习,主要依赖于书本,老师。当然,还有必不可少的练习(实践)。 后来,搜索引擎的出现,打开了另一扇门,获取知识变得越来越方便快捷。 如今,人工智能的飞跃发展&a…

【Android安全】Ubuntu 16.04安装GDB和GEF

1. 安装GDB sudo apt install gdb-multiarch 2. 安装GEF(GDB Enhanced Features) 官网地址:https://github.com/hugsy/gef 2.1 安装2021.10版本 但是在Ubuntu 16.04上,bash -c "$(curl -fsSL https://gef.blah.cat/sh)"等命令不好使&…

Pandas语句

数据加载与保存 读取数据 pd.read_csv(‘filename.csv’):读取 CSV 文件。 pd.read_excel(‘filename.xlsx’):读取 Excel 文件。 pd.read_sql(query, connection_object):从 SQL 数据库中读取数据。 pd.read_json(‘filename.json’)&#x…

蓝桥杯2024省C

P10898 [蓝桥杯 2024 省 C] 拼正方形 题目描述 小蓝正在玩拼图游戏,他有 7385137888721个 22的方块和 10470245 个 11 的方块,他需要从中挑出一些来拼出一个正方形,比如用 3 个 22 和 4 个 11 的方块可以拼出一个 44 的正方形,用…

深度学习自编码器 - 收缩自编码器(CAE)篇

序言 在深度学习的浪潮中,收缩自编码器( Compressive Autoencoder, CAE \text{Compressive Autoencoder, CAE} Compressive Autoencoder, CAE)作为自编码器的一种高级形式,正逐步崭露头角。收缩自编码器在保留自编码器核心功能—…

【贪心算法】贪心算法一

贪心算法一 1.柠檬水找零2.将数组和减半的最少操作次数3.最大数4.摆动序列 点赞👍👍收藏🌟🌟关注💖💖 你的支持是对我最大的鼓励,我们一起努力吧!😃😃 1.柠檬水找零 题目…

【安当产品应用案例100集】017-助力软件服务商高效集成多因素认证

一、企业案例背景 在本案例中,某企业作为一家软件技术服务商,为包括银行、政府机构在内的多个行业提供定制化的软件服务。由于各个行业的安全需求各异,例如银行和政府机构倾向于使用UKEY进行身份验证,而其他企业则可能偏好使用数…

创建Django 项目

创建一个新的 Django 项目: django-admin startproject myproject cd myproject 在 Django 项目中创建一个新的应用: python manage.py startapp myapp设置数据库 编辑 myproject/settings.py 文件中的数据库设置: DATABASES {default:…

OJ在线评测系统 前端开发设计优化通用菜单组件二 调试用户自动登录

通用的菜单组件开发二 接下来要完善 权限功能 就是只有登录后才能进入题目查看界面 用户只能看到我们有权限的菜单 我们要在路由文件里面去操作 原理是控制路由设置隐藏 只要用户没有权限 就过滤掉隐藏 全局权限管理 实现想清楚有那些权限 /*** 权限定义*/ const ACCES…

UAC2.0 麦克风——同时支持 16bit,24bit 和 32bit

UAC2.0 麦克风系列文章 UAC2.0 麦克风——单声道 USB 麦克风(16bit) UAC2.0 麦克风——类特殊请求 UAC2.0 麦克风——音量控制 UAC2.0 麦克风——多采样率支持 UAC2.0 麦克风——24/32bit 支持 UAC2.0 麦克风——麦克风数据传输 UAC2.0 麦克风——同时支持 16bit,24bit 和 …

2017年国赛高教杯数学建模A题CT系统参数标定及成像解题全过程文档及程序

2017年国赛高教杯数学建模 A题 CT系统参数标定及成像 CT(Computed Tomography)可以在不破坏样品的情况下,利用样品对射线能量的吸收特性对生物组织和工程材料的样品进行断层成像,由此获取样品内部的结构信息。一种典型的二维CT系统如图1所示&#xff0c…

瑞芯微RK3588开发板Linux系统添加自启动命令的方法,深圳触觉智能Arm嵌入式鸿蒙硬件方案商

本文适用于触觉智能所有Linux系统的开发板、主板添加自启动命令的方法,本次使用了触觉智能的EVB3588开发板演示,搭载了瑞芯微RK3588旗舰芯片。 该开发板为核心板加底板设计,为工业场景设计研发的模块化产品,10年以上稳定供货,帮助…

U盘显示未被格式化:深度解析与数据恢复指南

一、现象解析:U盘显示未被格式化之谜 在日常使用U盘的过程中,不少用户可能会遭遇一个令人头疼的问题——插入U盘后,系统提示“U盘未被格式化”,要求用户进行格式化操作以继续访问。这一突如其来的提示不仅打断了正常的工作流程&a…

Java 数据类型转换详解:隐式转换(自动转换)与强制转换(手动转换)

目录 前言 取值范围从小到大的关系: 隐式转换(自动转换) 📜示例 1:基本类型隐式转换 📜示例 2:算术运算中的类型提升 📜示例 3:byte、short 和 char 的自动转换 隐…

如何上传tauri项目到csdn gitcode

如何上传tauri项目到csdn gitcode 首先保证项目目录有.gitignore,避免不必要的文件上传分享。 gitignore文件 # Logs logs *.log npm-debug.log* yarn-debug.log* yarn-error.log* pnpm-debug.log* lerna-debug.log*node_modules dist dist-ssr *.local# Editor …