【项目实战】本地访问远程服务器上Tensorboard


                        本地访问远程服务器上Tensorboard                         

YOLOv5训练过程中,会在runs/train/XX(配置参数中指定的文件名称 name)下生成一个events文件,熟悉TensorFlow的同学会知道该文件可以用Tensor board打开,并且记录了训练过程中的一些事件,包括收敛曲线、训练(验证)指标等(取决于代码中记录了哪些内容)。在YOLOv5的源码中,记录了指标(精度、准确度、召回率等)、训练(验证)过程的收敛曲线,以及学习率的变化情况。

image-20210301145842243

问题描述

本机是windows系统,YOLOv5的训练程序及相关文件在远端服务器上。通常,会采用Xshell/Termius等软件登录服务器进行相关指令的操作。

如上图所示,YOLOv5训练过程中,在结果文件中会生成event文件,该文件记录了训练过程中的相关情况,对于发现训练过程中过拟合、欠拟合等现象大有裨益。因此,在训练过程中可以使用该文件,并通过tensorboard的方式对训练过程的情况进行检视。指令如下,值得注意的是log_dir指的是文件的目录,而不是文件的路径。

tensorboard --logdir=log_dir

image-20210301151830526

此时,可以在浏览器中输入

http://localhost:6006 

进行查看。如果目标服务器中有VNC,也愿意用远程桌面的方式访问tensor board,可忽略本教程。也就是说,此时使用服务器的浏览器访问上述网址是可以访问到的,但是如果使用本地电脑的浏览器是访问不到的。本篇的目的在于使用本地计算机访问远程目标服务器上tensorboard。

解决方案

适用情况:

  • Pytorch / TensorFlow
  • 需要软件XShell

建立ssh隧道,实现远程端口到本机端口的传递。远程服务器被监听的端口默认为6006端口,本机电脑任意一个非占用的端口都可以作为隧道建立的端口。

在XShell的目标服务器上右键选择 属性->ssh->隧道->添加,如下左图所示,在弹出的转移规则窗口中进行如下设置,并选择确定。其中源主机填127.0.0.1(表示本机),侦听端口可以任意设置一个未被占用的端口号,比如6006;目标主机表示本地服务器,目标端口为6006,即tensorboard设置的被监听的端口。

image-20210301153848457

之后,选择连接。

在服务器输入命令,如果-port设置为其他端口,上面目标主机的目标端口也应该发生相应的修改。

tensorboard --logdir=log_dir -port 6006

此时,复制链接到本地浏览器便可以成功访问tensorboard。

http://localhost:6006 

页面如下:

image-20210301153710784

作者:墨殇浅尘

-------------------------------------------

算法届的小学生,虔诚而不迷茫,做一个懂生活并有趣的人!

如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个 [推荐] 噢! 欢迎共同交流机器学习,机器视觉,深度学习~

欢迎转载,转载请声明出处!

原文地址:https://www.cnblogs.com/monologuesmw/p/14465117.html