qat_nv12.bc/quantized_nv12.bc:插入 NV12 预处理节点的伪量化 / 定点 BC 模型
qat_feat.bc/quantized_feat.bc:未插入 NV12 预处理节点的伪量化 / 定点 BC 模型
resizer_input = ["resize"] # 部署时数据来源于resizer的输入节点名称列表
pyramid_input = ["pym"] # 部署时数据来源于pyramid的输入节点名称列表
# 为和历史版本保持兼容,建议使用flatten_inputs将输入展开,如下代码同时兼容新旧版本模型:
for input in func.flatten_inputs[::-1]:
if input.name in pyramid_input:
# pyramid&resizer 只支持 NHWC 的 input layout,若原始输入layout为NHWC,则无需插入transpose
node = input.insert_transpose(permutes=[0, 3, 1, 2])
# 插入前处理节点,具体可参考下一节的说明
node = node.insert_image_preprocess(mode=None, divisor=1, mean=[128, 128, 128], std=[128, 128, 128])
node.insert_image_convert("nv12")
for input in func.flatten_inputs[::-1]:
if input.name in resizer_input:
# pyramid&resizer 只支持 NHWC 的 input layout,若原始输入layout为NHWC,则无需插入transpose
node = input.insert_transpose(permutes=[0, 3, 1, 2])
# 插入前处理节点,具体可参考下一节的说明
node = node.insert_image_preprocess(mode=None, divisor=1, mean=[128, 128, 128], std=[128, 128, 128])
node.insert_roi_resize("nv12")quantized_nv12.bc 与 quantized_feat.bc 推理结果差异显著
qat_nv12.bc 与 quantized_nv12.bc 推理结果一致性差
quantized_nv12.bc 已经插入了 NV12->bgr/rgb 和归一化节点了,所以其输入为 NV12 图像;quantized_feat.bc 的输入需要对齐浮点模型,为手动做过归一化操作的 bgr/rgb 图像;
bgr/rgb->NV12 图像的方式有多种,推荐使用以下方式;
def generate_nv12(img):
w,h = img.size
# Convert images to YUV format
yuv_img = img.convert('YCbCr')
y_data, u_data, v_data = yuv_img.split()
# Convert Y, U, and V channel data to byte streams
y_data_bytes = y_data.tobytes()
u_data_bytes = u_data.resize((u_data.width // 2, u_data.height // 2)).tobytes()
v_data_bytes = v_data.resize((v_data.width // 2, v_data.height // 2)).tobytes()
# Arrange the UV data in the form of UVUVUVUV...
uvuvuv_data = bytearray()
for u_byte, v_byte in zip(u_data_bytes, v_data_bytes):
uvuvuv_data.extend([u_byte, v_byte])
# Input for the hbir model
y = np.frombuffer(y_data_bytes, dtype=np.uint8).reshape(1, h, w, 1).astype(np.uint8)
# np.save("y_data.npy", y)
uv = np.frombuffer(uvuvuv_data, dtype=np.uint8).reshape(1, h//2, w//2, 2).astype(np.uint8)
# np.save("uv_data.npy", uv)
return y, uvfrom hbdk4.compiler import load,compile,hbm_perf,visualize,save,convert
import numpy as np
from horizon_tc_ui.hb_runtime import HBRuntime
def cosine_similarity(vec1, vec2):
"""计算两向量余弦相似度"""
vec1_flat = vec1.flatten()
vec2_flat = vec2.flatten()
dot_product = np.dot(vec1_flat, vec2_flat)
norm_vec1 = np.linalg.norm(vec1_flat)
norm_vec2 = np.linalg.norm(vec2_flat)
return dot_product / (norm_vec1 * norm_vec2) if (norm_vec1 * norm_vec2) != 0 else 0
def compare_noise_impact(float_model_path):
"""对比加噪前后浮点模型输出差异"""
input_data = np.load("data.npy")
# 添加0-2像素值范围的随机噪声
noise = np.random.uniform(0, 2, size=input_data.shape).astype(np.float32)
input_data_noise = input_data + noise
sess = HBRuntime(float_model_path)
input_names = sess.input_names
output_names = sess.output_names
# 原始输入推理
input_dict = {input_names[0]: input_data}
outputs_original = sess.run(output_names, input_dict)
# 加噪输入推理
input_dict_noise = {input_names[0]: input_data_noise}
outputs_noise = sess.run(output_names, input_dict_noise)
https://www.bilibili.com/video/BV1yx47zkEeu/
https://www.bilibili.com/video/BV1yx47zkEeu
https://www.bilibili.com/video/BV1yx47zkEm7/
https://www.bilibili.com/video/BV1yx47zkEm7
https://www.bilibili.com/video/BV11x47zkEK7/
https://www.bilibili.com/video/BV11x47zkEK7
https://www.bilibili.com/video/BV1Nx47zCEjr/
https://www.bilibili.com/video/BV1Nx47zCEjr
https://www.bilibili.com/video/BV11x47zkENp/
https://www.bilibili.com/video/BV11x47zkENp
https://www.bilibili.com/video/BV1yx47zkEbK/
https://www.bilibili.com/video/BV1yx47zkEbK
https://www.bilibili.com/video/BV11x47zkENx/
https://www.bilibili.com/video/BV11x47zkENx
https://www.bilibili.com/video/BV1yx47zkEkh/
https://www.bilibili.com/video/BV1yx47zkEkh
https://www.bilibili.com/video/BV1Nx47zCEek/
https://www.bilibili.com/video/BV1Nx47zCEek
https://www.bilibili.com/video/BV1Px47zCEUt/
https://www.bilibili.com/video/BV1Px47zCEUt
https://www.bilibili.com/video/BV1Px47zCEZJ/
https://www.bilibili.com/video/BV1Px47zCEZJ
https://www.bilibili.com/video/BV1yx47zkEmG/
https://www.bilibili.com/video/BV1yx47zkEmG
https://www.bilibili.com/video/BV1yx47zkEkU/
https://www.bilibili.com/video/BV1yx47zkEkU
https://www.bilibili.com/video/BV1Px47zCEUk/
https://www.bilibili.com/video/BV1Px47zCEUk
https://www.bilibili.com/video/BV11x47zCEVd/
https://www.bilibili.com/video/BV11x47zCEVd
https://www.bilibili.com/video/BV1Nx47zCEPT/
https://www.bilibili.com/video/BV1Nx47zCEPT
https://www.bilibili.com/video/BV1Nx47zCE7e/
https://www.bilibili.com/video/BV1Nx47zCE7e
https://www.bilibili.com/video/BV1Nx47zCEPG/
https://www.bilibili.com/video/BV1Nx47zCEPG
https://www.bilibili.com/video/BV1yx47zkEHN/
https://www.bilibili.com/video/BV1yx47zkEHN
https://www.bilibili.com/video/BV1Px47zCERq/
https://www.bilibili.com/video/BV1Px47zCERq
https://www.bilibili.com/video/BV1yx47zkETZ/
https://www.bilibili.com/video/BV1yx47zkETZ
https://www.bilibili.com/video/BV1Nx47zCEF3/
https://www.bilibili.com/video/BV1Nx47zCEF3
https://www.bilibili.com/video/BV1yx47zkEHE/
https://www.bilibili.com/video/BV1yx47zkEHE
https://www.bilibili.com/video/BV1yx47zkEHJ/
https://www.bilibili.com/video/BV1yx47zkEHJ
https://www.bilibili.com/video/BV1Nx47zCEis/
https://www.bilibili.com/video/BV1Nx47zCEis
https://www.bilibili.com/video/BV1yx47zkEmo/
https://www.bilibili.com/video/BV1yx47zkEmo
https://www.bilibili.com/video/BV1Nx47zCEGn/
https://www.bilibili.com/video/BV1Nx47zCEGn
https://www.bilibili.com/video/BV1yx47zkEC4/
https://www.bilibili.com/video/BV1yx47zkEC4
https://www.bilibili.com/video/BV11x47zkEKC/
https://www.bilibili.com/video/BV11x47zkEKC
https://www.bilibili.com/video/BV1yx47zkE8x/
https://www.bilibili.com/video/BV1yx47zkE8x
https://www.bilibili.com/video/BV1yx47zkEeC/
https://www.bilibili.com/video/BV1yx47zkEeC
https://www.bilibili.com/video/BV1yx47zkECi/
https://www.bilibili.com/video/BV1yx47zkECi
https://www.bilibili.com/video/BV1Nx47zCEGy/
https://www.bilibili.com/video/BV1Nx47zCEGy
https://www.bilibili.com/video/BV1Nx47zCEvk/
https://www.bilibili.com/video/BV1Nx47zCEvk
https://www.bilibili.com/video/BV11x47zkEKm/
https://www.bilibili.com/video/BV11x47zkEKm
https://www.bilibili.com/video/BV1yx47zkE86/
https://www.bilibili.com/video/BV1yx47zkE86
https://www.bilibili.com/video/BV1Nx47zCEAZ/
https://www.bilibili.com/video/BV1Nx47zCEAZ
https://www.bilibili.com/video/BV12H47zLEib/
https://www.bilibili.com/video/BV12H47zLEib
https://www.bilibili.com/video/BV1TH47zjENE/
https://www.bilibili.com/video/BV1TH47zjENE
https://www.bilibili.com/video/BV1KH47zjEkL/
https://www.bilibili.com/video/BV1KH47zjEkL
https://www.bilibili.com/video/BV12H47zLERP/
https://www.bilibili.com/video/BV12H47zLERP
https://www.bilibili.com/video/BV1TH47zjEE1/
https://www.bilibili.com/video/BV1TH47zjEE1
https://www.bilibili.com/video/BV12H47zLEVa/
https://www.bilibili.com/video/BV12H47zLEVa
https://www.bilibili.com/video/BV12H47zLE4k/
https://www.bilibili.com/video/BV12H47zLE4k
https://www.bilibili.com/video/BV1TH47zjEc7/
https://www.bilibili.com/video/BV1TH47zjEc7
https://www.bilibili.com/video/BV1TH47zjEgA/
https://www.bilibili.com/video/BV1TH47zjEgA
https://www.bilibili.com/video/BV12H47zLE4f/
https://www.bilibili.com/video/BV12H47zLE4f
https://www.bilibili.com/video/BV12H47zLEax/
https://www.bilibili.com/video/BV12H47zLEax
https://www.bilibili.com/video/BV12H47zLEvd/
https://www.bilibili.com/video/BV12H47zLEvd
https://www.bilibili.com/video/BV12H47zLEGU/
https://www.bilibili.com/video/BV12H47zLEGU
https://www.bilibili.com/video/BV14H47zjEba/
https://www.bilibili.com/video/BV14H47zjEba
https://www.bilibili.com/video/BV1mH47zLEG7/
https://www.bilibili.com/video/BV1mH47zLEG7
https://www.bilibili.com/video/BV12H47zLEGo/
https://www.bilibili.com/video/BV12H47zLEGo
https://www.bilibili.com/video/BV12H47zLESt/
https://www.bilibili.com/video/BV12H47zLESt
https://www.bilibili.com/video/BV12H47zLEVA/
https://www.bilibili.com/video/BV12H47zLEVA
https://www.bilibili.com/video/BV1TH47zjENg/
https://www.bilibili.com/video/BV1TH47zjENg
https://www.bilibili.com/video/BV12H47zLEVG/
https://www.bilibili.com/video/BV12H47zLEVG
https://www.bilibili.com/video/BV1mH47zLEV9/
https://www.bilibili.com/video/BV1mH47zLEV9
https://www.bilibili.com/video/BV12H47zLEqz/
https://www.bilibili.com/video/BV12H47zLEqz
https://www.bilibili.com/video/BV1TH47zjEc4/
https://www.bilibili.com/video/BV1TH47zjEc4
https://www.bilibili.com/video/BV1TH47zjEgJ/
https://www.bilibili.com/video/BV1TH47zjEgJ
https://www.bilibili.com/video/BV12H47zLEaZ/
https://www.bilibili.com/video/BV12H47zLEaZ
https://www.bilibili.com/video/BV1mH47zLEVk/
https://www.bilibili.com/video/BV1mH47zLEVk
https://www.bilibili.com/video/BV12H47zLEon/
https://www.bilibili.com/video/BV12H47zLEon
https://www.bilibili.com/video/BV12H47zLE8M/
https://www.bilibili.com/video/BV12H47zLE8M
https://www.bilibili.com/video/BV12H47zLE8V/
https://www.bilibili.com/video/BV12H47zLE8V
https://www.bilibili.com/video/BV1TH47zjEwk/
https://www.bilibili.com/video/BV1TH47zjEwk
https://www.bilibili.com/video/BV12H47zLEeF/
https://www.bilibili.com/video/BV12H47zLEeF
https://www.bilibili.com/video/BV12H47zLEQy/
https://www.bilibili.com/video/BV12H47zLEQy
https://www.bilibili.com/video/BV12H47zLEZB/
https://www.bilibili.com/video/BV12H47zLEZB
https://www.bilibili.com/video/BV12H47zLEhg/
https://www.bilibili.com/video/BV12H47zLEhg
https://www.bilibili.com/video/BV1TH47zjEVb/
https://www.bilibili.com/video/BV1TH47zjEVb
https://www.bilibili.com/video/BV1TH47zjEV8/
https://www.bilibili.com/video/BV1TH47zjEV8
https://www.bilibili.com/video/BV12H47zLEZG/
https://www.bilibili.com/video/BV12H47zLEZG
https://www.bilibili.com/video/BV11p47zyEUx/
https://www.bilibili.com/video/BV11p47zyEUx
https://www.bilibili.com/video/BV11p47zyEXd/
https://www.bilibili.com/video/BV11p47zyEXd
https://www.bilibili.com/video/BV12p47zyE8p/
https://www.bilibili.com/video/BV12p47zyE8p
https://www.bilibili.com/video/BV11p47zyEZt/
https://www.bilibili.com/video/BV11p47zyEZt
https://www.bilibili.com/video/BV1xp47z1EQN/
https://www.bilibili.com/video/BV1xp47z1EQN
https://www.bilibili.com/video/BV11p47zyE8M/
https://www.bilibili.com/video/BV11p47zyE8M
https://www.bilibili.com/video/BV1Kp47z1EGJ/
https://www.bilibili.com/video/BV1Kp47z1EGJ
https://www.bilibili.com/video/BV1Kp47z1Ex1/
https://www.bilibili.com/video/BV1Kp47z1Ex1
https://www.bilibili.com/video/BV11p47zyECh/
https://www.bilibili.com/video/BV11p47zyECh
https://www.bilibili.com/video/BV12p47z1EJE/
https://www.bilibili.com/video/BV12p47z1EJE
https://www.bilibili.com/video/BV11p47zyE88/
https://www.bilibili.com/video/BV11p47zyE88
https://www.bilibili.com/video/BV11p47zyE8W/
https://www.bilibili.com/video/BV11p47zyE8W
https://www.bilibili.com/video/BV12p47zyE8F/
https://www.bilibili.com/video/BV12p47zyE8F
https://www.bilibili.com/video/BV1Kp47z1E7T/
https://www.bilibili.com/video/BV1Kp47z1E7T
https://www.bilibili.com/video/BV12p47zyEhL/
https://www.bilibili.com/video/BV12p47zyEhL
https://www.bilibili.com/video/BV12p47zyEhu/
https://www.bilibili.com/video/BV12p47zyEhu
https://www.bilibili.com/video/BV1Tp47z1EFK/
https://www.bilibili.com/video/BV1Tp47z1EFK
https://www.bilibili.com/video/BV1xp47z1ECG/
https://www.bilibili.com/video/BV1xp47z1ECG
https://www.bilibili.com/video/BV11p47zyES2/
https://www.bilibili.com/video/BV11p47zyES2
https://www.bilibili.com/video/BV12p47zyEGm/
https://www.bilibili.com/video/BV12p47zyEGm
https://www.bilibili.com/video/BV1Kp47z1Ery/
https://www.bilibili.com/video/BV1Kp47z1Ery
https://www.bilibili.com/video/BV11p47zyE1b/
https://www.bilibili.com/video/BV11p47zyE1b
https://www.bilibili.com/video/BV11p47z1EZA/
https://www.bilibili.com/video/BV11p47z1EZA
https://www.bilibili.com/video/BV11p47zyEyk/
https://www.bilibili.com/video/BV11p47zyEyk
https://www.bilibili.com/video/BV11p47zyEhn/
https://www.bilibili.com/video/BV11p47zyEhn
https://www.bilibili.com/video/BV1xp47z1EQa/
https://www.bilibili.com/video/BV1xp47z1EQa
https://www.bilibili.com/video/BV1xT4EzyEtu/
https://www.bilibili.com/video/BV1xT4EzyEtu
https://www.bilibili.com/video/BV1xT4EzyE2F/
https://www.bilibili.com/video/BV1xT4EzyE2F
https://www.bilibili.com/video/BV1sT4EzyEdt/
https://www.bilibili.com/video/BV1sT4EzyEdt
https://www.bilibili.com/video/BV1xT4EzyEmu/
https://www.bilibili.com/video/BV1xT4EzyEmu
https://www.bilibili.com/video/BV1xT4EzyEgQ/
https://www.bilibili.com/video/BV1xT4EzyEgQ
https://www.bilibili.com/video/BV1xT4EzyEL7/
https://www.bilibili.com/video/BV1xT4EzyEL7
https://www.bilibili.com/video/BV1xT4EzyEQ2/
https://www.bilibili.com/video/BV1xT4EzyEQ2
https://www.bilibili.com/video/BV1xT4EzyEQk/
https://www.bilibili.com/video/BV1xT4EzyEQk
https://www.bilibili.com/video/BV11T4EzyEzo/
https://www.bilibili.com/video/BV11T4EzyEzo
https://www.bilibili.com/video/BV11T4EzyEZ1/
https://www.bilibili.com/video/BV11T4EzyEZ1
https://www.bilibili.com/video/BV1xT4EzyEwH/
https://www.bilibili.com/video/BV1xT4EzyEwH
https://www.bilibili.com/video/BV1xT4EzyE3T/
https://www.bilibili.com/video/BV1xT4EzyE3T
https://www.bilibili.com/video/BV1xT4EzyEKQ/
https://www.bilibili.com/video/BV1xT4EzyEKQ
https://www.bilibili.com/video/BV1xT4EzyE2z/
https://www.bilibili.com/video/BV1xT4EzyE2z
https://www.bilibili.com/video/BV11T4EzyEoX/
https://www.bilibili.com/video/BV11T4EzyEoX
https://www.bilibili.com/video/BV12T4EzyEL2/
https://www.bilibili.com/video/BV12T4EzyEL2
https://www.bilibili.com/video/BV1sT4EzyEop/
https://www.bilibili.com/video/BV1sT4EzyEop
https://www.bilibili.com/video/BV1xT4EzyE5f/
https://www.bilibili.com/video/BV1xT4EzyE5f
https://www.bilibili.com/video/BV1xT4EzyEgv/
https://www.bilibili.com/video/BV1xT4EzyEgv
https://www.bilibili.com/video/BV1xT4EzyEQa/
https://www.bilibili.com/video/BV1xT4EzyEQa
https://www.bilibili.com/video/BV1xT4EzyEgr/
https://www.bilibili.com/video/BV1xT4EzyEgr
https://www.bilibili.com/video/BV1sT4EzyEot/
https://www.bilibili.com/video/BV1sT4EzyEot
https://www.bilibili.com/video/BV11u4EzVEe6/
https://www.bilibili.com/video/BV11u4EzVEe6
https://www.bilibili.com/video/BV1xu4EzVEN2/
https://www.bilibili.com/video/BV1xu4EzVEN2
https://www.bilibili.com/video/BV1su4EzVEsM/
https://www.bilibili.com/video/BV1su4EzVEsM
https://www.bilibili.com/video/BV1xu4EzVEKF/
https://www.bilibili.com/video/BV1xu4EzVEKF
https://www.bilibili.com/video/BV1su4EzVE3M/
https://www.bilibili.com/video/BV1su4EzVE3M
https://www.bilibili.com/video/BV1su4EzVEsJ/
https://www.bilibili.com/video/BV1su4EzVEsJ
https://www.bilibili.com/video/BV11u4EzVEeA/
https://www.bilibili.com/video/BV11u4EzVEeA
# 计算相似度
return [cosine_similarity(orig, noise) for orig, noise in zip(outputs_original, outputs_noise)]
# 执行验证
similarities = compare_noise_impact(float_model_path="float_model.onnx")
for i, sim in enumerate(similarities):
print(f"输出{i}余弦相似度: {sim:.6f}")楼主最近还看过