基于 Googlenet 的图像分类
1. 配置 Docker 开发环境
参考 这里 配置好 Docker 开发环境后,再回到这里继续下一步。
注意
若您使用已经配置好的 Docker 开发环境,请您启动 Docker 后务必按照 Docker 配置教程执行 source ./tpu-mlir/envsetup.sh
命令,否则后续步骤可能报错。
2. 在 Docker 中准备工作目录
创建并进入 googlenet
工作目录,注意是与 tpu-mlir
同级的目录
# mkdir googlenet && cd googlenet
获取原始模型
wget https://media.githubusercontent.com/media/onnx/models/main/validated/vision/classification/inception_and_googlenet/googlenet/model/googlenet-12.onnx
拷贝测试图片:
# cp -rf ${TPUC_ROOT}/regression/dataset/ILSVRC2012/ .
# cp -rf ${TPUC_ROOT}/regression/image/ .
这里的 ${TPUC_ROOT}
是环境变量,对应 tpu-mlir
目录,是 在前面配置 Docker 开发环境中 source ./tpu-mlir/envsetup.sh
这一步加载的
创建并进入 work
工作目录,用于存放编译生成的 MLIR、cvimodel 等文件
# mkdir work && cd work
3. ONNX 模型转换
提示
Duo 开发板搭载的是 CV1800B 芯片,该芯片支持 ONNX 系列 和 Caffe 模型,目前不支持 TFLite 模型。在量化数据类型方面,支持 BF16 格式的量化 和 INT8 格式的非对称量化
ONNX 模型转换成 MLIR
本例中的模型是 RGB 输入, mean
和 scale
分别为 123.675
,116.28
,103.53
和 0.0171
,0.0175
,0.0174
,模型转换命令如下:
model_transform.py \
--model_name googlenet \
--model_def ../googlenet-12.onnx \
--test_input ../image/cat.jpg \
--input_shapes [[1,3,224,224]] \
--resize_dims 256,256 \
--mean 123.675,116.28,103.53 \
--scale 0.0171,0.0175,0.0174 \
--pixel_format rgb \
--test_result googlenet_top_outputs.npz \
--mlir googlenet.mlir
运行成功效果示例
转成 MLIR 模型后,会生成一个 googlenet.mlir
文件,该文件即为 MLIR 模型文件,还会生成一个 googlenet_in_f32.npz
文件和一个 googlenet_top_outputs.npz
文件,是后续转模型的输入文件