TencentYoutuResearch / CrowdCounting-P2PNet

The official codes for the ICCV2021 Oral presentation "Rethinking Counting and Localization in Crowds: A Purely Point-Based Framework"
Other
404 stars 109 forks source link

关于QNRF等数据集的结果问题 #69

Open yangtle opened 5 months ago

yangtle commented 5 months ago

请问有人将这个数据集训练到论文水平了吗,为什么我按要求的参数设置,结果只维持MAE100左右呢?(已经经过了许多次以及不同机器的验证)

yangtle commented 5 months ago

对对,差不多就这水平,但我看后面基于P2PNet发表的论文也都达到了MAE很好的水平,应该算是一种印证吧。所以我怀疑这个是不是有什么特殊的参数设置呢?想知道有达到的人能分享一下,非常感谢!

1971186279 commented 5 months ago

刚才看错数据集了,我是SHA数据集用自己训练出来的模型去验证mae是93左右,而用源代码提供的SHTechA.pth去验证是61.19,我不知道哪里搞错了

yangtle commented 5 months ago

刚才看错数据集了,我是SHA数据集用自己训练出来的模型去验证mae是93左右,而用源代码提供的SHTechA.pth去验证是61.19,我不知道哪里搞错了

SHA是没问题的,感觉你这个应该是数据集本身或者是dataload的问题

mpmmpmmmp commented 5 months ago

我在3090 24g上跑NWPU训练时测试会爆显存, 请问这个您有解决吗

KRK11 commented 5 months ago

刚才看错数据集了,我是SHA数据集用自己训练出来的模型去验证mae是93左右,而用源代码提供的SHTechA.pth去验证是61.19,我不知道哪里搞错了

SHA是没问题的,感觉你这个应该是数据集本身或者是dataload的问题

请问SHHA数据集能跑到mae 52.多吗,官方给的预训练模型我结果是mae53.02多,自己训练的话也是54.多。

1971186279 commented 5 months ago

刚才看错数据集了,我是SHA数据集用自己训练出来的模型去验证mae是93左右,而用源代码提供的SHTechA.pth去验证是61.19,我不知道哪里搞错了

SHA是没问题的,感觉你这个应该是数据集本身或者是dataload的问题

请问SHHA数据集能跑到mae 52.多吗,官方给的预训练模型我结果是mae53.02多,自己训练的话也是54.多。

我自己训练是53.12

KRK11 commented 5 months ago

刚才看错数据集了,我是SHA数据集用自己训练出来的模型去验证mae是93左右,而用源代码提供的SHTechA.pth去验证是61.19,我不知道哪里搞错了

SHA是没问题的,感觉你这个应该是数据集本身或者是dataload的问题

请问SHHA数据集能跑到mae 52.多吗,官方给的预训练模型我结果是mae53.02多,自己训练的话也是54.多。

我自己训练是53.12

可以请问下参数是设置的什么吗

1971186279 commented 5 months ago

刚才看错数据集了,我是SHA数据集用自己训练出来的模型去验证mae是93左右,而用源代码提供的SHTechA.pth去验证是61.19,我不知道哪里搞错了

SHA是没问题的,感觉你这个应该是数据集本身或者是dataload的问题

请问SHHA数据集能跑到mae 52.多吗,官方给的预训练模型我结果是mae53.02多,自己训练的话也是54.多。

我自己训练是53.12

可以请问下参数是设置

刚才看错数据集了,我是SHA数据集用自己训练出来的模型去验证mae是93左右,而用源代码提供的SHTechA.pth去验证是61.19,我不知道哪里搞错了

SHA是没问题的,感觉你这个应该是数据集本身或者是dataload的问题

请问SHHA数据集能跑到mae 52.多吗,官方给的预训练模型我结果是mae53.02多,自己训练的话也是54.多。

我自己训练是53.12

可以请问下参数是设置的什么吗

参数都是源码里的,3500epoch我也都跑完了,我的服务器是Tesla V100

KRK11 commented 5 months ago

刚才看错数据集了,我是SHA数据集用自己训练出来的模型去验证mae是93左右,而用源代码提供的SHTechA.pth去验证是61.19,我不知道哪里搞错了

SHA是没问题的,感觉你这个应该是数据集本身或者是dataload的问题

请问SHHA数据集能跑到mae 52.多吗,官方给的预训练模型我结果是mae53.02多,自己训练的话也是54.多。

我自己训练是53.12

可以请问下参数是设置

刚才看错数据集了,我是SHA数据集用自己训练出来的模型去验证mae是93左右,而用源代码提供的SHTechA.pth去验证是61.19,我不知道哪里搞错了

SHA是没问题的,感觉你这个应该是数据集本身或者是dataload的问题

请问SHHA数据集能跑到mae 52.多吗,官方给的预训练模型我结果是mae53.02多,自己训练的话也是54.多。

我自己训练是53.12

可以请问下参数是设置的什么吗

参数都是源码里的,3500epoch我也都跑完了,我的服务器是Tesla V100

okk好的谢谢,我后边有修改一部分源码的loss函数,刚才去看了早上部署的训练在780轮左右跑了个53.13出来,神奇,刚问完就蹦出来。

KRK11 commented 5 months ago

刚才看错数据集了,我是SHA数据集用自己训练出来的模型去验证mae是93左右,而用源代码提供的SHTechA.pth去验证是61.19,我不知道哪里搞错了

SHA是没问题的,感觉你这个应该是数据集本身或者是dataload的问题

请问SHHA数据集能跑到mae 52.多吗,官方给的预训练模型我结果是mae53.02多,自己训练的话也是54.多。

我自己训练是53.12

可以请问下参数是设置

刚才看错数据集了,我是SHA数据集用自己训练出来的模型去验证mae是93左右,而用源代码提供的SHTechA.pth去验证是61.19,我不知道哪里搞错了

SHA是没问题的,感觉你这个应该是数据集本身或者是dataload的问题

请问SHHA数据集能跑到mae 52.多吗,官方给的预训练模型我结果是mae53.02多,自己训练的话也是54.多。

我自己训练是53.12

可以请问下参数是设置的什么吗

参数都是源码里的,3500epoch我也都跑完了,我的服务器是Tesla V100

又降了,到mae:53.0,mse:86.87了。

1971186279 commented 5 months ago

刚才看错数据集了,我是SHA数据集用自己训练出来的模型去验证mae是93左右,而用源代码提供的SHTechA.pth去验证是61.19,我不知道哪里搞错了

SHA是没问题的,感觉你这个应该是数据集本身或者是dataload的问题

请问SHHA数据集能跑到mae 52.多吗,官方给的预训练模型我结果是mae53.02多,自己训练的话也是54.多。

我自己训练是53.12

可以请问下参数是设置

刚才看错数据集了,我是SHA数据集用自己训练出来的模型去验证mae是93左右,而用源代码提供的SHTechA.pth去验证是61.19,我不知道哪里搞错了

SHA是没问题的,感觉你这个应该是数据集本身或者是dataload的问题

请问SHHA数据集能跑到mae 52.多吗,官方给的预训练模型我结果是mae53.02多,自己训练的话也是54.多。

我自己训练是53.12

可以请问下参数是设置的什么吗

参数都是源码里的,3500epoch我也都跑完了,我的服务器是Tesla V100

又降了,到mae:53.0,mse:86.87了。

那太棒了

KRK11 commented 5 months ago

刚才看错数据集了,我是SHA数据集用自己训练出来的模型去验证mae是93左右,而用源代码提供的SHTechA.pth去验证是61.19,我不知道哪里搞错了

SHA是没问题的,感觉你这个应该是数据集本身或者是dataload的问题

请问SHHA数据集能跑到mae 52.多吗,官方给的预训练模型我结果是mae53.02多,自己训练的话也是54.多。

我自己训练是53.12

可以请问下参数是设置

刚才看错数据集了,我是SHA数据集用自己训练出来的模型去验证mae是93左右,而用源代码提供的SHTechA.pth去验证是61.19,我不知道哪里搞错了

SHA是没问题的,感觉你这个应该是数据集本身或者是dataload的问题

请问SHHA数据集能跑到mae 52.多吗,官方给的预训练模型我结果是mae53.02多,自己训练的话也是54.多。

我自己训练是53.12

可以请问下参数是设置的什么吗

参数都是源码里的,3500epoch我也都跑完了,我的服务器是Tesla V100

又降了,到mae:53.0,mse:86.87了。

那太棒了

谢谢,想问一下那个预训练模型的指标是可以达到论文中的指标吗,不会和硬件相关吧。

yangtle commented 5 months ago

SHA数据集是没问题的,甚至还能训练到比论文指标还要好一些的情况。但,个人建议,还是要好好验证一下QNRF等数据集,反正我目前没有验证出结果,差挺多的。不然把模型改好了在其它数据集没法验证,还是很难受的事情。

KRK11 commented 5 months ago

SHA数据集是没问题的,甚至还能训练到比论文指标还要好一些的情况。但,个人建议,还是要好好验证一下QNRF等数据集,反正我目前没有验证出结果,差挺多的。不然把模型改好了在其它数据集没法验证,还是很难受的事情。

😮 这么神奇

1971186279 commented 5 months ago

SHA数据集是没问题的,甚至还能训练到比论文指标还要好一些的情况。但,个人建议,还是要好好验证一下QNRF等数据集,反正我目前没有验证出结果,差挺多的。不然把模型改好了在其它数据集没法验证,还是很难受的事情。

😮 这么神奇

请问P2PNet可以做多类别计数吗

KRK11 commented 5 months ago

SHA数据集是没问题的,甚至还能训练到比论文指标还要好一些的情况。但,个人建议,还是要好好验证一下QNRF等数据集,反正我目前没有验证出结果,差挺多的。不然把模型改好了在其它数据集没法验证,还是很难受的事情。

😮 这么神奇

请问P2PNet可以做多类别计数吗

可以呀,修改下num_class。

1971186279 commented 5 months ago

SHA数据集是没问题的,甚至还能训练到比论文指标还要好一些的情况。但,个人建议,还是要好好验证一下QNRF等数据集,反正我目前没有验证出结果,差挺多的。不然把模型改好了在其它数据集没法验证,还是很难受的事情。

😮 这么神奇

请问P2PNet可以做多类别计数吗

可以呀,修改下num_class。

那数据集应该怎么准备呀,那个txt标注文件

KRK11 commented 5 months ago

SHA数据集是没问题的,甚至还能训练到比论文指标还要好一些的情况。但,个人建议,还是要好好验证一下QNRF等数据集,反正我目前没有验证出结果,差挺多的。不然把模型改好了在其它数据集没法验证,还是很难受的事情。

😮 这么神奇

请问P2PNet可以做多类别计数吗

可以呀,修改下num_class。

那数据集应该怎么准备呀,那个txt标注文件

数据集可以按你的方式把类别加进去,可以直接加在每一行最后,主要还得修改下源码。比如SHHA.py的30行左右的读取文件那部分,还有SHHA的getitem部分的target['label']赋值,那里是默认类别是1,毕竟只有两个类别,你这里就可以将你读取文件的类别信息插入到这里。

1971186279 commented 5 months ago

SHA数据集是没问题的,甚至还能训练到比论文指标还要好一些的情况。但,个人建议,还是要好好验证一下QNRF等数据集,反正我目前没有验证出结果,差挺多的。不然把模型改好了在其它数据集没法验证,还是很难受的事情。

😮 这么神奇

请问P2PNet可以做多类别计数吗

可以呀,修改下num_class。

那数据集应该怎么准备呀,那个txt标注文件

数据集可以按你的方式把类别加进去,可以直接加在每一行最后,主要还得修改下源码。比如SHHA.py的30行左右的读取文件那部分,还有SHHA的getitem部分的target['label']赋值,那里是默认类别是1,毕竟只有两个类别,你这里就可以将你读取文件的类别信息插入到这里。

有点难(代码能力薄弱),,你是试验过吗,除了SHHA.py文件还需要修改别的地方吗

KRK11 commented 5 months ago

SHA数据集是没问题的,甚至还能训练到比论文指标还要好一些的情况。但,个人建议,还是要好好验证一下QNRF等数据集,反正我目前没有验证出结果,差挺多的。不然把模型改好了在其它数据集没法验证,还是很难受的事情。

😮 这么神奇

请问P2PNet可以做多类别计数吗

可以呀,修改下num_class。

那数据集应该怎么准备呀,那个txt标注文件

数据集可以按你的方式把类别加进去,可以直接加在每一行最后,主要还得修改下源码。比如SHHA.py的30行左右的读取文件那部分,还有SHHA的getitem部分的target['label']赋值,那里是默认类别是1,毕竟只有两个类别,你这里就可以将你读取文件的类别信息插入到这里。

有点难(代码能力薄弱),,你是试验过吗,除了SHHA.py文件还需要修改别的地方吗

没试验过多类别的,但是我已经通读了代码并且魔改了好多地方,比如matcher.py部分,改了原作者写的效率极慢的匹配部分代码。还有改了一下loss函数,还有其他的一些地方。先把SHHA还有num_class改完根据报错就可以知道哪里需要改了。

1971186279 commented 5 months ago

SHA数据集是没问题的,甚至还能训练到比论文指标还要好一些的情况。但,个人建议,还是要好好验证一下QNRF等数据集,反正我目前没有验证出结果,差挺多的。不然把模型改好了在其它数据集没法验证,还是很难受的事情。

😮 这么神奇

请问P2PNet可以做多类别计数吗

可以呀,修改下num_class。

那数据集应该怎么准备呀,那个txt标注文件

数据集可以按你的方式把类别加进去,可以直接加在每一行最后,主要还得修改下源码。比如SHHA.py的30行左右的读取文件那部分,还有SHHA的getitem部分的target['label']赋值,那里是默认类别是1,毕竟只有两个类别,你这里就可以将你读取文件的类别信息插入到这里。

有点难(代码能力薄弱),,你是试验过吗,除了SHHA.py文件还需要修改别的地方吗

没试验过多类别的,但是我已经通读了代码并且魔改了好多地方,比如matcher.py部分,改了原作者写的效率极慢的匹配部分代码。还有改了一下loss函数,还有其他的一些地方。先把SHHA还有num_class改完根据报错就可以知道哪里需要改了。

好的佬,感谢你,拉我于深渊,不知道该问谁

KRK11 commented 5 months ago

SHA数据集是没问题的,甚至还能训练到比论文指标还要好一些的情况。但,个人建议,还是要好好验证一下QNRF等数据集,反正我目前没有验证出结果,差挺多的。不然把模型改好了在其它数据集没法验证,还是很难受的事情。

😮 这么神奇

请问P2PNet可以做多类别计数吗

可以呀,修改下num_class。

那数据集应该怎么准备呀,那个txt标注文件

数据集可以按你的方式把类别加进去,可以直接加在每一行最后,主要还得修改下源码。比如SHHA.py的30行左右的读取文件那部分,还有SHHA的getitem部分的target['label']赋值,那里是默认类别是1,毕竟只有两个类别,你这里就可以将你读取文件的类别信息插入到这里。

有点难(代码能力薄弱),,你是试验过吗,除了SHHA.py文件还需要修改别的地方吗

没试验过多类别的,但是我已经通读了代码并且魔改了好多地方,比如matcher.py部分,改了原作者写的效率极慢的匹配部分代码。还有改了一下loss函数,还有其他的一些地方。先把SHHA还有num_class改完根据报错就可以知道哪里需要改了。

好的佬,感谢你,拉我于深渊,不知道该问谁

没事没事,小问题,社区就应该这样互帮互助。

1971186279 commented 5 months ago

SHA数据集是没问题的,甚至还能训练到比论文指标还要好一些的情况。但,个人建议,还是要好好验证一下QNRF等数据集,反正我目前没有验证出结果,差挺多的。不然把模型改好了在其它数据集没法验证,还是很难受的事情。

😮 这么神奇

请问P2PNet可以做多类别计数吗

可以呀,修改下num_class。

那数据集应该怎么准备呀,那个txt标注文件

数据集可以按你的方式把类别加进去,可以直接加在每一行最后,主要还得修改下源码。比如SHHA.py的30行左右的读取文件那部分,还有SHHA的getitem部分的target['label']赋值,那里是默认类别是1,毕竟只有两个类别,你这里就可以将你读取文件的类别信息插入到这里。

有点难(代码能力薄弱),,你是试验过吗,除了SHHA.py文件还需要修改别的地方吗

没试验过多类别的,但是我已经通读了代码并且魔改了好多地方,比如matcher.py部分,改了原作者写的效率极慢的匹配部分代码。还有改了一下loss函数,还有其他的一些地方。先把SHHA还有num_class改完根据报错就可以知道哪里需要改了。

好的佬,感谢你,拉我于深渊,不知道该问谁

没事没事,小问题,社区就应该这样互帮互助。

对了佬,可以分享下验证指标的代码吗,我根据pull requests里面的更新稍作修改,用源代码提供的权重文件依旧是得到SHA61.19的mae

KRK11 commented 5 months ago

SHA数据集是没问题的,甚至还能训练到比论文指标还要好一些的情况。但,个人建议,还是要好好验证一下QNRF等数据集,反正我目前没有验证出结果,差挺多的。不然把模型改好了在其它数据集没法验证,还是很难受的事情。

😮 这么神奇

请问P2PNet可以做多类别计数吗

可以呀,修改下num_class。

那数据集应该怎么准备呀,那个txt标注文件

数据集可以按你的方式把类别加进去,可以直接加在每一行最后,主要还得修改下源码。比如SHHA.py的30行左右的读取文件那部分,还有SHHA的getitem部分的target['label']赋值,那里是默认类别是1,毕竟只有两个类别,你这里就可以将你读取文件的类别信息插入到这里。

有点难(代码能力薄弱),,你是试验过吗,除了SHHA.py文件还需要修改别的地方吗

没试验过多类别的,但是我已经通读了代码并且魔改了好多地方,比如matcher.py部分,改了原作者写的效率极慢的匹配部分代码。还有改了一下loss函数,还有其他的一些地方。先把SHHA还有num_class改完根据报错就可以知道哪里需要改了。

好的佬,感谢你,拉我于深渊,不知道该问谁

没事没事,小问题,社区就应该这样互帮互助。

对了佬,可以分享下验证指标的代码吗,我根据pull requests里面的更新稍作修改,用源代码提供的权重文件依旧是得到SHA61.19的mae

他源码里验证指标的代码不需要改动就可以使用呀,他本身就是用train数据集作训练,test数据集测试,按每几轮输出mae的。在engine.py的evaluate_crowd_no_overlap函数,run_test.py是来对单个图输出结果的,当然也可以用来测指标,但是前面那个已经给测SHA指标了,虽然应该测的是验证集,源码没有区分开验证集和测试集的。

1971186279 commented 5 months ago

SHA数据集是没问题的,甚至还能训练到比论文指标还要好一些的情况。但,个人建议,还是要好好验证一下QNRF等数据集,反正我目前没有验证出结果,差挺多的。不然把模型改好了在其它数据集没法验证,还是很难受的事情。

😮 这么神奇

请问P2PNet可以做多类别计数吗

可以呀,修改下num_class。

那数据集应该怎么准备呀,那个txt标注文件

数据集可以按你的方式把类别加进去,可以直接加在每一行最后,主要还得修改下源码。比如SHHA.py的30行左右的读取文件那部分,还有SHHA的getitem部分的target['label']赋值,那里是默认类别是1,毕竟只有两个类别,你这里就可以将你读取文件的类别信息插入到这里。

有点难(代码能力薄弱),,你是试验过吗,除了SHHA.py文件还需要修改别的地方吗

没试验过多类别的,但是我已经通读了代码并且魔改了好多地方,比如matcher.py部分,改了原作者写的效率极慢的匹配部分代码。还有改了一下loss函数,还有其他的一些地方。先把SHHA还有num_class改完根据报错就可以知道哪里需要改了。

好的佬,感谢你,拉我于深渊,不知道该问谁

没事没事,小问题,社区就应该这样互帮互助。

对了佬,可以分享下验证指标的代码吗,我根据pull requests里面的更新稍作修改,用源代码提供的权重文件依旧是得到SHA61.19的mae

他源码里验证指标的代码不需要改动就可以使用呀,他本身就是用train数据集作训练,test数据集测试,按每几轮输出mae的。在engine.py的evaluate_crowd_no_overlap函数,run_test.py是来对单个图输出结果的,当然也可以用来测指标,但是前面那个已经给测SHA指标了,虽然应该测的是验证集,源码没有区分开验证集和测试集的。 okok是我理解错了

genshang1932 commented 4 months ago

请问有人qnrf上复现出来了paper的结果吗

mpmmpmmmp commented 4 months ago

@yangtle @KRK11 @genshang1932 请问QNRF测试时爆显存怎么处理? 40g都不够用

Minsky520 commented 2 months ago

对对,差不多就这水平,但我看后面基于P2PNet发表的论文也都达到了MAE很好的水平,应该算是一种印证吧。所以我怀疑这个是不是有什么特殊的参数设置呢?想知道有达到的人能分享一下,非常感谢!

佬你好,请问基于P2PNet的工作有那些比较突出的呀,目前没有查到基于P2PNet这种点到点的计数呀,您能举个例子吗

KRK11 commented 2 months ago

对对,差不多就这水平,但我看后面基于P2PNet发表的论文也都达到了MAE很好的水平,应该算是一种印证吧。所以我怀疑这个是不是有什么特殊的参数设置呢?想知道有达到的人能分享一下,非常感谢!

佬你好,请问基于P2PNet的工作有那些比较突出的呀,目前没有查到基于P2PNet这种点到点的计数呀,您能举个例子吗

Point-Query Quadtree for Crowd Counting, Localization, and More

KRK11 commented 2 months ago

@yangtle @KRK11 @genshang1932 请问QNRF测试时爆显存怎么处理? 40g都不够用

matcher重写一下,github上的把batch揉在一起计算了,浪费了大量资源。

mpmmpmmmp commented 2 months ago

@yangtle @KRK11 @genshang1932 请问QNRF测试时爆显存怎么处理? 40g都不够用

matcher重写一下,github上的把batch揉在一起计算了,浪费了大量资源。

可以提供一下matcher部分的代码吗,非常感谢您

Minsky520 commented 2 months ago

@yangtle @KRK11 @genshang1932 请问QNRF测试时爆显存怎么处理? 40g都不够用

matcher重写一下,github上的把batch揉在一起计算了,浪费了大量资源。

大佬您好,代码里面训练时候将图像裁剪为固定大小128128,但是VGG网络输入不该是224224吗 推理的时候尺寸也不一定是224*224,请问这种情况为什么网络可以处理呀。没有看到哪里说明了这一点

mpmmpmmmp commented 2 months ago

@yangtle @KRK11 @genshang1932 请问QNRF测试时爆显存怎么处理? 40g都不够用

matcher重写一下,github上的把batch揉在一起计算了,浪费了大量资源。

大佬您好,代码里面训练时候将图像裁剪为固定大小128_128,但是VGG网络输入不该是224_224吗 推理的时候尺寸也不一定是224*224,请问这种情况为什么网络可以处理呀。没有看到哪里说明了这一点

VGG网络对输入图像的大小并没有硬性要求

Minsky520 commented 2 months ago

@yangtle @KRK11 @genshang1932 请问QNRF测试时爆显存怎么处理? 40g都不够用

matcher重写一下,github上的把batch揉在一起计算了,浪费了大量资源。

大佬您好,代码里面训练时候将图像裁剪为固定大小128_128,但是VGG网络输入不该是224_224吗 推理的时候尺寸也不一定是224*224,请问这种情况为什么网络可以处理呀。没有看到哪里说明了这一点

VGG网络对输入图像的大小并没有硬性要求

十分感谢您的回复!我还有一个疑问在于输入batch内的图像切片对应的点数不一定一样,但是我没有看到哪里有处理点个数的代码,这样遍历dataloader时候会报错?

mpmmpmmmp commented 2 months ago

@yangtle @KRK11 @genshang1932 请问QNRF测试时爆显存怎么处理? 40g都不够用

matcher重写一下,github上的把batch揉在一起计算了,浪费了大量资源。

大佬您好,代码里面训练时候将图像裁剪为固定大小128_128,但是VGG网络输入不该是224_224吗 推理的时候尺寸也不一定是224*224,请问这种情况为什么网络可以处理呀。没有看到哪里说明了这一点

VGG网络对输入图像的大小并没有硬性要求

十分感谢您的回复!我还有一个疑问在于输入batch内的图像切片对应的点数不一定一样,但是我没有看到哪里有处理点个数的代码,这样遍历dataloader时候会报错?

没理解你的描述

nice98k commented 2 weeks ago

对对,差不多就这水平,但我看后面基于P2PNet发表的论文也都达到了MAE很好的水平,应该算是一种印证吧。所以我怀疑这个是不是有什么特殊的参数设置呢?想知道有达到的人能分享一下,非常感谢!

请问有哪些 基于P2Pnet发表的论文?