首页
商城
  • English
  • 简体中文
首页
商城
  • English
  • 简体中文
  • 产品系列

    • FPGA+ARM

      • GM-3568JHF

        • 一、简介

          • GM-3568JHF 简介
        • 二、快速开始

          • 00 前言
          • 01 环境搭建
          • 02 编译说明
          • 03 烧录指南
          • 04 调试工具
          • 05 软件更新
          • 06 查看信息
          • 07 测试命令
          • 08 应用编译
          • 09 源码获取
        • 三、外设与接口

          • 01 USB
          • 02 显示与触摸
          • 03 以太网
          • 04 WIFI
          • 05 蓝牙
          • 06 TF-Card
          • 07 音频
          • 08 串口
          • 09 CAN
          • 10 RTC
        • 四、应用开发

          • 01 UART读写案例
          • 02 按键检测案例
          • 03 LED灯闪烁案例
          • 04 MIPI屏幕检测案例
          • 05 读取 USB 设备信息案例
          • 06 FAN 检测案例
          • 07 FPGA FSPI 通信案例
          • 08 FPGA DMA 读写案例
          • 09 GPS调试案例
          • 10 以太网测试案例
          • 11 RS485读写案例
          • 12 FPGA IIC 读写案例
          • 13 PN532 NFC读卡案例
          • 14 TF卡读写案例
        • 五、QT开发

          • 01 ARM64交叉编译器环境搭建
          • 02 QT 程序加入开机自启服务
        • 六、RKNN_NPU开发

          • 01 RK3568 NPU 概述
          • 02 开发环境搭建
          • 运行官方 YOLOv5 示例
        • 七、FPGA开发

          • ARM与FPGA通讯
          • FPGA开发手册
        • 八、其他

          • 01 根目录文件系统的修改
          • 02 系统自启服务
        • 九、资料下载

          • 资料下载
    • ShimetaPi

      • M4-R1

        • 一、简介

          • M4-R1简介
        • 二、快速上手

          • 01 OpenHarmony概述
          • 02 镜像烧录
          • 03 应用开发快速上手
          • 04 设备开发快速上手
        • 三、应用开发

          • 01 ArkUI

            • 1 ArkTS语言简介
            • 2 UI 组件-Row 容器介绍
            • 3 UI 组件-Column 容器介绍
            • 4 UI 组件-Text 组件
            • 5 UI 组件-Toggle 组件
            • 6 UI 组件-Slider 组件
            • 7 UI 组件-Animation 组件&Transition 组件
          • 02 资料获取

            • 1 OpenHarmony 官方资料
          • 03 开发须知

            • 1 Full-SDK替换教程
            • 2 引入和使用三方库
            • 3 HDC调试
            • 4 命令行恢复出厂模式
            • 5 升级App为system权限
          • 04 构建第一个应用

            • 1 构建第一个ArkTs应用-HelloWorld
          • 05 案例

            • 01 串口调试助手应用案例
            • 02 手写板应用案例
            • 03 数字时钟应用案例
            • 04 WIFI 信息获取应用案例
        • 四、设备开发

          • 1 Ubuntu环境开发

            • 01 环境搭建
            • 02 下载源码
            • 03 编译源码
          • 2 使用DevEco Device Tool 工具

            • 01 工具简介
            • 02 开发环境的搭建
            • 03 导入SDK
            • 04 HUAWEI DevEco Tool 功能介绍
        • 五、内核外设与接口

          • 01 指南
          • 02 设备树介绍
          • 03 NAPI 入门
          • 04 ArkTS入门
          • 05 NAPI开发实战演示
          • 06 GPIO介绍
          • 07 I2C通讯
          • 08 SPI通信
          • 09 PWM 控制
          • 10 串口通讯
          • 11 TF卡
          • 12 屏幕
          • 13 触摸
          • 14 Ethernet(以太网)
          • 15 M.2 硬盘
          • 16 音频
          • 17 WIFI & BT
          • 18 摄像头
        • 六、资料下载

          • 资料下载
      • M5-R1

        • 一、简介

          • M5-R1 开发文档
        • 二、快速上手

          • 镜像烧录
          • 环境搭建
          • 下载源码
        • 三、外设与接口

          • 树莓派接口
          • GPIO 接口
          • I2C 接口
          • SPI通信
          • PWM控制
          • 串口通讯
          • TF Card
          • 屏幕
          • 触摸
          • 音频
          • RTC
          • Ethernet
          • M.2
          • MINI-PCIE
          • Camera
          • WIFI&BT
        • 四、资料下载

          • 资料下载
      • Pico-G1

        • 一、产品概述

          • 01 芯片与硬件平台介绍
          • 02 SDK版本说明
        • 二、快速入门

          • 01 开发环境搭建
          • 02 镜像编译
          • 03 镜像烧录
          • 04 系统登录
          • 05 网络配置
          • 06 文件传输
          • 07 SDK目录结构
          • 08 部署第一个应用程序
          • 09 部署第一个驱动程序
          • 10 SD卡挂载
        • 三、外设与接口

          • 01 GPIO控制
          • 02 UART串口通信
          • 03 I2C 通信
          • 04 SPI 通信
        • 四、MPP媒体开发

          • 01 MPP媒体处理软件
          • 02 图像处理链路
          • 03 视频输入
          • 04 图像编码
        • 五、NPU与AI

          • 01 NPU驱动与运行库架构
          • 02 .xmm 模型加载
          • 03 SVP视频处理
          • 04 AI降噪 (AI_NR)
        • 六、应用程序示例

          • 01 区域运动检测应用
          • 02 MTCNN 人脸检测应用
    • 开源鸿蒙

      • SC-3568HA

        • 一、简介

          • SC-3568HA简介
        • 二、快速上手

          • OpenHarmony概述
          • 镜像烧录
          • 开发环境准备
          • Hello World应用以及部署
        • 三、应用开发

          • ArkUI

            • 第一章 ArkTS语言简介
            • 第二章 UI组件介绍和实际应用(上)
            • 第三章 UI组件介绍和实际应用(中)
            • 第四章 UI组件介绍和实际应用(下)
          • 拓展

            • 第一章 入门指引
            • 第二章 三方库的引用和使用
            • 第三章 应用编译以及部署
            • 第四章 命令行恢复出厂设置
            • 第五章 系统调试--HDC调试
            • 第六章 APP 稳定性测试
            • 第七章 应用测试
        • 四、设备开发

          • 第一章 环境搭建
          • 第二章 下载源码
          • 第三章 编译源码
        • 五、内核的外设与接口

          • 树莓派接口
          • GPIO 接口
          • I2C 接口
          • SPI通信
          • PWM控制
          • 串口通讯
          • TF Card
          • 屏幕
          • 触摸
          • 音频
          • RTC
          • Ethernet
          • M.2
          • MINI-PCIE
          • Camera
          • WIFI&BT
          • 树莓派拓展板
        • 六、资料下载

          • 资料下载
      • M-K1HSE

        • 一、简介

          • M-K1HSE 简介
        • 二、快速开始

          • 开发环境搭建
          • 源码获取
          • 编译说明
          • 烧录指南
        • 三、应用开发

          • 00 应用开发环境搭建
          • 01 第一个应用-Hello World
        • 四、外设与接口

          • 01 Audio
          • 02 RS485
          • 03 Display
        • 五、系统定制开发

          • 系统移植
          • 系统定制
          • 驱动开发
          • 系统调试
          • OTA升级
        • 六、资料下载

          • 资料下载
    • EVS相机

      • CF-NRS1

        • 一、简介

          • 01-产品介绍
          • 02-相关概念
          • 03-MultiVision Studio 介绍
        • 二、开发

          • 01-ShiMetaPi Hybrid vision SDK 介绍
          • 02-Hybrid_vision_toolkit
          • 03-Hybrid_vision_toolkit API (C++)
          • 04 Hybrid Vision algo
          • 05 Hybrid vision algo API
          • 06 EVS Network Server
          • 07 EVS Time Sync
          • 08 Web Window
        • 三、资料下载

          • 资料下载
        • 四、常见问题

          • 常见问题解决指南
      • CF-CRA2

        • 一、简介

          • CF-NRS2 简介
        • 二、资料下载

          • 资料下载
      • EVS模块

        • 一、相关概念
        • 二、硬件准备与环境配置
        • 三、示例程序使用指南
        • 资料下载
    • AI硬件

      • 1684XB-32T

        • 一、简介

          • AIBOX-1684XB-32简介
        • 二、快速上手

          • 初次使用
          • 网络配置
          • 磁盘使用
          • 内存分配
          • 风扇策略
          • 固件升级
          • 交叉编译
          • 模型量化
        • 三、应用开发

          • 开发简介

            • Sophgo SDK开发
            • SOPHON-DEMO简介
          • 大语言模型

            • 部署Llama3示例
            • Sophon LLM_api_server开发
            • 部署MiniCPM-V-2_6
            • Qwen-2-5-VL图片视频识别DEMO
            • Qwen3-chat-DEMO
            • Qwen3-Qwen Agent-MCP开发
            • Qwen3-langchain-AI Agent
          • 深度学习

            • ResNet(图像分类)
            • LPRNet(车牌识别)
            • SAM(通用图像分割基础模型)
            • YOLOv5(目标检测)
            • OpenPose(人体关键点检测)
            • PP-OCR(光学字符识别)
        • 四、资料下载

          • 资料下载
      • 1684X-416T

        • 简介

          • AIBOX-1684X-416简介
        • Demo简单操作指引

          • shimeta智慧监控demo的简单使用说明
      • RDK-X5

        • 简介

          • RDK-X5 硬件简介
        • 快速开始

          • RDK-X5 快速开始
        • 应用开发

          • AI在线模型开发

            • 实验01-接入火山引擎豆包 AI
            • 实验02-图片分析
            • 实验03-多模态视觉分析定位
            • 实验04-多模态图文比较分析
            • 实验05-多模态文档表格分析
            • 实验06-摄像头运用-AI视觉分析
          • 大语言模型

            • 实验01-语音识别
            • 实验02-语音对话
            • 实验03-多模态图片分析-语音对话
            • 实验04-多模态图片比较-语音对话
            • 实验05-多模态文档分析-语音对话
            • 实验06-多模态视觉运用-语音对话
          • ROS2基础开发

            • 实验01-搭建环境
            • 实验02-工作包的创建及编译
            • 实验03-运行 ROS2 话题通信节点
            • 实验04-ROS2 相机应用
          • 40pin-IO开发

            • 实验01-GPIO 输出(LED闪烁)
            • 实验02-GPIO 输入
            • 实验03-按键控制 LED
            • 实验04-PWM 输出
            • 实验05-串口输出
            • 实验06-IIC 实验
            • 实验07-SPI 实验
          • USB模块开发使用

            • 实验01-USB 语音模块使用
            • 实验02-声源定位模块使用
          • 机器视觉技术实战

            • 实验01-打开 USB 摄像头
            • 实验02-颜色识别检测
            • 实验03-手势识别体验
            • 实验04-YOLOv5物体检测
      • RDK-S100

        • 简介

          • RDK-S100 硬件简介
        • 快速开始

          • RDK-S100 硬件简介
        • 应用开发

          • AI在线模型开发

            • 实验01-接入火山引擎豆包 AI
            • 实验02-图片分析
            • 实验03-多模态视觉分析定位
            • 实验04-多模态图文比较分析
            • 实验05-多模态文档表格分析
            • 实验06-摄像头运用-AI视觉分析
          • 大语言模型

            • 实验01-语音识别
            • 实验02-语音对话
            • 实验03-多模态图片分析-语音对话
            • 实验04-多模态图片比较-语音对话
            • 实验05-多模态文档分析-语音对话
            • 实验06-多模态视觉运用-语音对话
          • ROS2基础开发

            • 实验01-搭建环境
            • 实验02-工作包的创建及编译
            • 实验03-运行 ROS2 话题通信节点
            • 实验04-ROS2 相机应用
          • 40pin-IO开发

            • 实验01-GPIO 输出(LED闪烁)
            • 实验02-GPIO 输入
            • 实验03-按键控制 LED
            • 实验04-PWM 输出
            • 实验05-串口输出
            • 实验06-IIC 实验
            • 实验07-SPI 实验
          • USB模块开发使用

            • 实验01-USB 语音模块使用
            • 实验02-声源定位模块使用
          • 机器视觉技术实战

            • 实验01-打开 USB 摄像头
            • 实验02-图像处理基础
            • 实验03-目标检测
            • 实验04-图像分割
    • 核心板

      • C-3568BQ

        • 简介

          • C-3568BQ 简介
      • C-3588LQ

        • 简介

          • C-3588LQ 简介
      • GC-3568JBAF

        • 简介

          • GC-3568JBAF 简介
      • C-K1BA

        • 简介

          • C-K1BA 简介

04 AI降噪 (AI_NR)

AI_NR是一种利用深度学习技术在Bayer Raw域进行降噪的技术。相较于传统降噪算法,AI去噪能够更干净地去除噪声且噪声形态更细腻,在暗环境或极高增益下能提供更高的信噪比,从而满足看清图像的需求。

1 概述与工作原理

AI_NR工具的逻辑架构基于"大模型蒸馏+小模型微调"的思路。首先通过标定得到的FPN(固定模式噪声)和噪声参数,结合通用降噪大模型,对采集的Noisy Raw数据进行处理,生成Noisy-Clean Raw数据对;随后利用这些数据训练小模型,最后将小模型进行量化部署到端侧。

工具的完整使用流程包含六个阶段:

  1. Preprocess:数据预处理,生成训练数据对。
  2. Float Finetune:浮点模型微调训练。
  3. Float Inference:浮点模型推理验证。
  4. Quant Finetune:量化模型微调训练。
  5. Quant Inference:量化模型推理验证。
  6. Quant Deploy:量化模型部署导出。

2 环境搭建与数据准备

2.1 环境搭建

  • 硬件环境:需确认当前Sensor的基础信息,包括数据位宽、Bayer pattern、分辨率、最大Again对应的ISO值。
  • 软件环境:安装miniconda并配置运行ai_nr所需的环境。

2.2 数据准备

在开始训练前,必须准备以下数据:

  • 噪声参数:确认需微调Sensor的噪声参数(共五个)及FPN(需包含黑电平信息)。

  • FPN数据:采集100~200帧黑帧。采集时镜头必须全黑,曝光时间与实际最暗场景一致,again打满,ispdgain=1,sensor dgian=1。

    须知

    曝光时间越短,FPN暴露的坏点越少,Label学习去坏点能力越弱。更换Sensor需同步更换FPN数据。

  • 训练数据:采集真实场景的Raw序列及对应的Meta信息、AWB及CCM信息。数据存放格式为每组数据存放一个文件夹,以ISO值命名,内含***.raw、***.txt、awb.txt、ccm.txt。

3 模型训练、量化与部署流程

工具通过修改config.yml文件来控制各阶段的运行。

阶段一:Preprocess (数据预处理)

通过大模型生成当前蒸馏数据的Noise-Clean Raw数据对。

  1. 配置YML:state: "preprocess", substate: "preprocess_sm"。
  2. 填写参数:在data字段填写bit, max_dgain, max_iso, bayer_pattern及sensor_id。
  3. 填写噪声参数:在YML末尾填写Sensor的高斯泊松标定参数(KA, KB, BA, BB, BC)。
  4. 填写路径:配置fpn_dir(FPN路径)、data_dir(蒸馏数据路径)、dump_pre_root(输出路径)及teacher模型路径。
  5. 运行与检查:运行结束后,在dump_pre_root下查看生成的input-label可视化结果,确认预处理是否正常。

阶段二:Float Finetune (浮点微调)

对浮点小模型进行两阶段训练。

  1. 配置YML:state: "float", substate: "float_finetune"。

  2. 训练设置:在train字段设置stage(1或2)、learning_rate、batch_size等。

  3. 模型配置:在model字段选择net_name(根据Sensor分辨率就近选择,如3M选"4M",6M选"8M")。

  4. 检查结果:训练后在train_dump路径下生成input, label, predict图像,检查颜色亮度是否对应。

    建议

    训练建议到60 epoch以上。若Loss为NaN,检查FPN bit/Sensor bit是否正确,或尝试调小学习率、调大batch_size。

阶段三:Float Inference (浮点推理)

直观验证浮点模型效果。

  1. 配置YML:state: "float", substate: "float_inference"。
  2. 输入模型:使用float_finetune训练出的PSNR值较高的pth模型。
  3. 推理数据:填写Benchmark路径,可通过select_iso选择特定ISO推理。

阶段四:Quant Finetune (量化微调)

将浮点模型转化为量化模型,分两阶段进行。

  1. 配置YML:state: "quant", substate: "quant_finetune"。

  2. 一阶段:在model字段填写best_float_model路径。运行后生成quant_finetune_stage1.pth。

  3. 二阶段:将best_quant_model指向Stage1生成的pth,继续训练生成quant_finetune_stage2.pth。

    建议

    Quant训练建议10 epoch以上。若添加新数据,需生成新的.h5文件并更新train_name列表。

阶段五:Quant Inference (量化推理)

验证量化模型效果,要求与浮点模型输出无肉眼可见差距,不能出现明显解析力差异或颜色差异。

  1. 配置YML:state: "quant", substate: "quant_inference"。
  2. 输入模型:使用quant_finetune_stage2的pth模型。

阶段六:Quant Deploy (量化部署)

导出可供TVM编译的ONNX模型及部署文件。

  1. 配置YML:state: "quant", substate: "quant_deploy"。
  2. 关键参数:
    • padding_w:固定为32(7206_8M部署时为16)。
    • padding_h:计算公式为 $\text{padding_h} = \frac{\left(\left|\frac{h}{(\text{row_num} * 32)}\right| + p_s_ h\right) \times 16 - \frac{h}{(\text{row_num} * 2)}}{2}$
    • one_step_deploy:设为True可一次性跑完三个阶段。
  3. 输出:生成_tvm.encrypted模型、权重txt及对应的bin文件。

须知

若部署报错"The model has overflow!!!!",需定位是Quant1还是Quant2阶段溢出,使用未溢出阶段的模型进行Deploy测试。

4 关键参数配置说明

4.1 基础状态控制

参数名称取值范围描述
state"preprocess", "float", "quant"控制工具功能状态。preprocess表示数据处理;float表示浮点模型操作;quant表示量化模型操作。
substate"float_finetune", "float_inference", "quant_finetune", "quant_inference", "quant_deploy", "preprocess_sm"具体子状态。配置float操作时state需设为float;配置quant操作时state需设为quant。

4.2 模型配置

参数名称描述取值范围
net_name选择模型对应的分辨率,根据Sensor分辨率就近选择"2M_3g", "2M_5g", "4M_8g", "4M_12g", "8M_19g"
best_float_model预训练浮点模型地址/量化时的浮点模型地址用户自定义路径
best_quant_model预训练量化模型地址/量化二阶段初始模型用户自定义路径

4.3 训练配置

参数名称描述取值范围
stage浮点或量化模型训练的阶段1 / 2
learning_rate训练学习率0.000001 ~ 0.01
batch_size训练batch size1 ~ 16

4.4 部署配置

参数名称描述取值范围
one_step_deploy量化模型部署开关True / False
deploy_version部署的版本"7206", "7606"
layer_bit量化bit位宽10 / 12

5 模型调优与问题排查

5.1 Sensor噪声模型标定

噪声标定准确与否直接影响通路效果,标定注意事项:

  • 确认Sensor去坏点模式关闭(开启DPC可能影响噪声模型和清晰度)。
  • 确认AE的SensorDgain为1倍(AI模式下默认不开启)。
  • 标定后的K/B Curve需检验是否符合预期。

5.2 AI通路调试

完成基础传统通路调试后,加载AI模型进行finetune:

  • 参数切换:BNR中ainrposswitch & coringposswitch 均选择 post。
  • 阈值设置:AINR开关使能,设置switchthlow & switchthhigh,建议 thdhigh > thdlow >= againmax下的ISO。

5.3 常见问题Q&A

问题现象可能原因及排查方法
Float Finetune Loss为NaN1. 检查train_dump小图有无异常;
2. 检查YML中FPN bit/Sensor bit是否正确;
3. 检查Input和Label内容、颜色亮度是否对应;
4. 尝试调小学习率,调大Batch Size(如24, 32)。
极高ISO图像出现渗透通常为时域强度太强。建议先关闭YUVTNR,观察渗透是否与BayerTNR强相关;若相关,微调降低tnrmd阈值;若关闭YUVTNR后有改善,检查YUVTNR的tnrmd及Mdwinsize。
运动物体较模糊1. 检查STNR中YNR强度是否太强;
2. 调整BNR中运动回叠噪声强度;
3. 调整AINR模块中的K/B增益值调试AI降噪强度。
Quant Deploy报溢出定位是Quant1还是Quant2阶段溢出。用Quant1结果去Deploy,若无溢出则是Quant2训练导致。
坏点、跳动、伪纹理属于细节过强类问题,可通过开启smooth_on缓解;坏点可通过调节bpc强度调节。
偏色检查训练数据对是否偏色;若正常,检查测试场景与训练场景差异,差异大则补充测试场景数据。

6 sample_ainr使用步骤

- 步骤1:编译

# 在SDK根目录中执行:
source build/env.sh
make clean
make build -j
make sample

- 步骤2:将可执行文件与neuron_network.xmm模型文件拷贝到板端

neuron_network.xmm模型文件路径:/tools/linux/pq_board/arm-gcc12.2.0-linux-uclibceabi/configs/sc465sl/neuron_network.xmm

注意

注意模型文件和可执行文件在板端的存放路径需按一下规则存放: 可执行文件会按:../../tools/linux/pq_board/arm-gcc12.2.0-linux-uclibceabi/configs/sc465sl/neuron_network.xmm去访问模型文件

具体可在sample_comm_isp.c(56-80)中修改下列三行

路径修改

- 运行sample_ainr

参数说明


Usage: ./sample_ainr [scene_mode]

scene_mode:

0:  单路线性ainr 15fps

1:  双路线性ainr 7fps (switch)

2:  双路线性ainr 7fps

3:  双路线性ainr 7fps (外置switch)stream_mode: VENC output

e.g: ./sample_vio 0


在 GitHub 上编辑此页
上次更新:
贡献者: ljh
Prev
03 SVP视频处理