文章目录
在与面试官在面对面进行交流的过程中,面试官不仅仅会针对简历中记录的内容进行深入的了解,还会进行一些发散性的提问。
目前也就很明显,就是要看看对方:
- 对于常见的问题是如何思考的?
- 有没有在持续性的学习本领域的新知识?
- 对于不知道的问题,是如何思考的?迁移能力咋样。
一、针对深度学习中,数据类别的长尾效应,如何处理这个问题?
在深度学习尤其是在计算机视觉任务中,数据类别的长尾效应指的是一种现象,其中
- 少数类别(头部)的样本非常多,
- 而大多数类别(尾部)的样本数量很少。
这会导致模型在训练过程中:
- 对头部类别过拟合,
- 而对尾部类别泛化能力差。
处理长尾效应的策略包括:
-
数据重采样:通过对尾部类别进行过采样或头部类别进行欠采样来平衡数据集。虽然这可能会导致头部类别的信息丢失,但它可以提高尾部类别的识别率。
-
数据增强:对尾部类别使用更多的数据增强技术,以此扩大其在训练数据中的表示。
-
cost敏感学习:修改损失函数来为尾部类别分配更高的权重。这种方法鼓励模型更加关注样本较少的类别,例如使用焦点损失(Focal Loss)或类别平衡损失。
-
迁移学习:利用迁移学习从相关领域或大规模数据集(如ImageNet)迁移知识,来帮助改善尾部类别的表现。
-
元学习和少样本学习:使用元学习(如模型-agnostic meta-learning,MAML)或少样本学习策略来训练模型,使其能够从少量数据中快速学习新概念。
-
模型组合:结合多个模型的预测,其中一些模型专注于常见类别,而其他模型专注于稀有类别。
-
尾部类别的特征增强:使用生成对抗网络(GANs)或变分自编码器(VAEs)等生成模型来合成尾部类别的额外训练样本。
-
分层分类:根据类别之间的相似性构建一个层级结构,这样模型首先学习区分大类别,然后在每个大类别内区分更细的子类别。
-
零样本/少样本学习:使用零样本学习(ZSL)或少样本学习(FSL)技术,以便模型能够推广到未见过的类别。
-
自监督学习:利用自监督学习技术来从未标记的数据中提取有用的特征,从而减少对大量标记数据的依赖。
-
动态采样:在训练过程中动态调整每个批次中各类别样本的比例,以此来平衡模型在各类别上的关注度。
每种方法都有其优缺点,通常需要针对具体的应用场景和数据特性进行选择和调整。在实际操作中,可能需要结合多种策略来有效地缓解长尾效应的问题。
下面是沐神在一次视频中介绍的方法,放在这里可做参考:
二、对于标注数据中存在标注标准的不一致性,你是如何降低这种不一致性呢?
标注数据中存在的标注标准不一致性会对模型训练产生负面影响,降低模型的性能。标注的不一致性引入途径,大概可以分为2种情况:
- 标注标准的不一致性
- 标注个体的主观性
以下是一些用于降低数据标注不一致性的策略:
-
明确的标注指南:创建详细且易于理解的标注指南,并确保所有标注人员都能够访问和理解这些指南。在开始标注之前,对指南进行彻底的培训和讨论。
-
标注人员培训:提供充足的培训,确保标注人员完全理解任务要求。可以通过实例展示正确与错误的标注方式,并进行实践练习。
-
预先标注的样本:提供一批预先标注的样本作为参考,确保标注人员能够理解标准并据此进行标注。
-
交叉检验:实施交叉检验机制,即让多个标注人员独立标注同一批数据,然后比较和合并结果,以识别和解决不一致之处。
-
质量控制回路:定期抽查标注数据,并对发现的错误进行纠正。反馈这些信息给标注人员,帮助他们了解和改进。
-
一致性检查工具:使用或开发软件工具,以自动检测标注中可能的不一致性,如不同标注员给出的相互矛盾的标签。
-
奖励机制:设置标注质量与激励相挂钩的机制,以鼓励标注人员更加关注一致性和准确性。
-
反馈和迭代:建立一个反馈机制,让标注人员可以报告指南中不明确或容易引起混淆的指令,并根据这些反馈进行迭代改进。
-
专家仲裁:在发现不一致的地方,引入领域专家或高级标注人员作出最终决定。
-
统计分析:采用统计方法分析标注数据中的不一致性,以识别可能的问题区域或问题标注人员。
通过这些方法的组合使用,可以显著降低标注数据中的不一致性,提高数据质量,确保深度学习模型有更好的训练基础。
三、如何在一大批脏乱的数据中,快速的抽取出关心的数据出来?
对于脏乱的图片数据集,快速抽取关心的数据可以采取以下步骤:
-
数据探索:
- 可视化样本:随机可视化一些图片样本,以了解数据集中的常见问题(例如,模糊的图片、错误的标签、不相关的内容)。
- 元数据分析:如果可用,分析图片的元数据(如日期、时间、位置等),这可以帮助快速识别或排除某些类型的图片。
-
自动化清洗:
- 删除重复或接近重复的图片:使用哈希算法(如pHash)来标识和删除重复的图片。
- 过滤出低质量的图片:编写或使用现有工具来识别和过滤掉模糊或低分辨率的图片。
-
使用计算机视觉技术:
- 图像分类:如果你关心特定类别的图片,使用预训练的图像分类模型(如ResNet、Inception等)来筛选出相关的图片。
- 目标检测和识别:如果你关心图片中的特定对象,可使用目标检测模型(如YOLO、SSD或Faster R-CNN)来定位并抽取这些对象。
- 图像分割:对于细粒度的对象抽取,采用图像分割算法(如Mask R-CNN)将感兴趣的对象与背景分离。
-
特征提取:
- 使用传统图像处理技术:根据颜色、纹理、形状等特征筛选图片。
- 深度学习特征提取:使用卷积神经网络(CNN)提取图片特征,然后基于这些特征进行聚类或分类,以筛选出所需的数据。
-
人工干预:
- 人工审查:在自动处理之后,对一个小的数据子集进行人工审查,以确保所采取的策略有效。
- 微调模型:根据审查结果调整自动处理策略,如修改分类阈值、改进目标检测模型等。
-
迭代改进:
- 标注小规模数据集:从抽取的数据中随机选择一个子集进行人工标注,以生成一个“干净”的数据集。
- 训练定制模型:使用这些标注数据来训练一个定制的深度学习模型,此模型将更好地适应你的具体问题和数据集。
-
优化抽取过程:
- 批量处理:对于大量数据,使用批量处理和并行计算可以显著减少处理时间。
- 按需抽取:如果实时处理不是必须的,可以在计算资源不繁忙时进行数据抽取,以节约资源。
通过结合这些策略,可以更有效地从杂乱的图片数据集中快速提取出感兴趣的数据。
除此之外,还可以采用零样本学习(Zero-Shot Learning, ZSL)的方法来处理。
零样本学习是指在没有见过具体样本的情况下,仅依靠类别的描述信息来识别这些类别的图像的能力。
以下是实现零样本图像抽取的步骤:
-
类别特征化:
- 通过对感兴趣的类别(例如动物、车辆等)描述进行文本嵌入,将每个类别转换为一个特征向量。这通常通过使用预训练的自然语言处理模型(如BERT、GPT或Word2Vec)完成。
-
模型选择:
- 使用支持零样本识别的预训练视觉模型,这些模型通常在大规模图像数据集上进行训练,并学会提取图像的高级特征。
-
相似性建模:
- 将图像通过模型转换为高维特征空间中的嵌入。
- 为每个感兴趣的类别创建或应用语义嵌入,并将其映射到相同的特征空间。
-
关联度匹配:
- 在特征空间内,计算图像特征向量与类别特征向量之间的相似度,可以采用余弦相似性、欧氏距离等度量。
- 然后,基于相似度分数对图像进行排序,高度匹配的图像更可能属于给定的类别描述。
-
初步筛选:
- 根据相似度分数设置阈值,仅保留高于某个相似度阈值的图像,作为初步筛选的结果。
-
后处理:
- 对初步筛选的图像进行人工检查或进一步的自动化验证,确保筛选结果的准确性。
零样本学习在未标记的、杂乱的数据中特别有用,因为它允许模型根据类别的语义描述进行推理,而无需对每个新类别都有已标记的训练数据。
然而,零样本学习通常在性能上不如有监督学习方法,特别是在处理非常具体或少见类别的任务时。
因此,零样本学习可以作为快速筛选和预处理步骤,在进一步的分析和处理之前缩小潜在相关图像的范围。
四、在深度学习领域,你知道哪些backbone?
在深度学习领域,"backbone
"通常指的是作为特征提取基础的神经网络结构,这种结构可以被用于多种下游任务,如对象检测、语义分割、姿态估计等。以下是一些常见的backbone网络:
-
Convolutional Neural Networks (CNNs):
- VGG(如VGG16, VGG19):由Visual Geometry Group开发,包含连续的卷积层和池化层。
- ResNet(如ResNet-50, ResNet-101, ResNet-152):引入残差学习的概念,允许训练更深的网络结构。
- Inception(如Inception v3, Inception-ResNet):采用多尺度卷积核,同时进行特征提取。
- DenseNet(如DenseNet-121, DenseNet-169):通过连接每层与之前所有层,来增强特征传递。
- EfficientNet:使用复合缩放方法,均衡网络宽度、深度和分辨率的扩展。
-
Transformer-based Networks:
- ViT (Vision Transformer):将Transformer架构应用于图像分析,将图像分割成多个patches并进行处理。
- Swin Transformer:提出了用于视觉任务的层级Transformer结构,可以有效处理图像信息。
-
Mobile and Efficient Networks:
- MobileNet(如MobileNetV2, MobileNetV3):适用于移动和嵌入式设备的轻量级网络。
- ShuffleNet:使用通道打乱操作,减少计算复杂性的同时保持准确性。
这些backbone网络是深度学习领域的基石,它们的结构和预训练模型广泛用于计算机视觉和其他感知任务中。随着研究的进展,还会有新的backbone结构被提出,用于提高特征提取的能力和效率。
五、最新的backbone,你了解过哪些?
最新的backbone:Mamba
,曼巴。2024年刚刚产生的,也是一个最早在NLP
领域出现,再次转到CV
领域的一个结构。
5.1、Vim(Vison Mamba,视觉领域的 Mamba)
Mamba在视觉领域的应用,类似于ViT。后续进行学习,再做补充。
5.2、U Mamba(UNet Mamba)
应用到医学领域的Mamba模型,这点需要继续学习,进行补充。
更多参考视频:【博士Vlog】2024最新模型Mamba详解,Transformer已死,你想知道的都在这里了!
六、对于backbone的选择,考虑什么哪些因素?
在一个新的backbone的论文发表之后,为了展示新的结构,相比于已经存在的SOTA有更高的优势,都会针对相同的任务给出不同结构的测试结果。这就包括了:
- 模型参数量
- 准确率、AP、Dice value等等评价指标
- FPS实时性
- …
所以在选择backbone
时,应该考虑以下因素:
-
精确度: 更深或更复杂的网络通常能提供更高的识别精确度,但也会带来计算和存储开销。
-
实时性能: 如果应用需要实时处理,如视频流分析或移动应用,则需要选择一个既可以提供良好性能又能快速执行的backbone。
-
计算资源: 考虑可用的硬件资源,如GPU/CPU的计算能力和内存大小。一些轻量级网络设计用于在资源有限的设备上运行。
-
模型大小: 对于部署在移动设备或嵌入式系统上的模型,模型大小是一个重要因素。轻量级网络更受欢迎。
-
训练数据量: 较大的网络需要更多的数据来避免过拟合。在数据有限的情况下,可能需要选择一个较小的网络或使用预训练模型。
-
迁移学习: 预训练模型可以加速训练过程并改善小数据集上的性能。某些backbone可能具有更广泛的预训练模型可用。
-
模型的泛化能力: 选择在各种数据集和任务上都表现良好的backbone可以提供更好的泛化能力。
-
研究或商业支持: 一些模型可以获得更广泛的社区支持或商业支持,这可能是选择特定backbone的一个因素。
-
能耗: 对于移动设备,模型的能耗也是必须考虑的因素,轻量级模型更适合电池供电的设备。
总之,选择backbone模型通常需要在性能和效率之间做出平衡,同时还要根据特定任务的需求来定。
七、最近一次,你看了什么论文?(你是通过什么渠道了解最新研究的)
这点就是考察你对于最新资讯的了解学习能力啦。所以,在日常的学习和工作中,要及时的了解自己所在领域最新的资讯。
一般通过网络媒体、公众号、交流群等等。还有就是论文网站,比如arXiv、cvpr论文网站。
如果你有更好的获取资讯的手段,欢迎给出评论。
最后,如果你在面试中遇到了什么问题,欢迎评论、私信交流。
八、训练数据只有20个类被标注了,但是在使用阶段需要预测出50个类。该如何设计这个任务呢?
九、对于一个已经训练好的分类任务,如何在不进行任何训练的情况下,使得模型能够进行目标检测任务
这是一个比较灵活的问题,题目中包含了一些可用的信息,包括:
- 已经有一个训练好的模型,是用来做分类的。可能是单类别任务,也可能是多类别任务;
- 需要在不训练模型的情况下,不更新参数的情况下,能够进行目标检测的任务,也就是知道目标类别,和像素区域
一个针对分类任务训练好的深度学习模型通常只能够识别整个输入图像中最显著的类别,而没有能力定位图像中的具体对象。要使这样的模型执行目标检测任务,通常需要进行额外的训练,因为目标检测不仅要分类图像中存在的对象,还要确定它们在图像中的位置和大小。
如果你想在不进行任何训练的情况下使用分类模型进行目标检测,你可以采用以下策略:
-
滑动窗口(slide window):
- 这是一种古老但直观的方法,通过在图像上滑动一个固定大小的窗口,并在每个窗口位置上进行分类,来确定可能包含目标的区域;
- 这种方法会产生大量的候选窗口,然后使用分类模型对每个窗口进行评分。然而,这种方法非常耗时,并且对于不同尺寸和比例的目标效果不佳。
-
对象提议方法:
- 使用诸如选择性搜索(Selective Search)、边缘盒(EdgeBoxes)等算法,这些方法旨在生成高质量的目标候选区域,然后可以在这些区域上使用分类模型进行分类。
- 这里类似于RCNN的版本的sel,可以一起考虑;
-
类激活映射(Class Activation Mapping, CAM):
- 对于某些特定类型的网络(如使用全局平均池化层的网络),可以使用CAM来可视化模型认为哪些区域对分类决策最重要。这可以提供对象位置的粗略估计,但通常不够精确。
尽管以上方法可以在没有进一步训练的情况下应用分类模型进行目标检测任务,但它们通常无法达到专门为目标检测训练的模型(如Faster R-CNN, SSD, YOLO等)的性能。如果对性能有较高要求,最好的做法还是使用专门为目标检测任务设计和训练的模型。