- 博客(14)
- 收藏
- 关注
原创 yolov5部署到rk3399pro
pt转onnx的时候可带可不带sigmoid,带了的话在rknn推理的时候就不用写了,没带的话在推理的时候就要写,可以用netron对比一下带不带的模型结构区别。yolo.py里的Detect类对forward进行修改。rknn推理(去掉使用sigmoid的地方)onnx转为rknn的节点位置可能需要更改。上面给的的是不带的,下面是带的(输出节点位置根据自己的调整。onnx输出节点为3个。
2025-11-21 14:25:03
285
原创 torch-pruning剪枝resnet50
使用torch-pruning剪枝resnet50,分别对比未剪枝训练的模型、剪枝未训练的模型以及剪枝后微调的模型的准确率,最后使用剪枝后的模型进行推理。
2025-11-18 10:44:12
289
原创 torch-pruning剪枝
类tp.importance.Imprtance要求实现一个接口__call__,其中输入参数是一个group,它包含了多个相互耦合的层;输出是一个一维的重要性得分向量,其含义是每个通道的重要性,所以它的维度和通道数通常是相同的。
2025-11-13 17:48:30
1055
原创 torch.nn.utils.prune剪枝
自定义剪枝通过继承来执行剪枝,必须实现__init__和两个函数才能完成自定义的剪枝规则设定# 计算绝对权重值的阈值if k ==0:# 找到第k大的元素作为阈值通过对父类源码的大致了解,我对上面代码的理解是,首先调用custom_pruning函数的时候,会初始化custom_prune,然后再调用父类。
2025-11-10 14:36:42
682
原创 模型剪枝相关
初始训练阶段后的修剪涉及在单独的后处理步骤中从训练模型中删除连接或过滤器。这使得模型能够在训练过程中完全收敛而不会出现任何中断,从而确保学习到的表示得到很好的建立。剪枝后,可以进一步微调模型,以从剪枝过程引起的任何潜在性能下降中恢复过来。训练后的剪枝一般比较稳定,不太可能造成过拟合。适用于针对特定任务微调预训练模型的场景。在这种方法中,剪枝作为附加正则化技术集成到优化过程中。在训练迭代期间,根据某些标准或启发方法动态删除或修剪不太重要的连接。这使得模型能够探索不同级别的稀疏性并在整个训练过程中调整其架构。
2025-11-05 11:14:12
1018
原创 torch.fx量化ResNet
在上面进行QAT操作的时候,我尝试过保存量化后的整个模型,但是在进行模型推理需要加载模型的时候,会出现下面的错误,这是因为在量化的时候会对一些固定模块进行自动融合,例如Conv2d和ReLU融合后的ConvReLU2d,但是融合后的模块并没有在torch.nn命名空间中注册,所以推荐保存状态字典。
2025-10-31 17:18:37
421
原创 torch.fx量化
之前在学习使用torch.quantization量化()的时候,无意之中了解到了torch.fx这个东西,并且也可以用来对模型进行量化,还是比较神奇的,所以特此记录学习。由于目前是初学阶段,可能有些点了解的不够透彻和全面,希望大家指正和讨论。
2025-10-28 23:22:19
807
原创 Yolov5-6.0量化
上一篇文章以ResNet50为例分别做了PTQ和QAT,也算是为Yolov5的量化做了一个铺垫。这一文章我们就来实现对Yolov5分别进行PTQ和QAT量化,各位看官在观看或者实际操作的遇到问题或者对文章有些地方存在的不足,欢迎大家指正和讨论。但是后面如何验证真正的int8模型,我试了好多次,没有一个正确的代码,希望有大佬可以帮忙。
2025-10-26 16:50:16
604
原创 ResNet量化(踩坑)
上一篇的介绍容易让人产生幻觉,就是觉得量化超级简单(个屁),本来想着直接在yolov5上实践一下,哇,网络复杂,代码也复杂,越踩坑越多,都TM迷了。最后还是先在网络和代码复杂程度适中的ResNet网络练练手(选ResNet也是别用用心,跟遇到的问题有关),过程中有一些需要注意的地方也是值得记录一下,当然后续要是能在yolov5中进行实践研究,有结果的话也会写出来记录。
2025-10-23 17:53:32
908
原创 【Pytorch】量化
动态量化(说明;以下代码的python版本为3.8,pytorch版本为1.8.0在pytorch里只需要一行代码就可以把模型动态量化为INT8模型输出结果如下从打印的结果里可以看出,Linear1的参数dtype为int8,但实际值并不是整数,这也侧面印证了该层在进入下一层的计算时被反量化为fp32,当然也保持了scale和zero_point(偏移量),可以通过torch.int_repr()去查看量化为int8的实际值,我们可以使用公式进行结果验证打印结果里的。
2025-10-17 22:54:23
895
3
原创 模型量化(大白话)
模型量化是一种将深度学习模型中的浮点数权重和激活值转为低精度数值(FP32--->FP16、FP32--->int8等)的技术,同时尽可能减少量化后模型推理的误差。量化的好处有以下几点:(1)减少模型的存储空间和显存的占用(2)减少显存和TensorCore之间的数据传输量,从而加快模型推理时间(3)显卡对整数运算速度快于浮点型数据,从而加快模型推理时间正如上述所说,模型量化会对模型的精度和准确度产生一定的影响,因为量化后的模型可能无法完全保留原始模型中的所有信息和特征。
2025-10-16 11:30:10
1128
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅