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

目录

一、计算机视觉基础

[1. 卷积神经网络原理](#1. 卷积神经网络原理)

[2. 目标检测系列](#2. 目标检测系列)

二、算法与模型实现

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

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

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

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

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

三、工程能力与编程

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

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

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

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

四、实际应用思路

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

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

五、前沿技术与研究

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

[2. Vision Transformer与传统CNN相比有哪些优势和局限?](#2. Vision Transformer与传统CNN相比有哪些优势和局限?)

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

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

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

[6. Diffusion Model如何在CV中应用?](#6. Diffusion Model如何在CV中应用?)

[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阈值动态调整。

示例代码:

python 复制代码
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-CNN SSD YOLOv5/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方法。

示例代码:

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

TensorFlow 自定义损失函数

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

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

python 复制代码
import tensorflow as tf

def 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类(推荐)

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

python 复制代码
class FocalLoss(tf.keras.losses.Loss):
    def __init__(self, alpha=0.25, gamma=2.0, name="focal_loss"):
        super().__init__(name=name)
        self.alpha = alpha
        self.gamma = gamma

    def 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 * ce
        return 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算子)。

cpp 复制代码
#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.jpgfeatures/image1_feature.txt)。

  2. 核心步骤

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

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

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

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

四、实际应用思路

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

调整分类阈值

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

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

处理类别不平衡

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

优化损失函数

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

模型结构改进

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

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

错误分析与迭代

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

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

集成学习

  • Bagging/Boosting:结合多个弱分类器提升鲁棒性。
python 复制代码
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 分钟前
如何使用极狐GitLab 软件包仓库功能托管 ruby?
开发语言·数据库·人工智能·git·机器学习·gitlab·ruby
UI设计兰亭妙微2 分钟前
APP 设计中的色彩心理学:如何用色彩提升用户体验
人工智能·ux
Jamence6 分钟前
多模态大语言模型arxiv论文略读(六十五)
人工智能·语言模型·自然语言处理
缘友一世9 分钟前
深度学习系统学习系列【5】之深度学习基础(激活函数&损失函数&超参数)
人工智能·深度学习·学习
zx4313 分钟前
聚类后的分析:推断簇的类型
人工智能·python·机器学习·聚类
AORO_BEIDOU25 分钟前
遨游科普:2025年,三防平板有多智能?
网络·人工智能·安全·智能手机·电脑·信息与通信
COOCC134 分钟前
PyTorch 实战:从 0 开始搭建 Transformer
人工智能·pytorch·python·深度学习·算法·机器学习·transformer
qq_4369621840 分钟前
奥威BI:AI+BI深度融合,重塑智能AI数据分析新标杆
人工智能·数据挖掘·数据分析
TUTO_TUTO41 分钟前
【AWS+Wordpress】将本地 WordPress 网站部署到AWS
笔记·学习·云计算·aws
国际云,接待1 小时前
云计算的基础概论
服务器·人工智能·阿里云·云原生·云计算·腾讯云·aws