赞
踩
最近在使用AutoDL云服务器跑步态识别的代码,用的是开放步态识别框架OpenGait,记录一下自己跑代码的步骤和遇到的问题以及解决方式。
这篇文章主要记录OpenGait开启 AutoDL 云服务器的TensorBoard 可视化的步骤和遇到的问题以及解决方式。
1、查看自己的AutoDL是否已经安装了tensorflow 和tensorboard
12/14更新:没有tensorflow也可以,新开了一台默认没有tensorflow的服务器,TensorBoard仍然可以可视化
pip list
2、如果没有安装,下载安装(由于AutoDL默认使用国内镜像加速下载,所以直接输入下面的命令即可)
pip install tensorflow==2.4.0
pip install tensorboard==2.6.0
OpenGait里涉及到的tensorboard代码的文件路径为:/root/OpenGait/opengait/utils/msg_manager.py
root是AutoDL的根目录,我把OpenGait放在了AutoDL的根目录下,如下图所示:
msg_manager.py文件中关于tensorboard的描述如下:
from torch.utils.tensorboard import SummaryWriter def init_manager(self, save_path, log_to_file, log_iter, iteration=0): self.iteration = iteration self.log_iter = log_iter mkdir(osp.join(save_path, "summary/")) self.writer = SummaryWriter( osp.join(save_path, "summary/"), purge_step=self.iteration) self.init_logger(save_path, log_to_file) def write_to_tensorboard(self, summary): for k, v in summary.items(): module_name = k.split('/')[0] if module_name not in self.writer_hparams: self.log_warning( 'Not Expected --Summary-- type [{}] appear!!!{}'.format(k, self.writer_hparams)) continue board_name = k.replace(module_name + "/", '') writer_module = getattr(self.writer, 'add_' + module_name) v = v.detach() if is_tensor(v) else v v = vutils.make_grid( v, normalize=True, scale_each=True) if 'image' in module_name else v if module_name == 'scalar': try: v = v.mean() except: v = v writer_module(board_name, v, self.iteration)
不需要看懂代码,我们只需要知道把可视化所需要的event文件记录到一个summary文件里去了,TensorBoard 需要读取event文件才能进行可视化。summary文件的路径为:
/root/OpenGait/output/CASIA-B/Baseline/GaitBase_DA/summary
注:该路径根据跑的方法不同也会变,因为我跑的是GaitBase所以路径是这样,如果跑GaitPart,那么summary文件的路径为:
/root/OpenGait/output/CASIA-B/GaitPart/GaitPart/summary
总之,在 /root/OpenGait/output/CASIA-B/ 下面找就行。
summary文件下的event文件如图所示:(每跑一次就会记录一次)
event文件也找到了,接下来我们开启TensorBoard 可视化。
OpenGait框架已经写好了TensorBoard 可视化相关代码,我们只需要开启即可。
开启 TensorBoard 可视化的代码如下:
tensorboard --logdir=/root/OpenGait/output/CASIA-B/Baseline/GaitBase_DA/summary
开启成功显示如下图:
让我们访问http://localhost:6006/进行查看,而我们进入这个网址是查看不了可视化界面的,这里请注意!!!
AutoDL实例中已内置了TensorBoard工具
①点击实例监控
②进入监控界面,点击TensorBoard
③进入TensorBoard界面,却发现显示No dashboards are active for the current data set. 这是怎么回事呢?
界面显示TensorBoard没有读取到任何event文件。查看官方文档发现,AutoDL的TensorBoard工具默认从/root/tf-logs/路径读取event文件
tf-logs目前是空的,当然读取不到event文件了,所以要想读取event文件的方法之一是,把summary文件里的event文件复制到tf-logs里去。
尝试后,成功可视化:
注意图片左下角的路径,这才是AutoDL的TensorBoard读取event文件的路径,而这个路径是无法通过tensorboard --logdir=/root/OpenGait/output/CASIA-B/Baseline/GaitBase_DA/summary
的命令更改的。
那如果想切换目录怎么办?我们可以
①首先结束默认启动的TensorBoard进程,执行命令:
ps -ef | grep tensorboard | awk '{print $2}' | xargs kill -9
②然后在终端中执行以下命令启动TensorBoard:
tensorboard --port 6007 --logdir /path/to/your/tf-logs/direction
# 对于我来说执行的实际命令是
tensorboard --port 6007 --logdir /root/OpenGait/output/CASIA-B/Baseline/GaitBase_DA/summary
更改路径后运行的结果如下:
其实是因为TensorBoard默认占用的端口号是6006,被默认的/root/tf-logs/占用了,所以我们使用其他的logs文件夹时,需要更改一个新的端口。
总结一下就是,我们可以通过3种办法进行可视化。
1、使用AutoDL里TensorBoard的默认路径:把summary文件里的event文件复制到tf-logs里去。
2、使用AutoDL里TensorBoard的默认路径:在OpenGait的msg_manager.py文件里更改summary文件的路径为tf-logs文件的路径。(不建议这么做,没有1、3好用)
3、不使用AutoDL里TensorBoard的默认路径:①先结束默认启动的TensorBoard进程,②然后开启一个指向summary文件路径的、占用除6006外的端口的新的TensorBoard进程。
欢迎使用OpenGait研究步态识别的伙伴进行交流
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。