Comments (16)
你可以试试不带蒸馏直接finetuning的效果.....剪植后保留了网络的权重没相当于使用了预训练,确实可以快速的较高的map这可能不是蒸馏的效果,是使用预训练模型的效果
from yolov3v4-modelcompression-multidatasettraining-multibackbone.
你的意思是剪枝得到的prune_0.5_yolov3.weights充当了预训练模型的效果?另外当在执行normal_prune.py时,剪枝前后的map变化如下:
+------------+----------+----------+
| Metric | Before | After |
+------------+----------+----------+
| mAP | 0.840241 | 0.000357 |
| Parameters | 61523734 | 21872821 |
| Inference | 0.1514 | 0.1094 |
+------------+----------+----------+
看这个map似乎起不到预训练的效果,而且也不懂为何剪纸后map几乎降为0,在进行蒸馏后,上升那么快
from yolov3v4-modelcompression-multidatasettraining-multibackbone.
剪植的步骤是 稀疏化训练-剪植-finetuning,剪植完后还需要一个finetuning的步骤,全部走完后才能得到效果比较好的剪植模型
from yolov3v4-modelcompression-multidatasettraining-multibackbone.
哦哦好的,我看readme里写正常剪枝,无需微调,,我再试试微调,重新跑下剪枝后的模型
from yolov3v4-modelcompression-multidatasettraining-multibackbone.
对于剪植率比较低和数据集简单确实可以无需微调,比率较大数据集复杂还是需要的。
from yolov3v4-modelcompression-multidatasettraining-multibackbone.
好的,谢谢
from yolov3v4-modelcompression-multidatasettraining-multibackbone.
你好,请问下finetune有啥可以建议的么,建议调整哪些参数,我就是直接把剪枝后的模型直接拿来重新训练了,指令如下:
python train.py --data data/xray.data --batch_size 2 --accumulate 1 -pt --weights weights/yolov3_hand_normal_pruning_0.5percent.weights --cfg cfg/prune_0.5_yolov3/prune_0.5_yolov3.cfg --img_size 608 --epochs 80,
map变化情况:
epoch: 0--->12 map: 0.0091, 0.182, 0.335, 0.397, 0.395, 0.374, 0.431, 0.452, 0.472, 0.608, 0.688, 0.722, 0.788
epoch: 13--->80, map几乎都在(0.78, 0.8)之间,感觉map上升的也很快,前十三个epoch就模型几乎达到最优了。所以不知如何调整参数,能否给点意见,因为是第一次做检测,刚入门深度学习不久。诚盼回复,十分感谢
from yolov3v4-modelcompression-multidatasettraining-multibackbone.
fine tuning的最优结果就是达到原模型的精度,不知道你测试的结果和原模型差的有多少?
from yolov3v4-modelcompression-multidatasettraining-multibackbone.
我重新跑剪纸的模型最优的map为0.809, 原模型是0.83-0.84之间
from yolov3v4-modelcompression-multidatasettraining-multibackbone.
呢你可以尝试用蒸馏fine tuning的方式。调参的话可以尝试学习率或者蒸馏时的温度系数。
from yolov3v4-modelcompression-multidatasettraining-multibackbone.
好的,我尝试下用蒸馏的方式,十分感谢
from yolov3v4-modelcompression-multidatasettraining-multibackbone.
你好,用蒸馏(温度系数有设为3, 6, 10),学生模型的map没有多大变化,是否是因为重新训练后的模型本身就与原模型相差不到6个百分点的map?(--percent 0.5的情况)。不知道你记不记得,我当时有改过yolo-tiny的结果,加了卷积,shortcut和yololayer结构,然后我将yolov3作为教师网络,yolo-tiny作为学生网络,tiny的best map 由0.654--->0.752, 接近十个百分点,yolov3的best map为0.834. 本身教师网络和学生网络的map就相差较大。
此外我还有一个问题,我又尝试了0.7的剪纸率,--percent 0.7,我将剪纸得到的模型再次重新训练,得到如下map图
也是得到了map为0.8的模型,但此时map上升的趋势则较为平稳,直到epoch=40左右到达最优,与上面问题提到的--percent 0.5重新训练时,第13个epoch就基本达到最优,形成鲜明对比。我的猜测是剪纸后由于-- percent 0.5相对于0.7所保留的结构更多,所以优化的更快?是否是这样的原因?
from yolov3v4-modelcompression-multidatasettraining-multibackbone.
不好意思 由于问题closed了 我没看到问题。剪植率比较低当然更容易回复精度。至于知识蒸馏的问题我还在调试,现在的效果不一定可靠。
from yolov3v4-modelcompression-multidatasettraining-multibackbone.
好的感谢,我之后也会继续跟进对你repo的研究
from yolov3v4-modelcompression-multidatasettraining-multibackbone.
你好,另外能否在readme中 写下如何对剪枝后的微调的一些方法的说明,还是有点对剪枝有点模糊,我也会对看点模型压缩的论文丰富经验
from yolov3v4-modelcompression-multidatasettraining-multibackbone.
行,我之后会更新一些剪植的数据
from yolov3v4-modelcompression-multidatasettraining-multibackbone.
Related Issues (20)
- normal裁剪模型后的微调报错shape'[52,29,3,3]' is invalid for input of size 13382
- Introducing articles related to pruning methods
- NameError: name 'Darknet' is not defined HOT 1
- AttributeError: module 'torch.distributed' has no attribute 'init_process_group' HOT 2
- 自己跑的VisDrone数据和你相差过大 HOT 2
- Question in the inference ?
- RuntimeError: Expected all tensors to be on the same device, but found at least two devices, cuda:0 and cpu! HOT 3
- RuntimeError: size mismatch, m1: [8 x 1], m2: [8 x 1] at /pytorch/aten/src/THC/generic/THCTensorMathBlas.cu:283
- Compatibility with yolov4-tiny
- conv_b = torch.from_numpy(weights[ptr:ptr + num_b]).view_as(conv_layer.bias) RuntimeError: shape '[18]' is invalid for input of size 0 HOT 1
- pytorch model is not able to do detections.
- Is there a way to convert the best.pt model with -quantized 1 to .onnx?
- Set ONNX_EXPORT=True in models.py 运行detect.py 出错
- IndexError: list index out of range HOT 1
- [email protected]与最新版的u版yolov3框架相差8个点左右
- train.py 437行,为什么最终的loss要乘batch_size / 64?( loss *= batch_size / 64 # scale loss)
- 剪枝后精度太差 HOT 1
- 模型量化问题
- 稀疏模型
- 类型错误: forward() 缺少 1 个必需的位置参数:“x”
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from yolov3v4-modelcompression-multidatasettraining-multibackbone.