bilylee / SiamFC-TensorFlow

A TensorFlow implementation of the SiamFC tracker
MIT License
363 stars 112 forks source link

如何把前后几帧的search_images保留下来? #44

Closed lyv023 closed 5 years ago

lyv023 commented 6 years ago

您好,感谢您的代码分享。 这段时间我尝试把每一帧时候inference_wrapper 中的 search_images 保留下来为image_reserve,并用于之后的图片帧的warp。不知道是不是tensorflow 框架设计上理解不够透彻。我尝试了以下两种办法都失败了:

  1. 直接在tensorflow 框架中保存search_images 并以tf.assign方法以variable形式保留下来。但是发现在build model的时候无法通过,这是由于每一帧保留search_images 后会导致mage_reserve shape的变化而无法通过build model 的阶段。
  2. 把每一帧的search_images 以fetch 的方式得到结果并且在tensorflow 框架外进行list 的append。然后再把保留了search_images的list,feed回到tensorflow 框架中变成一个tensor进行运算。但是此时如果我想指定用这个tensor中保留的许多帧的某一帧时候,又会在build model的时候失败。这是由于一开始时候这个tensor的shape是0,导致无法用tensor[-1] 的方式指定某一帧。 试了很久,一直没成功。不知道您知不知道在要如何保留search_images并且能在接下来指定用到某几帧的信息。我猜应该是tensorflow的框架有所限制,或许是我对其还是理解不够透彻。 十分感谢!
bilylee commented 6 years ago

Hi,

请问你保留的帧的数目是不固定的吗?如果是不固定的话可能比较难写,如果可以的话,建议先用固定数量的帧来进行原型开发。

对于方法一,search image 的大小应该是不会变化的,为 255x255x3,不应该出现 shape 变化。 对于方法二,你可以尝试使用 tf.gather 来得到你想要的图片。

lyv023 commented 6 years ago

谢谢~ 我目前用 tf.gather 可以保留固定的视频帧数目。 如果想保存不同数目的视频帧的话,我觉得可以先保留之前全部的视频帧然后从 graph外用feed的方式传入。 谢谢回复