当前位置: 首页 > news >正文

【基础复习笔记】计算机视觉

目录

一、计算机视觉基础

1. 卷积神经网络原理

2. 目标检测系列 

二、算法与模型实现

1. 在PyTorch/TensorFlow中实现自定义损失函数或网络层的步骤是什么?

2. 如何设计一个轻量级模型用于移动端的人脸识别?

3. 描述你使用过的一种注意力机制(如SE Block、Transformer)及其应用场景。

4. 如何优化模型推理速度?是否使用过量化、剪枝或蒸馏技术?

5. 解释数据增强在图像任务中的作用,并举出5种以上增强方法。

三、工程能力与编程

1. 用C++实现一个快速图像边缘检测算法(如Sobel算子)。

2. Python中多线程与多进程的区别?如何解决GIL问题?

3. 如何部署一个深度学习模型到生产环境?是否用过TensorRT或ONNX?

4. 使用Shell脚本批量处理图像并生成特征文件的思路。

四、实际应用思路

1. 如果实际场景中模型准确率高但召回率低,如何调整策略?

2. 在跨摄像头人员跟踪任务中,如何处理遮挡和光线变化?

五、前沿技术与研究

1. 最近关注的计算机视觉论文是什么?其创新点对你的工作有何启发?

2. Vision Transformer与传统CNN相比有哪些优势和局限?

3. 如何将自监督学习应用到图像搜索任务中?

4. 对比学习(Contrastive Learning)在无监督任务中的作用。

对比学习的核心作用:

对比学习在无监督任务中的典型应用

1. 图像分类与检索

2. 聚类与异常检测

3. 表征可视化

5. 对多模态模型(如图像+文本)在工业界的应用有何看法?

6. Diffusion Model如何在CV中应用?

Diffusion Model在CV中的六大应用方向


一、计算机视觉基础

1. 卷积神经网络原理

        ① 解释卷积神经网络(CNN)的工作原理及其在图像处理中的优势。

  • 原理:通过卷积核滑动提取局部特征(如边缘、纹理),池化层降低空间维度,全连接层分类。

  • 优势:局部连接(减少参数量)、权值共享(平移不变性)、层次化特征提取(低级→高级语义)。
    示例:在ResNet中,残差块缓解梯度消失,使网络更深。

补充: 

        池化操作:降采样 + 平滑 ⇒ 降低计算、增强鲁棒

        激活函数(ReLU/Leaky ReLU、Swish 等)提升非线性表达

        ② 列举常见的图像分割方法,并比较它们的优缺点。

例如Mask R-CNN 和 U-Net

  • Mask R-CNN:基于Faster R-CNN,增加掩膜分支,适合实例分割(如区分不同物体个体)。

  • U-Net:编码-解码结构,跳跃连接保留细节,适合医学图像分割(小样本高精度)。
    优化场景:U-Net在数据少时表现更好,Mask R-CNN更适合复杂场景多目标分割。

        ③ 如何处理类别不均衡问题(如人脸识别中不同人种数据量差异)?

  • 数据层面:过采样少数类(如SMOTE)、欠采样多数类。

  • 损失函数:加权交叉熵(Weighted Cross-Entropy)、Focal Loss(抑制易分类样本权重)。
    示例:在人脸识别中,对罕见人种数据增强(旋转、光照变换)并提高其损失权重。

        ④ 什么是非极大值抑制(NMS)?如何优化其计算效率?

  • NMS作用:去除冗余检测框(如YOLO中同一目标多个预测框)。

  • 优化方法:Soft-NMS(加权降低重叠框分数)、GPU并行加速、IoU阈值动态调整。

示例代码:

def nms(boxes, scores, threshold):"""非极大值抑制(Non-Maximum Suppression, NMS)Args:boxes (np.array): 边界框坐标,形状为 [N, 4](格式通常为x1,y1,x2,y2)scores (np.array): 边界框对应的置信度得分,形状为 [N]threshold (float): IoU阈值,用于判断是否抑制重叠框Returns:keep (list): 保留的边界框索引列表"""keep = []# 按置信度得分从高到低排序,获得索引(argsort默认升序,[::-1]反转后为降序)order = scores.argsort()[::-1]while order.size > 0:# 取当前置信度最高的边界框索引i = order[0]keep.append(i)# 计算当前框与剩余所有框的IoU(注意:bbox_iou需要提前实现)ious = bbox_iou(boxes[i], boxes[order[1:]])  # 比较当前框 vs 后续所有框# 找到IoU小于等于阈值的框索引(保留这些框,抑制重叠框)# np.where返回满足条件的索引,[0]是因为返回的是元组格式idx = np.where(ious <= threshold)[0]# 更新待处理框列表:# 1. order[1:]跳过当前已处理的框# 2. idx+1 是因为order[1:]的索引比原order小1,需映射回原order的索引位置order = order[idx + 1]return keep

        ⑤ 如何评估目标检测模型的性能?mAP的计算逻辑是什么?

  • 性能评估:精确率、召回率、F1分数、交并比、mAP

  • mAP的计算逻辑:先计算每个类别的AP(Average Precision),再对所有类别的AP取平均

  1. 精确率(Precision)

    • 所有预测为正样本的检测框中,实际为正样本的比例。

    • 意义:衡量模型预测的“准确性”(避免误检)。

  2. 召回率(Recall)

    • 所有真实正样本中,被正确检测出的比例。

    • 意义:衡量模型检测的“全面性”(避免漏检)。

  3. F1分数(F1-Score)

    • 精确率和召回率的调和平均值,平衡两者的重要性。

  4. 交并比(IoU, Intersection over Union)

    • 预测框与真实框的重叠面积占两者并集面积的比例。

    • 作用:判断检测框是否有效(通常阈值设为0.5)。

  5. 平均精度均值(mAP, mean Average Precision)

    • 核心指标:综合所有类别和不同召回率下的平均精度,是目标检测领域的“金标准”。

        ⑥ FCN、U-Net、DeepLabV3+ 的核心思想差异?

核心思想差异

  • FCN:全卷积 + 上采样 → 粗分割

  • U-Net:编码-解码 + 跳跃连接 → 更细节保留

  • DeepLabV3+:空洞卷积(Atrous) + ASPP → 大感受野

2. 目标检测系列 

        ① Faster R-CNN、YOLO、SSD 各自的网络结构和优缺点?

特性Faster R-CNNSSDYOLOv5/YOLOv8
检测流程two-stage(提议生成 + 分类回归)one-stage,多尺度特征图one-stage,端到端
精度高,但速度较慢平衡更快,适合实时
小目标表现较好依赖多尺度设计anchor-free 版本效果提升

         ② 什么是自监督学习?

        自监督学习(Self-Supervised Learning,简称 SSL)是一种介于有监督学习和无监督学习之间的学习范式。它的核心思想是在“无标签”数据上自动构造“伪标签”(pretext task),让模型先通过解决这些辅助任务来学习数据的内在表示(representation),再将学到的表示用于下游的监督任务(如分类、检测、分割等),通常能显著提升数据利用效率,减少对人工标注的依赖。

核心思路

  • 构造预训练任务(Pretext Task)

    • 在没有人工标注的数据上,自动生成监督信号。例如:

      • 图像旋转预测:随机将一张图像旋转 0°/90°/180°/270°,让网络预测旋转角度。

      • 图像拼图(Jigsaw Puzzle):将图像切成若干块打乱顺序,让网络恢复原始拼图布局。

      • 像素填充(Inpainting):随机遮挡图像一部分,让网络去重建被遮挡区域。

  • 学习通用特征

    • 通过完成预训练任务,网络在浅层到深层蒸馏出了图像的纹理、边缘、结构、语义等多层次信息。

    • 由于预训练任务本身不依赖人工标签,海量“无标签”图像都可以拿来用。

  • 迁移到下游任务

    • 把预训练好的网络作为“特征提取器”或初始化权重,再用较少量的有标签数据进行微调(fine-tuning)。

    • 实验表明,这种方式在数据稀缺或标签昂贵的场景下,往往能超越从头训练或仅用无监督预训练的方法。

典型方法

  1. 对比学习(Contrastive Learning)

    • SimCLR:对同一张图像做两种不同的数据增强(crop、color-jitter、Gaussian blur 等),生成一对“正样本”;其它图像增强结果构成“负样本”。通过 InfoNCE 损失最大化正样本特征相似度、最小化负样本相似度。

    • MoCo:维护一个动态更新的“负样本队列”(memory bank),并使用动量更新(momentum update)的方式来稳定负样本表示。

  2. 生成式方法(Generative Pretext)

    • Context Encoder:遮挡图像中心块,让网络生成该区域的像素;等同于一种条件生成对抗网络(cGAN)。

    • Auto-Encoder / Masked Autoencoder (MAE):随机遮掉图像的部分 Patch,模型通过 Transformer 或 Encoder-Decoder 架构去重建被遮掉的内容。

  3. 上下文预测(Context Prediction)

    • Jigsaw Puzzle:将图像网格切块并打乱顺序,网络要预测每块在原图中的位置。

有监督学习无监督学习自监督学习
数据需求大量带标签数据仅无标签数据仅无标签数据(自动生成伪标签)
学习目标直接优化下游任务(如分类)学习数据分布(如聚类、降维)先解决预训练任务,再迁移下游任务
应用优势精度高,但标签昂贵可用性广,但表示质量有限平衡两者:利用海量无标签,学到更有辨识力的表示

二、算法与模型实现

1. 在PyTorch/TensorFlow中实现自定义损失函数或网络层的步骤是什么?

        ① PyTorch自定义损失函数

继承nn.Module,重写forward方法。

示例代码:

class DiceLoss(nn.Module):def __init__(self):super().__init__()def forward(self, pred, target):smooth = 1e-6pred = pred.view(-1)target = target.view(-1)intersection = (pred * target).sum()return 1 - (2*intersection + smooth)/(pred.sum() + target.sum() + smooth)

         ② TensorFlow自定义损失函数

方法1:函数式定义(简单场景)

适用于无复杂逻辑的损失函数,直接使用TensorFlow运算。

import tensorflow as tfdef custom_mse_loss(y_true, y_pred):"""自定义均方误差损失,对高误差样本加权"""error = y_true - y_pred# 对误差绝对值大于1的样本赋予2倍权重weights = tf.where(tf.abs(error) > 1.0, 2.0, 1.0)return tf.reduce_mean(weights * tf.square(error))# 使用示例
model.compile(optimizer='adam', loss=custom_mse_loss)

方法2:继承tf.keras.losses.Loss类(推荐)

需处理样本加权、多任务损失等复杂场景时使用。

class FocalLoss(tf.keras.losses.Loss):def __init__(self, alpha=0.25, gamma=2.0, name="focal_loss"):super().__init__(name=name)self.alpha = alphaself.gamma = gammadef call(self, y_true, y_pred):# 计算交叉熵ce = tf.nn.sigmoid_cross_entropy_with_logits(labels=y_true, logits=y_pred)# 计算概率值p = tf.sigmoid(y_pred)# 计算调制因子modulating_factor = (1.0 - p)**self.gamma * y_true + p**self.gamma * (1.0 - y_true)# 组合损失loss = self.alpha * modulating_factor * cereturn tf.reduce_mean(loss)# 使用示例
model.compile(optimizer='adam', loss=FocalLoss(alpha=0.25, gamma=2))

2. 如何设计一个轻量级模型用于移动端的人脸识别?

3. 描述你使用过的一种注意力机制(如SE Block、Transformer)及其应用场景。

4. 如何优化模型推理速度?是否使用过量化、剪枝或蒸馏技术?

① 优化模型推理速度的通用方法

优化维度具体方法适用场景
硬件加速使用GPU/TPU/NPU等支持并行计算的硬件,或专用加速芯片(如TensorRT、CoreML)高吞吐量场景(如服务器、边缘设备)
软件优化算子融合(Kernel Fusion)、内存复用、多线程/异步计算框架级优化(如ONNX Runtime优化)
模型压缩量化(Quantization)、剪枝(Pruning)、蒸馏(Distillation)移动端/嵌入式设备部署
结构轻量化使用MobileNet、EfficientNet等轻量级网络,或设计深度可分离卷积(Depthwise Conv)实时性要求高的任务(如视频流分析)
动态推理根据输入复杂度动态调整计算路径(如Early Exit、自适应计算时间)输入差异大的任务(如OCR多样化文本)

② 量化、剪枝、蒸馏技术对比

  • 量化

        原理:将模型参数从高精度转换为低精度,减少存储和计算开销。

        优势

                显著减少模型体积(INT8模型比FP32小4倍)。

                利用硬件加速(如GPU的Tensor Core支持INT8计算)。

        局限性

                低精度可能导致数值溢出/舍入误差(尤其对敏感任务如目标检测)。

                部分操作(如自定义层)需手动适配量化逻辑。

        适用场景:移动端部署、边缘计算(如手机人脸识别)。

  • 剪枝

        原理:移除模型中冗余的权重或神经元(如接近零的权重)

        优势

                直接减少计算量(FLOPs降低30-50%)。

                可与量化/蒸馏结合使用(叠加优化效果)。

        局限性

                需迭代训练(剪枝→微调→评估),时间成本高。

                过度剪枝会导致模型崩溃(需谨慎选择剪枝率)。

        适用场景:计算资源受限的嵌入式设备(如无人机目标跟踪)。

  • 蒸馏 

        原理:用大模型(教师模型)指导小模型(学生模型)学习,传递“暗知识”。

        优势

                小模型可接近大模型的精度(如DistilBERT比BERT小40%,保留95%性能)。

                支持跨模态/跨任务知识迁移(如用CNN教师模型训练Transformer学生模型)。

        局限性

                依赖教师模型的质量和兼容性。

                训练复杂度高(需同时处理教师和学生模型)。

        适用场景:需要轻量级高精度模型的场景(如医疗影像分析)。

5. 解释数据增强在图像任务中的作用,并举出5种以上增强方法。

其核心作用在于通过人为扩展训练数据的多样性,提升模型的泛化能力和鲁棒性、缓解过拟合、均衡数据分布 以及 降低标注成本。

⑴ 几何变换类

        随机旋转(Rotation):将图像旋转一定角度(如±30°),模拟不同拍摄视角。

        水平/垂直翻转(Flip):沿水平或垂直轴翻转图像,增强对称性物体的识别能力(如猫狗分类)。

        随机裁剪(Random Crop):从图像中随机截取局部区域,强制模型关注局部特征。常用于目标检测(避免依赖物体位置)。

⑵ 颜色变换类

        亮度/对比度调整(Brightness/Contrast):模拟不同光照条件,增强模型对明暗变化的适应能力。

        色彩抖动(Color Jitter):随机调整图像的饱和度、色相(如HSV空间变换),应对摄像头色差。

⑶ 噪声与遮挡类

        高斯噪声(Gaussian Noise):添加随机噪声,提升模型对低质量输入(如传感器噪声)的鲁棒性。

        随机擦除(Random Erasing):随机遮挡图像区域(如矩形块),迫使模型关注整体而非局部特征。

⑷ 混合图像类

        MixUp:混合两张图像及其标签,生成线性插值样本。适用于分类任务。

        CutMix:将一张图像的部分区域替换为另一张图像的对应区域,同时混合标签。提升模型对局部遮挡的鲁棒性。

⑸ 高级增强方法

        风格迁移(Style Transfer):保留图像内容但改变风格(如将照片转为油画),增加域多样性。

        GAN生成数据:利用生成对抗网络(GAN)合成逼真图像,尤其适用于数据稀缺场景(如罕见疾病CT影像)。

增强策略选择: 

  1. 任务相关性

    • 分类任务:侧重几何变换、颜色抖动。

    • 目标检测:避免破坏边界框的增强(如过度裁剪),优先平移、缩放。

    • 语义分割:需同步增强图像和掩膜(如使用相同的随机参数)。

  2. 数据特性

    • 自然图像:适合颜色抖动、随机翻转。

    • 医学影像:谨慎使用几何变换(需符合解剖结构),优先弹性形变、对比度调整。

三、工程能力与编程

1. 用C++实现一个快速图像边缘检测算法(如Sobel算子)。

#include <opencv2/opencv.hpp>
using namespace cv;Mat sobel_edge(Mat& src) {Mat grad_x, grad_y, abs_grad_x, abs_grad_y, dst;Sobel(src, grad_x, CV_16S, 1, 0, 3);  // X方向梯度Sobel(src, grad_y, CV_16S, 0, 1, 3);  // Y方向梯度convertScaleAbs(grad_x, abs_grad_x);  // 转8位无符号convertScaleAbs(grad_y, abs_grad_y);addWeighted(abs_grad_x, 0.5, abs_grad_y, 0.5, 0, dst);  // 合并梯度return dst;
}

2. Python中多线程与多进程的区别?如何解决GIL问题?

  • 多线程:共享内存,适合I/O密集型任务(如下载),但受GIL限制。

  • 多进程:独立内存,适合CPU密集型任务(如并行计算)。
    解决GIL:使用multiprocessing模块、C扩展(如Cython)、异步编程(asyncio)。

3. 如何部署一个深度学习模型到生产环境?是否用过TensorRT或ONNX?

4. 使用Shell脚本批量处理图像并生成特征文件的思路。

  1. 输入输出定义

    • 输入:指定图像目录(如./images/*.jpg),支持常见格式(jpg/png等)。

    • 输出:为每张图像生成对应的特征文件(如image1.jpg → features/image1_feature.txt)。

  2. 核心步骤

    • 遍历图像文件:使用Shell循环处理每个文件。

    • 特征提取:调用外部工具或脚本(如Python/OpenCV)计算特征。

    • 结果保存:将特征写入文件,可按需选择格式(文本/CSV/JSON)。

    • 并行加速:利用xargsGNU Parallel加速大批量处理。

四、实际应用思路

1. 如果实际场景中模型准确率高但召回率低,如何调整策略?

① 调整分类阈值

  • 操作:降低分类阈值,使模型更倾向于预测正类。

  • 影响:提高召回率,但可能降低准确率,需通过ROC曲线或PR曲线找到最佳平衡点。

② 处理类别不平衡

  • 过采样:使用SMOTE、ADASYN生成合成正类样本。
from imblearn.over_sampling import SMOTE
smote = SMOTE()
X_resampled, y_resampled = smote.fit_resample(X_train, y_train)
  • 调整类别权重:在训练时增加正类样本的权重。
model = LogisticRegression(class_weight={0: 1, 1: 10})  # 正类权重设为10倍

③ 优化损失函数

  • 使用Focal Loss:抑制易分类样本的损失,聚焦难样本。

④ 模型结构改进

  • 复杂模型:使用更深的神经网络或集成模型(如XGBoost、LightGBM)。

  • 正则化:防止过拟合,提升泛化能力。

⑤ 错误分析与迭代

  • 假阴性分析:统计漏检样本的特征分布(如时间、地理位置)。

  • 针对性增强数据:对高频漏检场景的数据进行过采样。

⑥ 集成学习

  • Bagging/Boosting:结合多个弱分类器提升鲁棒性。
from sklearn.ensemble import RandomForestClassifier
model = RandomForestClassifier(n_estimators=100, class_weight='balanced')
场景推荐策略
阈值保守导致漏检调整分类阈值 → 后处理规则
数据高度不平衡过采样/类别权重 → Focal Loss
模型欠拟合正类特征复杂模型 → 特征工程 → 集成学习
业务场景强需求(如医疗诊断)规则引擎 → 人工复核机制

2. 在跨摄像头人员跟踪任务中,如何处理遮挡和光线变化?

遮挡问题应对策略

① 多目标跟踪算法增强

  • 运动模型预测:使用卡尔曼滤波或粒子滤波预测目标轨迹,在遮挡期间维持位置估计。
  • 数据关联优化:采用匈牙利算法或级联匹配(如DeepSORT),结合外观和运动特征减少ID切换。

② 部分遮挡下的特征提取

  • 局部特征聚焦:提取身体部位特征(如头肩、衣着纹理),而非依赖全身信息。

  • 遮挡鲁棒的Re-ID模型:训练时添加随机遮挡增强,提升模型对局部特征的敏感性。

③ 时间上下文融合

  • 轨迹一致性校验:结合历史轨迹预测当前位置,与当前检测结果进行时空一致性匹配。

  • 多帧特征聚合:滑动窗口内平均化目标特征,减少单帧误差影响。

光线变化问题应对策略

① 光照不变性预处理

  • 自适应直方图均衡化(CLAHE):增强局部对比度,缓解过曝/欠曝。
  • 色彩空间转换:使用对光照变化不敏感的Lab色彩空间的L通道或HSV空间的V通道。

② 光照鲁棒的特征表示

  • 归一化方法

    • 跨摄像头归一化(CCN):对齐不同摄像头的颜色分布。

    • 实例归一化(IN):消除光照差异,保留身份语义。

  • 对抗训练:在Re-ID模型中引入光照变换的对抗样本,增强泛化性。

③ 多模态数据融合

  • 红外/可见光互补:在低光照场景下启用红外摄像头数据。

  • 时间信息利用:白天/夜间模式切换时,结合时间段元数据调整特征权重。

五、前沿技术与研究

1. 最近关注的计算机视觉论文是什么?其创新点对你的工作有何启发?

2. Vision Transformer与传统CNN相比有哪些优势和局限?

 ① Vision Transformer的优势

  • 全局依赖建模能力

        自注意力机制:ViT通过自注意力捕捉图像中任意两个区域的关系,克服了CNN局部感受野的限制,尤其适合需要全局理解的任务(如场景分类、图像生成)。

        示例:在医学图像分割中,ViT能有效关联病灶区域与周围组织的全局上下文。

  • 可扩展性与模型容量

        堆叠Transformer层:通过增加层数或隐藏维度,ViT可轻松扩展模型规模(如ViT-Huge拥有632M参数),而无需复杂结构调整。

        性能对比:在JFT-300M数据集上,ViT-L/16的Top-1准确率比ResNet-152高3.5%。

  • 对大数据的适应性

        数据驱动优化:ViT在超大规模数据(如ImageNet-21k)上训练时,性能显著超越CNN,因其依赖数据而非先验假设学习特征。

        案例:谷歌的ViT在JFT-300M预训练后,ImageNet准确率达88.55%,刷新当时记录。

  • 灵活的任务适配性

        多模态支持:ViT可无缝处理图像、文本、点云等多模态输入(如CLIP模型),而CNN需额外设计融合模块。

② Vision Transformer的局限性

  • 计算资源需求高
  • 小数据场景表现欠佳
  • 位置编码的敏感性
  • 实时性挑战

③ 传统CNN的核心优势

  • 计算效率与硬件友好性

        卷积优化:利用GPU的并行计算和cuDNN加速,ResNet-50处理224x224图像可达1000+ FPS(TensorRT优化后)。

  • 小数据鲁棒性

        归纳偏置优势:CNN的局部连接和权值共享减少参数冗余,CIFAR-10上仅需5万样本即可达到90%+准确率。

  • 成熟的工程生态

        部署支持:TensorRT、OpenVINO等工具链对CNN优化成熟,适合嵌入式设备(如无人机、监控摄像头)。

场景推荐架构理由
大规模数据(>100万样本)Vision Transformer全局建模能力 + 大数据潜力充分释放
实时边缘设备(如手机)轻量CNN(MobileNet)低延迟 + 高能效比
小样本医疗图像分析CNN + 预训练利用ImageNet预训练的归纳偏置,避免过拟合
跨模态任务(图文检索)ViT + 多模态扩展统一架构处理异构数据,简化特征对齐

3. 如何将自监督学习应用到图像搜索任务中?

4. 对比学习(Contrastive Learning)在无监督任务中的作用。

        对比学习(Contrastive Learning)是自监督学习的一种核心方法,其核心思想是通过让模型区分相似(正样本)与不相似(负样本)的数据对,从而学习到数据的高效表征。

对比学习的核心作用:

 学习数据的内在结构

  • 无需标签:通过数据本身的相似性(如一张图像的不同增强视图)构建正负样本对,避免依赖人工标注。

  • 特征解耦:迫使模型关注数据的关键语义特征(如物体形状、纹理),而非无关噪声。

② 提升表征的判别性

  • 拉近正样本,推开负样本:在特征空间中,相似样本的特征向量距离更近,不相似样本距离更远。

③ 支持下游任务泛化

  • 预训练通用特征:学到的特征可直接用于分类、检测、分割等任务,减少对下游标注数据的需求。

  • 迁移性强:在ImageNet上预训练的对比模型,迁移到医学图像分类任务时仍能保持高精度。

对比学习在无监督任务中的典型应用

1. 图像分类与检索
  • 预训练模型:SimCLR、MoCo在ImageNet上预训练的ResNet,迁移到CIFAR-10分类任务时准确率提升5-10%。

  • 特征检索:在无标签商品库中,基于对比学习特征实现相似商品搜索(Recall@1 > 70%)。

2. 聚类与异常检测
  • 无监督聚类:对比学习特征可直接用于K-means聚类(如STL-10数据集NMI达0.81)。

  • 工业缺陷检测:正常样本作为正类,随机噪声或增强样本作为负类,检测异常区域。

3. 表征可视化
  • t-SNE降维:对比学习特征在低维空间中呈现清晰的类别聚簇(如MNIST数字分类)。

5. 对多模态模型(如图像+文本)在工业界的应用有何看法?

核心价值在于通过数据融合释放业务潜能

① 提升模型鲁棒性

  • 互补信息融合:文本可解释图像中的模糊部分(如“模糊照片中的车型可通过描述‘SUV 黑色’辅助识别”)。

  • 抗噪声能力:单一模态噪声(如图像模糊)可通过另一模态(文本)补偿。

② 增强使用体验

  • 自然交互:用户可自由组合输入方式(如“用图片搜索+语音提问”)。

  • 精准推荐:电商平台通过分析用户浏览的图片与评论,推荐更相关商品(点击率提升20%)。

③ 降低标注成本

  • 跨模态弱监督:利用图文配对数据(如商品图+描述)自动生成标签,减少人工标注依赖。

6. Diffusion Model如何在CV中应用?

Diffusion Model通过两个过程学习数据分布:

  1. 前向过程(加噪):逐步向数据添加高斯噪声,直到数据变为纯噪声。

  2. 反向过程(去噪):训练神经网络逐步预测并去除噪声,恢复原始数据。

Diffusion Model在CV中的六大应用方向

① 高质量图像生成

  • 文本到图像生成:如Stable Diffusion、DALL·E 2,根据文本提示生成高分辨率图像。

  • 场景:艺术创作、广告设计、游戏资产生成。

② 图像修复与编辑

  • 局部修复(Inpainting):填充图像缺失区域(如去除水印、修复老照片)。

  • 风格迁移:将图像转换为指定风格(如油画、像素风)。
    工具:Adobe Firefly、Runway ML。

③ 图像超分辨率重建

  • 任务:从低分辨率(LR)图像生成高分辨率(HR)图像。

  • 模型:SR3(Super-Resolution via Repeated Refinement),通过扩散过程逐步提升细节。
    优势:相比GAN,减少伪影,保持纹理真实性。

④ 医学影像分析

  • 数据增强:生成合成医学影像(如MRI、CT)以扩充小样本数据集。

  • 病灶生成:模拟罕见病变,辅助医生培训与模型测试。
    案例:生成肺结节CT图像,提升肺癌检测模型鲁棒性。

⑤ 视频生成与预测

  • 视频生成:生成连续帧(如Phenaki生成长视频)。

  • 视频插帧:在低帧率视频中插入中间帧,提升流畅度。
    挑战:时序一致性、计算成本高。

⑥ 多模态融合

  • 图文互生成:如Imagen将文本描述转换为图像,或CLIP引导图像生成。

  • 3D生成:从单张图像生成3D模型(如DreamFusion利用扩散模型优化NeRF)。

相关文章:

【基础复习笔记】计算机视觉

目录 一、计算机视觉基础 1. 卷积神经网络原理 2. 目标检测系列 二、算法与模型实现 1. 在PyTorch/TensorFlow中实现自定义损失函数或网络层的步骤是什么&#xff1f; 2. 如何设计一个轻量级模型用于移动端的人脸识别&#xff1f; 3. 描述你使用过的一种注意力机制&…...

65.微服务保姆教程 (八) 微服务开发与治理实战

微服务开发与治理实战:搭建一个简单的微服务系统 在这个实战中,我们将使用以下技术栈来搭建一个简单的微服务系统: 注册中心和配置中心:使用 Nacos。服务开发框架:使用 Spring Boot。服务间通信:使用 Feign。API 网关:使用 Spring Cloud Gateway。依赖管理工具:使用 M…...

【愚公系列】《Manus极简入门》026-市场分析专家:“市场洞察家”

&#x1f31f;【技术大咖愚公搬代码&#xff1a;全栈专家的成长之路&#xff0c;你关注的宝藏博主在这里&#xff01;】&#x1f31f; &#x1f4e3;开发者圈持续输出高质量干货的"愚公精神"践行者——全网百万开发者都在追更的顶级技术博主&#xff01; &#x1f…...

day23-集合(泛型Set数据结构)

1.泛型 1.1泛型概述 泛型的介绍 泛型是JDK5中引入的特性&#xff0c;它提供了编译时类型安全检测机制泛型的好处 把运行时期的问题提前到了编译期间避免了强制类型转换 泛型的定义格式 <类型>: 指定一种类型的格式.尖括号里面可以任意书写,一般只写一个字母.例如:<…...

印度股票市场API对接文档

一、概述 StockTV提供全球股票、外汇、期货及加密货币的实时行情数据接口&#xff0c;支持印度、美国、日本、东南亚等多国市场。本文档重点介绍印度股票市场的API对接流程&#xff0c;包含市场列表、指数、K线、IPO数据、实时行情等核心功能。 二、准备工作 1. 获取API Key …...

【前端基础】8、CSS的选择器

一、什么是选择器&#xff1f; 根据一定的规则选出符合条件的HTML元素&#xff0c;从而为他们添加各种特定的样式。 二、选择器分类 通用选择器元素选择器类选择器id选择器属性选择器后代选择器兄弟选择器选择器组伪类 三、通用选择器&#xff08;*&#xff09; 作用&…...

Redis支持哪些数据类型?各适用于什么场景?

Redis&#xff08;C语言实现&#xff09;支持以下9种核心数据类型及其适用场景&#xff1a; String&#xff08;字符串&#xff09; 场景&#xff1a;缓存、计数器、分布式锁示例&#xff1a;SET user:1001 "John" EX 60&#xff08;缓存用户信息60秒&#xff09;优势…...

两种方法求解最长公共子序列问题并输出所有解

最长公共子序列&#xff08;Longest Common Subsequence, LCS&#xff09;是动态规划领域的经典问题&#xff0c;广泛应用于生物信息学&#xff08;如DNA序列比对&#xff09;、文本差异比对&#xff08;如Git版本控制&#xff09;等领域。本文将通过​​自顶向下递归记忆化​​…...

Linux下的c/c++开发之操作Sqlite3数据库

libsqlite3-dev 介绍&#xff08;Linux 下的 SQLite3 C/C 开发包&#xff09; libsqlite3-dev 是一个开发包&#xff0c;在 Linux 环境下为使用 SQLite3 C API 进行开发的 C/C 程序员提供头文件&#xff08;如 sqlite3.h&#xff09;和静态库/动态库的链接信息&#xff08;如 …...

设计模式-策略模式

概念 策略模式主要是定义一系列算法&#xff0c;把它们封装起来&#xff0c;并且使它们可以互相替换。这样客户端可以根据需要选择不同的策略&#xff0c;而不需要改变使用策略的上下文。 策略模式的核心思想&#xff1a; 解耦策略定义&#xff1a;把各种支付方式&#xff0…...

Lost connect to debugger on ‘iphone‘

跑项目的时候&#xff0c;遇到这样一个报错&#xff0c;无法在真机和模拟器上跑&#xff0c; 处理方法 在根目录下&#xff0c;创建.lldbinit 文件 touch .lldbinit查找该文件 ls -all 然后 打开该文件 open .lldbinit 添加如下文案 settings set plugin.process.gdb-remot…...

全球森林数据如何分析?基于R语言森林生态系统结构、功能与稳定性分析与可视化

森林生态系统的结构、功能与稳定性研究是生态学领域的核心议题&#xff0c;涉及物种多样性、空间分布、能量流动及抗干扰能力等关键生态过程。为系统解析这些复杂关系&#xff0c;本研究采用R语言作为核心分析工具&#xff0c;整合多元统计方法与可视化技术&#xff0c;构建了一…...

Modbus RTU 转 PROFINE 网关

一、功能及注意事项 (1)功能说明&#xff1a;此文档用来说明Modbus RTU 转 PROFINE网关和立迈胜一体化485通讯电机使用。 (2)注意事项&#xff1a;文档介绍的是高迈德 PN-01MB模块。 二、系统参数设置 1.参考电机的波特率和校验码进行正确设置&#xff0c;如图所示&#xf…...

Redis如何实现分布式锁

Redis如何实现分布式锁 背景复盘解答被问到的问题如果过期时间没有设置好, 业务没有处理完锁就被释放了, 怎么办呢? 背景 之前被面试问到了 复盘解答 核心就是利用 set param1 nx param2 命令. set not exist 如果不存在就自行set操作. 被问到的问题 如果过期时间没有设置…...

vue3的深入组件-组件 v-model

组件 v-model 基本用法​ v-model 可以在组件上使用以实现双向绑定。 从 Vue 3.4 开始&#xff0c;推荐的实现方式是使用 defineModel() 宏&#xff1a; <script setup> const model defineModel()function update() {model.value } </script><template>…...

【Dv3Admin】Git 子模块在 Dv3admin 插件项目统一管理实践

在 Dv3admin 框架中&#xff0c;plugins 目录下存放的都是基于 Git 的独立插件项目。为了实现多个插件的统一管理与更新&#xff0c;我们推荐使用 Git 的子模块&#xff08;submodule&#xff09;功能。通过子模块的方式&#xff0c;将多个 Git 仓库嵌套管理&#xff0c;可以简…...

什么是死信队列?死信队列是如何导致的?

死信交换机&#xff08;Dead Letter Exchange&#xff0c;DLX&#xff09; 定义&#xff1a;死信交换机是一种特殊的交换机&#xff0c;专门用于**接收从其他队列中因特定原因变成死信的消息**。它的本质还是交换机&#xff0c;遵循RabbitMQ中交换机的基本工作原理&#xff0c…...

计算机网络:深入分析三层交换机硬件转发表生成过程

三层交换机的MAC地址转发表生成过程结合了二层交换和三层路由的特性,具体可分为以下步骤: 一、二层MAC地址表学习(基础转发层) 初始状态 交换机启动时,MAC地址表为空,处于学习阶段。 数据帧接收与源MAC学习 当主机A发送数据帧到主机B时,交换机会检查数据帧的源MAC地址。…...

java使用MinIO,虚拟机时间异常

使用docker进行环境部署和启动 docker pull minio/miniodocker run -d -p 9000:9000 -p 9001:9001 \-e "MINIO_ROOT_USERminio" \-e "MINIO_ROOT_PASSWORDminio123" \-v /opt/minio/data:/data \-v /opt/minio/config:/root/.minio \minio/minio server --…...

使用Jmeter进行核心API压力测试

最近公司有发布会&#xff0c;需要对全链路比较核心的API的进行压测&#xff0c;今天正好分享下压测软件Jmeter的使用。 一、什么是Jmeter? JMeter 是 Apache 旗下的基于 Java 的开源性能测试工具。最初被设计用于 Web 应用测试&#xff0c;现已扩展到可测试多种不同的应用程…...

嵌入式学习笔记 - LCD

一 显示器接口种类&#xff1a; 下图中间左边一个为不带MCU的RGB屏&#xff0c;中间右边一个为带MCU的MCU屏 带控制器的LCD屏幕跟STM32单片机的交互方式&#xff0c;可以为串口&#xff0c;也可以为SPI&#xff0c;或者8080&#xff0c;通过命令的方式对液晶控制器芯片进行操作…...

聊聊Spring AI Alibaba的SentenceSplitter

序 本文主要研究一下Spring AI Alibaba的SentenceSplitter SentenceSplitter spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/transformer/splitter/SentenceSplitter.java public class SentenceSplitter extends TextSplitter {private final EncodingRegis…...

Python 异常处理与文件 IO 操作:构建健壮的数据处理体系(3/10)

摘要&#xff1a;在 Python 开发中&#xff0c;异常处理和文件 IO 操作是构建稳定程序的基石。本文将深入探讨异常捕获机制、上下文管理器原理&#xff0c;并结合 JSON/CSV 数据持久化与实战项目&#xff0c;帮助你掌握应对复杂场景的核心技术。 本文深入探讨了 Python 编程中的…...

Python中,正则表达式,

目录 1.基本匹配2.量词3.边界匹配4.选择和逻辑5.示例代码 在Python中&#xff0c;正则表达式&#xff08;Regular Expressions&#xff0c;简称regex&#xff09;是一种强大的文本处理工具&#xff0c;用于匹配、查找和替换字符串中的模式。Python通过 re模块提供正则表达式支…...

CSS:元素显示模式与背景

元素显示模式 元素显示模式是指元素在浏览器页面中显示的模式&#xff0c;比如<div></div>是独占一行的块级元素&#xff0c;<span></span>是行内元素 元素显示模式分为三大类&#xff1a; 块级元素行内元素行内块元素 块级元素 block 常见的块级…...

Java游戏服务器开发流水账(2)开发中Maven的管理

Maven 是一款流行的 Java 项目管理工具&#xff0c;它基于项目对象模型&#xff08;Project Object Model&#xff0c;POM&#xff09;的概念来管理项目的构建、依赖和文档等。游戏服务器开发中也会使用. 项目构建 生命周期管理&#xff1a;Maven 定义了一套清晰的项目构建生…...

学习设计模式《八》——原型模式

一、基础概念 原型模式的本质是【克隆生成对象】&#xff1b; 原型模式的定义&#xff1a;用原型实例指定创建对象的种类&#xff0c;并通过拷贝这些原型创建新的对象 。 原型模式的功能&#xff1a; 1、通过克隆来创建新的对象实例&#xff1b; 2、为克隆出来的新对象实例复制…...

【MySQL】存储引擎 - MEMORY详解

&#x1f4e2;博客主页&#xff1a;https://blog.csdn.net/2301_779549673 &#x1f4e2;博客仓库&#xff1a;https://gitee.com/JohnKingW/linux_test/tree/master/lesson &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01; &…...

正则表达式实用指南:原理、场景、优化与引擎对比

正则表达式实用指南&#xff1a;原理、场景、优化与引擎对比 正则表达式&#xff08;Regular Expression&#xff0c;简称 regex 或 regexp&#xff09;是程序员处理文本数据时不可或缺的“瑞士军刀”。无论是表单校验、日志分析、数据清洗&#xff0c;还是敏感信息脱敏&#…...

Python3正则表达式:字符串魔法师的指南[特殊字符]‍♂️

Python3正则表达式 什么是正则表达式&#xff1f;在Python中使用正则表达式一、正则表达式基础语法&#xff1a;你的魔法咒语基本匹配符字符类&#xff1a;性格各异的字符们预定义字符类&#xff1a;常见角色的快捷方式重复限定符&#xff1a;贪婪的收集者贪婪vs非贪婪&#xf…...

k8s术语之CronJob

CronJob管理基于时间的Job&#xff0c;即&#xff1a; 在给定时间点只运行一次 周期性地在给定时间点运行 一个CronJob对象类似于crontab文件中的一行。它根据指定的预定计划周期地运行一个Job,格式可以参考Cron 前提条件 当前使用地Kubernetes集群&#xff0c;版本>1.8.对…...

常见的提示词攻击方法 和防御手段——提示词注入(Prompt Injection)攻击解析

提示词注入&#xff08;Prompt Injection&#xff09;攻击解析 提示词注入是一种针对大型语言模型&#xff08;LLM&#xff09;的新型攻击手段&#xff0c;攻击者通过精心设计的输入文本&#xff08;提示词&#xff09;操控AI模型的输出&#xff0c;使其执行非预期行为或泄露敏…...

软件逆向工程核心技术:脱壳原理与实战分析

目录 一、脱壳技术概述&#xff1a;从保护到还原的逆向之旅 1.1 脱壳技术的本质与核心价值 1.2 壳的分类与核心技术解析 1.3 学习路径&#xff1a;从压缩壳到加密壳的渐进式突破 二、脱壳三步法&#xff1a;系统化逆向工程框架 2.1 核心流程总览 2.2 实战案例&#xff1…...

C27-简单选择排序法

一 基本思想 每轮从待排序序列中选出最小或最大的元素,与待排序区间起始位置交换,逐步缩小待排序区间 二 算法实现 遍历数组:设数组长度为n,外层循环i从0到n-2(共n-1轮) 找最小值下标:内层循环j从i1到n-1,遍历待排序区间(i到n-1),记录找最小值下标min 交换元素:将arr[i]与a…...

【Redis】持久化与事务

文章目录 1. 持久化1.1 RDB(定期)1.1.1 触发方式1.1.2 触发流程 1.2. AOF(实时)1.2.1 设置AOF1.2.2 刷新策略1.2.3 重写机制 2. 事务2.1 redis事务概念2.2 事务操作 Mysql有几个特性&#xff1a; 原子性一致性隔离性&#xff0c;redis是串行的&#xff0c;自带隔离性持久性&…...

Web 自动化之 HTML JavaScript 详解

文章目录 一、HTML 常用标签二、javascript 脚本1、什么是 javascript(js)2、 js变量和函数3、js 弹窗处理4、js 流程控制语句和 switch 结构语句应用 一、HTML 常用标签 HTML&#xff1a;超文本标记语言 超文本&#xff1a;不仅只包含文字&#xff0c;还有超链接、视频…这些…...

【JavaScript】二十九、垃圾回收 + 闭包 + 变量提升

文章目录 1、作用域1.1 局部作用域1.2 全局作用域1.3 作用域链 2、JC垃圾回收机制♻️3、GC算法3.1 引用计数法3.2 标记清除法 4、闭包4.1 定义4.2 闭包的应用&#xff1a;实现数据的私有 5、变量提升 1、作用域 即一个范围&#xff0c;离开了这个范围&#xff0c;这个变量就不…...

Python在自动驾驶实时数据处理中的应用:让AI驾驶更智能、更高效

Python在自动驾驶实时数据处理中的应用:让AI驾驶更智能、更高效 近年来,自动驾驶技术的飞速发展离不开人工智能和数据处理的支撑,而Python作为AI与数据分析的核心编程语言,在自动驾驶实时数据处理方面扮演着不可或缺的角色。从传感器数据解析,到路径规划与决策优化,再到…...

功能安全的关键——MCU锁步核技术全解析(含真实应用方案)

随着智能汽车的发展&#xff0c;整车对功能安全的要求越来越高。特别是像电动助力转向&#xff08;EPS&#xff09;、制动控制系统、气囊控制器这类对“出错零容忍”的系统&#xff0c;已经广泛采用一种重要的安全架构——锁步核&#xff08;Lockstep Core&#xff09;。 今天我…...

Java实现桶排序算法

1. 桶排序原理图解 桶排序是一种基于分桶思想的非比较排序算法&#xff0c;适用于数据分布较为均匀的场景。其核心思想是将数据分散到有限数量的“桶”中&#xff0c;每个桶再分别进行排序&#xff08;通常使用插入排序或其他简单的排序算法&#xff09;。以下是桶排序的步骤&a…...

剖析 FFmpeg:从基本功能到过滤器,实现音视频处理的灵活性

目录 1.解复用2 解码2.1 音频解码2.2 视频解码 3 修饰3.1 avio3.2 重采样 4 过滤器4.1 过滤器基本知识4.2 简单过滤器4.3 复杂滤镜图 1.解复用 解复用就是把容器中的媒体流分离出来&#xff0c;方便我们对媒体流处理。 step1&#xff1a;对媒体文件上下文初始化 AVFormatCont…...

maven如何搭建自己的私服(LINUX版)?

环境准备 安装 JDK &#xff1a;确保系统已安装 JDK 8 或更高版本。可以通过以下命令安装 JDK&#xff1a; 安装 OpenJDK &#xff1a;sudo apt update && sudo apt install openjdk-11-jdk 安装 Oracle JDK &#xff1a;需要添加第三方仓库&#xff0c;例如 WebUpd8 …...

机器视觉的手机FPC油墨丝印应用

在现代智能手机制造过程中&#xff0c;精密的组件装配和质量控制是确保产品性能和用户体验的关键。其中&#xff0c;柔性印刷电路板&#xff08;FPC&#xff09;的油墨丝印工艺尤为关键&#xff0c;它不仅影响到电路板的美观&#xff0c;更直接关系到电路的导电性能和可靠性。而…...

AI原生手机:三大技术阵营的终极对决与未来展望

引言&#xff1a;AI手机时代的真正到来 2024年&#xff0c;智能手机行业迎来了一个历史性转折点——AI原生手机从概念走向主流。根据IDC最新报告&#xff0c;中国AI手机出货量同比激增591%&#xff0c;渗透率从2023年的3%飙升至22%。这一数据背后&#xff0c;是手机厂商在硬件…...

CFCA受邀参加盛京银行手机银行7.0发布会

4月30日&#xff0c;盛京银行举办手机银行7.0发布会。 盛京银行手机银行7.0围绕“慧享生活&#xff0c;财富随行”主题&#xff0c;聚焦便捷体验、财富管理、惠民生活&#xff0c;构建12大类服务&#xff0c;升级142项功能&#xff0c;全新设置信用卡频道&#xff0c;推出“云…...

IT/OT 融合架构下的工业控制系统安全攻防实战研究

1. 引言 随着工业 4.0 和智能制造的浪潮席卷全球&#xff0c;信息技术 (IT) 与运营技术 (OT) 的融合已成为不可逆转的趋势。这种融合旨在通过实时数据交换和分析&#xff0c;打破传统的信息孤岛&#xff0c;显著提升生产效率、优化决策、降低运营成本并增强市场竞争力。IT 系统…...

AI优化高频PCB信号完整性:猎板PCB的技术突破与应用实践

随着5G通信、AI服务器及新能源汽车的快速发展&#xff0c;高频PCB的信号完整性已成为决定电子产品性能的关键。本文以猎板PCB的技术实践为例&#xff0c;解析如何通过AI算法与精密制造工艺的结合&#xff0c;实现高频信号传输的极致优化&#xff0c;为行业提供高可靠性的解决方…...

【Bluedroid】蓝牙 SDP(服务发现协议)模块代码解析与流程梳理

本文深入剖析Bluedroid蓝牙协议栈中 SDP&#xff08;服务发现协议&#xff09;服务记录的全生命周期管理流程&#xff0c;涵盖初始化、记录创建、服务搜索、记录删除等核心环节。通过解析代码逻辑与数据结构&#xff0c;揭示各模块间的协作机制&#xff0c;包括线程安全设计、回…...

obj = null; 赋值null之前没有其他引用指向obj对象,那么,当obj=null时,会被垃圾回收机制立即回收吗?

不会立即回收。 具体原因是&#xff1a; 赋值 obj null; 后&#xff0c;对象变成“不可达”&#xff0c;符合垃圾回收条件&#xff0c;但垃圾回收器并不会立刻回收它。垃圾回收是CLR自动控制的非确定性过程&#xff0c;什么时候执行回收取决于系统内存压力、GC策略、分代情况…...

Android 数据持久化之 文件存储

在 Android 开发中&#xff0c;存储文件是一个常见的需求。 本文中介绍 openFileOutput 和 File 两种不同的方式来操作文件。 一、File 方式 根据文件的存储位置和访问权限&#xff0c;可以将文件存储分为内部存储&#xff08;Internal Storage&#xff09;和外部存储&#x…...