从零开始用Tensorboard(Pytorch)

本文详细介绍了如何在PyCharm中通过torch库生成CIFAR10数据集的日志文件,并使用TensorBoard进行数据可视化,以及如何在Anaconda环境中启动TensorBoard查看日志。
部署运行你感兴趣的模型镜像

1. 准备工作
安装tensorboard库,在Anaconda中执行以下代码:

conda install tensorboardX
conda install tensorboard

2. Tensorboard的使用
Tensorboard的使用可以分为两方面:

  • pycharm或者jupyter中生成需要可视化的数据的日志文件(log)
  • Anaconda中将日志文件中的数据可视化到网页

2.1 在pycharm中生成需要可视化的数据的日志文件(log)

#导入数据集的包
import torchvision.datasets
#导入dataloader的包
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriter
 
#创建测试数据集
test_dataset = torchvision.datasets.CIFAR10(root="./CIRFA10",train=False,transform=torchvision.transforms.ToTensor())
#创建一个dataloader,设置批大小为64,每一个epoch重新洗牌,不进行多进程读取机制,不舍弃不能被整除的批次
test_dataloader = DataLoader(dataset=test_dataset,batch_size=64,shuffle=True,num_workers=0,drop_last=False)
 
writer = SummaryWriter("log")
 
#loader中对象
step = 0
for data in test_dataloader:
    imgs,targets = data
    writer.add_images("loader",imgs,step)
    step+=1
 
writer.close()

2.2 在Anaconda中将日志文件中的数据可视化到网页

tensorboard --logdir="E:\untitled\log"

上面代码中“logdir=”之后的地址为在pycharm中生成的日志文件的地址,比如2.1节代码示例中的日志地址,即log文件的地址,为:
在这里插入图片描述
然后打开Anaconda给出的网页 http://localhost:6006/,如下图所示:
在这里插入图片描述
然后就能看到:
在这里插入图片描述

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

<think>好的,我需要帮助用户了解如何从零开始使用MVSNet,他们想要一个入门指南或者教程。首先,我得回忆一下MVSNet的基本概念和应用场景。MVSNet主要用于多视图立体视觉,通过深度学习从多个视角的图像中重建三维结构。用户可能对三维重建、深度学习框架有一定的了解,但作为入门,需要从基础开始讲解。 接下来,我应该分步骤来构建这个教程。首先可能需要介绍MVSNet的基本原理,这样用户能理解其背后的机制。然后,准备开发环境,比如PythonPyTorch等深度学习框架,以及相关的库如OpenCV。接着,数据准备是关键的一环,可能需要用户下载特定格式的数据集,比如DTU数据集,并了解如何预处理这些数据。 然后是模型构建部分,需要详细说明MVSNet的网络结构,比如特征提取、可微分单应变换、代价体正则化和深度图回归等模块。这里可能需要用代码片段来展示如何用PyTorch实现这些模块。训练过程需要解释损失函数、优化器选择以及训练参数设置。验证和测试部分同样重要,用户需要知道如何评估模型性能,比如使用精度和召回率等指标。 此外,部署和应用部分可以帮助用户将训练好的模型应用到实际的三维重建任务中,可能需要介绍如何使用开源工具如Open3D进行点云处理和可视化。最后,常见问题解答能帮助用户解决在实践过程中可能遇到的典型问题,比如显存不足、数据集处理困难等。 在编写过程中,需要注意使用正确的中文表达,确保LaTeX公式的格式符合要求,行内公式用$...$,独立公式用$$...$$。同时,引用相关的文献或资源时要添加引用标识,比如提到DTU数据集时引用对应的资料。另外,生成的相关问题需要与MVSNet的学习和应用相关,帮助用户进一步探索。 现在需要检查是否有遗漏的步骤,比如环境配置的细节、代码示例的正确性,以及是否覆盖了用户可能遇到的常见问题。确保每个部分逻辑清晰,逐步引导用户从零开始搭建和使用MVSNet。同时,要验证提到的工具和库的版本是否兼容,避免用户在实际操作中出现版本冲突的问题。最后,确保所有技术术语解释清楚,适合入门者理解。</think># MVSNet从零开始教程 ## 一、MVSNet基本原理 MVSNet是基于深度学习的多视图立体视觉算法,通过构建三维代价体实现深度图预测。其核心流程包含: 1. 特征提取:使用2D CNN提取多视图图像特征 2. 可微分单应变换:构建特征体(feature volume) 3. 代价体正则化:3D CNN处理特征体 4. 深度图回归:通过soft argmin得到深度估计值 典型网络结构可表示为: $$ C = \sum_{i=1}^{N} w_i \cdot F_i(H_i(d)) $$ 其中$H_i(d)$表示第i个视图的单应变换[^1] ## 二、环境配置 ```bash # 创建conda环境 conda create -n mvsnet python=3.7 conda activate mvsnet # 安装核心依赖 pip install torch==1.8.1+cu111 torchvision==0.9.1+cu111 -f https://download.pytorch.org/whl/torch_stable.html pip install opencv-python tensorboardx matplotlib ``` ## 三、数据准备 推荐使用DTU数据集[^2]: 1. 下载官方数据集(包含128个场景) 2. 数据预处理: ```python def prepare_sample(view_images, camera_params): # 图像归一化 images = [cv2.normalize(img, None, 0, 1, cv2.NORM_MINMAX) for img in view_images] # 相机参数对齐 return { 'images': torch.stack(images), 'K': process_intrinsics(camera_params), 'R': process_rotations(camera_params), 'T': process_translations(camera_params) } ``` ## 四、模型构建 PyTorch实现核心模块: ```python class FeatureExtractor(nn.Module): def __init__(self): super().__init__() self.conv0 = nn.Sequential( nn.Conv2d(3, 8, 3, padding=1), nn.ReLU(inplace=True) ) # 后续层定义... class CostVolumeReg(nn.Module): def forward(self, x): # 3D卷积处理 x = self.conv3d_block(x) # [B,C,D,H,W] return x ``` ## 五、训练流程 ```python model = MVSNet(depth_num=256) optimizer = torch.optim.Adam(model.parameters(), lr=0.001) for epoch in range(100): for batch in dataloader: depth_pred = model(batch['images'], batch['K'], batch['R'], batch['T']) loss = F.smooth_l1_loss(depth_pred, batch['depth_gt']) optimizer.zero_grad() loss.backward() optimizer.step() ``` ## 六、验证与测试 评估指标: - 精度(Accuracy): 预测深度与真值误差<1mm的比例 - 召回率(Completeness): 有效预测区域占比 测试脚本示例: ```python model.eval() with torch.no_grad(): depth_map = model(test_images, K, R, T) point_cloud = depth2pc(depth_map, K[0]) ``` ## 七、部署应用 使用Open3D生成三维模型: ```python import open3d as o3d pcd = o3d.geometry.PointCloud() pcd.points = o3d.utility.Vector3dVector(point_cloud) o3d.visualization.draw_geometries([pcd]) ``` ## 常见问题解答 **Q1 显存不足怎么办?** A. 尝试减小深度采样数(depth_num)或降低输入图像分辨率 **Q2 如何提高重建精度?** A. 可尝试: 1. 增加输入视图数量(推荐5-10视图) 2. 使用更精细的深度采样间隔 3. 加入后处理(如深度图滤波)[^3]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值