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

这篇具有很好参考价值的文章主要介绍了比赛准备笔记 --- TensotFlow、软件调试、数据预处理(图像,csv数据)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

简介

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)  # 使用测试集测试模型

比赛准备笔记 --- TensotFlow、软件调试、数据预处理(图像,csv数据),人工智能,笔记,人工智能,深度学习,ipython,计算机视觉,机器学习,tensorflow
这样可以降低测试集的损失和收敛情况,以保证模型不容易过拟合

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

  • 第一种:多加几层卷积层、池化层和全连接层
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软件之后就是点击设备 (从左往右数第三个)
比赛准备笔记 --- TensotFlow、软件调试、数据预处理(图像,csv数据),人工智能,笔记,人工智能,深度学习,ipython,计算机视觉,机器学习,tensorflow
点击比赛使用的设备
比赛准备笔记 --- TensotFlow、软件调试、数据预处理(图像,csv数据),人工智能,笔记,人工智能,深度学习,ipython,计算机视觉,机器学习,tensorflow
点击回原点
比赛准备笔记 --- TensotFlow、软件调试、数据预处理(图像,csv数据),人工智能,笔记,人工智能,深度学习,ipython,计算机视觉,机器学习,tensorflow
移动点位,将画板移动到笔的正下方,笔尖轻触画纸
比赛准备笔记 --- TensotFlow、软件调试、数据预处理(图像,csv数据),人工智能,笔记,人工智能,深度学习,ipython,计算机视觉,机器学习,tensorflow

调整完毕后,点击第二个按钮进入主流程
比赛准备笔记 --- TensotFlow、软件调试、数据预处理(图像,csv数据),人工智能,笔记,人工智能,深度学习,ipython,计算机视觉,机器学习,tensorflow
点击初始位置,改变画笔下降高度为刚刚轻触在纸上的高度 速度调到50
比赛准备笔记 --- TensotFlow、软件调试、数据预处理(图像,csv数据),人工智能,笔记,人工智能,深度学习,ipython,计算机视觉,机器学习,tensorflow
进入MVVIEWER软件 网口配置好之后连接摄像头 在连接的同时调整亮度,保证在软件中看的清楚图像的画面比赛准备笔记 --- TensotFlow、软件调试、数据预处理(图像,csv数据),人工智能,笔记,人工智能,深度学习,ipython,计算机视觉,机器学习,tensorflow

打开图像识别客户端 查看配置可以看到图像识别客户端所在的网口 是2网段,所以工控机和相机连接的网口也一定是要2网段比赛准备笔记 --- TensotFlow、软件调试、数据预处理(图像,csv数据),人工智能,笔记,人工智能,深度学习,ipython,计算机视觉,机器学习,tensorflow

在自己电脑运行虚拟机 并且在浏览器中进入大数据平台
比赛准备笔记 --- TensotFlow、软件调试、数据预处理(图像,csv数据),人工智能,笔记,人工智能,深度学习,ipython,计算机视觉,机器学习,tensorflow
在图像检测客户端中点击开始 运行训练模式
比赛准备笔记 --- TensotFlow、软件调试、数据预处理(图像,csv数据),人工智能,笔记,人工智能,深度学习,ipython,计算机视觉,机器学习,tensorflow
相机会拍摄四张照片
比赛准备笔记 --- TensotFlow、软件调试、数据预处理(图像,csv数据),人工智能,笔记,人工智能,深度学习,ipython,计算机视觉,机器学习,tensorflow
接着人工截取四个工件并标记合格与不合格

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

训练完成后就可以在云平台查看标注的图片数据 也可以用程序根据接口比赛准备笔记 --- TensotFlow、软件调试、数据预处理(图像,csv数据),人工智能,笔记,人工智能,深度学习,ipython,计算机视觉,机器学习,tensorflow
访问查找数据文章来源地址https://www.toymoban.com/news/detail-736625.html

到了这里,关于比赛准备笔记 --- TensotFlow、软件调试、数据预处理(图像,csv数据)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python数据分析之特征处理笔记三——特征预处理(特征选择)

    书接上文,进行数据清洗过程后,我们得到了没有空值、异常值、错误值的数据,但想要用海量的数据来建立我们所需要的算法模型,仅仅是数据清洗的过程是不够的,因为有的数据类型是数值,有的是字符,怎样将不同类型的数据联系起来?以及在保证最大化信息量的前提

    2024年02月02日
    浏览(50)
  • 水比赛专用-蓝牙调试器

    做比赛的时候免不了要做一些页面方面的展示,亦或者一些遥控什么的方面的远程启动 ,常见的无线通信方式如蓝牙,wifi等是很多大学生竞赛中的常客,因此这里我就把我之前用的很熟的一款蓝牙调试器给分享下,同时也算是做个记录吧! 该调试器是某大佬做的,我只是应

    2024年02月01日
    浏览(42)
  • matlab数据的获取、预处理、统计、可视化、降维 | 《matlab数学建模方法与实践(第三版)》学习笔记

    一、数据的获取 1.1 从Excel中获取 使用readtable() 使用xlsread()——xlswrite() 1.2  从TXT中获取 使用load() 使用textread() 使用fopen() fread() fclose()  使用fprintf()写入信息到txt  1.3 从图片中获取 使用imread  1.4 从视频获取  使用视觉工具箱中的VideoFileReader  二、数据的预处理 2.1 缺失值处

    2024年01月19日
    浏览(67)
  • cuda面试准备(一),架构调试

    SP (streaming Process) ,SM (streaming multiprocessor) 是硬件(GPUhardware) 概念。而thread,block,grid,warp是软件上的(CUDA) 概念 SP:最基本的处理单元,streaming processor,也称为CUDA core,最后具体的指令和任务都是在SP上处理的。GPU进行并行计算,也就是很多个SP同时做处理。 SM: 多个SP加上其他

    2024年02月11日
    浏览(38)
  • 软件无线电通达杯比赛shuibi(上)

    以前没打过这种比赛,接到通知已经开始1个月了,而这软件无线电之前一点也没有做过,加入比赛群,基本上都是大三大四通信工程的人居多,而我只是一个菜鸡光电生,在线瑟瑟发抖。拉来了两个不靠谱的队友(基本上只是口头支持,到最后,基本上是我带低年级搞完的)

    2023年04月16日
    浏览(43)
  • 调试linux内核(1): 环境准备和原理介绍

    现在流行的开源项目经历了长时间的开发, 积累了大量的代码, 想要一行一行地阅读代码去学习开源项目, 需要的时间成本是巨大的. 所以, 我们也需要用一种高效的方式去\\\"阅读\\\"代码. 计算机科学发展到现在, 产生了很多高效成熟的工具, 调试器就是其中之一(扯句题外话, 那些大

    2024年02月14日
    浏览(39)
  • ELK安装、部署、调试(一)设计规划及准备

    一、整体规划如图: 【filebeat】 需要收集日志的服务器,安装filebeat软件,用于收集日志。logstash也可以收集日志,但是占用的系统资源过大,所以使用了filebeat来收集日志。 【kafka】 接收filebeat的日志,进行队列及缓存,kafka使用集群的方式搭建,避免了filebeat直接向logstas

    2024年02月10日
    浏览(47)
  • 在C++中控制调试信息的输出通常通过预处理指令(如 #define)和条件编译指令(如 #ifdef、#ifndef、#endif)来实现。

    在C++中,控制调试信息的输出通常通过预处理指令(如 #define )和条件编译指令(如 #ifdef 、 #ifndef 、 #endif )来实现。这种方法提供了一种灵活的方式来包含或排除调试代码,而无需对代码本身进行大量修改。以下是实现这一功能的一种常见方法: 定义一个宏用于控制调试

    2024年02月02日
    浏览(41)
  • 目标检测笔记(十五): 使用YOLOX完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)

    目标检测(Object Detection)是计算机视觉领域的一项重要技术,旨在识别图像或视频中的特定目标并确定其位置。通过训练深度学习模型,如卷积神经网络(CNN),可以实现对各种目标的精确检测。常见的目标检测任务包括:人脸检测、行人检测、车辆检测等。目标检测在安防

    2024年02月09日
    浏览(45)
  • 目标检测笔记(十四): 使用YOLOv8完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)

    目标检测(Object Detection)是计算机视觉领域的一项重要技术,旨在识别图像或视频中的特定目标并确定其位置。通过训练深度学习模型,如卷积神经网络(CNN),可以实现对各种目标的精确检测。常见的目标检测任务包括:人脸检测、行人检测、车辆检测等。目标检测在安防

    2024年02月07日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包