产品文档6.7. 附录

6.7. 附录

2026-02-07 20:37:12

本节为您带来 norm_type配置说明 及 transformer说明 的介绍, 为您介绍norm_type相关参数、相关计算公式的说明与解析,图片缩放裁剪时使用的各个transformer的概念、参数说明及示例。

 

6.7.1. norm_type配置说明

6.7.1.1. 参数说明解析

norm_type 参数讲解

  • 参数作用:此参数为在模型中添加的输入数据预处理方法。

  • 参数取值范围及说明:

    • no_preprocess 表示不添加任何数据预处理。

    • data_mean 表示提供减均值预处理。

    • data_scale 表示提供乘scale系数预处理。

    • data_mean_and_scale 表示提供先减均值再乘scale系数前处理。

注意

当输入节点多于一个时,设置的节点顺序需要与 input_name 中的顺序严格保持一致。

mean_value 参数讲解

  • 参数作用:此参数表示指定预处理方法的图像减去的均值。

  • 使用说明:当 norm_type 取值为 data_mean_and_scale 或 data_mean 时需要配置该参数。

  • 参数说明:

    • 当只有一个输入节点时,仅需要配置一个数值,表示所有通道都减去这个均值。

    • 当有多个节点时,提供与通道数量一致的数值(这些数值以空格分隔开),表示每个通道都会减去不同的均值。

注意

  1. 配置的输入节点数量必须与 norm_type 配置的节点数量一致。

  2. 如果存在某个节点不需要 mean 处理,则为该节点配置 'None'

scale_value 参数讲解

  • 参数作用:此参数表示指定预处理方法的数值scale系数。

  • 使用说明:当 norm_type 取值为 data_mean_and_scale 或 data_scale 时需要配置该参数。

  • 参数说明:

    • 当只有一个输入节点时,仅需要配置一个数值,表示所有通道都乘以这个系数。

    • 当有多个节点时,提供与通道数量一致的数值(这些数值以空格分隔开),表示每个通道都会乘以不同的系数。

注意

  1. 配置的输入节点数量必须与 norm_type 配置的节点数量一致。

  2. 如果存在某个节点不需要 scale 处理,则为该节点配置 'None'

6.7.1.2. 计算公式及示例说明

6.7.1.2.1. 模型训练时的数据标准化处理计算公式

yaml文件中的mean和scale参数与训练时的mean、std需要进行换算。

6.7.1.2.2. 模型推理时的计算公式

通过对yaml配置文件中的配置参数,决定是否加入HzPreprocess节点。 当配置mean/scale时,做模型转换时,会在输入端新增一个HzPreprocess节点,HzPreprocess节点可以理解为对输入数据做了一个conv操作。

注意

  1. 在yaml中添加mean/scale后,就不需要在前处理内添加MeanTransformer和ScaleTransformer了。

  2. 在yaml中添加mean/scale,会将参数放入到HzPreprocess节点内,HzPreprocess节点为BPU 节点。

 

 

6.7.2. 图片处理transformer说明

本章节将对您在进行图片缩放裁剪时使用的各个transformer的概念及参数进行说明,并为您提供参考使用示例,方便您进行tranformer操作。

在文档内容开始阅读前,以下内容请您注意:

注意

图像数据为三维数据,但地平线提供的transformer默认第一维为N维,会对数据以第一维拆分循环处理,所以如果您需要对图像做处理,请提供四维数据。

6.7.2.1. AddTransformer

说明

对输入图片中的所有像素值做增加value的操作。该transformer会在输出时, 将数据格式转为float32。

参数

  • value: 对每个像素做增加的数值, 注意value的取值可以为负数, 如 -128。

使用举例

6.7.2.2. MeanTransformer

说明

对输入图片中的所有像素值做减去mean_value的操作。

参数

  • means:对每个像素做增加的数值, 注意value的取值可以为负数, 如 -128。

  • data_format:输入的layout类型,取值范围为[“CHW”,”HWC”], 默认 “CHW”。

使用举例

6.7.2.3. ScaleTransformer

说明

对输入图片中的所有像素值做乘以data_scale系数的操作。

参数

  • scale_value: 需要乘以的系数,如0.0078125 或者1/128。

使用举例

6.7.2.4. NormalizeTransformer

说明

用于对输入图片进行归一化的操作。该transformer会在输出时, 将数据格式转为float32。

参数

  • std:输入的第一张图片,需要除以的数值。

使用举例

6.7.2.5. TransposeTransformer

说明

用于做layout转换的操作。

参数

  • order:对输入图片做layout转换后的顺序(顺序与原有的layout顺序有关)。如:HWC的顺序为0,1,2,需要转为CHW时,order为(2,0,1)。

使用举例

6.7.2.6. HWC2CHWTransformer

说明

用于将NHWC转换为NCHW的操作。

参数:不涉及。

使用举例

6.7.2.7. CHW2HWCTransformer

说明

用于将NCHW转换为NHWC的操作。

参数:不涉及。

使用举例

6.7.2.8. CenterCropTransformer

说明

以直接截断取值的方式从图片中心裁剪出一个正方形的图片的操作。该transformer会在输出时, 将数据格式转为float32。当data_type的值为uint8时,输出为uint8。

参数

  • crop_size:中心裁剪的正方形的边长size。

  • data_type:输出结果的类型,取值范围为[“float”, “uint8”]。

使用举例

6.7.2.9. PILCenterCropTransformer¶

说明

使用PIL的方式从图片中心裁剪出一个正方形的图片的操作。该transformer会在输出时, 将数据格式转为float32。

参数

  • size: 中心裁剪的正方形的边长size。

使用举例

6.7.2.10. LongSideCropTransformer

说明

用于做长边裁剪的操作。该 transformer 会在输出时, 将数据格式转为float32。

当宽度比高度的数值大时,会裁剪出一个中心以高度大小为准的正方形,如宽100,高70,裁剪之后大小为70*70。

当高度比宽度的数值大时,会裁剪出一个中心以宽度大小不变,高度为差值的一半+宽度 的长方形,如宽70,高100,裁剪之后大小为 70*(100-70)/2+70 ,即70* 85大小的长方形。

参数:不涉及。

使用举例

6.7.2.11. PadResizeTransformer

说明

使用填充的方式做图像放大的操作。该 transformer 会在输出时, 将数据格式转为float32。

参数

  • target_size:目标大小,值为元组,如(240,240)。

  • pad_value:填充到数组中的值,默认值为127。

  • pad_position:填充的位置,取值范围为[“boundary”, “bottom_right”],默认值为 “boundary”。

使用举例

6.7.2.12. ResizeTransformer

说明

用于调整图像大小的操作。

参数

  • target_size:目标大小,值为元组,如(240,240)。(240,240):前一个240代表高度为240,后一个240代表宽度为240。

  • mode:图片处理模式,取值范围为(“skimage”,”opencv”),默认值为 “skimage”。

  • method:插值的方法,此参数仅在mode为skimage时生效。取值范围为0-5,默认值为1,其中:

    • 0代表Nearest-neighbor;

    • 1代表Bi-linear(default);

    • 2代表Bi-quadratic;

    • 3代表Bi-cubic;

    • 4代表Bi-quartic;

    • 5代表Bi-quintic。

  • data_type:输出的类型,取值范围为(uint8,float),默认为float类型。当被设置为uint8时,输出类型为uint8 ,其他情况为float32。

  • interpolation:插值的方法,此参数仅在mode为opencv时生效。默认为空,取值范围为(opencv的插值方式), 目前interpolation仅支持为空或opencv中的INTER_CUBIC两种插值方法,当interpolation为空时,默认使用INTER_LINEAR方式。

    以下为opencv中支持的插值方式及说明(目前未支持的插值方式将在后续迭代中逐步支持):

    • INTER_NEAREST,最近邻插值;

    • INTER_LINEAR,双线性插值,当interpolation为空时,默认使用这种方法。

    • INTER_CUBIC,双三次插值4x4像素邻域内的双立方插值。

    • INTER_AREA,使用像素面积关系重采样。它可能是图像抽取的首选方法,因为它可以提供无莫尔条纹的结果。但是当图像被缩放时,它类似于INTER_NEAREST方法。

    • INTER_LANCZOS4,8x8邻域的Lanczos插值。

    • INTER_LINEAR_EXACT,位精确双线性插值。

    • INTER_NEAREST_EXACT,位精确最近邻插值。这将产生与PIL、scikit-image或Matlab中的最近邻方法相同的结果。

    • INTER_MAX,插值代码的掩码。

    • WARP_FILL_OUTLIERS,标志,填充所有目标图像像素。如果其中一些对应于源图像中的异常值,则将它们设置为零。

    • WARP_INVERSE_MAP,标志,逆变换。

使用举例

6.7.2.13. PILResizeTransformer

说明

使用PIL库做调整图像大小的操作。

参数

  • size:目标大小,值为元组,如(240,240)。

  • interpolation:指定插值的方式,取值范围:(Image.NEAREST,Image.BILINEAR,Image.BICUBIC,Image.LANCZOS), 默认值为Image.BILINEAR。

    • Image.NEAREST:最近邻采样;

    • Image.BILINEAR:线性插值;

    • Image.BICUBIC:三次样条插值;

    • Image.LANCZOS:高质量下采样滤波器。

使用举例

6.7.2.14. ShortLongResizeTransformer

说明

按照原比例对输入图片进行缩放的操作,新图片的大小与设置的参数有关。操作方式如下:

  1. 先以short_size的大小除以原图片的宽和高里最小值,以这个值为缩放比例系数。

  2. 当缩放比例系数乘以原图片的宽和高中的最大值,得到的结果大于long_size的数值时,缩放比例系数将变更为long_size除以原图片的宽和高中的最大值。

  3. 使用opencv中的resize方法,根据上方得到的缩放比例系数重新裁剪图片。

参数

  • short_size:预期裁剪后的短边的长度。

  • long_size:预期裁剪后的长边的长度。

  • include_im:默认值为True,设置为True时, 会在返回时除了返回处理后的图片, 还会返回原图片。

使用举例

6.7.2.15. PadTransformer

说明

通过用目标大小的size值除以输入图片宽或者高里的最大值为系数,然后使用这个系数乘以原有的宽高,resize图片。 然后根据新图片的大小,除以size_divisor后向上取整后,再乘以size_divisor,为新的宽高,生成新的图片的操作。

参数

  • size_divisor:大小除数 ,默认值为128。

  • target_size:目标大小,默认值为512。

使用举例

6.7.2.16. ShortSideResizeTransformer

说明

根据期望的短边的长度,使用现在的长短边的比例,中心裁剪出新的图片大小的操作。

参数

  • short_size:预期的短边的长度。

  • data_type:输出结果的类型,取值范围为(“float”,”uint8”),默认取值”float32”, 以 float32 类型输出,设置为uint8时,输出类型将为uint8。

  • interpolation:指定插值的方式,取值范围为 opencv 中采用的插值方式,默认为空。

    目前interpolation仅支持为空或opencv中的INTER_CUBIC两种插值方法,当interpolation为空时,默认使用INTER_LINEAR方式。

    以下为opencv中支持的插值方式及说明(目前未支持的插值方式将在后续迭代中逐步支持):

    • INTER_NEAREST,最近邻插值;

    • INTER_LINEAR,双线性插值,当interpolation为空时,默认使用这种方法。

    • INTER_CUBIC,双三次插值4x4像素邻域内的双立方插值。

    • INTER_AREA,使用像素面积关系重采样。它可能是图像抽取的首选方法,因为它可以提供无莫尔条纹的结果。但是当图像被缩放时,它类似于INTER_NEAREST方法。

    • INTER_LANCZOS4,8x8邻域的Lanczos插值。

    • INTER_LINEAR_EXACT,位精确双线性插值。

    • INTER_NEAREST_EXACT,位精确最近邻插值。这将产生与PIL、scikit-image或Matlab中的最近邻方法相同的结果。

    • INTER_MAX,插值代码的掩码。

    • WARP_FILL_OUTLIERS,标志,填充所有目标图像像素。如果其中一些对应于源图像中的异常值,则将它们设置为零。

    • WARP_INVERSE_MAP,标志,逆变换。

使用举例

6.7.2.17. PaddedCenterCropTransformer

说明

使用填充的方式对图片中心进行裁剪的操作。

注意

仅适用于EfficientNet-lite相关实例模型。

计算方式为:

  1. 计算系数,int((float( image_size ) / ( image_size + crop_pad ))。

  2. 计算中心size的大小, 系数 * np.minimum( 原始图片的高度, 原始图片的宽度 ))。

  3. 根据计算出来的size大小,做中心裁剪。

参数

  • image_size:图片的大小,默认值为224。

  • crop_pad:中心填充的大小,默认值为32。

使用举例

6.7.2.18. BGR2RGBTransformer

说明

将输入格式由BGR转成RGB的操作。

参数

  • data_format:数据格式,取值范围为(CHW,HWC),默认值为CHW。

使用举例

6.7.2.19. RGB2BGRTransformer

说明

将输入格式由RGB转成BGR的操作。

参数

  • data_format:数据格式,取值范围为(CHW,HWC),默认值为CHW。

使用举例

6.7.2.20. RGB2GRAYTransformer

说明

将输入格式由RGB转成GRAY的操作。

参数

  • data_format:输入的layout类型,取值范围(“CHW”,”HWC”),默认为”CHW”。

使用举例

6.7.2.21. BGR2GRAYTransformer

说明

将输入格式由 BGR 转成 GRAY 的操作。

参数

  • data_format:输入的layout类型,取值范围 [“CHW”,”HWC”],默认值为”CHW”。

使用举例

6.7.2.22. RGB2GRAY_128Transformer

说明

输入格式由RGB转成GRAY_128的操作。GRAY_128取值范围为(-128,127)。

参数

  • data_format:输入的layout类型,取值范围为[“CHW”,”HWC”],默认值为”CHW”,此项为必填项。

使用举例

6.7.2.23. RGB2YUV444Transformer

说明

将输入格式由RGB转成YUV444的操作。

参数

  • data_format:输入的layout类型,取值范围为[“CHW”, “HWC”],默认值为”CHW”,此项为必填项。

使用举例

6.7.2.24. BGR2YUV444Transformer

说明

将输入格式由BGR转成YUV444的操作。

参数

  • data_format:输入的layout类型,取值范围为[“CHW”,”HWC”],默认值为 “CHW”,此项为必填项。

使用举例

6.7.2.25. BGR2YUV444_128Transformer

说明

将输入格式由BGR转成YUV444_128的操作。YUV444_128取值范围为(-128,127)。

参数

  • data_format:输入的layout类型,取值范围为[“CHW”,”HWC”],默认值为 “CHW”,此项为必填项。

使用举例

6.7.2.26. RGB2YUV444_128Transformer

说明

将输入格式由RGB转成YUV444_128的操作。YUV444_128取值范围为(-128,127)。

参数

  • data_format:输入的layout类型,取值范围为[“CHW”,”HWC”],默认值为”CHW”,此项为必填项。

使用举例

6.7.2.27. BGR2YUVBT601VIDEOTransformer

说明

将输入格式由BGR转成YUV_BT601_Video_Range的操作。

YUV_BT601_Video_Range,某些摄像头输入数据都是YUV BT601(Video Range)格式的,取值范围为16~235,该transformer就是适配这种格式的数据产生的。

参数

  • data_format:输入的layout类型,取值范围为[“CHW”,”HWC”],默认值为”CHW”,此项为必填项。

使用举例

6.7.2.28. RGB2YUVBT601VIDEOTransformer

说明

将输入格式由RGB转成YUV_BT601_Video_Range的操作。

YUV_BT601_Video_Range,某些摄像头输入数据都是YUV BT601(Video Range)格式的,取值范围为16~235,该transformer就是适配这种格式的数据产生的。

参数

  • data_format:输入的layout类型,取值范围为[“CHW”,”HWC”],默认值为”CHW”,此项为必填项。

使用举例

6.7.2.29. YUVTransformer

说明

将输入格式转成YUV444的操作。

参数

  • color_sequence:颜色序列,此项为必填项。

使用举例

6.7.2.30. ReduceChannelTransformer

说明

将C通道缩减为单通道的操作。该transformer主要是针对于C通道,如shape为1*3*224*224 改为1*1*224*224。 使用时layout一定要和data_format值对齐,避免造成删错通道。

参数

  • data_format:输入的layout类型,取值范围为[“CHW”, “HWC”],默认值为”CHW”。

使用举例

6.7.2.31. BGR2NV12Transformer

说明

将输入格式由BGR转成NV12的操作。

参数

  • data_format:输入的layout类型,取值范围为[“CHW”,”HWC”],默认值为”CHW”。

  • cvt_mode:cvt模式,取值范围为(rgb_calc,opencv),默认值为rgb_calc。

    • rgb_calc,采用mergeUV的方式处理图片;

    • opencv,采用opencv的方式处理图片。

使用举例

6.7.2.32. RGB2NV12Transformer

说明

将输入格式由RGB转成NV12的操作。

参数

  • data_format:输入的 layout 类型,取值范围 [“CHW”, “HWC”], 默认值为”CHW”。

  • cvt_mode:cvt模式,取值范围为(rgb_calc,opencv),默认值为rgb_calc。

    • rgb_calc,采用mergeUV的方式处理图片;

    • opencv,采用opencv的方式处理图片。

使用举例

6.7.2.33. NV12ToYUV444Transformer

说明

将输入格式由NV12转成YUV444的操作。

参数

  • target_size:目标大小,值为元组,如(240,240)。

  • yuv444_output_layout:yuv444输出的layout,取值范围为(HWC,CHW),默认值为”HWC”。

使用举例

6.7.2.34. WarpAffineTransformer

说明

用于做图像仿射变换的操作。

参数

  • input_shape:输入的shape值。

  • scale:乘以的系数。

使用举例

6.7.2.35. F32ToS8Transformer

说明

用于做输入格式从float32转换为int8的操作。

参数:不涉及。

使用举例

6.7.2.36. F32ToU8Transformer

说明

用于做输入格式从float32转换为uint8的操作。

参数:不涉及。

使用举例

文档内容对你是否有帮助?