如何支持16位深度的图像数据?

caffe训练的一个简单的分类模型,数据是16bit 3通道的图像,文件格式是.png,每个通道的数据动态范围是[0,65535]。转换模型时,数据层自动量化为DFP(fl=7),导致数据导入的不对。怎么解决这个问题?
能否自己设定数据层的格式,比如数据层不进行量化float32或者直接ushort?

ps:似乎tensorzonex读取16bit .png的图像数据有问题,我在第一步0_import_model.sh之后,进行量化之前,尝试运行以下命令:
…/bin/tensorzonex
–action test
–source text
–source-file /home/jcwang/work/3.EvaluationDataPNG/2ndtrain.txt
–channel-mean-value ‘0. 0. 0. 1.’
–model-input ${NAME}.json
–model-data ${NAME}.data
–dtype float32
发现测试结果都不对。

@kdirac 你指的测试结果不对是什么意思,这个测试的量化类型用默认的就可以

在caffe下我训练的模型的识别率约为99.2%,导入模型后,用…/bin/tensorzonex –action test 测试出来的识别率降低为93.5%。

然后我用snaphot方法导出模型各层的输出数据,其中data层的数据是这样的(nhwc方式排列数据),注意没有做量化
image
导出数据的脚本是
$tensorzone
–action snapshot
–source text
–source-file $SourceFilePath
–samples 1
–capture-format nhwc
–output-dir ./snapshot/
–channel-mean-value ‘0 0 0 1’
–reorder-channel ‘2 1 0’
–model-input ${NAME}.json
–model-data ${NAME}.data
–dtype float32
–quantized-dtype none

可以看出来,输出的数据层的数据是8bit的,对照了一下,是截取的16bit的高8位。这是目前面临的问题。

想了解下,
(1)在tensorzonex处理数据的时候,对16bit图像数据处理的机制;
(2)能否选择不对数据层量化,只对后续的卷积层进行量化。如何做相关的参数设置?

@kdirac 这个工具不开源,处理机制目前不清楚,但是一般都是做近似处理的,不能单独分开做量化.这个工具目前不支持这种操作

@kdirac 你可以参数在量化的时候选择其他参数,默认是量化成u8的.

#asymmetric_quantized-u8 dynamic_fixed_point-8 dynamic_fixed_point-16
--quantized-dtype asymmetric_quantized-u8