使用NCNN的INT8量化方式进行推理

本文详细介绍了使用NCNN框架进行INT8量化的过程,包括编译NCNN、模型量化、验证效果、KL量化原理以及YOLOV4模型的量化推理。量化后模型的权重文件大小减小,但可能导致精度损失。通过分析,揭示了NCNN仅支持对称量化,以及在推理流程中的递归特点。
摘要由CSDN通过智能技术生成

本文以NCNN框架为例,实践量化在推理中的巨大作用,加深对神经网络量化的理解。NCNN当前版本只支对称量化,下面以INT8精度为例介绍NCNN的量化使用方式:

编译NCNN

mkdir build && cd build && cmake ../

进入到build/tools/darknet目录,将来源于darknet的模型文件和权重文件拷贝一份到这里:

wget -c https://github.com/AlexeyAB/darknet/releases/download/darknet_yolo_v4_pre/yolov4-tiny.weights

转换过程如下:

./darknet2ncnn ./yolov4-tiny.cfg ./yolov4-tiny.weights

优化:

./ncnnoptimize /home/czl/ncnn/ncnn/build/tools/darknet/ncnn.param /home/czl/ncnn/ncnn/build/tools/darknet/ncnn.bin yolov4-tiny-opt.param yolov4-tiny-opt.bin 0

同时,也可以得到MAC算力信息:

生成的优化过的模型如下:

检测实战,未优化的模型推理结果:

优化后的模型推理结果:

这里的yolov4其实就是yolov4-tiny,程序中是可以选择:

下载量化校准表图片

下载官方给出的1000张ImageNet图像,很多同学没有梯子,下载慢,可以用下这个链接:

NCNN int8量化是指在NCNN框架中将CNN模型从float32转换为INT8的过程。这种量化方法可以减小模型的大小、提升运行速度,而对精度的降低相对较小。在实际中,有多种方法可以实现NCNN int8量化,其中包括基于腾讯的NCNN框架、Tensorflow和Nvidia的TensorRT。其中,本回答将介绍一种基于NCNN框架的实践方法。 在这个方法中,首先需要使用Caffe-Int8-Convert-Tools工具将Caffe模型转换为int8格式,然后在NCNN框架上运行。具体过程可以参考中提供的链接。接下来,我将以自顶向下的方式叙述NCNN int8量化的kernel实现原理及过程。 首先,需要了解NCNN框架中的INT8版本和优化后INT8版本。INT8版本是NCNN的开源版本,而优化后的INT8版本是经过优化处理后的版本。在这两个版本中,都包含了INT8的kernel实现。 在INT8的kernel实现中,主要包括对权重和特征图的量化和反量化操作。量化操作将浮点数转换为INT8格式,而反量化操作则将INT8格式转换回浮点数格式。这样可以实现模型参数的压缩和运算速度的提升。 除了量化和反量化操作,还需要对卷积操作进行优化。通过对卷积操作进行INT8计算,可以降低计算复杂度,提高计算速度。优化的卷积操作还可以使用SIMD指令集来进行量化计算,进一步提升计算效率。 总结来说,NCNN int8量化是将CNN模型从float32转换为INT8的过程,可以通过Caffe-Int8-Convert-Tools工具进行转换,并在NCNN框架中运行。量化和反量化操作以及优化的INT8卷积操作是实现这一过程的关键。你可以参考中的内容了解更多细节。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [CNN模型 INT8 量化实现方式(一)](https://blog.csdn.net/zhangjunhit/article/details/84562334)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [NCNN INT8实现](https://blog.csdn.net/weixin_41521681/article/details/115156819)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

papaofdoudou

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值