Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

中文讨论请到这里 #10

Open
1067219243 opened this issue Aug 22, 2018 · 70 comments
Open

中文讨论请到这里 #10

1067219243 opened this issue Aug 22, 2018 · 70 comments

Comments

@1067219243
Copy link

1067219243 commented Aug 22, 2018

作者您好,viper-market,我得到的结果是,视觉分类rank1:0.256,融合rank:0.565,但是一次迭代后,反而只有分类器rank1:0.011,融合rank1:0.112,不知道有可能在哪里出了错,会有这样的结果?

@1067219243
Copy link
Author

运行结果,迭代一次后出现0.0,大概是这出错了,暂时还没找到具体原因。
fusion on training dataset
img score ready
above person score ready
0.0
fusion on test dataset
copy train track distribute pickle done
probe and gallery tracks ready
read vision scores and pids ready
load track deltas ready
load rand deltas ready
load diff deltas ready
rand scores ready
track scores ready
diff track score ready
0.000000 0.000000 0.898900 0.000020 0.000000
-1.000000 -1.000000 0.750000 0.000020 -37500.000000

@ahangchen
Copy link
Owner

你后来贴的这块是第二次融合的log,在这之前应该就有问题,因为视觉rank1很低,应该是keras增量训练部分的问题,检查一下有没有传入正确的fusion结果用于训练,以及测试时有没有使用正确的增量后的model

@1067219243
Copy link
Author

好的,谢谢。

@hacker-wei
Copy link

你好,你能给个联系方式吗?我也在跑这篇代码,有些问题能不能请教你,谢谢

@1067219243
Copy link
Author

@hacker-wei 是问我吗?

@hacker-wei
Copy link

是的,能给个联系方式吗?运行过程中出现了问题,多谢

@huanhuancao
Copy link

是否可以搭个船?? @ @1067219243

@1067219243
Copy link
Author

qq1067219243

@1067219243
Copy link
Author

@ahangchen 您好,同样是viper-market,我修改一些路径后,增量优化前rank1:0.256,0.570, 增量优化后虽不像上次低的离谱,但却没有增量优化前高,只有:0.21,0.54.
运行ctrl/transfet.py,我的部分生成文件如下图:

cutter_2018-09-04 05_06_36 469
如果您有什么建议,麻烦告知,打扰了。

@ahangchen
Copy link
Owner

可以先试一下以viper2grid的transfer,如果也没什么提升的话应该就是有哪里没复现对,如果只是target为market没提升的话,应该是一些超参要改,比如batch size

@1067219243
Copy link
Author

好的,谢谢。

@1067219243
Copy link
Author

运行结果:
/home/hyl/coding/TrackViz/data/viper_grid-cv9-test/renew_pid.log
[0.096, 0.216, 0.264, 0.336, 0.472]

/home/hyl/coding/TrackViz/data/viper_grid-cv9-test/cross_filter_pid.log
[0.184, 0.376, 0.456, 0.528, 0.576]

/home/hyl/coding/TrackViz/data/viper_grid-cv9-r-test/renew_pid.log
[0.128, 0.224, 0.296, 0.352, 0.504]

/home/hyl/coding/TrackViz/data/viper_grid-cv9-r-test/cross_filter_pid.log
[0.224, 0.392, 0.424, 0.464, 0.52]
增量优化后并没有提高多少,请问这5个分别是rank几的值?

@ahangchen
Copy link
Owner

有提升就应该没太大问题,估计有些细节要调一下,grid的评估是十次二折交叉验证,这只是其中一次的AP,前三个是rank1,rank5,rank10的结果

@1067219243
Copy link
Author

十次验证都有的,差别不大,只贴出来cv9的。想知道不同的数据集验证需要改哪个参数,如果可以告知就太感谢了!

@ahangchen
Copy link
Owner

看AP,问题应该是在结合时空的部分,第一次结合时空应该能到30%左右,那样的话增量后也会更高一些,目前结合时空的约束的具体逻辑Market和GRID有些细微的差别,我最近会把稳定版代码整理到TFusion这个项目里,不用git submodule的形式了,避免大家复现的时候老是拉错版本。

@1067219243
Copy link
Author

好的,辛苦了。感谢。

@ahangchen ahangchen changed the title 关于运行结果 中文讨论区 Sep 7, 2018
@ahangchen ahangchen changed the title 中文讨论区 中文讨论请到这里 Sep 18, 2018
@ahangchen ahangchen mentioned this issue Sep 18, 2018
@ahangchen
Copy link
Owner

已有同学成功复现 #12

@chj1933
Copy link

chj1933 commented Oct 10, 2018

@ahangchen同学,你好!请问我直接用你的孪生网络在1501上训练一个模型,应该用那部分代码?

@hacker-wei
Copy link

image

作者你好,为什么我这训练pair_train.py ,我是将epoch设置20,为啥只跑了6次就结束了?

@chj1933
Copy link

chj1933 commented Oct 10, 2018

@ahangchen ,你好,请问你训练时后面的-acc是什么的准确率?

@ahangchen
Copy link
Owner

@hacker-wei 设置了early stop

@ahangchen
Copy link
Owner

@chj1933 训练集上的rank1 acc

@bqxu1024
Copy link

#新手,请多多指教,谢谢# 准备复现这位大神的实验,正在看train.py文件,请问在dataset中没有找到mix.list,知道的前辈朋友们可以告诉我一下吗?

@rintiunse
Copy link

rintiunse commented Oct 20, 2018

@ahangchen 你好
/home/adminroot/rin/Tfusion/TrackViz/data/market_grid-cv0-test/renew_pid.log
[0.00, 0.00, 0.00, 0.00, 0.00]
/home/adminroot/rin/Tfusion/TrackViz/data/market_grid-cv0-test/cross_filter_pid.log
[0.00, 0.00, 0.00, 0.00, 0.00]
/home/adminroot/rin/Tfusion/TrackViz/data/market_grid-cv0-r-test/renew_pid.log
[0.00, 0.00, 0.00, 0.00, 0.00]
/home/adminroot/rin/Tfusion/TrackViz/data/market_grid-cv0-r-test/cross_filter_pid.log
[0.00, 0.00, 0.00, 0.00, 0.00]
这样的结果是哪一步出了问题呢?

@ahangchen
Copy link
Owner

@bqxu1024 mix.list与论文中的实验无关,只是一个额外的测试。

@ahangchen
Copy link
Owner

@rintiunse 肯定是图像模型训练出问题了,需要提供更多信息才能判断具体原因。

@superCman
Copy link

你好,我跟你有一样的问题,我将作者pair_train的欧式距离函数改变之后,jude的损失一直持续在0.5无法下降,请问你解决了问题吗?

@bqxu1024
Copy link

bqxu1024 commented Nov 7, 2018

你好,我跟你有一样的问题,我将作者pair_train的欧式距离函数改变之后,jude的损失一直持续在0.5无法下降,请问你解决了问题吗?

你好,请问一下,为什么我运行这个pair_train.py文件时会显示 No module named train??? 知道的话请帮忙解答一下,还停留在跑第二py文件阶段,新手小白在这先谢谢您了

@hacker-wei
Copy link

@ahangchen 作者你好,我想知道该论文的rank5和rank10的结果,可是我这么加为啥不对?
image。请问该如何加?这样报错了
image

@ahangchen
Copy link
Owner

@hacker-wei 参考这里

@hacker-wei
Copy link

@ahangchen 谢谢作者

@weibaogang
Copy link

最近在看代码的时候有一个疑惑的地方,想请教您一下。

    下面是我的理解,不知道有没有错,看您在博客上公布的思路,里面提到一个反时空概率模型,就是M3,这个您在博客里说是统计视觉相似度top10以后的点对应的时间差。然后在代码里的体现,我认为就是img_st_fusion.py 中这个函数get_predict_delta_tracks(fusion_param,random=True),然后进去这个函数,就会有这句关键的取索引的代码predict_pid=randint(10,person_cont-1),这个索引我觉得取的并不是top10以后的那些排序,我认为这个排序好的列表10之后的索引,应该是这样表示的predict_pids[randint(10,person_cont-1)],这个每一行的10之后的索引才是表示视觉相似度top10之后的吧。不知道是不是我理解错了,希望能跟您交流一下,非常感谢!

@ahangchen
Copy link
Owner

@weibaogang 你说的是对的,不过因为predict_pid的范围也是[0, person_cnt - 1],而且[0,10]的范围相对于这个范围很小,所以选出来的随机数差不多,对结果没有什么影响。

@weibaogang
Copy link

您好,我最近在看代码的时候有一个疑惑,在st_filter.py文件中,计算最终的融合分数,
你这个代码里用的公式是:
cross_score=(cur_track_(1-ep)-endiff_track_scores[i][j])*(persons_ap_scores[i][j]+ep/(1-e p-en))/rand_track_score
下面是我的理解,不知道对不对:
1.这个persons_ap_scores是之前的视觉模型的分数,但是已经排过序了,在这个公式里计算我觉得应该用没有排序的分数。
2.然后我注意到融合分数计算完成之后得到了一个最终融合分数,然后进行排序,我觉得排序用这几行就能完成了:
for i ,person_cross_scores in enumerate(persons_cross_scores):
sort_score_idx_s=sorted(range(len(person_cross_scores)),key=lambda k:-person_cross_scores[k])
但是你接下来又进行了一次下标查找:
Sorted_persons_ap_pids[i][j]=persons_ap_pids[i][person_score_idx_s[i][j]];
这次查找用到了视觉模型得到的排序,我的理解是融合的分数已经计算完成了,按理说排完序就可以直接计算结果了,这种用到之前排序的视觉模型不太能理解,查找下标的目的是什么呢?
3.还有一种可能就是1和2是有某种联系,用了排序后的分数,再进行查找下标,得到的结果和没有排序的是一样的,那是不是可以把前面保存的视觉模型的分数不排序,然后融合后的分数排序之后不进行下标查找,就可以跟现在结果一样?这只是我的猜测,不知道我的理解哪里有问题,希望能和您一起讨论一下

@ahangchen
Copy link
Owner

  1. 为了计算rank1和map,以及计算track_score,persons_ap_scores在rank-reid端生成和存储时就是排好序的,所以这里把它直接读出来使用;在这里分数是否排过序没有关系,因为我们有persons_ap_pids记录每个分数对应的image id,这里边persons_ap_pids的每一行是按视觉分数排序的;
  2. 得到融合分数的排序后,需要对原来的persons_ap_pids根据这个排序调整位置,才能得到融合后的image_id的新顺序
  3. 其实也可以让visual score是按pid排序,而不是按score排序,然后计算融合的score,对融合score排序得到sort_score_idx_s,由于sort_score_idx_s跟image_id是一致的,所以不需要一次额外的排序,这样在计算融合分数的时候确实少了一次计算,但是在1中提到的计算rank score和track_score时就需要多几次排序了。

@weibaogang
Copy link

好的,感谢,我再看看代码,有问题再请教您

@weibaogang
Copy link

您好,我们对视觉模型做了处理,结果如下:
22
这里learning to rank后的直接迁移效果比未使用learning to rank的直接迁移效果差,而learning to rank后再融合时空模型却优于未使用learning to rank直接融合时空模型的效果。
这里我们不是太理解,我们理解的是如果视觉模型变好,那么不论是直接迁移还是融合时空模型都会有所提升,望指教

@ahangchen
Copy link
Owner

  • 对视觉模型做了哪些处理呢?learning to rank阶段应该也需要做对应的调整(包括调参)
  • 其实这里时空和视觉的变化都不大,可能只是几十个数据的排序发生了变化,只能理解为一种随机的波动
  • learning to rank在论文的实验中虽然能有一定提升,但我们也在寻找更有效的transfer learning方法,后边会再投一篇论文,敬请期待。

@weibaogang
Copy link

好的,感谢,我再理解理解

@humpbackGao
Copy link

作者你好,我发现你上传的代码都是空的py文件,没看明白怎么使用,方便上传完整的代码吗

@ahangchen
Copy link
Owner

@humpbackGao 空的应该是没有被使用的文件,而且好像也没多少空的py文件吧,建议检查一下网络是不是没加载出来…

@humpbackGao
Copy link

果然是网络问题。。 还有我想问一下这个项目怎么使用,是用两部分分别跑吗 我在复现结果,不过是新手不太会用

@1067219243
Copy link
Author

作者你好,请问怎么单独测试第二次融合的结果?

@ahangchen
Copy link
Owner

@1067219243 目前多次增量的模型会相互覆盖,你可以通过改变这个iteration_cnt来改变增量次数,或者自己加一个模型备份代码。

@1067219243
Copy link
Author

设置的iteration_cnt=1,目前,viper_market-test/renew_pid.log, viper_market-test/cross_filter_pid.log,
viper_market-test/renew_pid.log,的结果都有,在计算viper_market-r-test/cross_filter_pid.log结果的时候总是0.001,我想单独测试增量优化后的融合结果。

@ahangchen
Copy link
Owner

你是不是想单独做cross_filter_pid.log这个文件的eval?可以看一下这个函数: predict_eval

@css1995
Copy link

css1995 commented Mar 21, 2019

您好,我想问您一下,在使用函数track_score计算score的时候,score = track_score(camera_delta_s, c1, time1, c2, time2, interval=700, filter_interval=50000),您是如何确定 interval 和 filter_interval的值的?

@ahangchen
Copy link
Owner

@css1995 这是滑窗计算时空分数的两个超参数了,分别代表滑窗的大小和滑窗的范围,我们是可视化不同数据集上的时空分布曲线估算的这两个值,没有怎么调优过,后面其实也在尝试做自适应的滑窗。

@css1995
Copy link

css1995 commented Mar 24, 2019

作者您好,没有太看懂时空模型部分代码。
在st_filter.py文件的predict_track_scores函数中,我看到当s1和s2不等时,他们的person_delta_score直接被置为-1, 我猜想,最终的融合得分是视觉模型的得分;
而当s1和s2相等时,会利用 score = track_score(camera_delta_s, c1, time1, c2, time2, interval=700, filter_interval=40000)计算时空得分,然后与视觉模型进行融合。 如果两个人的s相同, c也相同的话,在您的实现中,track_score返回的应该是0, 这样会不会抑制了同一摄像头下同一序列的行人是同一身份的得分?

@ahangchen
Copy link
Owner

ahangchen commented Mar 25, 2019

@css1995 对排序结果会有影响,但是person reid的评价指标计算是不管相同人在相同摄像头的样本的,所以对rank1和map的结果不会有什么影响

@lfhbbq
Copy link

lfhbbq commented Apr 1, 2019

您好,我想问一下这些是什么路径,不知道该怎么修改
image

@weibaogang
Copy link

x
这个公式如何推导的? @ahangchen

@532091602hzy
Copy link

作者您好,有一个小问题想请教一下:
最近我自己也在做一个reid的项目,但我的项目计算两图片相似度的时候最好直接用Siamese网络输出的相似度而非两图片特征的欧氏距离。然而我在训练结束(对您的网络做了些改动,但最终还是输出相似度)测试的后就依靠Siamese网络输出的相似度对gallery进行排序,Rank1竟达到90%,感觉有点疑虑,想请教一下您。
请问这个做法科学吗,如果不科学的话问题出现在了哪,reid界依靠相似度排序而非欧氏距离的多不多?

@ahangchen
Copy link
Owner

@532091602hzy 一般来说依靠Siamese网络输出相似度来排序准确率是要高于按特征算余弦距离排序的,但这样网络forward次数特别多(probe*gallery),所以实际应用少。而计算特征的话网络只需要forward probe + gallery次。另外你可以检查一下相似度计算部分逻辑有没有问题,比如是不是把同摄像头的照片也考虑进去了。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests