CNN模型 int8量化实现方式(二)
python 版本切换
sudo update-alternatives --list python
sudo update-alternatives --config python
卸载TensorFlow
先介绍卸载, 如果你的tensorflow是用pip安装的,那下面简单的命令就可以完成卸载了
sudo pip uninstall tensorflow_gpu
sudo pip3 uninstall tensorflow_gpu
这里介绍一个完全基于 Tensorflow 的模型量化方法,以 yolo v3 为例
1)利用现有yolo v3 模型 生成 Tensorflow pb 模型
基于 https://github.com/mystic123/tensorflow-yolo-v3
Run python ./convert_weights.py and python ./convert_weights_pb.py
2)完全基于 Tensorflow 的量化
https://blog.csdn.net/u011961856/article/details/76736103
1.源码编译安装tensorflow
可参考 https://blog.csdn.net/u011961856/article/details/76725411
2 编译量化工具
sudo bazel build tensorflow/tools/quantization:quantize_graph
3.模型量化:
sudo bazel-bin/tensorflow/tools/quantization/quantize_graph --input=/tmp/classify_image_graph_def.pb --output_node_names="softmax" --output=/tmp/quantized_graph.pb --mode=eightbit
/tmp/ 这个路径我的修改为自己的绝对路径
sudo bazel-bin/tensorflow/tools/quantization/quantize_graph --input=/home/zhangjun/tensorflow/tmp/classify_image_graph_def.pb --output_node_names="softmax" --output=/home/zhangjun/tensorflow/tmp/quantized_graph.pb --mode=eightbit
4.测试量化模型:
测试量化前的模型结果:
sudo bazel-bin/tensorflow/examples/label_image/label_image --graph=/tmp/classify_image_graph_def.pb --input_width=299 --input_height=299 --input_mean=128 --input_std=128 --input_layer="Mul:0" --output_layer="softmax:0" --labels="/tmp/imagenet_synset_to_human_label_map.txt" --image="/tmp/cropped_panda.jpg"
/tmp/ 这个路径我的修改为自己的绝对路径
sudo bazel-bin/tensorflow/examples/label_image/label_image --graph=/home/zhangjun/tensorflow/tmp/classify_image_graph_def.pb --input_width=299 --input_height=299 --input_mean=128 --input_std=128 --input_layer="Mul:0" --output_layer="softmax:0" --labels="/home/zhangjun/tensorflow/tmp/imagenet_synset_to_human_label_map.txt" --image="/home/zhangjun/tensorflow/tmp/cropped_panda.jpg"
测试量化后的模型结果:
sudo bazel-bin/tensorflow/examples/label_image/label_image --graph=/tmp/quantized_graph.pb --input_width=299 --input_height=299 --input_mean=128 --input_std=128 --input_layer="Mul:0" --output_layer="softmax:0" --labels="/tmp/imagenet_synset_to_human_label_map.txt" --image="/tmp/cropped_panda.jpg"
/tmp/ 这个路径我的修改为自己的绝对路径
bazel-bin/tensorflow/examples/label_image/label_image --graph=/home/zhangjun/tensorflow/tmp/quantized_graph.pb --input_width=299 --input_height=299 --input_mean=128 --input_std=128 --input_layer="Mul:0" --output_layer="softmax:0" --labels="/home/zhangjun/tensorflow/tmp/imagenet_synset_to_human_label_map.txt" --image="/home/zhangjun/tensorflow/tmp/cropped_panda.jpg"
tensorflow 对于 模型的量化目前来说并不成熟,处于开发阶段,tensorflow lite 是应该已经支持 量化模型的运行, 而 tensorflow 本身的支持很有限,貌似正在集成
CNN模型 int8量化实现方式(二)相关推荐
- CNN模型 INT8 量化实现方式(一)
当前CNN模型基本都是 float32,将其转换为 INT8 可以降低模型大小,提升速度,精度降低的也不太多.那么在实际中如何实现这个量化了?在网上找到了三种实践方法, 基于腾讯的NCNN, Tens ...
- OpenVINO 2022.3实战六:NNCF 实现 YOLOv5 模型 INT8 量化
OpenVINO 2022.3实战六:NNCF 实现 YOLOv5 模型 INT8 量化 1 将YOLOv5模型转换为OpenVINO IR 使用OpenVINO模型优化器将YOLOv5模型转换为Op ...
- 【部署加速】模型Int8量化
0前言 为什么量化有用? 因为CNN对噪声不敏感. 2. 为什么用量化? 模型太大,比如alexnet就200MB,存储压力大的哟,必须要降一降温: 每个层的weights范围基本都是确定的,且波动不 ...
- 【Python深度学习】基于Tensorflow2.0构建CNN模型尝试分类音乐类型(二)
前情提要 基于上文所说 基于Tensorflow2.0构建CNN模型尝试分类音乐类型(一) 我用tf2.0和Python3.7复现了一个基于CNN做音乐分类器.用余弦相似度评估距离的一个音乐推荐模型. ...
- NHibernate初学者指南(6):映射模型到数据库之方式二
使用Fluent NHibernate自动映射 使用Fluent NHibernate自动映射,首先要将映射的实体放到一个命名空间中,这使得通知AutoMapper哪些实体和值对象包含在映射中更容易. ...
- TensorRT INT8量化原理与实现(非常详细)
目录 一.模型量化是什么? 二.为什么要做模型量化? 三.模型量化的目标是什么? 四.模型量化的必要条件 五.模型量化的分类 5.1 线性量化和非线性量化 5.2 逐层量化.逐组量化和逐通道量化 5. ...
- 使用OpenVINOTM对YOLOv5进行INT8量化
终于来了一个yolo5的 本身一直停留在v5阶段 这个也是拿来主义 自学 真的为自学 多谢理解啦 如题 .. 使用OpenVINOTM 2022.1 Post-training Optimizati ...
- 【嵌入式AI】CNN模型压缩(剪枝,量化)详解与tensorflow实验
1,CNN模型压缩综述 1 模型压缩的必要性及可行性 (1)必要性:首先是资源受限,其次在许多网络结构中,如VGG-16网络,参数数量1亿3千多万,占用500MB空间,需要进行309亿次浮点运算才能完 ...
- 模型加速之INT8量化原理及实践(基于TensorRT)
一.模型量化: 1.量化的定义是将网络参数从Float-32量化到更低位数,如Float-16.INT8.1bit等. 2.量化的作用:更小的模型尺寸.更低的功耗.更快的计算速度.下图是不同数据结构比 ...
最新文章
- java实现序列化接口6_只有实现 Java.io. 接口的类的对象才能被序列化和反序列化。用关键字 修饰的对象变量将不会序列化。_程序设计基础(C#)答案_学小易找答案...
- 使用session防止表单进行重复提交
- 收集bug开源框架_划重点 | 小程序框架全面测评
- js list操作_使用 Node.js 实现一个命令行 todo-list(1)- 基本功能
- java打印前线程的id_logback打印日志输出线程ID:切面模式
- Eclipse快捷键与使用技巧总结
- Ubuntu、SUSE的发音
- android ndk 混淆,OLLVM + NDK 混淆编译环境搭建
- 乌龟git配置ssh密钥
- Android简单实现汉字笔顺动画——Java版
- 51单片机教室人数进出统计检测数码管显示装置红外传感器
- LaTeX中的参考文献-BibTeX
- 实拍:丽江特色美食腊排骨火锅
- VisualSVN 5.1.7破译License Key
- Android 适配时用到的限定词
- VC++计算正反坐标方向角
- opencv 数学形态学(2) 膨胀运算:dilate
- 微信web H5 安卓无法播放的解决方案
- PASCAL VOC2012数据集
- 实现电路阻抗匹配的两个方法
热门文章
- 多帧点云拼接的全局ICP算法【附Matlab代码链接】
- 差异表达基因-火山图和聚类图解释
- 离散数学当中的部分符号总结
- mysql 事务_MySQL事务
- 用 Python 帮运营妹纸快速搞定 Excel 文档
- MPB:农科院牧医所赵圣国组-微生物超高分子量DNA提取方法
- MPB:中科院深圳先进院戴磊组小鼠粪便样本中16S拷贝数的定量检测
- 德国耶拿大学植物微生物组实验室急招博士生项目,申请截止19年3月20日
- QIIME 2用户文档. 14机器学习预测样品元数据分类和回归q2-sample-classifier(2018.11)
- 再这么配培养基,你的细菌都被毒死了!