TensorBoard ,PIL 和 OpenCV 在深度学习中的应用

news2024/9/23 9:34:17

重要工具介绍

TensorBoard:

是一个TensorFlow提供的强大工具,用于可视化和理解深度学习模型的训练过程和结果。下面我将介绍TensorBoard的相关知识和使用方法。
TensorBoard 简介
TensorBoard是TensorFlow提供的一个可视化工具,用于:

1.可视化模型的图形结构(Graph Visualization)。
2.跟踪和可视化指标(metrics)如损失和准确率随时间的变化。
3.显示图像数据、音频数据和其他数据类型。
4.查看训练过程中生成的直方图、分布和统计信息等。

安装TensorBorad

or

pip install tensorboard

代码示例: 

import torch
from torch.utils.tensorboard import SummaryWriter
writer = SummaryWriter()
for i in range(100):
    writer.add_scalar("y=x**2",i**2,i)
    writer.close()

 

使用 TensorBoard

1. 设置 TensorBoard 回调


在TensorFlow中,你需要通过TensorBoard回调来记录数据,以便后续在TensorBoard中查看。通常在训练模型时设置TensorBoard回调。

示例代码如下:

import tensorflow as tf
from tensorflow.keras.callbacks import TensorBoard

# 创建一个TensorBoard回调,指定日志存储的目录
tensorboard_callback = TensorBoard(log_dir="./logs")

# 使用回调来训练你的模型
model.fit(x_train, y_train, epochs=10, callbacks=[tensorboard_callback])

在这个例子中,log_dir 参数指定了TensorBoard日志存储的目录路径,训练完成后,会在该目录下生成日志文件,用于后续的可视化。

2. 启动 TensorBoard

训练完成后,你可以通过命令行启动TensorBoard来可视化日志文件

tensorboard --logdir=./logs

这将启动一个本地服务器,默认端口为6006(可以通过--port参数修改),你可以在浏览器中访问 http://localhost:6006(或者相应的端口)来查看TensorBoard的界面。


3. TensorBoard 页面功能


TensorBoard页面的功能包括:

Scalars(标量):用于显示指标随时间的变化,如损失和准确率。
Graphs(图形):展示模型的计算图,有助于理解模型结构和操作流程。
Distributions(分布) 和 Histograms(直方图):用于查看权重和梯度的分布和直方图,有助于调试和优化模型。
Images(图像) 和 Audio(音频):用于显示训练过程中产生的图像和音频数据。
Projector(投影仪):用于高维数据的降维可视化,如嵌入向量。

4. 高级功能

除了基本的使用外,TensorBoard还支持一些高级功能,如自定义可视化和在远程服务器上运行。你可以根据具体的需求和应用场景进一步探索这些功能。


通过正确设置TensorBoard回调和启动TensorBoard服务器,你可以轻松地监控和分析模型的训练过程和结果,从而做出更好的调整和决策。

OpenCV介绍:(Open Source Computer Vision Library)

是一个开源的计算机视觉库,它提供了丰富的图像处理和计算机视觉算法。下面是关于OpenCV的一些基本信息和其主要用途:


OpenCV 的基本信息:

开源性质:OpenCV 是一个开源项目,允许用户自由地使用、修改和分发其源代码。
跨平台:OpenCV 可以在多个平台上运行,包括Windows、Linux、Mac OS X、Android 等。
多语言支持:OpenCV 主要使用C++编写,但也提供了Python、Java等多种语言的接口。
丰富的功能:OpenCV 提供了丰富的图像处理和计算机视觉算法,涵盖了从基本的图像处理操作(如滤波、边缘检测、色彩空间转换等)到高级的计算机视觉任务(如目标检测、人脸识别、物体跟踪等)的各个方面。

OpenCV 的主要用途:

图像处理:

提供了大量的图像处理功能,例如:图像滤波、图像增强、几何变换(如旋转、缩放)、色彩空间转换、直方图均衡化等。

计算机视觉:

在计算机视觉领域,OpenCV 提供了许多算法和工具,如特征检测(SIFT、SURF等)、目标检测(Haar 级联检测器、深度学习模型)、物体跟踪、摄像头标定、立体视觉等。

机器学习集成:

OpenCV 与机器学习的集成能力较强,支持主流的机器学习库(如 TensorFlow、PyTorch),可以进行图像分类、图像分割、人脸识别等任务。

实时图像处理:

由于其高效的设计和实现,OpenCV 适合于实时图像处理和视频处理应用,例如实时物体检测、视频流处理、运动跟踪等。

教育和研究:

OpenCV 不仅在工业界广泛应用,还被广泛用于教育和研究领域,作为计算机视觉和图像处理的教学工具和研究平台。

总之,OpenCV 是一个功能强大且广泛应用于图像处理和计算机视觉领域的开源库,为开发者提供了丰富的工具和算法,帮助他们实现各种复杂的图像处理和计算机视觉任务。

PIL

是 Python Imaging Library 的缩写,是一个用于图像处理的 Python 库。它提供了许多方便的图像处理功能,包括打开、操作和保存多种图像文件格式(如JPEG、PNG、BMP等),以及基本的图像操作(如裁剪、调整大小、旋转等)和高级的图像处理技术(如滤波、图像增强、颜色转换等)。


主要特点和功能:

图像读写:

PIL 允许用户打开和保存多种常见的图像文件格式,使得用户可以轻松处理不同格式的图像数据。

基本图像操作:

包括图像的裁剪、调整大小、旋转、镜像等基本的几何变换和操作。

图像增强:

提供了各种图像增强技术,如锐化、模糊、边缘增强、颜色增强等,以改善图像质量或凸显特定特征。

色彩空间转换:

支持颜色空间的转换,如RGB到灰度、RGB到HSV等,方便用户进行颜色信息的分析和处理。

图像滤波:

提供了一系列的图像滤波器,如高斯滤波、中值滤波等,用于平滑图像或去除噪声。

图像合成和处理:

允许用户在图像上绘制文本、图形和其他图像,进行复杂的图像合成和处理操作。

支持批量处理:

可以轻松地批量处理图像文件,进行相同或类似的操作,提高处理效率。

跨平台:

PIL 可以在多个平台上运行,并且易于安装和使用,适合不同应用场景的图像处理需求。

注意事项:

PIL 目前维护较少,推荐使用其后续开发的 Pillow 库(PIL Fork),它在功能和性能上都有所增强,并且对 Python 3 的支持更好。

pytorch中较为重要的两个函数

dir():

能 让 我 们 知 道 工 具 箱 以 及 工 具 箱 (pytorch包)中 的 分 隔 区 有 什 么 东 西 。 (相当于打开包的作用)

help():

能 让 我 们 知 道 每 个 工 具 是 如 何 使 用 的 , 工 具 的 使 用 方 法 。(相当于说明书

当你引入一个新模块时,你可以先用dir()查看模块中的内容,然后使用help()来深入了解特定函数或类的用法和功能。

代码示例1:

import numpy as np
print(dir(np))
help(np.arange)

加载数据

dataset:

提供一种数据去获取数据以及标签和编号,可以看到每个要获取的数据以及lable

dataloader:

为后面的网络提供不同的数据形式,对dataset里的数据进行打包操作,加载数据,告诉我们总共有多少数据

代码示例2:

import torch
from torch.utils.data import Dataset, DataLoader


# 定义自定义的Dataset类
class CustomDataset(Dataset):
    def __init__(self, data, targets):
        self.data = data
        self.targets = targets

    def __len__(self):
        return len(self.data)

    def __getitem__(self, index):
        x = self.data[index]
        y = self.targets[index]
        return x, y


# 假设有一些数据和对应的标签
data = torch.randn(100, 3, 32, 32)  # 100个3通道的32x32图像数据
targets = torch.randint(0, 10, (100,))  # 100个随机的0-9的整数标签

# 创建自定义的Dataset实例
dataset = CustomDataset(data, targets)

# 使用DataLoader加载数据
batch_size = 10
dataloader = DataLoader(dataset, batch_size=batch_size, shuffle=True)

# 迭代DataLoader获取数据
for batch_idx, (inputs, labels) in enumerate(dataloader):
    # 在这里可以对每个批次的数据进行操作,例如送入模型进行训练
    print(f'Batch {batch_idx}: Inputs shape {inputs.shape}, Labels shape {labels.shape}')

下面是运行结果

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

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

相关文章

visual studio开发C++项目遇到的坑

文章目录 1.安装的时候,顺手安装了C模板,导致新建项目执行出问题2.生成的exe,打开闪退问题3.项目里宏的路径不对,导致后面编译没有输出4. vs编译ui,warning跳过,未成功5.vs编译.h,warning跳过&a…

python自动化之用flask校验接口token(把token作为参数)

用到的库:flask 实现效果: 写一个接口,需要token正确才能登录 代码: # 导包 from flask import Flask,request,jsonify,json # 创建一个服务 appFlask(__name__) # post请求,路径:/query app.route(/query, met…

spring boot(学习笔记第十三课)

spring boot(学习笔记第十三课) Spring Security的logout,传统后端开发模式和前后端分离模式的不同,invalidateHttpSession不好用,bug? 学习内容: 传统后端开发模式 vs 前后端分离模式Spring Security的logout功能 1.…

WPF学习(4) -- 数据模板

一、DataTemplate 在WPF(Windows Presentation Foundation)中,DataTemplate 用于定义数据的可视化呈现方式。它允许你自定义如何展示数据对象,从而实现更灵活和丰富的用户界面。DataTemplate 通常用于控件(如ListBox、…

pytorch中一些最基本函数和类

1.Tensor操作 Tensor是PyTorch中最基本的数据结构,类似于NumPy的数组,但可以在GPU上运行加速计算。 示例:创建和操作Tensor import torch# 创建一个零填充的Tensor x torch.zeros(3, 3) print(x)# 加法操作 y torch.ones(3, 3) z x y pr…

C++进阶(while循环——函数应用)

知识点代码框架总结 输入n组数据 ,对n组数据里面的每一组进行处理(输出、求和 、运算、其他) int n;//几组数据cin >> n;//2while(n--){//对每组数据进行处理}看到下面的样例,肌肉型反映出上面的框架//2// 1 2 3// 4 5 6若…

Golang | Leetcode Golang题解之第233题数字1的个数

题目: 题解: func countDigitOne(n int) (ans int) {// mulk 表示 10^k// 在下面的代码中,可以发现 k 并没有被直接使用到(都是使用 10^k)// 但为了让代码看起来更加直观,这里保留了 kfor k, mulk : 0, 1;…

二叉搜索树大冒险:寻找-插入-删除

OK,看我们题目就可知道啦,今天要分享学习的一种数据结构就是二叉搜索树。 内容题目也说了三个大概的,分别是寻找、插入、删除。 讲这个之前呢,那么就先讲讲这个二叉搜索树是何方神圣呢? 二叉搜索树: 又…

移动端 火星坐标体系、百度坐标体系和全球坐标体系,该如何选择?

项目场景: 在梳理项目代码时,看到代码中的WGS-84,忽然想起有次面试问我这个问题,今天就好好的梳理下这个问题。 问题描述 移动端获取定位一般用什么编码?为什么要用这个? 原因分析: 解决方案&…

J025_斗地主游戏案例开发(简版)

一、需求描述 完成斗地主游戏的案例开发。 业务:总共有54张牌; 点数:3、4、5、6、7、8、9、10、J、Q、K、A、2 花色:黑桃、红桃、方片、梅花 大小王:大王、小王 点数分别要组合4种花色,大小王各一张。…

LeetCode --- 134双周赛

题目 3206. 交替组 I 3207. 与敌人战斗后的最大分数 3208. 交替组 II 3209. 子数组按位与值为 K 的数目 一、交替组 I & II 题目中问环形数组中交替组的长度为3的子数组个数,主要的问题在于它是环形的,我们要考虑首尾相接的情况,如何…

【流媒体】 通过ffmpeg硬解码拉流RTSP并播放

简介 目前RTSP拉流是网络摄像头获取图片数据常用的方法,但通过CPU软解码的方式不仅延时高且十分占用资源,本文提供了一种从网络摄像头RTSP硬解码的拉流的方法,并且提供python代码以便从网络摄像头获取图片进行后续算法处理。 下载ffmpeg F…

回归求助 教程分享

大侠幸会,在下全网同名「算法金」 0 基础转 AI 上岸,多个算法赛 Top 「日更万日,让更多人享受智能乐趣」 今日 217/10000 抱个拳,送个礼 更多内容,见微*公号往期文章:通透!!十大回…

Python | Leetcode Python题解之第233题数字1的个数

题目: 题解: class Solution:def countDigitOne(self, n: int) -> int:# mulk 表示 10^k# 在下面的代码中,可以发现 k 并没有被直接使用到(都是使用 10^k)# 但为了让代码看起来更加直观,这里保留了 kk,…

计算机网络——网络层(IP地址与MAC地址、地址解析协议ARP、IP数据报格式以及转发分组、ICMP、IPV6)

IP地址与MAC地址 由于MAC地址已固化在网卡上的ROM 中,因此常常将 MAC地址称为硬件地址或物理地址;物理地址的反义词就是虚拟地址、软件地址或逻辑地址,IP地址就属于这类地址。 从层次的角度看,MAC地址是数据链路层使用的地址&…

基于lstm的股票Volume预测

LSTM(Long Short-Term Memory)神经网络模型是一种特殊的循环神经网络(RNN),它在处理长期依赖关系方面表现出色,尤其适用于时间序列预测、自然语言处理(NLP)和语音识别等领域。以下是…

特殊记忆柱群、特殊感觉中枢、强度中枢

智能软件的某些思维状态的标志,能够被一般感觉中枢“先天”感知,或者是与一般感觉中枢“后天”建立记忆联系。在它们建立奖惩记忆联系后,这些思维状态能够兴奋特殊感觉中枢或者一般感觉中枢对应的记忆柱群,也能够被相应感觉中枢的…

【大模型书籍】复旦新出!大规模语言模型:从理论到实践(推荐)

自2018年以来&#xff0c;包含Google、OpenAI、Meta、百度、华为等公司和研究机构都纷纷发布了包括BERT&#xff0c; GPT等在内多种模型&#xff0c;并在几乎所有自然语言处理任务中都表现出色。 今天给大家推荐一本大模型方面的书籍<大规模语言模型&#xff1a;从理论到实…

【数学建模】——力学模型建立的基本理论及方法

目录 一、基本理论 1. 牛顿力学 1.1 牛顿第一定律&#xff08;惯性定律&#xff09; 1.2 牛顿第二定律&#xff08;动力学定律&#xff09; 1.3 牛顿第三定律&#xff08;作用反作用定律&#xff09; 2. 能量守恒定律 2.1 动能和势能 2.2 能量守恒 3. 动量守恒定律…

简易秒表的实现

目录 描述 输入描述&#xff1a; 输出描述&#xff1a; 参考代码 描述 请编写一个模块&#xff0c;实现简易秒表的功能&#xff1a;具有两个输出&#xff0c;当输出端口second从1-60循环计数&#xff0c;每当second计数到60&#xff0c;输出端口minute加一&#xff0c;一直…