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

请问训练时为什么需要加载权重文件,那个是怎么得到的? #56

Open
shanniruo opened this issue May 25, 2020 · 12 comments

Comments

@shanniruo
Copy link

No description provided.

@TWangQing
Copy link

训练是不需要加载权重文件的,权重文件是运行demo.py时用到的,相当于测试

@shanniruo
Copy link
Author

不好意思,这里刚刚看花眼了,https://github.com/Tianxiaomo/pytorch-YOLOv4/blob/master/train.py#L429. 没注意默认值是none。
那yolov4.pth与yolov4.con137.pth这两个权重文件有何不同呢?还有个问题想请教下,yolov4论文中2.1节第一句话说检测器由在imagenet上预训练的backbone和head part组成。例如你这个代码,在imagenet上预训练的backbone如何理解?

@shanniruo
Copy link
Author

既然训练时没有任何预训练值

@TWangQing
Copy link

你好,第一个问题,我不知道这两个权重文件有何不同,这个你最好问一下本文的作者。我运行demo.py的时候只用到了本文作者第一个链接下的yolov4.weights文件。
第二个问题,我是这么认为的,backbone其实都是一些训练出来的权重参数,比如yolov4.weights,只不过训练的数据集可能不同。检测的时候首先得加载这些参数,才能检测。
如有错误,还请各位同行指正~谢谢

@shanniruo
Copy link
Author

@TWangQing 你的理解不对,backbone指网络的下采样层,用来提取特征,一般不同的任务这部分也可保持不变。head part部分是根据不同的任务进行调整。我所疑惑的是先用imagenet这个数据集预训练backbone的权重,这步的目的应该是给backbone权重一个先验。看上去这个代码中并没有这一步,但论文中又这么说,因此难以理解。如有理解错误,还请各位同行指导

@Tianxiaomo
Copy link
Owner

参考1
参考2

@shanniruo
Copy link
Author

@Tianxiaomo yolov4.conv.137应该就是预训练的backbone部分和neck部分的权重。抱歉,因为打不开这个https://drive.google.com/open?id=1cewMfusmPjYWbrnuJRuKhPMwRe_b9PaT
我还是没有确定yolov4.pth是否就是原作者在coco数据集上训练得到的整个权重文件?另外,这竟然是你利用周末写出来的?看的我五体投地

@Tianxiaomo
Copy link
Owner

是原作者在coco上训练的权重
主体是周末写的,后来又陆陆续续改了很多。有句话说的好,写代码一小时,debug好几天。

@shanniruo
Copy link
Author

感谢回答

@TWangQing
Copy link

您好,借楼想问一下。训练的时候输入终端的-dir目录最后应该是train.txt吗,还是图片的路径,谢谢!

@Tianxiaomo
Copy link
Owner

图片路径

@TWangQing
Copy link

好的,谢谢!!

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

3 participants