PP-Detection Logs —— Data、API、可视化

PP-Detection Logs(2021.12.10)

  • 1. 记录——数据格式,API
    • 1.1. Want to do
    • 1.2. Method
    • 1.3. Bug
  • 2. 记录——可视化模块
    • 2.1.Tensorboard
    • 2.2.VisualDL

1. 记录——数据格式,API

PP_Detection是Paddle框架的一个子项目。百度致力于自然语言处理(NPL)的研究,所以百度的Paddle框架用的是LoDTensor,不是Torch用的Tensor。LoDTensor是一种序列化的Tensor,面向NPL非常友好,但是面向CV会带来一些麻烦。希望Paddle到2.0版本后会逐渐对LoDTensor做出更好的优化处理,找到一个好的平衡点。

1.1. Want to do

我想要将之前用Torch写的基于Tensor的功能模块代码转换到PP_Detection架构中。

1.2. Method

有两种做法:

  1. 方法一,将PP_Detection对应的数据,由LoDTensor转换成Tensor。然后直接贴到我原来的功能模块里。
    方法一带来一个问题,我目前只能将LoDTensor转成Numpy后,再转成Tensor。这就带来一个老问题,转换过程中梯度会消失。但应该有解决办法将LoDTensor直接转成Tensor,只是现在我没有找到。接下来会持续翻看使用文档更新和加论坛提问,希望能找到解决办法。

  2. 方法二,将我原来的功能模块,全部由Torch写法改成Paddle写法。
    方法二逻辑更合理,但是也有一个问题。Paddle最近更新太快,2.2版本的API转换对照表还没有更新出来。只有Paddle1.8与Pytorch的API对照表和Paddle1.8与Paddle2.0的API对照表。
    Paddle1.8与Pytorch的API对照表,链接: link.
    Paddle1.8与Paddle2.0的API对照表,链接: link

1.3. Bug

Paddle框架因为较新,所以不是很稳定。Debug过程中,会出现各种奇怪的问题。这些问题不一定是代码问题,大多数是框架本身稳定性问题,导致报错或中断。重启重试后会莫名修复,问题莫名解决。

2. 记录——可视化模块

2.1.Tensorboard

起初我将PP_Detection用Tensorboard去可视化,遇到提示HDF5版本头文件过低的报错。解决办法是按照static/ppdet/ext_op/Readme中“设置环境变量”的方式进行处理。(感觉没什么道理,但是做完后确实能用了)

2.2.VisualDL

后来发现Paddle框架有自己的可视化模块:VisualDL。使用文档
这里也有一个问题需要注意,搭建Paddle的2.2版本会配套安装VisualDL的2.2版本。但是此时VisualDL是无法正常使用的,打开页面后会显示“发生错误”。解决办法是将VisualDL降到2.0版本。

你可能感兴趣的:(目标检测,pytorch,深度学习,人工智能,paddlepaddle)