比赛准备笔记 --- TensotFlow、软件调试、数据预处理(图像,csv数据)

news2025/7/13 4:25:36

简介

TensorFlow是由Google团队开发的一个开源深度学习框架,完全基于Python语言设计。它的初衷是以最简单的方式实现机器学习和深度学习的概念,结合了计算代数的优化技术,使计算许多数学表达式变得简单。

优势:

  • 强大的计算能力,支持多种硬件和分布式计算
  • 灵活的数据流模型,便于构建复杂的模型
  • 丰富的 社区资源和生态系统

tf.keras库

该库是一个高阶api库,提供了很多训练模型时需要使用的工具

tf.keras.models.Sequential:用于顺序地堆叠模型的各个层。
tf.keras.layers.Dense:用于定义全连接层。
tf.keras.layers.Flatten:用于将多维数组转换为一维数组。
tf.keras.losses:提供了各种损失函数。
tf.keras.optimizers:提供了优化器。
tf.keras.metrics:提供了评估指标,如准确率、精确率等

构建模型的方式

  • Sequential 模型:使用 tf.keras.Sequential 类可以按顺序堆叠层来构建模型。这是一种简单的模型构建方式,适用于层之间是线性关系的情况
  • 函数式 API:使用函数式 API 可以构建更复杂、具有分支和合并的模型结构。这种方式允许你创建具有多个输入和输出的模型
  • 子类化模型:通过继承 tf.keras.Model 类,并自定义 init 和 call 方法来构建模型。这种方式提供了更大的灵活性,可自定义模型的计算图

使用Sequential 构建模型

import tensorflow as tf
# Sequential 模型
model = tf.keras.models.Sequential([
    # tf.keras.layers.Dense 构建全连接层 64表示数据类型unit64 relu表示激活函数
    tf.keras.layers.Dense(64,activation="relu",input_shape=(784,)),
    tf.keras.layers.Dense(64,activation="relu"),
    tf.keras.layers.Dense(10,activation="softmax"),
])

# 编译模型
model.compile(optimizer="adam", # 指定优化器
              loss="sparse_categorical_crossentropy", # 指定损失函数
              metrics=['accuracy']  # 指定评估指标
              )
  • 开始训练
# 开始训练
history = model.fit(
    train_data_x, # 训练数据集
    validation_data = test_data_x,  # 验证集
    epochs=10 # 根据需要设置训练轮数
)

model.evaluate(test_data_y)  # 使用测试集测试模型


这样可以降低测试集的损失和收敛情况,以保证模型不容易过拟合

拿到代码之后修改算法的几种方案

  • 第一种:多加几层卷积层、池化层和全连接层
tf.teras.Sequential([
	layers.lambda((lambda x : tf_fn(
		process_base64_image,x,
		fn_output_signaturetf.TensorSpec(shape=(int(img_height),int(img_width),3),dtype=tf.float32)
		)
		),
		name="image_decode_png"
		),
	layers.ConV2D(32,(3,3),activation='relu'),
	layers.MaxPooling2D(2,2),
	layers.ConV2D(64,(3,3),activation='relu'),
	layers.MaxPooling2D(2,2),
	layers.ConV2D(128,(3,3),activation='relu')
	layers.Flatten(),
	layers.Dense(128,activation='relu'),
	layers.Dense(class_nums,activation="softmax")
])
  • 第二种:使用vgg网络
from tensorflow.keras.applications.vgg16 import VGG16 
# 构建vgg16网络并使其预置参数冻结
base_model = VGG16(weights="imagenet",include_top=False,input_shape=(int(img_height),int(image_width,3)))
for layer in base_model.layers:
	layer.trainable = False

input_layer = base_model.input # 获取vgg的输入层
x = layers.Flatten()(input_layer)
x = layers.Dense(128,activation='relu')(x)
outputs = layers.Dense(class_nums,activation="softmax")(x)

# 构建完整的模型
tf.keras.Sequential([
	layers.lambda(),
	base_model,
	outputs
])

  • 第三种:使用残差网络
from tensorflow.keras.applications.resnet50 import ResNet50
# 构建ResNet50模型并使其预置参数冻结

base_model = ResNet50(weights='imagenet',include_top=False,input_shape=(int(img_height),int(img_width),3))
for layer in base_model.layers:
	layer.trainable = False
	

x = base_model.output
x = layers.GlobalAveragePoolMax2D()(x)
x = layers.Dense(1024,activation='relu')(x)
output = layers.Dense(class_nums,activation='sotfmax')(x)

# 构建完整模型
model = tf.keras.Sequential([
	layers.lambda(),
	base_model,
	output
])

模型导出

# 模型导出
import pytz
from datetime import datetime
model_version = datetime.now(pytz.timezone("Asia/Shanghai")).strftime("%Y%m%d%H%M%S")

tf.keras.models.save_model(model,f'/model/slot1/{model_version}',overwrite=True)

模型的使用(部署)

导出模型之后就需要使用这个模型,一共有两种方法来使用这个模型

  1. TensotFlow-Serving
  2. 使用tf自带的包加载

本帖只讲解TensorFlow-Serving使用模型的方式

TensorFlow-Serving是一种灵活的高性能服务系统,适用于机器学习模型,专为生产环境而设计。TensotFlow Serving 可以轻松部署新算法和实验,同时保持相同的服务器架构和构。TensorFlow-Serving提供与TensorFlow模型的开箱即用集成,但可以轻松扩展以提供类型的模型和数据。

重点:通过api部署

TensorFlow中的图像预处理

有一些图像预处理的方法是万能通用的:

  • 归一化处理
    将像素值缩放到0到1之间,或者-1到1之间,以消除由于光照条件不同而导致的亮度差异。这可以通过减去所有像素值的平均值,然后除以标准差来实现

  • 数据增强

通过旋转、翻转、平移、裁剪等操作来增加数据集的大小,从而提高模型的泛化能力。

import tensorflow as tf
from tensorflow.keras.preprocessing.image import ImageDataGenerator

# 创建一个ImageDataGenerator对象,设置旋转、翻转、平移等操作
datagen = ImageDataGenerator(
    rotation_range=40,  # 随机旋转角度范围
    width_shift_range=0.2,  # 水平平移范围
    height_shift_range=0.2,  # 垂直平移范围
    shear_range=0.2,  # 剪切强度
    zoom_range=0.2,  # 缩放范围
    horizontal_flip=True,  # 是否进行水平翻转
    fill_mode='nearest'  # 填充新创建像素的方法
)

# 加载图片
img = tf.keras.preprocessing.image.load_img('R.jpg')
x = tf.keras.preprocessing.image.img_to_array(img)
x = x.reshape((1,) + x.shape)

# 使用ImageDataGenerator生成增强后的图片
i = 0
for batch in datagen.flow(x, batch_size=1):
    i += 1
    if i > 20:  # 生成20张增强后的图片
        break
    image = tf.keras.preprocessing.image.array_to_img(batch[0])
    image.save('save/augmented_image_' + str(i) + '.jpg')

图片处理方式及其理由

  • 将图像转换为灰度图
    理由:将彩色图像转为灰度图像,可以减少数据量,简化计算,降低图像处理的复杂度,提高图像的处理速度和准确性。
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)  
  • 增强图像对比度
    理由: 图像对比度提高,图像中的物体边缘和细节就会变得容易识别,从而提高图像识别和分析的准确性
alpha = 1.5   
beta = 0    
img = cv2.convertScaleAbs(gray_img, alpha=alpha, beta=beta)  
  • 锐化图像
    理由:锐化图像可以增强图像的边缘和细节,提高图像的清晰度和对比度,从而可能提高模型准确度。
kernel = np.array([[0, -1, 0], [-1, 5,-1], [0, -1, 0]])
img = cv2.filter2D(img, -1, kernel)

软件调试流程

进入到Kimage软件之后就是点击设备 (从左往右数第三个)
在这里插入图片描述
点击比赛使用的设备
在这里插入图片描述
点击回原点
在这里插入图片描述
移动点位,将画板移动到笔的正下方,笔尖轻触画纸
在这里插入图片描述

调整完毕后,点击第二个按钮进入主流程
在这里插入图片描述
点击初始位置,改变画笔下降高度为刚刚轻触在纸上的高度 速度调到50
在这里插入图片描述
进入MVVIEWER软件 网口配置好之后连接摄像头 在连接的同时调整亮度,保证在软件中看的清楚图像的画面在这里插入图片描述

打开图像识别客户端 查看配置可以看到图像识别客户端所在的网口 是2网段,所以工控机和相机连接的网口也一定是要2网段在这里插入图片描述

在自己电脑运行虚拟机 并且在浏览器中进入大数据平台
在这里插入图片描述
在图像检测客户端中点击开始 运行训练模式
在这里插入图片描述
相机会拍摄四张照片
在这里插入图片描述
接着人工截取四个工件并标记合格与不合格

点击提交(提交前要更换下一张纸)

训练完成后就可以在云平台查看标注的图片数据 也可以用程序根据接口在这里插入图片描述
访问查找数据

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

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

相关文章

学习笔记二十六:storageclass存储类动态生成存储

storageclass存储类动态生成存储 storageclass作用StorageClass 定义provisioner:供应商reclaimPolicy:回收策略 安装nfs provisioner,用于配合存储类动态生成pv前置条件扩展:什么是sa安装nfs-provisioner程序创建storageclass&am…

DeepSDA

作者未提供代码

会议剪影 | 思腾合力携AI服务器亮相CNCC 2023中国计算机大会

10月26日-28日,第二十届中国计算机大会(CNCC 2023)在沈阳的沈阳新世界博览馆举办。本次大会注册参会观众达到1.3万名,同时还有超过3.6万人次通过CCF视频号直播观看开幕式、特邀报告和大会论坛。直播的4场论坛和活动,人气值达到73万。 “CNCC是…

AR眼镜定制开发-智能眼镜的主板硬件、软件

AR眼镜定制开发是一项复杂而又重要的工作,它需要准备相关的硬件设备和软件。这些设备包括多个传感器、显示装置和处理器等。传感器用于捕捉用户的动作和环境信息,如摄像头、陀螺仪、加速度计等;显示装置则用于将虚拟信息呈现给用户;处理器用于处理和协调…

关于服务端构件模型的典型解决方案

关于服务端构件模型的典型解决方案包括 适用于应用服务器的EJB模型(Sun公司J2EE的一部分)和COM模型(微软公司), 以及适用于Web服务器的servlet模型(基于Sun公司JSP技术)和Visual Basic及其他技…

NIFI1.23.2_最新版_性能优化通用_技巧积累_使用NIFI表达式过滤表_随时更新---大数据之Nifi工作笔记0063

nifi好用,但是对机器的性能要求也高,如果性能达不到,就会导致,问题发生,比如,队列里显示有内容,但是实际上队列是空的,清也清不掉,只能重启,很麻烦. 关于优化:1.配置前端页面刷新的间隔时间默认30秒,我们可以自己需要看的时候手动刷新我们改成300sec 2.修改CPU阻塞时间,提高CPU…

CSS3网页布局基础

CSS布局始于第2个版本,CSS 2.1把布局分为3种模型:常规流、浮动、绝对定位。CSS 3推出更多布局方案:多列布局、弹性盒、模板层、网格定位、网格层、浮动盒等。本章重点介绍CSS 2.1标准的3种布局模型,它们获得所有浏览器的全面、一致…

【Unity】Addressables资源管理笔记

【Unity】Addressables资源管理笔记 Addressables是一种用于管理资源的系统。允许以一种灵活的方式加载、卸载和管理资源,无论是场景、预制件、材质、纹理、音频剪辑等。 一、快速实现 安装Addressables插件 把对象添加到组 1)打开AddressablesGroups面…

本地创建一个虚拟机,并且能够连接到外网

1、从官网下载虚拟机 2、详细的安装教程 点击这里 其中这里的获取,我们店自动IP地址获取就行了,DNS也是自动获取就行了。 4、注意事项 4.1 linux命令:vim: command not found无法使用解决方案, 点击这里

tensorflow-gpu轮子安装

文章目录 简介一、虚拟环境二、安装 TensorFlow-GPU(最新)版本三、安装 TensorFlow-GPU(指定)版本四、打印信息4.1、检查当前TensorFlow版本号4.2、检查当前TensorFlow是否支持GPU4.3、检查当前PyTorch是否支持GPU4.4、选择Tensor…

漏洞复现--金蝶云星空 CommonFileServer 任意文件读取

免责声明: 文章中涉及的漏洞均已修复,敏感信息均已做打码处理,文章仅做经验分享用途,切勿当真,未授权的攻击属于非法行为!文章中敏感信息均已做多层打马处理。传播、利用本文章所提供的信息而造成的任何直…

redis 网课笔记

缓存 缓存雪崩 缓存雪崩是指在同一时段大量的缓存key同时失效或者Redis服务宕机,导致大量请求到达数据库。 解决方案 给不同的key的TTL添加随机值利于Redis集群提高服务的可用性 哨兵模式、集群模式给缓存业务添加降级限流策略 ngxin或spring cloud gateway给业务…

Python中如何使用pandas和matplotlib库绘制图表

目录 一、引言 二、pandas基础 三、matplotlib基础 四、pandas与matplotlib的结合 五、高级图表与深度分析 结论 本文详细探讨了Python中两个重要的库——pandas和matplotlib,它们在数据处理和可视化中的应用。通过实例代码,我们深入了解了如何利用…

WhatsApp Business账户被封?常见封号原因解析

目前,作为全球即时通讯领域的重要平台之一的WhatsApp已成为企业在营销和与客户沟通时的首选工具。但是长时间、高强度的营销行为很容易导致WhatsApp Business账户突然被封禁,无法再使用账号。即使后续再去进行申诉,要求官方解封该账户&#x…

网络安全(黑客)-小白自学笔记

1.网络安全是什么 网络安全可以基于攻击和防御视角来分类,我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术,而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 2.网络安全市场 一、是市场需求量高; 二、则是发展相对成熟…

如何进行回馈式直流负载测试

回馈式直流负载测试是将负载连接到电源输出端,以模拟实际工作条件,然后测量电源在不同负载条件下的性能表现,包括直流负载、电源供应器、电流表和电压表等。确保这些设备能够满足测试需求,将电源供应器的正极连接到直流负载的输入…

PyQt界面开发的终极指南

文章目录 前言一、PyQt 简介二、PyQt 与 Qt 的蒙娜丽莎三、PyQt 布局管理器3.1、简介3.2、项目实战3.2.0、添加伸缩项 layout.addStretch:控制布局中组件之间的间距。3.2.1、垂直布局管理器 QVBoxLayout:控件按照从上到下的顺序排列3.2.2、水平布局管理器…

无忧企业文档2.1.8版本新增文档级权限控制

无忧企业文档是一款针对企业用户提供在线文档、协同编辑、知识管理的基础化办公工具,产品采用B/S构架。功能覆盖场景包括:在线文档的私有化部署、团队协同、知识管理、在线文档识别的扩展、文档权限化管理等等场景。本次2.1.8版本新增了文档级权限控制核…

第七届“蓝帽杯”决赛圆满收官 | 赛宁网安全程提供技术保障

10月29日,由公安部网络安全保卫局、教育部教育管理信息中心、中国教育协会指导,中国人民公安大学主办,奇安信科技集团股份有限公司协办,南京赛宁信息技术有限公司提供技术支持的2023第七届“蓝帽杯”全国大学生网络安全技能大赛决…

搜维尔科技:scalefit生物力学人体工学软件分析!

人体工程学分析 21加载参数和头像显示 识别(隐藏的)健康风险 根据DGUV交通灯进行生物反馈(DIN/ISO) 实时应力分析 三维空间可视化 静态/动态肩载 用左/右赋值加载输入 腰椎间盘压缩计算 距离和定时器显示 带有运动跟踪的化身/视频叠加 外骨骼与CAD工作站仿真 CSV原始…