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

代码问题 #2

Open
YSLDTZY opened this issue May 15, 2024 · 10 comments
Open

代码问题 #2

YSLDTZY opened this issue May 15, 2024 · 10 comments

Comments

@YSLDTZY
Copy link

YSLDTZY commented May 15, 2024

作者您好,再向您请教几个问题;在您工作的代码中有两种transformer,一种是transformer_sd,一种是transformer,在transformer中存在剪枝代码,transformer_sd中不存在,在其他工作的代码中都是使用transformer,但是作者的SDPose的代码中使用的是transformer_sd,那么请问其自蒸馏体现在代码的哪个部分呢?为什么SDPose-Reg连接的是transformer而不是transformer_sd呢?

@YSLDTZY
Copy link
Author

YSLDTZY commented May 15, 2024

对不起我没看仔细论文,v1,v2,v3使用了MTC,未使用蒸馏,SDPose-Reg使用了蒸馏。
但是我运行test_flops出现的计算量比作者论文中大很多,还未得到解决,希望作者能解答我的疑惑,谢谢。

@MartyrPenink
Copy link
Owner

MartyrPenink commented May 17, 2024 via email

@YSLDTZY
Copy link
Author

YSLDTZY commented May 20, 2024

您好,在实际推理的时候,我们会使用不包含蒸馏与MTC的模型读取参数进行推理,代码实现里v1,v2,v3的inference部分都是进行了多次推理的。实际上的计算量应该使用没有MTC的计算量。

------------------ 原始邮件 ------------------ 发件人: "MartyrPenink/SDPose" @.>; 发送时间: 2024年5月15日(星期三) 晚上8:03 @.>; @.>; 主题: Re: [MartyrPenink/SDPose] 代码问题 (Issue #2) 对不起我没看仔细论文,v1,v2,v3使用了MTC,未使用蒸馏,SDPose-Reg使用了蒸馏。 但是我运行test_flops出现的计算量比作者论文中大很多,还未得到解决,希望作者能解答我的疑惑,谢谢。 — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you are subscribed to this thread.Message ID: @.>

好的,谢谢您的答复,我对您的工作非常感兴趣,请问我如何使用不包含蒸馏与MTC的模型读取我训练的权重文件呢?大佬能否将这部分工作开源呢?

@MartyrPenink
Copy link
Owner

MartyrPenink commented May 22, 2024 via email

@YSLDTZY
Copy link
Author

YSLDTZY commented May 22, 2024

您好,所有的代码都开源在这个仓库里了,使用其中sdpose head进行训练是使用了蒸馏的,再使用tokenpose head读取权重进行推理即可。

------------------ 原始邮件 ------------------ 发件人: "MartyrPenink/SDPose" @.>; 发送时间: 2024年5月20日(星期一) 下午2:19 @.>; @.@.>; 主题: Re: [MartyrPenink/SDPose] 代码问题 (Issue #2) 您好,在实际推理的时候,我们会使用不包含蒸馏与MTC的模型读取参数进行推理,代码实现里v1,v2,v3的inference部分都是进行了多次推理的。实际上的计算量应该使用没有MTC的计算量。 … ------------------ 原始邮件 ------------------ 发件人: "MartyrPenink/SDPose" @.>; 发送时间: 2024年5月15日(星期三) 晚上8:03 @.>; @.>; 主题: Re: [MartyrPenink/SDPose] 代码问题 (Issue #2) 对不起我没看仔细论文,v1,v2,v3使用了MTC,未使用蒸馏,SDPose-Reg使用了蒸馏。 但是我运行test_flops出现的计算量比作者论文中大很多,还未得到解决,希望作者能解答我的疑惑,谢谢。 — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you are subscribed to this thread.Message ID: @.> 好的,谢谢您的答复,我对您的工作非常感兴趣,请问我如何使用不包含蒸馏与MTC的模型读取我训练的权重文件呢?大佬能否将这部分工作开源呢? — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>

谢谢作者的回答,我还有几点疑问:
我从作者的论文中得知,sdpose_reg模型使用了蒸馏,未使用MCT,其他几种模型并未使用蒸馏,只使用了MCT,蒸馏使用的模型用的是Transformer,我从代码中发现SDPose类使用的是Transformer_sd(该类有循环,我视为MCT),使用sdpose head的模型是用SDPose类训练的,使用rlesdpose head的才是用Transformer类(该类有剪枝,我看做自蒸馏),sdpose的config中并没有使用rlesdpose head的模型,就是说b、v1、v2、t模型使用的都是sdpose head,那么也就是说可能并未使用蒸馏操作,请问这是为什么呢,是不是我的理解有误呢?
其次对于CrowdPose数据集训练的对应config请问作者大佬能开源吗?
期待您的回复,谢谢!

@YSLDTZY
Copy link
Author

YSLDTZY commented May 23, 2024

作者您好,我今天使用tools/dist_test.sh configs/body/2d_kpt_sview_rgb_img/tokenpose/coco/tokenpose_hr32_stage3_coco_256x192.py /work_dirs/sdpose_b_hr32_coco_256x192/best_AP_epoch_290.pth 1进行推理,但是结果非常差,请问是我的操作不正确吗?
Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets= 20 ] = 0.000
Average Precision (AP) @[ IoU=0.50 | area= all | maxDets= 20 ] = 0.000
Average Precision (AP) @[ IoU=0.75 | area= all | maxDets= 20 ] = 0.000
Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets= 20 ] = 0.000
Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets= 20 ] = 0.000
Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 20 ] = 0.001
Average Recall (AR) @[ IoU=0.50 | area= all | maxDets= 20 ] = 0.003
Average Recall (AR) @[ IoU=0.75 | area= all | maxDets= 20 ] = 0.001
Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets= 20 ] = 0.001
Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets= 20 ] = 0.002
AP: 2.983390592303173e-06
AP (L): 5.7384475625176e-06
AP (M): 6.11148705978272e-06
AP .5: 6.517437403773797e-06
AP .75: 2.237343348676537e-06
AR: 0.00133816120906801
AR (L): 0.0019323671497584536
AR (M): 0.0009013930620049166
AR .5: 0.0026763224181360202
AR .75: 0.001102015113350126
然后我又把sdpose_b_hr32_coco_256x192的config中type=SDPoseead改成了type=TokenPoseHead,这样就报错了,请问要怎样才能用训练出来的sdpose权重文件在tokenpose上正确推理呢?
期待您的回复,谢谢!

@MartyrPenink
Copy link
Owner

MartyrPenink commented May 24, 2024 via email

@YSLDTZY
Copy link
Author

YSLDTZY commented May 26, 2024

很抱歉哈,因为开源的时候整理代码修改了结构,之前的回复有一些出错的地方: 1.在sdpose里面是使用了蒸馏的,我们在model内的推理部分就保存了多次前向的结果,并且在sdpose_head的loss计算部分你可以看到蒸馏; 2.很抱歉因为论文主要作者都已经从前单位离职,crowdpose部分的config可能没有办法开源了; 3.整理代码之后直接使用sdpose_head进行推理即可,他在计算的时候只使用第一次前向的结果进行推理,之后的循环结果都是没有参与推理的。

------------------ 原始邮件 ------------------ 发件人: "MartyrPenink/SDPose" @.>; 发送时间: 2024年5月23日(星期四) 中午11:59 @.>; @.@.>; 主题: Re: [MartyrPenink/SDPose] 代码问题 (Issue #2) 作者您好,我今天使用tools/dist_test.sh configs/body/2d_kpt_sview_rgb_img/tokenpose/coco/tokenpose_hr32_stage3_coco_256x192.py /work_dirs/sdpose_b_hr32_coco_256x192/best_AP_epoch_290.pth 1进行推理,但是结果非常差,请问是我的操作不正确吗? Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets= 20 ] = 0.000 Average Precision (AP) @[ IoU=0.50 | area= all | maxDets= 20 ] = 0.000 Average Precision (AP) @[ IoU=0.75 | area= all | maxDets= 20 ] = 0.000 Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets= 20 ] = 0.000 Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets= 20 ] = 0.000 Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 20 ] = 0.001 Average Recall (AR) @[ IoU=0.50 | area= all | maxDets= 20 ] = 0.003 Average Recall (AR) @[ IoU=0.75 | area= all | maxDets= 20 ] = 0.001 Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets= 20 ] = 0.001 Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets= 20 ] = 0.002 AP: 2.983390592303173e-06 AP (L): 5.7384475625176e-06 AP (M): 6.11148705978272e-06 AP .5: 6.517437403773797e-06 AP .75: 2.237343348676537e-06 AR: 0.00133816120906801 AR (L): 0.0019323671497584536 AR (M): 0.0009013930620049166 AR .5: 0.0026763224181360202 AR .75: 0.001102015113350126 然后我又把sdpose_b_hr32_coco_256x192的config中type=SDPoseead改成了type=TokenPoseHead,这样就报错了,请问要怎样才能用训练出来的sdpose权重文件在tokenpose上正确推理呢? 期待您的回复,谢谢! — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>

谢谢您的解答,对于第三点我还有疑问,我直接使用tools/test_flops.sh configs/body/2d_kpt_sview_rgb_img/sdpose/coco/sdpose_s_v1_stemnet_coco_256x192.py 1对您的代码进行参数和计算量的计算,但是得出的结果却比论文中高很多,请问是我计算方法错误了吗?

@YSLDTZY
Copy link
Author

YSLDTZY commented May 27, 2024

作者您好,又有一个问题,请问CrowdPose数据集是经过训练后再测试的吗,还是使用基于COCO训练的SDPosev1、v2直接测试的呢

@MartyrPenink
Copy link
Owner

MartyrPenink commented May 29, 2024 via email

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

2 participants