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

news2025/5/9 16:59:30

目录

一、计算机视觉基础

1. 卷积神经网络原理

2. 目标检测系列 

二、算法与模型实现

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

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

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

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

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

三、工程能力与编程

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

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

3. 如何部署一个深度学习模型到生产环境?

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

四、实际应用思路

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

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

五、前沿技术与研究

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

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

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

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

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-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运算。

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

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

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算子)。

#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. 如何部署一个深度学习模型到生产环境?

① 模型准备与优化:格式转换?量化?剪枝?

② 部署方式选择:云服务API?边缘设备部署?

③ 容器化与编排:Docker封装

④ 性能优化:硬件加速、批处理

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)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2371640.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于 GO 语言的 Ebyte 勒索软件——简要分析

一种新的勒索软件变种,采用Go 语言编写,使用ChaCha20进行加密,并使用ECIES进行安全密钥传输,加密用户数据并修改系统壁纸。其开发者EvilByteCode曾开发过多种攻击性安全工具,现已在 GitHub 上公开 EByte 勒索软件。尽管该勒索软件声称仅用于教育目的,但滥用可能会导致严重…

0基础 | STM32 | STM32F103C8T6开发板 | 项目开发

注&#xff1a;本专题系列基于该开发板进行&#xff0c;会分享源代码 F103C8T6核心板链接&#xff1a; https://pan.baidu.com/s/1EJOlrTcProNQQhdTT_ayUQ 提取码&#xff1a;8c1w 图 STM32F103C8T6开发板 1、黑色制版工艺、漂亮、高品质 2、入门级配置STM32芯片(SEM32F103…

南京大学OpenHarmony技术俱乐部正式揭牌 仓颉编程语言引领生态创新

2025年4月24日&#xff0c;由OpenAtom OpenHarmony&#xff08;以下简称“OpenHarmony”&#xff09;项目群技术指导委员会与南京大学软件学院共同举办的“南京大学OpenHarmony技术俱乐部成立大会暨基础软件与生态应用论坛”在南京大学仙林校区召开。 大会聚焦国产自主编程语言…

主场景 工具栏 植物卡牌的渲染

前置知识&#xff1a;使用easyx图形库 1.IMAGE内存变量存储的是一张位图(图像)&#xff0c;存储了像素数据(颜色&#xff0c;尺寸等) 2.loadimage(&变量名&#xff0c;"加载的文件路径")表示从文件中加载图像到变量中 3. saveimage("文件路径", &变…

Java三大基本特征之多态

多态&#xff08;Polymorphism&#xff09;是面向对象编程&#xff08;OOP&#xff09;的三大特性之一&#xff08;另外两个是 封装 和 继承&#xff09;&#xff0c;它允许 同一个行为具有不同的表现形式。在 Java 中&#xff0c;多态主要通过 方法重写&#xff08;Override&a…

OpenCV 基于生物视觉模型的工具------模拟人眼视网膜的生物视觉机制类cv::bioinspired::Retina

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 cv::bioinspired::Retina 是 OpenCV 中用于仿生视觉处理的一个类&#xff0c;它基于生物视觉模型进行图像预处理。该算法特别适用于动态范围调整…

前端跨域问题怎么在后端解决

目录 简单的解决方法&#xff1a; 添加配置类&#xff1a; 为什么会跨域 1. 什么是源 2. URL结构 3. 同源不同源举&#x1f330; 同源例子 不同源例子 4. 浏览器为什么需要同源策略 5. 常规前端请求跨域 简单的解决方法&#xff1a; 添加配置类&#xff1a; packag…

Python小程序:上班该做点摸鱼的事情

系统提醒 上班会忘记一些自己的事&#xff0c;所以你需要在上班的的时候突然给你弹窗&#xff0c;你就知道要做啥了 源码 这里有一个智能家居项目可以看看(开源) # -*- coding:utf-8 -*- """ 作者:YTQ 日期: 2025年04日29 21:51:24 """ impor…

飞云分仓操盘副图指标操作技术图文分解

如上图&#xff0c;副图指标-飞云分仓操盘指标&#xff0c;指标三条线蓝色“首峰线”&#xff0c;红色“引力1”&#xff0c;青色“引力2”&#xff0c;多头行情时“首峰线”和“引力1”之间显示为红色&#xff0c;“引力1”和“引力2”多头是区间颜色显示为紫色。 如上图图标信…

基于vueflow可拖拽元素的示例(基于官网示例的单文件示例)

效果图 代码 <template><div style"width: 100%;height: calc(100vh - 84px)"><VueFlow :nodes"nodes" :edges"edges" drop"onDrop" dragover"onDragOver" dragleave"onDragLeave"><div cl…

【MongoDB篇】MongoDB的副本集操作!

目录 引言第一节&#xff1a;副本集的核心概念&#xff1a;它是什么&#xff1f;为什么需要它&#xff1f;&#x1f914;&#x1f9e0;第二节&#xff1a;副本集的“骨架”&#xff1a;成员与数据同步机制 &#x1f451;&#x1f504;❤️‍&#x1f525;第三节&#xff1a;生死…

Kubernetes 集群优化实战手册:从零到生产级性能调优

一、硬件资源优化策略 1. 节点选型黄金法则 # 生产环境常见节点规格&#xff08;AWS示例&#xff09; - 常规计算型&#xff1a;m5.xlarge (4vCPU 16GB) - 内存优化型&#xff1a;r5.2xlarge (8vCPU 64GB) - GPU加速型&#xff1a;p3.2xlarge (8vCPU V100 GPU)2. 自动扩缩容…

【Redis分布式】主从复制

&#x1f525;个人主页&#xff1a; 中草药 &#x1f525;专栏&#xff1a;【中间件】企业级中间件剖析 一、主从复制 在分布式系统之中为了解决单点问题&#xff08;1、可用性问题&#xff0c;该机器挂掉服务会停止2、性能支持的并发量是有限的&#xff09;通常会把数据复制多…

用递归实现各种排列

为了满足字典序的输出&#xff0c;我采用了逐位递归的方法&#xff08;每一位的所能取到的最小值都大于前一位&#xff09; 1&#xff0c;指数型排列 #include<bits/stdc.h> using ll long long int; using namespace std; int a[10];void printp(int m) {for (int h …

测试用例介绍

文章目录 一、测试用例基本概念1.1 测试用例基本要素 二、测试用例的设计方法2.1 基于需求的设计方法2.2 等价类2.3 边界值2.4 错误猜测法2.6 场景设计法2.7 因果图2.5 正交排列 三、综合&#xff1a;根据某个场景去设计测试用例&#xff08;万能公式&#xff09;四、如何使用F…

phpstudy升级新版apache

1.首先下载要升级到的apache版本&#xff0c;这里apache版本为Apache 2.4.63-250207 Win64下载地址&#xff1a;Apache VS17 binaries and modules download 2.将phpstudy中原始apache复制备份Apache2.4.39_origin 3.将1中下载apache解压&#xff0c; 将Apache24复制一份到ph…

React Native基础环境配置

React Native基础环境配置 1.引言2.React-Native简介3.项目基础环境搭建1.引言 感觉自己掌握的知识面还是有点太窄了,于是决定看看移动端的框架,搞个react搭一个后端管理项目,然后拿react-native写个小的软件,试着找个三方上架一下应用市场玩玩。毕竟不可能一直在简历上挂一…

【Linux修炼手册】Linux开发工具的使用(一):yum与vim

文章目录 一、Linux 软件包管理器——yum安装与卸载的使用方法查看软件包 二、Linux编辑器——vimvim命名模式常用指令底行模式常用指令 一、Linux 软件包管理器——yum Linux安装软件的方式有3种&#xff1a; 源代码安装——成本极高rmp安装——具有安装依赖、安装源、安装版…

如何查看电脑显卡配置参数 一文读懂

显卡是电脑的重要硬件之一&#xff0c;尤其对于游戏玩家、设计师、视频编辑等用户来说&#xff0c;显卡的性能直接影响电脑的使用体验。如果您想知道电脑的显卡信息&#xff0c;或者打算升级显卡&#xff0c;那么了解如何查看显卡配置是非常必要的。本文将为您提供多种简单实用…

spring中的@ComponentScan注解详解

ComponentScan 是 Spring 框架中用于自动扫描并注册组件的核心注解&#xff0c;它简化了 Spring 应用中 Bean 的发现和装配流程。以下从核心功能、属性解析、使用场景及示例等方面进行详细说明。 一、核心功能与作用 自动扫描组件 ComponentScan 会扫描指定包及其子包下的类&am…