-
视频动作识别算法的核心是从视频的时空数据中提取运动特征与空间特征,并对人类或物体的动作类别进行分类。一、传统方法(基础参考,已较少用于主流场景)传统方法依赖手工设计特征,虽精度有限,但原理简单,适合资源极度受限或简单场景:HOG+SVM/BoW:原理:将视频帧拆分为块,提取HOG(方向梯度直方图) 描述空间纹理,结合光流(Optical Flow) 描述运动,再用BoW(词袋模型) 聚合特征,最后用 SVM 分类。适用场景:简单动作(如 “走”“跑”)、低分辨率视频,如早期监控行为检测。局限:对遮挡、复杂背景鲁棒性差,无法捕捉长时运动依赖。Dense Trajectories(密集轨迹):原理:跟踪视频中密集采样的局部轨迹,提取轨迹上的 HOG、光流、颜色等特征,用 Fisher 向量编码后分类。优势:在 UCF101(101 类动作)上曾达到 81.4% 准确率,是 2013 年前后的 SOTA。局限:计算复杂度极高,无法实时处理。二、基于 CNN+RNN 的经典方法(平衡时空特征)这类方法将2D CNN(提取空间特征) 与RNN/LSTM/GRU(捕捉时间依赖) 结合,是深度学习早期的主流方案:Two-Stream CNN(双流网络):核心思想:分 “空间流” 和 “时间流” 并行提取特征,再融合分类:空间流:输入 RGB 帧,用 2D CNN(如 AlexNet)提取物体形状、纹理等空间特征;时间流:输入光流场(如 TV-L1 光流),用相同 CNN 提取运动特征;性能:在 UCF101 上准确率 88.0%,HMDB51(51 类动作)上 62.5%,奠定了深度学习动作识别的基础。局限:需预计算光流,耗时且存储成本高;RNN 对长视频的时间依赖捕捉有限。C3D(3D Convolutional Networks):突破:首次将 2D 卷积扩展为3D 卷积(同时滑动在空间维度和时间维度),端到端学习时空特征,无需预计算光流。结构:用 3×3×3 卷积核(空间 3×3,时间 3 帧),在 Kinetics-400(400 类动作)上准确率 65.4%。局限:3D 卷积参数量大(比 2D CNN 多 3 倍),计算效率低,难以处理长视频。三、主流 3D CNN 变体(高精度首选)针对 C3D 的效率问题,研究者提出了更高效的 3D CNN 结构,平衡精度与速度,是当前工业界和学术界的主流:I3D(Inflated 3D CNN):改进:将 2D CNN(如 Inception-v1、ResNet)的卷积核 “膨胀” 为 3D(如 2D 3×3→3D 3×3×3),同时调整池化层为 3D,复用 2D CNN 的预训练权重。性能:在 Kinetics-400 上准确率 74.2%(Inception-v1 backbone),在 UCF101 上 94.1%,精度远超 C3D。优势:兼容 2D 预训练,收敛快;支持多尺度输入,对复杂动作鲁棒。适用场景:视频分析、行为识别(如监控中的 “跌倒检测”)、体育赛事动作分类。SlowFast Networks:核心设计:分 “慢流” 和 “快流” 处理时空特征,兼顾精度与效率:慢流(Slow Pathway):低帧率采样(如 16 帧取 1 帧),用 3D CNN 提取高分辨率空间特征(关注 “是什么动作”);快流(Fast Pathway):高帧率采样(如 16 帧取 8 帧),用轻量化 3D CNN 提取低分辨率时间特征(关注 “动作如何变化”);性能:在 Kinetics-400 上准确率 79.0%,Kinetics-600 上 83.0%,在 AVA(原子动作检测)数据集上 mAP 35.9%。优势:比 I3D 快 2 倍,比 C3D 快 10 倍,是当前高精度 + 高效率的首选方案。适用场景:实时视频监控、影视动作分析、自动驾驶中的行人动作识别。X3D(Expanded 3D CNN):创新:在 SlowFast 基础上,通过 “深度、宽度、分辨率、帧率、 kernel 大小”5 个维度联合扩展网络,用更小参数量实现更高精度。性能:X3D-L 在 Kinetics-400 上准确率 85.2%,参数量仅 6.7M(比 SlowFast 小 8 倍),计算量仅 12.7 GFLOPs。优势:极致的 “精度 - 效率比”,支持移动端和边缘设备部署。适用场景:资源受限的实时动作识别(如手机端健身动作纠正)、嵌入式监控设备。四、基于 Transformer 的方法(长视频与复杂动作)Transformer 的自注意力机制能捕捉长距离时空依赖,近年来在视频动作识别中表现突出,尤其适合长视频和复杂动作:TimeSformer(Time-Space Transformer):原理:将视频拆分为 “时空块”(如 T 帧 ×H×W 图像→T×N 个 16×16 块,N 为每帧块数),用 Transformer 的自注意力计算任意块之间的时空关联。注意力模式:支持 5 种模式(如空间注意力、时间注意力、时空注意力),灵活捕捉不同维度的依赖。性能:在 Kinetics-400 上准确率 79.8%,在长视频数据集(如 Something-Something V2)上表现优于 3D CNN。优势:对长时动作(如 “做饭”“修车”)的依赖捕捉更精准。Video Swin Transformer:改进:将 2D Swin Transformer(窗口自注意力)扩展到视频,引入时空窗口自注意力(同时在空间窗口和时间窗口内计算注意力),减少计算量。性能:Video Swin-B 在 Kinetics-400 上准确率 84.9%,Kinetics-600 上 87.1%,AVA 数据集 mAP 44.5%,是当前 Transformer 类方法的 SOTA。优势:兼顾长距离依赖和局部细节,对遮挡、视角变化鲁棒。适用场景:复杂场景动作识别(如多人交互动作)、医学视频分析(如手术动作分类)。五、轻量化与实时方法(边缘设备部署)针对移动端、嵌入式设备等资源受限场景,需在精度和速度间平衡:MobileNet3D:原理:将 2D MobileNet 的深度可分离卷积扩展为 3D(空间深度可分离 + 时间深度可分离),大幅减少参数量和计算量。性能:MobileNetV2-3D 在 UCF101 上准确率 89.5%,计算量仅 2.3 GFLOPs,比 C3D 小 20 倍。适用场景:手机端动作识别(如健身 APP 实时纠正动作)、智能手表的手势识别。EfficientNet3D:创新:将 2D EfficientNet 的 “复合缩放”(深度、宽度、分辨率)扩展到 3D,同时缩放时间维度(帧率),实现精度与效率的最优平衡。性能:EfficientNet-B3-3D 在 Kinetics-400 上准确率 78.4%,计算量 8.4 GFLOPs,比 I3D 快 3 倍。优势:开箱即用的轻量化方案,支持 TensorRT 加速,适合边缘计算。六、算法选型决策树需求场景推荐算法核心原因高精度、复杂动作(如多人交互)Video Swin Transformer/X3D捕捉长时依赖,对遮挡鲁棒,精度 SOTA。实时性 + 中高精度(如监控)SlowFast/X3D快慢流平衡精度与速度,支持实时推理(≥30 FPS)。边缘设备 / 移动端(如手机 APP)MobileNet3D/EfficientNet3D轻量化,低计算量,支持 TensorRT/ONNX 加速。长视频分析(如 10 分钟以上)TimeSformer/Video Swin自注意力捕捉长距离时空依赖,优于 3D CNN。学术研究 /baseline 对比I3D/SlowFast经典且开源实现丰富,便于扩展改进。七、常用数据集与性能对比算法Kinetics-400 准确率UCF101 准确率参数量(M)计算量(GFLOPs)C3D65.4%90.2%41.3320I3D(Inception)74.2%94.1%28.0150SlowFast(R50)79.0%96.0%34.575X3D-L85.2%97.3%6.712.7Video Swin-B84.9%97.5%88.2210MobileNetV2-3D72.1%89.5%2.02.3 总结一下下高精度首选:X3D(平衡精度与效率)、Video Swin Transformer(复杂动作 / 长视频);实时部署首选:SlowFast(监控场景)、MobileNet3D/EfficientNet3D(移动端 / 边缘设备);经典 baseline:I3D、Two-Stream(学术研究入门)。实际应用中,需结合硬件资源(GPU/CPU/ 边缘芯片)、视频长度、动作复杂度选择算法,并通过 TensorRT、ONNX Runtime 等工具加速推理。
-
长尾样本(Long-Tailed Samples)是指在分类或回归任务中,数据集中的类别分布呈现极端不均衡的现象:少数头部类别(Head Classes)占据了大部分样本,而绝大多数尾部类别(Tail Classes)仅有极少量样本。这种分布形态类似于 “长尾”,头部高耸,尾部平缓延伸,因此得名。一、核心特征:极端的类别分布失衡头部主导,尾部稀疏头部类别:少数几个类别占据数据集的80% 以上样本(甚至更高比例)。例如,在图像识别任务中,“猫”“狗” 等常见类别可能包含数万张图片,而 “穿山甲”“树懒” 等稀有类别仅有几十张样本。尾部类别:大量类别(可能占总类别的 70%-90%)仅包含个位数或零星样本。例如,iNaturalist 2017 数据集包含 5089 类生物,其中尾部类别的样本数少至 4 张。分布形态符合幂律或指数衰减长尾分布通常遵循幂律分布(Power Law)或指数衰减规律,即类别样本数与类别排名的某个幂次成反比。例如,第r名的类别样本数约为N×r−α(α>0),头部类别(r小)样本数远大于尾部(r大)。这种分布在自然界和社会现象中普遍存在,如词汇频率(齐普夫定律)、商品销售、网页点击量等。二、与类别不平衡的区别长尾样本是 ** 类别不平衡(Class Imbalance)** 的一种极端形式,但二者并非完全等同:类别不平衡:泛指所有类别样本数不均的情况(如 1000:1 的正负样本),但可能尾部类别仍有一定数量样本(如几十或上百)。长尾样本:特指尾部类别样本数极少(如 < 10 个),且尾部类别数量占比极大(如总类别数的 70% 以上)。 例如,在欺诈检测中,好坏样本比例为 1000:1 属于类别不平衡;但若尾部类别(坏样本)仅有几个实例,则属于长尾样本。三、对模型的影响严重偏向头部类别模型在训练时会优先学习头部类别的特征,导致对尾部类别的识别能力极差。例如,在 CIFAR10-LT 数据集中,头部类别的召回率可达 98.5%,而尾部类别仅为 8.4%。尾部样本的高精度假象由于尾部样本数量极少,模型若误将其预测为头部类别,会导致尾部类别的准确率虚高(因为分母小)。例如,某尾部类别仅有 5 个样本,模型误判其中 4 个为头部类别,准确率仍为 20%(1/5),但实际召回率极低。泛化能力下降模型难以捕捉尾部类别的多样性特征,在实际部署中遇到未见过的尾部样本时,表现会显著恶化。四、典型应用场景自然图像识别如 iNaturalist 数据集,包含大量稀有物种(如濒危鸟类、昆虫),而常见物种(如猫狗)占据多数样本。医疗影像诊断罕见疾病(如特定类型肿瘤)的病例极少,而常见病(如肺炎)样本丰富。文本分类社交媒体中,少数热门话题(如 “科技”“娱乐”)占据大部分文本,而小众话题(如 “极地科考”“古籍修复”)仅有零星内容。工业质检产品缺陷(如电路板微小裂纹)属于尾部类别,而正常产品为头部类别。五、解决方案概述数据层面过采样尾部类别:通过复制、数据增强(如 RandAugment、Mixup)或生成对抗网络(GAN)扩充尾部样本。欠采样头部类别:减少头部样本数量,平衡各类别比例,但可能损失有效信息。算法层面重加权损失函数:对尾部类别赋予更高的损失权重(如样本数倒数),强制模型关注稀有样本。解耦学习框架:将特征学习与分类器学习分离,避免头部类别主导特征提取。模型层面层次化建模:将尾部类别归为上级超类(如 “动物”→“犬科”→“哈士奇”),利用层次结构迁移知识。元学习或小样本学习:通过少量样本快速适应尾部类别的特征。总结长尾样本是一种极端类别不平衡的数据集,其核心特征是头部类别样本密集、尾部类别样本极少且数量占比大。这种分布会导致模型严重偏向头部类别,对尾部类别识别能力低下。解决长尾问题需结合数据增强、算法调整和模型设计,以平衡各类别的学习权重,提升模型对稀有样本的泛化能力。
-
模型量化、剪枝和蒸馏是三种主流的模型压缩与优化技术,核心目标是在保证模型性能(精度、准确率)的前提下,减小模型体积、降低计算复杂度,使其能在资源受限的设备(如手机、嵌入式设备、边缘终端)上高效部署。一、模型量化(Model Quantization):降低参数精度,减少存储与计算成本核心原理将模型中高精度的参数(如 32 位浮点数,FP32)转换为低精度格式(如 16 位浮点数 FP16、8 位整数 INT8,甚至 4 位、2 位、1 位),利用神经网络对 “噪声” 的容忍性,在精度损失可控的前提下,减少参数存储量和计算量。关键方法训练后量化(Post-Training Quantization, PTQ)直接对训练好的模型参数进行量化,无需重新训练,操作简单(如 TensorFlow Lite 的量化工具)。缺点:精度损失可能较大(尤其低至 INT8 以下时),适合对精度要求不高的场景(如简单图像分类)。量化感知训练(Quantization-Aware Training, QAT)在训练过程中模拟低精度量化的误差(如数值截断、舍入),让模型 “适应” 量化带来的噪声,最终输出量化模型。优点:精度损失小(INT8 量化可保留原模型 95% 以上性能),适合高精度需求场景(如目标检测、医学影像)。效果与适用场景压缩效果:FP32→INT8 可减少 75% 存储量(32 位→8 位),计算速度提升 2-4 倍(硬件对整数计算支持更高效)。典型场景:移动端 AI(如手机拍照的实时美颜、语音识别)、嵌入式设备(如智能家居的图像传感器)。 二、模型剪枝(Model Pruning):移除冗余参数,精简模型结构核心原理神经网络存在大量 “冗余参数”(如权重绝对值接近 0 的连接、贡献微小的神经元或层),剪枝通过移除这些冗余部分,在不显著影响性能的前提下,减小模型规模。关键方法非结构化剪枝(Unstructured Pruning)随机或按阈值移除单个冗余权重(如删除绝对值小于 0.001 的权重),得到稀疏矩阵。优点:压缩率高(可移除 50%-90% 参数);缺点:稀疏矩阵难以被硬件加速(普通 GPU/CPU 对非连续内存访问效率低)。结构化剪枝(Structured Pruning)按 “结构单元” 移除冗余(如 CNN 的整个卷积核、通道,Transformer 的整个注意力头),保留模型的密集性。优点:适配硬件加速(如 GPU 的卷积计算优化),部署友好;缺点:压缩率略低(通常移除 30%-60% 参数)。效果与适用场景压缩效果:结构化剪枝可减少 40%-60% 计算量,模型体积缩小 30%-50%(如 ResNet50 剪枝后可在嵌入式设备运行)。典型场景:CNN 模型压缩(如自动驾驶的实时目标检测)、边缘计算设备(如工业机器人的视觉识别)。 三、知识蒸馏(Knowledge Distillation):小模型学习大模型的 “知识”核心原理用一个高性能的大模型(教师模型,Teacher Model)指导一个小模型(学生模型,Student Model)训练,让小模型 “模仿” 大模型的行为(不仅是最终输出,还包括中间特征、概率分布等),使小模型在体积小的情况下接近大模型的性能。关键方法基于软标签的蒸馏教师模型输出 “软标签”(如分类任务中的概率分布,包含类间关系信息,如 “猫” 和 “虎” 的概率接近),学生模型通过学习软标签(而非仅硬标签 “猫”),学到更丰富的知识。核心损失:蒸馏损失(学生软标签与教师软标签的 KL 散度)+ 任务损失(学生硬标签与真实标签的交叉熵)。特征蒸馏让学生模型的中间层特征(如 CNN 的卷积层输出、Transformer 的隐藏状态)模仿教师模型的对应层特征,保留更深层的任务相关信息。效果与适用场景压缩效果:学生模型体积可缩小 10-100 倍,性能接近教师模型(如用 BERT-base 作为教师,蒸馏出的 MobileBERT 在 NLP 任务上性能损失 < 3%,速度提升 5 倍)。典型场景:NLP 任务(如手机端的语音助手、文本分类)、需要小模型但高性能的场景(如可穿戴设备的健康监测)。对比一下下技术核心优化方向优势劣势典型组合量化降低参数精度实现简单,硬件加速友好过低精度可能导致性能下降剪枝 + 量化(先精简结构,再降精度)剪枝移除冗余参数 / 结构直接减少计算量和参数数量需精细调参避免性能损失蒸馏 + 剪枝(用教师指导剪枝后的学生)蒸馏小模型模仿大模型性能接近大模型,泛化性好需要教师模型,训练流程复杂量化 + 蒸馏(低精度小模型学习大模型知识) 总结一下下量化适合 “降精度提效”,侧重硬件友好性;剪枝适合 “删冗余精简”,侧重结构优化;蒸馏适合 “小模型学知识”,侧重性能保留。实际部署中,三者常结合使用(如先蒸馏得到小模型,再剪枝移除冗余,最后量化至 INT8),在资源受限设备上实现 “小体积、高性能、快速度” 的 AI 应用。
-
模型的全量微调(Full Fine-tuning) 是深度学习中针对预训练模型的一种适配任务优化方法,核心是在预训练模型的基础上,使用下游任务的数据集重新训练模型的所有参数,使模型从 “通用知识” 适配到 “特定任务能力”。一、核心原理:从 “通用” 到 “专用” 的参数更新预训练模型的基础:先有一个在大规模通用数据上训练的模型(如 BERT 在维基百科等文本上预训练,ResNet 在 ImageNet 图像上预训练),这些模型已经学到了通用特征(如语言的语法规则、图像的边缘 / 纹理信息)。全量微调的过程:将预训练模型的所有层参数(从输入层到输出层) 作为初始值,用下游任务的标注数据(如特定领域的文本分类、医学影像识别)重新训练,通过反向传播更新每一个参数,最终让模型学会适配新任务的特征(如 “法律文本中的术语情感”“CT 影像中的肿瘤特征”)。二、与其他微调方法的关键区别全量微调的核心特点是 **“更新所有参数”**,这与 “参数高效微调(PEFT)” 形成鲜明对比:参数高效微调(如 LoRA、Adapter):仅更新模型的少量参数(如新增的 Adapter 层、低秩矩阵),大部分预训练参数冻结不动,适合数据少、算力有限的场景。全量微调:更新模型的所有参数(包括预训练时的核心权重),理论上能更充分地让模型适配任务,但需要更多数据和算力。三、全量微调的优缺点优点:性能上限高:在数据充足时,全量微调能让模型充分吸收任务特性,性能通常优于参数高效微调(如 BERT 全量微调在 GLUE 文本任务上的得分普遍高于 LoRA 微调)。适配深度深:能调整模型底层的通用特征(如 BERT 的底层词向量、ResNet 的底层边缘检测),使其更贴合任务需求(如医学影像的底层纹理特征)。缺点:计算成本高:需要更新所有参数(如 GPT-3 1750 亿参数全量微调,单轮训练可能需要数万美元算力),对 GPU 显存要求极高(通常需要多卡分布式训练)。数据需求量大:若下游任务数据少(如仅几千样本),全量微调容易 “忘记” 预训练知识(灾难性遗忘),或过拟合到小数据集(泛化能力差)。训练不稳定:大规模参数更新可能导致梯度爆炸 / 消失,需要精细调整学习率(通常比预训练时小 1-2 个数量级)、优化器(如 AdamW)等超参数。四、适用场景全量微调更适合以下场景:下游任务数据充足(如百万级标注样本):例如工业质检(大量缺陷图像)、大规模文本分类(如新闻主题分类)。任务与预训练数据差异大:例如用通用图像模型(预训练于自然图像)微调做卫星遥感图像识别(特征差异大,需深度调整底层参数)。对性能要求极高:如自动驾驶的目标检测(需模型极致适配道路场景特征)、医疗影像诊断(需精准识别微小病灶)。五、关键注意事项学习率设置:通常远小于预训练阶段(如 BERT 预训练学习率约 1e-4,微调时用 2e-5~5e-5),避免破坏预训练学到的通用知识。数据预处理:需与预训练数据的格式一致(如 BERT 的分词方式、ResNet 的图像归一化参数),否则会导致底层特征错乱。正则化策略:为防止过拟合,常使用 dropout(随机失活)、权重衰减(Weight Decay)、早停(Early Stopping)等方法。总结一下下全量微调是通过更新预训练模型的所有参数,使其深度适配下游任务的方法,优势是性能上限高,劣势是成本高、对数据量要求大。实际应用中,需根据数据规模、算力资源和任务需求,在全量微调与参数高效微调之间选择(小规模数据优先 PEFT,大规模数据优先全量微调)。
-
图像增强的核心目标是提升图像质量(如清晰度、对比度)、突出关键信息,或为后续任务(如目标检测、医学影像分析、遥感解译)优化数据。根据技术原理,可分为空域增强、频域增强、深度学习增强三大类。一、空域增强:直接操作像素域(最基础、应用最广)空域增强通过修改图像像素的灰度值或空间位置实现,无需转换到其他域,计算效率高,适合实时场景(如监控、手机拍照)。1. 灰度变换:调整像素灰度分布(提升对比度 / 亮度)通过函数映射改变每个像素的灰度值,核心是优化灰度动态范围,解决 “过暗 / 过曝”“对比度低” 问题。(1)线性灰度变换(对比度拉伸)原理:用线性函数 g(x,y) = a*f(x,y) + b 调整灰度,其中 a 控制对比度(a>1 增强,0<a<1 降低),b 控制亮度(b>0 提亮,b<0 变暗)。适用场景:图像整体灰度偏暗 / 偏亮(如逆光照片、监控夜间图像)。示例:将灰度范围 [50,200] 拉伸到 [0,255],突出暗部细节。(2)非线性灰度变换(伽马校正)原理:用幂函数 g(x,y) = c*f(x,y)^γ 调整,γ 是关键参数:γ<1:增强暗部灰度(适合过暗图像,如室内低光照片);γ>1:增强亮部灰度(适合过曝图像,如晴天雪地照片)。特点:比线性变换更贴合人眼对亮度的非线性感知,手机相机 “夜景模式” 常用此技术。(3)直方图处理(均衡化 / 匹配)全局直方图均衡化(GHE):原理:将图像灰度直方图从 “集中分布” 变为 “均匀分布”,最大化灰度动态范围。适用场景:对比度低且灰度分布均匀的图像(如雾天照片、医学 X 光片)。缺点:可能导致局部过曝(如大面积暗部区域被过度拉伸)。自适应直方图均衡化(CLAHE):改进:将图像分割为多个子块(如 8×8),对每个子块单独均衡化,避免全局过曝。核心场景:医学影像(如 CT、眼底照片)—— 需保留局部细节(如肿瘤边缘),不允许整体过曝。直方图匹配(规定化):原理:将图像直方图调整为 “目标直方图”(如参考清晰图像的直方图),用于颜色一致性校正(如批量处理监控摄像头图像)。2. 空间滤波:基于邻域像素的局部增强(去噪 / 锐化)通过 “滤波核(卷积核)” 与图像卷积,改变像素的局部灰度分布,实现去噪或锐化。(1)平滑滤波(去噪为主)核心是 “平均邻域像素”,抑制高频噪声(如椒盐噪声、高斯噪声),但会轻微模糊边缘。均值滤波:用邻域像素平均值替换中心像素,去高斯噪声效果一般,易模糊细节。高斯滤波:用高斯函数加权平均邻域像素(中心权重高、边缘低),去高斯噪声效果好,模糊程度可控( sigma 越大越模糊)。中值滤波:用邻域像素的中值替换中心像素,去椒盐噪声(黑白斑点)效果最优,且能保留边缘(非线性滤波,不平均边缘像素)。适用场景:监控视频去噪(高斯滤波)、老照片修复去斑点(中值滤波)。(2)锐化滤波(突出边缘)核心是 “增强邻域像素的灰度差异”,突出高频细节(如边缘、纹理),弥补平滑滤波的模糊。拉普拉斯滤波:通过计算邻域像素与中心像素的灰度差,强化边缘(如文字边缘、物体轮廓),但会放大噪声(需先去噪再锐化)。Sobel 滤波:分别计算水平和垂直方向的边缘梯度,可单独增强水平 / 垂直边缘(如遥感影像中的道路边缘、建筑轮廓)。USM 锐化(非锐化掩模):先对图像模糊(生成 “掩模”),再用原图减去掩模,增强细节对比度,是 Photoshop “锐化” 功能的核心算法。3. 几何变换:调整图像空间位置(对齐 / 适配)不改变像素灰度,仅调整像素的空间坐标,属于 “预处理型增强”,为后续任务(如目标检测、图像拼接)做准备。常见类型:平移(图像裁剪后对齐)、旋转(校正倾斜照片)、缩放(插值缩放,如双线性插值 —— 平滑缩放,双三次插值 —— 保留细节)、仿射变换(校正透视畸变,如手机拍文档的倾斜校正)。核心场景:OCR 文字识别(需先旋转校正倾斜文档)、无人机遥感拼接(需平移 / 缩放对齐多幅图像)。 二、频域增强:基于频率成分的全局增强(去周期性噪声 / 全局锐化)将图像通过傅里叶变换转换到 “频域”(分解为低频和高频成分):低频成分:图像的整体轮廓、大面积灰度(如天空、墙面);高频成分:图像的细节、边缘、噪声(如物体边缘、椒盐噪声)。 通过修改频域成分(保留 / 抑制高低频),再逆傅里叶变换回空域,实现增强。1. 低通滤波(保留低频,平滑去噪)抑制高频噪声,保留低频轮廓,效果类似空域的平滑滤波,但全局平滑更均匀。示例:高斯低通滤波 —— 在频域中抑制高频区域,去全局高斯噪声效果优于空域均值滤波,适合天文影像(如星空照片去宇宙射线噪声)。2. 高通滤波(保留高频,全局锐化)抑制低频模糊,保留高频细节,效果类似空域的锐化滤波,但全局锐化更自然。示例:理想高通滤波 —— 在频域中保留高频区域,增强遥感影像中的细小目标(如农田边界、电力线),但会产生 “振铃效应”(边缘出现明暗条纹),需用高斯高通滤波优化。3. 带通 / 带阻滤波(针对性处理)带通滤波:保留特定频率范围(如介于高低频之间的纹理信息),用于增强医学影像中的血管纹理(如眼底照片的血管)。带阻滤波:抑制特定频率范围,去周期性噪声效果最优(如监控摄像头因电源干扰产生的横纹 / 竖纹,其噪声频率固定,可精准抑制)。三、深度学习增强:现代技术(复杂场景下效果远超传统方法)传统方法依赖人工设计规则(如滤波核、灰度函数),对复杂场景(如超分辨率、去雾、医学影像细节增强)效果有限;深度学习通过数据驱动学习增强规则,能处理更复杂的图像退化问题。1. 超分辨率重建(SR):提升图像分辨率核心是 “从低分辨率(LR)图像生成高分辨率(HR)图像”,解决 “图像模糊、细节缺失” 问题(如老照片放大、监控图像清晰度提升)。经典模型:SRCNN(首个基于 CNN 的超分模型):用 3 层 CNN 学习 LR 到 HR 的映射,比传统插值(双三次)效果好,但细节不够精细。ESRGAN(基于 GAN 的超分):引入生成对抗网络,生成的 HR 图像细节更真实(如毛发、纹理),是当前 “图像放大” 工具(如 Topaz Gigapixel AI)的核心算法。Real-ESRGAN:针对真实世界模糊图像(如老照片、压缩失真)优化,去模糊 + 超分一体,修复效果远超传统方法。2. 图像去退化(去雾 / 去噪 / 去模糊)去雾:传统方法(如暗通道先验)依赖大气散射模型,对浓雾效果有限;深度学习方法(如 DehazeNet、GCA-Net)通过学习大量雾天 / 无雾图像对,直接生成去雾图像,可处理浓雾、不均匀雾(如城市雾霾照片)。去噪:传统方法(如 BM3D)对复杂噪声(混合高斯 + 椒盐噪声)效果一般;深度学习方法(如 DnCNN、RIDNet)通过残差学习直接学习 “噪声模式”,去噪的同时保留更多细节(如医学影像去噪 —— 不模糊肿瘤边缘)。去模糊:针对运动模糊(如手抖拍的照片)、失焦模糊,深度学习模型(如 DeblurGAN)可学习模糊核,反向恢复清晰图像,比传统盲去模糊效果好。3. 医学 / 遥感影像专用增强医学影像:如 UNet++ 增强 CT 图像中的肺结节边缘,或用注意力机制(如 ResUNet)突出 MRI 图像中的神经纤维束,辅助医生诊断。遥感影像:如用 SegSRNet 同时实现超分和地物分类增强(如区分农田与建筑),提升遥感解译精度。4. 数据增强(为模型训练服务)属于 “人工生成多样性数据”,目的是提升深度学习模型的泛化能力(而非提升单张图像质量),常用方法:基础操作:随机翻转、旋转、裁剪、缩放(扩充训练集);进阶操作:颜色抖动(随机调整亮度 / 对比度 / 饱和度,模拟不同光照)、MixUp(两张图像加权混合,增强模型鲁棒性)、CutMix(裁剪部分区域替换为其他图像,保留局部结构);核心场景:目标检测、图像分类训练(如自动驾驶数据集增强,模拟不同天气、光照下的道路场景)。 四、一些常见的场景和方法应用场景推荐方法核心原因医学影像(CT / 眼底)CLAHE、ResUNet、医学专用去噪模型需保留局部细节,避免过曝 / 模糊关键结构监控视频 / 老照片修复中值滤波(去斑点)、Real-ESRGAN(超分)处理椒盐噪声 + 低分辨率,提升清晰度雾天 / 低光照片伽马校正、DehazeNet(去雾)、USM 锐化提亮暗部 + 去雾 + 突出细节,还原真实场景遥感影像解译高斯高通滤波(边缘增强)、SegSRNet(超分)突出地物边缘,提升小目标(如电力线)识别率深度学习模型训练随机翻转、CutMix、颜色抖动扩充数据集多样性,提升模型泛化能力总结一下下图像增强方法的选择需结合场景需求(去噪 / 锐化 / 超分)、图像退化类型(噪声 / 模糊 / 雾) 及实时性要求:实时场景(如监控、手机拍照)优先用传统空域方法(高斯滤波、CLAHE);复杂场景(如医学影像、老照片修复)优先用深度学习方法(ESRGAN、医学专用模型);周期性噪声(如横纹干扰)优先用频域带阻滤波。 随着 AI 技术发展,深度学习增强正逐步取代传统方法,成为复杂场景下的首选。
-
🌟经过1年的发展,华为AI 百校计划1.0已覆盖80余所高校,支撑200余个创新项目,惠及600余名师生。在此基础上,我们发布的AI百校计划2.0,实现显著突破:算力资源从千万级跃升至亿级规模,完成了社区技术论坛的建设,提供了丰富的技术资源和开发案例。同时联合 CAAI、GitCode等开通专属渠道,大幅简化申请流程。“华为AI百校计划2.0”,旨在为高校、科研机构AI领域项目提供昇腾AI云算力资助。申请对象包含老师、学生单点申请,及学校/院/系、社区、学会、联盟等组织申请。用以支持算子、算法、推理、训练等开发场景,促进产学研结合,助力高校在AI领域的科研创新、人才培养和技术合作,共建AI繁荣生态。🚀 华为AI百校计划2.0 🚀✨作为科技发展的前沿领域,人工智能正在加速推动社会各方面的改变,给人类带来了巨大的便利和福祉。从智能语音助手到自动驾驶汽车,从精准医疗到智慧城市,AI技术的应用已经渗透到各个领域,高校、科研机构等作为AI技术的策源地和创新高地发挥着重要的作用。✨“华为AI百校计划2.0”旨在帮助高校、科研机构等组织应对AI领域科研创新、人才培养和技术合作所面临的算力资源不足等挑战。该计划主要资助的场景包括:在AI领域有深入研究与影响力的高校、科研机构团队及社区、学会、联盟等组织的科研创新和AI基础技术研究、以及在AI领域开展的人才培养、和与华为通过技术合作解决产业技术难题的项目等。✨基于申请项目涉及的场景,如AI算子、算法、模型推理、大模型训练等,可在线提交申请。华为将从项目目标、项目价值、创新性、先进性、对产业和生态的影响力等维度进行评审。最终评审通过的项目,可以获得昇腾云AI算力资源支持。✨“华为AI百校计划2.0”,更多信息和申请详情,欢迎扫描下方二维码进行了解。✨✨申请传送门>>点击前往官网✨扫码了解✨活动海报
-
请查阅参考昇腾社区文档:https://gitee.com/ascend/MindSpeed/blob/master/docs/features/async-ddp.md
-
请查阅参考昇腾社区文档:https://gitee.com/ascend/MindSpeed/blob/master/docs/features/distributed-optimizer.md
-
请查阅参考昇腾社区文档:https://gitee.com/ascend/MindSpeed/blob/master/docs/features/data-parallel.md
-
在数据仓库服务(DWS)中,备份恢复不仅提供完善的 API 接口,还通过多重技术机制确保数据一致性。一、备份恢复 API 接口的设计与实现1. 华为云 GaussDB (DWS) 的 API 体系核心接口:集群级恢复:通过POST /v1.0/{project_id}/snapshots/{snapshot_id}/actions接口,可指定目标集群的网络配置(VPC、子网、安全组)、端口、公网 IP 等参数,实现快照到新集群的恢复细粒度表级恢复:支持从全量或 Schema 备份中选择单表 / 多表恢复,通过restore-target-list参数指定恢复目标表名,支持覆盖原表或新建表。容灾切换:POST /v1.0/{project_id}/disaster-recovery/{disaster_recovery_id}/switchover接口用于主备集群切换,保证业务连续性。SDK 支持:提供 Java、Python 等多语言 SDK,例如 Java 示例代码如下: RestoreClusterRequest request = new RestoreClusterRequest();RestoreClusterRequestBody body = new RestoreClusterRequestBody();body.setRestore(new Restore() .withName("dws-1") .withSubnetId("subnet-xxx") .withSecurityGroupId("sg-xxx"));request.setBody(body);DwsClient client = DwsClient.newBuilder().build();client.restoreCluster(request); 2. AWS Redshift 的 API 体系核心接口:集群恢复:通过RestoreFromClusterSnapshot API 创建新集群,支持指定 VPC 子网组、KMS 加密密钥、节点类型等参数。无服务器命名空间恢复:支持将备份恢复到 Redshift Serverless 命名空间,通过restore-table-from-snapshot API 实现单表恢复。一致性保障:自动快照策略:默认每 8 小时或每节点数据变化 5GB 时触发增量快照,确保恢复点尽可能接近故障时间。WAL 日志集成:备份时包含事务日志,恢复时通过重放日志保证数据一致性。二、数据一致性的核心保障机制1. 事务日志与全局一致性点华为云 GaussDB (DWS):XLog 日志:记录所有数据变更操作,备份时结合pg_start_backup()和pg_stop_backup()获取一致性点,确保备份集包含截至该点的所有已提交事务。CBM(Change Block Mapping):通过常驻线程解析 XLog,实时追踪数据页变更,增量备份仅传输变化的数据块,同时保证恢复时通过日志重放补全未提交事务。AWS Redshift:时间点恢复(PITR):基于增量快照和 WAL 日志,支持恢复到任意时间点,确保事务完整性。无锁备份:备份过程不阻塞业务读写,通过 MVCC(多版本并发控制)保证数据一致性。2. 物理与逻辑验证结合物理层验证:校验和机制:备份时对数据块计算 CRC32 校验和,恢复时对比校验和确保数据未损坏。存储介质冗余:华为云将备份存储在 OBS(对象存储服务),通过多副本(默认 3 份)保证物理耐久性;AWS Redshift 快照存储在 S3,利用 S3 的跨可用区复制功能。逻辑层验证:ACID 测试模型:华为云采用模拟银行转账场景(C1 + C2 = 100)验证备份恢复的一致性,确保事务原子性和数据完整性。元数据一致性:备份时包含表结构、权限等元数据,恢复后通过 DDL 对比工具验证元数据完整性。3. 增量备份的一致性控制华为云 GaussDB (DWS):累积与差分模式:累积增量:所有增量基于最近一次全量备份,恢复时只需全量 + 最后一次增量。差分增量:基于上一次备份(全量或增量),恢复时需按顺序应用所有增量。断点续传:备份中断后可从上次暂停的位置继续,避免重复传输数据 AWS Redshift:增量快照链:自动快照形成链式结构,恢复时自动合并全量快照和所有增量,确保数据一致性。4. 加密与访问控制传输加密:华为云通过 TLS 1.3 加密备份数据传输;AWS Redshift 使用 SSL 连接 S3存储加密:华为云支持对 OBS 存储桶启用 SSE-KMS 加密,密钥由用户管理。AWS Redshift 快照默认加密(AES-256),支持使用客户托管的 KMS 密钥权限隔离:华为云通过 IAM 角色控制备份恢复权限,支持细粒度的 API 操作授权AWS Redshift 使用资源策略和 IAM 策略限制快照访问,例如仅允许特定用户恢复到指定 VPC 三、实际应用与最佳实践1. 华为云 GaussDB (DWS) 的典型场景金融交易系统:备份策略:每周日全量备份,每日凌晨增量备份,保留 30 天。恢复验证:每月通过 Roach 工具执行一次模拟恢复测试,对比备份前和恢复后的数据校验和。容灾切换:通过主备集群和灾备切换 API,实现 RPO=0(生产集群可用时)。医疗数据存储:细粒度恢复:仅恢复特定患者的就诊记录,避免全量恢复带来的性能影响。合规性保障:备份日志和恢复记录保存 7 年,满足 HIPAA 等法规要求。2. AWS Redshift 的典型场景电商数据分析:自动快照策略:设置保留期为 7 天,结合 Lambda 函数自动删除过期快照以降低成本。跨区域恢复:将快照复制到其他 AWS 区域,实现跨区域容灾。日志审计系统:单表恢复:通过restore-table-from-snapshot API 快速恢复被误删的日志表,无需恢复整个集群。增量加载:将恢复后的表与当前数据合并,减少业务中断时间。四、选型建议与技术趋势1. 接口易用性对比华为云 GaussDB (DWS):提供更丰富的细粒度恢复接口(如 Schema 级备份、表级恢复),适合需要精准控制备份范围的场景。AWS Redshift:接口设计更简洁,与 AWS 生态(如 S3、Lambda)集成紧密,适合 Serverless 架构。2. 一致性保障能力华为云:通过 CBM 和 XLog 实现高效增量备份,一致性验证更全面(支持 ACID 测试模型)。AWS:依赖时间点恢复和自动快照链,在大规模数据场景下恢复速度更快。3. 未来技术方向AI 驱动的备份优化:例如华为云正在研究基于机器学习的增量预测,减少备份数据量。联邦备份:跨多个云厂商或数据中心的联合备份,提高容灾可靠性。实时恢复:通过 CDC(Change Data Capture)技术实现秒级恢复,适用于高频交易系统。总结一下下DWS 备份恢复通过标准化的 API 接口和多层次的一致性保障机制,为企业提供了高可靠的数据保护方案。华为云 GaussDB (DWS) 和 AWS Redshift 在接口丰富度、恢复速度和一致性验证上各有优势,企业应根据业务需求(如数据规模、合规性要求)选择合适的方案,并通过定期恢复测试和日志审计确保备份策略的有效性。
-
大语言模型(LLM)基于概率生成文本的特性,导致其可能产生错误或幻觉。一、模型编辑:精准修改知识片段模型编辑通过局部调整模型参数修正特定错误,无需重新训练整个模型,适用于金融、医疗等对准确性要求极高的场景。1. 技术框架核心机制:通过因果追踪定位知识存储位置,直接修改前馈模块参数。例如,ROME 框架通过梯度分解技术,在不影响其他知识的情况下更新特定事实(如 “巴黎是法国首都”)。关键指标:准确性:修改后模型对目标问题的回答正确率(如纠正 “斑马皮肤是白色” 为 “黑色”)。局部性:确保修改不影响无关知识(如不改变 “马是哺乳动物” 的回答)。泛化性:修正后的知识能迁移至语义相似问题(如 “斑马的条纹分布”)。2. 工具链与实践开源工具:TextAttack:生成对抗性样本测试模型鲁棒性,辅助定位需编辑的脆弱知识点。Hugging Face Transformers:提供模型参数访问接口,支持 ROME 等编辑算法的实现。案例:某金融机构通过模型编辑修正了汇率计算逻辑,使风险评估准确率提升 18%,同时保持其他金融指标计算的稳定性。二、自我纠正:模型自主迭代优化自我纠正通过多轮推理和反思机制,在无需外部反馈的情况下改进初始回答,适用于实时交互场景(如客服、法律咨询)。1. 技术框架分解能力:信心能力:对正确答案的坚持程度(避免将正确答案误改为错误)。批判能力:识别并修正错误答案的能力。代表性方法:SCoRe:基于多轮强化学习,通过自生成数据训练模型,在 MATH 数学问题上自我纠正准确率提升 15.6%。CRITIC:结合工具调用(如计算器、知识库)验证推理步骤,在代码生成任务中错误率降低 23%。2. 工具链与实践提示工程模板:# 比如哈:自我验证提示 def self_verify(prompt, response): return f""" 初始回答:{response} 请验证以下内容: 1. 所有事实是否准确? 2. 推理逻辑是否存在漏洞? 3. 是否需要调用工具(如计算器、知识库)? 修正后的回答: """ 案例:某法律咨询平台采用 CRITIC 框架,通过调用法律条文数据库验证回答,使合同审查的合规性准确率从 72% 提升至 91%。三、检索增强生成(RAG):引入外部知识验证RAG 通过检索外部知识库实时验证事实,适用于知识密集型任务(如学术研究、技术支持)。1. 技术框架核心流程:分块与向量化:将文档分割为 500 字符内的语义单元,生成向量索引。混合检索:结合 TF-IDF 和余弦相似度筛选相关片段,动态调整过滤阈值(如 θ=0.7)。生成与验证:基于筛选后的知识生成回答,并通过自反射机制检查一致性。工具链:LangChain:提供 RAG 流程的模块化实现,支持与 Elasticsearch、Pinecone 等向量数据库集成。ChunkRAG:通过细粒度分块和高级过滤,在 PopQA 数据集上准确率达 64.9%,较基线模型提升 10%。2. 企业级实践安全措施:加密传输:使用 TLS 1.3 加密查询与响应数据。访问控制:基于 RBAC(角色 - based access control)限制敏感数据的检索权限。本地化部署:对医疗、政务等领域的私有知识库采用本地向量数据库。案例:某科技公司将 RAG 集成至内部技术支持系统,使故障排查时间缩短 40%,同时将知识更新成本降低 60%。四、对抗训练:提升模型鲁棒性对抗训练通过注入精心设计的扰动数据,使模型学习抵御攻击,适用于高风险场景(如金融交易、自动驾驶)。1. 技术框架核心步骤:生成对抗样本:使用 TextAttack 等工具对原始数据进行同义词替换、随机插入等扰动。联合训练:将对抗样本与原始数据混合,优化模型损失函数。鲁棒性评估:在对抗性测试集上验证模型性能,如 IMDB 影评分类中准确率提升至 91.5%。2. 工具链与实践数据增强工具:nlpaug:支持同义词替换、回译等多种 NLP 数据增强方法。Googletrans:用于回译生成多语言增强数据。案例:某电商平台通过对抗训练优化推荐系统,使恶意刷单攻击导致的推荐错误率从 12% 降至 3%,同时保持正常用户体验不变。五、选型建议与未来趋势1. 场景化选择高准确性需求:优先使用模型编辑(如 ROME)或 RAG(如 ChunkRAG)。实时交互场景:采用自我纠正(如 CRITIC)或轻量级 RAG(如 LangChain)。资源受限环境:选择对抗训练(结合 nlpaug)或参数高效微调(如 LoRA)。2. 技术融合方向多模态验证:结合图像、表格等非结构化数据验证文本回答(如通过医学影像验证诊断描述)。动态模式适应:支持数据库 Schema 变更时的自动知识更新,减少人工干预。联邦学习:在保护数据隐私的前提下,跨机构联合训练纠错模型(如医疗数据共享场景)。六、总结一下下大语言模型的错误纠正需结合多种技术协同解决:模型编辑实现精准知识修正,自我纠正提升自主优化能力,RAG 引入外部验证,对抗训练增强鲁棒性。未来,随着生成对抗网络(GAN)和元学习的发展,模型将具备更强的错误预判和自主进化能力,推动 AI 从 “概率生成” 向 “可信智能” 跨越。实际应用中,需根据具体场景选择技术组合,并通过持续监控和用户反馈动态优化纠错策略。
-
各位华为云社区的技术同仁、开发者伙伴们,大家下午好!金秋九月,既是收获的季节,更是开发者沉淀成长的 “黄金期”—— 开学季的求知氛围感染着每一位保持精进的同行,华为全联接大会的技术盛宴又为我们带来了数智融合的前沿视野。今天,我们特别相聚在这个开放的交流空间,以 “9 月学到的新知识” 为主题,开启一场属于技术人的分享盛宴。首先,请允许我代表社区,对每一位深耕技术、乐于分享的伙伴,致以最热烈的欢迎!在华为云社区,“学习” 从来不是孤军奋战的旅程。正如我们常说的 “智者同行,携手共创”,这里既有 760 万开发者共同搭建的知识生态,也有覆盖昇腾 AI、GaussDB、鸿蒙等根技术的系统课程支持。刚刚过去的 9 月,相信大家都有各自的成长印记:或许是在开发者空间里,用升级后的 CodeArts Doer 智能助手提升了编码效率;或许是钻研了 DataArts Studio 的知识湖服务,解锁了数据治理的新方法;又或是通过社区沙龙,搞懂了 Agent 开发的全生命周期逻辑。这些藏在日常调试与钻研中的收获,正是技术成长最鲜活的注脚。今天的交流没有 “门槛”—— 我们眼中的 “新知识”,可以是硬核的技术突破:比如掌握了 ModelArts 大模型调优的技巧,让训练效率提升 50%;也可以是实用的工具心得:像利用开发者空间的云主机镜像分享功能,简化了团队协作流程;甚至是认知的升级:比如对 “数据 + AI” 双轮驱动的产业逻辑有了更深刻的理解。正如 HCDG 社区的核心价值所言,每一次微小的知识分享,都在为生态的成长 “施肥”,也能让自己在输出中完成认知的闭环。特别想和大家分享的是,华为云始终在为开发者的成长铺路:开发者学堂新增的 1200 多门昇腾课程、云商店的千余款 Agent 工具资源,还有社区里 HCDE 专家们的实战分享,都在让根技术变得触手可及。而今天,轮到我们成为知识传递的纽带 —— 你纠结多日攻克的技术难点,可能正是刚入门伙伴的 “拦路虎”;你偶然发现的效率技巧,或许能帮同行节省大量调试时间。接下来的时间,就请大家放下拘谨,畅所欲言。不用在意分享的 “深度”,重点是传递真实的学习感悟;也欢迎随时提问补充,让知识在碰撞中产生更多火花。毕竟在技术的道路上,最珍贵的莫过于 “我懂你的困惑,你明我的收获”。最后,希望每一位伙伴都能在今天的交流中有所得、有所获,让 9 月的学习成果在分享中延续价值。那么,华为云社区 9 月【话题交流】活动,现在正式开始!哪位伙伴想先聊聊自己 9 月的成长故事?
-
【直播回放】直播回放地址【总结简报】 华为开发者布道师技术沙龙 · 直播间精彩回顾【第1期】联接高校人才培养与前沿产业技术,成就学生未来 / 李一浩老师【第2期】逐梦之旅:学生开发者到华为开发者布道师的蜕变 / 杨阳同学【第3期】昇思MindSpore:AI 领域的创新力量与跨平台之路 / 陈新杰同学【第4期】基于OpenHarmony计算机学科人才培养经验分享 / 周睿老师【第5期】计算机核心课程贯通式实践教学体系介绍 / 赵欢老师、李博经理、杨科华老师【第6期】OpenHarmony应用开发之网络数据请求与数据解析 / 倪红军老师【第7期】华为开发者空间玩转DeepSeek / 马欣老师【第8期】基于能力图谱的openGauss项目闯关 / 马瑞新老师【第9期Day1】基于开源鸿蒙+海思星闪开发板:嵌入式系统开发实战 / 齐耀龙老师【第9期Day2】基于开源鸿蒙+海思星闪开发板:嵌入式系统开发实战 / 齐耀龙老师【第10期】基于华为云+DeepSeek大模型的脑肿瘤分割实验教学案例 / 林承德老师【第11期】WS63E星闪开发板快速入门指南:开启星闪技术之旅 / 杨阳同学【第12期】星闪应用开发技术课程(群)建设思路与设想 / 葛非老师【第13期】星闪主从一体模式与线性星闪网络 / 齐耀龙老师【第14期】基于昇腾的皮肤病理多模态大模型研发 / 崔笑宇老师【第15期】基于昇腾NPU的合成孔径雷达成像案例 / 李阳老师【第16期】香橙派AIpro的远程推理框架与实验案例 / 郝家胜老师【第17期】鸿蒙端云一体化应用开发 / 倪红军老师【第18期】基于HarmonyOS NEXT应用开发之旅 / 刘俊威同学、吴玉佩同学【第19期】OpenHarmony生态构建 / 王天一同学、聂嘉一同学【第20期】仓颉编程语言的社区化学习实践 / 张引老师【第21期】X+AI驱动下的教育革新与产教融合实践 / 张杨老师【第22期】基于华为云CodeArts的软件开发技术 / 马瑞新老师【第23期】GaussDB在数据库教学与实践中的应用 / 刘斌老师本期问答摘要:序号问题答复1gaussDB的基本架构是怎样的?它与传统的SQL数据库相比有哪些优势?分布式架构。支持集中式和分布式集群部署。云数据库部署更方便。详见GaussDB文档2gaussDB支持哪些数据类型和SQL标准?GaussDB支持SQL933gaussDB的性能监控和调优工具有哪些?在教学中如何通过实际案例来展示这些工具的使用方法?有一个专门的DBA智能运维的工具。4gaussDB的SQL语法与标准SQL有哪些主要区别?支持标准的SQL语法。QL: 2011 标准,并包含了部分 SQL: 2016 和 SQL: 2019 的特性。同时,它对主流的 Oracle 和 PostgreSQL 语法有很好的兼容性。5GaussDB支持哪些高级SQL特性,如窗口函数、递归查询等?窗口函数支持、机器学习库也支持,全密态查询6gaussDB的事务管理机制是怎样的?它如何支持ACID特性?在教学中如何演示这些概念?事务支持4种隔离级别,支持MVCC。7如何支持分布式部署?它在分布式环境下的数据一致性是如何保证的?引入全局节点,全局事务管理器等节点,在架构上支持,其次支持数据的各种分片。8opengauss和gaussDB的语法是一样的吗?基本一致9GaussDB在满足金融行业对数据一致性、高可用性和安全性的严苛要求方面,采用了哪些关键技术机制?与传统的Oracle数据库相比,它在处理高并发事务和灾难恢复能力上有哪些优势和局限性?分布式强一致性(核心):技术:基于 Paxos/Raft 协议的多副本同步机制。技术:全局事务管理器(GTM) + 两阶段提交(2PC)。机制:GTM负责分配全局唯一的事务ID和快照,为整个集群提供统一的事务视图。对于跨多个数据节点的写操作,CN作为协调者,通过2PC协议确保所有节点要么全部提交,要么全部回滚,保证了分布式事务的原子性(Atomicity)。同城双集群强一致性容灾:技术:基于共享存储或日志同步,两个位于同城不同机房的集群可以组成一个大的Paxos组。机制:写操作需要同时在同城两个机房的多数派副本上持久化。单个机房完全故障,另一个机房能立即接管服务,且数据零丢失(RPO=0),恢复时间目标(RTO)通常在秒级到分钟级。这是金融容灾的最高标准。异地灾备:通过逻辑日志或REDO日志异步复制到异地机房,提供远距离的数据备份,防范城市级灾难。节点级高可用:集群内每个DN节点都有主备副本,通过流复制技术保持同步。主节点故障时,备节点能通过选举机制自动、快速(30秒以内)切换为主节点,应用几乎无感知。3. 高安全性机制金融数据是最高机密,必须严防泄露和篡改。全链路加密:支持 TLS/SSL 加密客户端与数据库、以及集群内部节点之间的通信。支持 透明数据加密(TDE),对数据文件进行静态加密,即使硬盘被盗,数据也无法被读取。细粒度权限与访问控制:提供完整的角色管理、权限管理(GRANT/REVOKE)。支持行级访问控制(RLS) 和列级加密,实现“同一张表,不同用户看到不同的行和列”。数据脱敏与审计:提供动态数据脱敏功能,在查询结果返回时对敏感信息(如身份证号)进行掩码。具备强大的安全审计能力,记录所有用户的操作日志,满足合规要求。10GaussDB支持哪些类型的事务隔离级别?四种都支持11GaussDB支持哪些编程接口和驱动?Python,C,Java,操作系统支持WIndows,Unix,等12GaussDB支持自治事务吗?和Oracle在自治事务处理上有何差异?答案是:支持,但实现方式和语法与Oracle有显著差异,具体实现、语法和细节上,两者存在重要区别。。GaussDB(基于openGauss)通过 PL/pgSQL 的 PRAGMA AUTONOMOUS_TRANSACTION 编译指令来支持自治事务。这是一种在存储过程或函数中声明特定子程序为独立事务的机制。
-
collector在尝试采集replication、replication_slot指标时失败了,报错信息如下:time=2025-09-05T09:34:16.375+08:00 level=ERROR source=collector.go:207 msg="collector failed" name=replication duration_seconds=0.0711601 err="ERROR: Function pg_last_wal_receive_lsn() does not exist. (SQLSTATE 42883)"time=2025-09-05T09:34:16.674+08:00 level=INFO source=namespace.go:235 msg="error finding namespace" err="Error running query on database \"113.44.80.136:8000\": pg_stat_replication ERROR: Function pg_last_wal_receive_lsn() does not exist. (SQLSTATE 42883)"time=2025-09-05T09:34:16.711+08:00 level=INFO source=namespace.go:235 msg="error finding namespace" err="Error running query on database \"113.44.80.136:8000\": pg_replication_slots ERROR: Function pg_last_wal_receive_lsn() does not exist. (SQLSTATE 42883)"time=2025-09-05T09:34:16.755+08:00 level=ERROR source=collector.go:207 msg="collector failed" name=replication_slot duration_seconds=0.4515532 err="ERROR: Function pg_last_wal_receive_lsn() does not exist. (SQLSTATE 42883)"time=2025-09-11T15:33:59.609+08:00 level=ERROR source=gaussdb_exporter.go:684 msg="error scraping dsn" err="queryNamespaceMappings errors encountered, namespace: pg_stat_replication error: Error running query on database \"113.44.80.136:8000\": pg_stat_replication ERROR: Function pg_last_wal_receive_lsn() does not exist. (SQLSTATE 42883), namespace: pg_replication_slots error: Error running query on database \"113.44.80.136:8000\": pg_replication_slots ERROR: Function pg_last_wal_receive_lsn() does not exist. (SQLSTATE 42883)" dsn="gaussdb://root:PASSWORD_REMOVED@113.44.80.136:8000/circle_test?sslmode=disable"相关SQL:SELECT *, (CASE pg_is_in_recovery () WHEN 't' THEN pg_last_wal_receive_lsn () ELSE pg_current_wal_lsn () END) AS pg_current_wal_lsn, ( CASE pg_is_in_recovery () WHEN 't' THEN pg_wal_lsn_diff (pg_last_wal_receive_lsn (), PG_LSN ('0/0')) :: FLOAT ELSE pg_wal_lsn_diff (pg_current_wal_lsn (), PG_LSN ('0/0')) :: FLOAT END ) AS pg_current_wal_lsn_bytes, ( CASE pg_is_in_recovery () WHEN 't' THEN pg_wal_lsn_diff (pg_last_wal_receive_lsn (), replay_lsn) :: FLOAT ELSE pg_wal_lsn_diff (pg_current_wal_lsn (), replay_lsn) :: FLOAT END ) AS pg_wal_lsn_diffFROM pg_stat_replication;SELECT slot_name, DATABASE, active, (CASE pg_is_in_recovery () WHEN 't' THEN pg_wal_lsn_diff (pg_last_wal_receive_lsn (), restart_lsn) ELSE pg_wal_lsn_diff (pg_current_wal_lsn (), restart_lsn) END) AS pg_wal_lsn_diffFROM pg_replication_slots;SELECT slot_name, slot_type, CASE WHEN pg_is_in_recovery () THEN pg_last_wal_receive_lsn () - '0/0' ELSE pg_current_wal_lsn () - '0/0' END AS current_wal_lsn, 0 AS confirmed_flush_lsn, activeFROM pg_replication_slots;错误提示很明确:SQL查询中引用了名为 pg_last_wal_receive_lsn() 的函数,但该函数在数据库系统中不存在。GaussDB版本是:gaussdb (GaussDB Kernel 505.2.1 build ff07bff6) compiled at 2024-12-27 09:22:42 commit 10161 last mr 21504 release采集工具是:Prometheus gaussdb_exporter 从报错信息和背景来看,核心问题是GaussDB 与 PostgreSQL 在复制相关系统函数上存在差异,导致监控工具(gaussdb_exporter)使用的 PostgreSQL 风格函数在 GaussDB 中不被支持。一、问题的根因:GaussDB 与 PostgreSQL 的函数差异pg_last_wal_receive_lsn()是 PostgreSQL 特有函数该函数用于获取备库(处于恢复模式)最后接收的 WAL(Write-Ahead Log)位置,是 PostgreSQL 9.6 及以上版本的内置函数(早期版本使用pg_last_xlog_receive_lsn(),因 PostgreSQL 10 将 XLOG 重命名为 WAL)。GaussDB 不支持该函数您使用的 GaussDB 版本(Kernel 505.2.1)虽然基于 PostgreSQL 开发,但在复制机制的函数实现上有调整,未提供pg_last_wal_receive_lsn()。这是典型的 “兼容性差异”——GaussDB 保留了 PostgreSQL 的核心语法,但在部分系统函数(尤其是与底层存储、复制相关的)上做了定制化实现。二、一些解决方案:适配 GaussDB 的复制指标采集方法GaussDB 通过系统视图和自有函数提供复制相关信息,需修改监控查询语句,替换pg_last_wal_receive_lsn()为 GaussDB 支持的方式。以下是具体改造方案:1. 明确 GaussDB 的复制状态判断与 LSN 获取方式需求(原 PostgreSQL 函数)GaussDB 替代方案说明判断是否为备库(pg_is_in_recovery())仍可使用pg_is_in_recovery()(GaussDB 兼容该函数)返回t表示备库,f表示主库备库最后接收的 LSN(pg_last_wal_receive_lsn())从pg_stat_replication视图的receive_lsn字段获取(主库视角);或备库通过pg_stat_get_wal_receive_lsn()函数(部分版本支持)GaussDB 中,备库的接收 LSN 直接记录在复制状态视图中,无需单独函数计算主库当前 WAL 位置(pg_current_wal_lsn())使用pg_current_wal_lsn()(GaussDB 兼容)或pg_stat_get_wal_current_lsn()函数主库当前写入的 WAL 位置,与 PostgreSQL 用法一致2. 修改监控 SQL 语句(核心改造)针对您提供的 3 条 SQL,替换pg_last_wal_receive_lsn()为 GaussDB 支持的方式:(1)第一条 SQL(pg_stat_replication查询)原 SQL 问题:备库判断分支使用了pg_last_wal_receive_lsn(),GaussDB 不支持。改造后: SELECT *, -- 替换备库LSN获取方式:主库用pg_current_wal_lsn(),备库从pg_stat_replication取receive_lsn (CASE pg_is_in_recovery () WHEN 't' THEN (SELECT receive_lsn FROM pg_stat_replication LIMIT 1) -- 备库场景 ELSE pg_current_wal_lsn () END) AS pg_current_wal_lsn, ( CASE pg_is_in_recovery () WHEN 't' THEN -- 备库:计算receive_lsn与0/0的差值 pg_wal_lsn_diff ((SELECT receive_lsn FROM pg_stat_replication LIMIT 1), PG_LSN ('0/0')) :: FLOAT ELSE -- 主库:沿用原逻辑 pg_wal_lsn_diff (pg_current_wal_lsn (), PG_LSN ('0/0')) :: FLOAT END ) AS pg_current_wal_lsn_bytes, ( CASE pg_is_in_recovery () WHEN 't' THEN -- 备库:用receive_lsn与replay_lsn计算差值 pg_wal_lsn_diff ((SELECT receive_lsn FROM pg_stat_replication LIMIT 1), replay_lsn) :: FLOAT ELSE -- 主库:沿用原逻辑 pg_wal_lsn_diff (pg_current_wal_lsn (), replay_lsn) :: FLOAT END ) AS pg_wal_lsn_diffFROM pg_stat_replication; (2)第二条 SQL(pg_replication_slots查询)改造后: SELECT slot_name, database, active, (CASE pg_is_in_recovery () WHEN 't' THEN -- 备库:用receive_lsn计算差值 pg_wal_lsn_diff ((SELECT receive_lsn FROM pg_stat_replication LIMIT 1), restart_lsn) ELSE -- 主库:沿用原逻辑 pg_wal_lsn_diff (pg_current_wal_lsn (), restart_lsn) END) AS pg_wal_lsn_diffFROM pg_replication_slots; (3)第三条 SQL(pg_replication_slots补充查询) SELECT slot_name, slot_type, CASE WHEN pg_is_in_recovery () THEN -- 备库:用receive_lsn与0/0的差值 pg_wal_lsn_diff ((SELECT receive_lsn FROM pg_stat_replication LIMIT 1), PG_LSN ('0/0')) ELSE -- 主库:沿用原逻辑 pg_wal_lsn_diff (pg_current_wal_lsn (), PG_LSN ('0/0')) END AS current_wal_lsn, 0 AS confirmed_flush_lsn, activeFROM pg_replication_slots; 3. 验证 GaussDB 的系统视图与函数执行以下语句确认 GaussDB 支持的字段和函数,确保改造有效:-- 1. 查看pg_stat_replication视图结构(确认是否有receive_lsn字段)\d pg_stat_replication;-- 2. 检查备库LSN相关函数(部分GaussDB版本可能提供)SELECT pg_stat_get_wal_receive_lsn(); -- 若返回值,则可替代子查询-- 3. 确认主库当前LSN函数SELECT pg_current_wal_lsn(); 4. 调整 gaussdb_exporter 配置将修改后的 SQL 更新到 gaussdb_exporter 的查询模板中(通常在queries.yaml或代码内置的 SQL 字符串中),重新部署 exporter 即可。三、版本差异说明GaussDB 与 PostgreSQL 的基础版本关联您使用的 GaussDB Kernel 505.2.1 对应的 PostgreSQL 基础版本接近PostgreSQL 9.2/9.3(通过内核特性推断),而pg_last_wal_receive_lsn()是 PostgreSQL 9.6 + 引入的(替换了 9.5 及之前的pg_last_xlog_receive_lsn())。因此,从基础版本兼容性来看,GaussDB 不支持该函数符合其版本定位。GaussDB 的复制机制特点GaussDB 的主备复制依赖自有逻辑(如日志复制、一致性校验),更倾向于通过pg_stat_replication(主库视图)、pg_stat_slave_replication(备库视图,部分版本有)等视图暴露状态,而非独立函数。这也是改造时优先使用视图字段的原因。四、总结一下下问题根因是GaussDB 不支持 PostgreSQL 的pg_last_wal_receive_lsn()函数,需通过查询系统视图(如pg_stat_replication的receive_lsn字段)替代。核心解决方案是:修改监控 SQL,用 GaussDB 的视图字段替换 PostgreSQL 特有函数;确认pg_stat_replication等视图的字段存在性,确保 LSN 计算逻辑正确;调整 gaussdb_exporter 的查询模板,适配 GaussDB 的复制指标采集方式。
上滑加载中
推荐直播
-
码道新技能,AI 新生产力——从自动视频生成到开源项目解析2026/04/08 周三 19:00-21:00
童得力-华为云开发者生态运营总监/何文强-无人机企业AI提效负责人
本次华为云码道 Skill 实战活动,聚焦两大 AI 开发场景:通过实战教学,带你打造 AI 编程自动生成视频 Skill,并实现对 GitHub 热门开源项目的智能知识抽取,手把手掌握 Skill 开发全流程,用 AI 提升研发效率与内容生产力。
回顾中 -
华为云码道:零代码股票智能决策平台全功能实战2026/04/18 周六 10:00-12:00
秦拳德-中软国际教育卓越研究院研究员、华为云金牌讲师、云原生技术专家
利用Tushare接口获取实时行情数据,采用Transformer算法进行时序预测与涨跌分析,并集成DeepSeek API提供智能解读。同时,项目深度结合华为云CodeArts(码道)的代码智能体能力,实现代码一键推送至云端代码仓库,建立起高效、可协作的团队开发新范式。开发者可快速上手,从零打造功能完整的个股筛选、智能分析与风险管控产品。
回顾中 -
华为云码道全新升级,多会话并行与多智能体协作2026/05/08 周五 19:00-21:00
王一男-华为云码道产品专家;张嘉冉-华为云码道工程师;胡琦-华为云HCDE;程诗杰-华为云HCDG
华为云码道4月份版本全新升级,此次直播深度解读4月份产品特性,通过“特性解读+实操演示+实战案例+设计创新”的组合,全方位展现码道在多会话并行与多智能体协作方面的能力,赋能开发者提升效率
正在直播
热门标签