huanglianghua/siamfc-pytorch

关于label生成的疑问

Opened this issue · 6 comments

您好,对于label生成部分的代码,存在一些疑问,询问一下。
对于siamfc.py中的函数_create_labels(self, size)部分,存在如下代码:

 r_pos = self.cfg.r_pos / self.cfg.total_stride
 r_neg = self.cfg.r_neg / self.cfg.total_stride
 labels = logistic_labels(x, y, r_pos, r_neg)

其中,在该代码的默认配置中:cfg.r_pos = 16,cfg.r_neg = 0,cfg.total_stride = 8

我的疑问:

  • cfg.total_stride代表什么含义?(依据原文中所表述的输入图片尺寸和输出特征图尺寸,找不到结果为8的比例关系)
  • cfg.r_poscfg.r_neg代表什么含义?这两个变量的数值定义有什么依据么,可以自行定义得更大么?
  • 经计算后的r_posr_neg代表什么含义?
  • 注:我可以理解logistic_labels()函数的意思

您好,对于label生成部分的代码,存在一些疑问,询问一下。
对于siamfc.py中的函数_create_labels(self, size)部分,存在如下代码:

 r_pos = self.cfg.r_pos / self.cfg.total_stride
 r_neg = self.cfg.r_neg / self.cfg.total_stride
 labels = logistic_labels(x, y, r_pos, r_neg)

其中,在该代码的默认配置中:cfg.r_pos = 16,cfg.r_neg = 0,cfg.total_stride = 8

我的疑问:

  • cfg.total_stride代表什么含义?(依据原文中所表述的输入图片尺寸和输出特征图尺寸,找不到结果为8的比例关系)
  • cfg.r_poscfg.r_neg代表什么含义?这两个变量的数值定义有什么依据么,可以自行定义得更大么?
  • 经计算后的r_posr_neg代表什么含义?
  • 注:我可以理解logistic_labels()函数的意思

可以加个联系方式交流下吗,对代码不是很明白......

* `r_neg`

您好,这是我对您问题的理解,如有问题,敬请指正,一起探讨:
(1)cfg.total_stride=8,这是原文网络结构决定的:SiamFC只有Conv1,Pool1以及pool2层的stride为2,其余层为1,stride乘积为8代表这response上每两点的距离插值回原图大小相应的距离放大8倍。
(2)从代码来看cfg.r_pos=16,cfg.r_neg=0。我对前者的理解就是与中心点距离小于16的区域为正样本(这个距离在response距离即为cfg.r_pos/cfg.total_stride=2)。而后者代表了负样本的划分,即距离大于cfg.r_neg的区域为负样本,而大于cfg.r_pos并小于cfg.r_neg的区域分配了与距离相关的标签。这两个距离都是可以自定义的。
(3)r_pos=2即response上正样本距离;r_neg=0代表负样本距离(这里实际上没有起作用)

您好,对于label生成部分的代码,存在一些疑问,询问一下。
对于siamfc.py中的函数_create_labels(self, size)部分,存在如下代码:

 r_pos = self.cfg.r_pos / self.cfg.total_stride
 r_neg = self.cfg.r_neg / self.cfg.total_stride
 labels = logistic_labels(x, y, r_pos, r_neg)

其中,在该代码的默认配置中:cfg.r_pos = 16,cfg.r_neg = 0,cfg.total_stride = 8
我的疑问:

  • cfg.total_stride代表什么含义?(依据原文中所表述的输入图片尺寸和输出特征图尺寸,找不到结果为8的比例关系)
  • cfg.r_poscfg.r_neg代表什么含义?这两个变量的数值定义有什么依据么,可以自行定义得更大么?
  • 经计算后的r_posr_neg代表什么含义?
  • 注:我可以理解logistic_labels()函数的意思

可以加个联系方式交流下吗,对代码不是很明白......

请问你现在看懂了吗,可不可以交流一下 :)

您好,对于label生成部分的代码,存在一些疑问,询问一下。
对于siamfc.py中的函数_create_labels(self, size)部分,存在如下代码:

 r_pos = self.cfg.r_pos / self.cfg.total_stride
 r_neg = self.cfg.r_neg / self.cfg.total_stride
 labels = logistic_labels(x, y, r_pos, r_neg)

其中,在该代码的默认配置中:cfg.r_pos = 16,cfg.r_neg = 0,cfg.total_stride = 8
我的疑问:

  • cfg.total_stride代表什么含义?(依据原文中所表述的输入图片尺寸和输出特征图尺寸,找不到结果为8的比例关系)
  • cfg.r_poscfg.r_neg代表什么含义?这两个变量的数值定义有什么依据么,可以自行定义得更大么?
  • 经计算后的r_posr_neg代表什么含义?
  • 注:我可以理解logistic_labels()函数的意思

可以加个联系方式交流下吗,对代码不是很明白......

请问你现在看懂了吗,可不可以交流一下 :)

我对第一个问题的理解是,你可以用128/16,表示中间每一次卷积过程的stride, 127的kernel在255的的矩阵上跑。

@huanglianghua @skyisnotwarm
#13
还是没有理解,siamfc.py中的函数_create_labels(self, size)生成label的方法,label不是应该根据搜索图像X的目标位置来生成么,为什么这里看起来_create_labels生成的label都是这样的图片,
image

@huanglianghua @skyisnotwarm #13 还是没有理解,siamfc.py中的函数_create_labels(self, size)生成label的方法,label不是应该根据搜索图像X的目标位置来生成么,为什么这里看起来_create_labels生成的label都是这样的图片, image

好像是因为训练的时候,模板图像和搜索图像的中心就是bbox的中心