目标检测与机器视觉 面试高频题
第一部分:基础篇(1-40题)
模块一:目标检测基础概念(1-15题)
- 【⭐】什么是目标检测?它和图像分类、图像分割有什么区别?
- 考察点:对计算机视觉基本任务的理解程度。
- 得分项:清晰区分三个任务的定义;说明目标检测同时解决“是什么”和“在哪里”;举例说明各自的应用场景。
- 回答:目标检测的任务是从图像中找出感兴趣的物体,并确定它们的类别和位置(通常用边界框表示)。图像分类只判断图像整体属于哪一类;语义分割对每个像素分配类别,不区分个体实例;实例分割在分割基础上区分不同个体。目标检测介于分类和分割之间:比分类多了定位,比分割更粗粒度(边界框而非像素级)。
- 【⭐】目标检测中的边界框(Bounding Box)有哪些表示方式?
- 考察点:对检测输出的基本数据格式的理解。
- 得分项:列举两种以上表示法;说明各自优缺点;掌握坐标转换关系。
- 回答:常见有两种:(1) (xmin, ymin, xmax, ymax) 表示左上角和右下角坐标;(2) (cx, cy, w, h) 表示中心点坐标和宽高。还有 (x, y, w, h) 以左上角为原点。在训练中常使用归一化坐标或相对于锚框的偏移量。两种表示可相互转换。
- 【⭐】什么是交并比(IoU)?如何计算?有哪些改进变种?
- 考察点:对检测核心评价指标的理解。
- 得分项:正确给出IoU公式;说明IoU阈值在评估中的作用;至少说出一种变种(GIoU, DIoU, CIoU)。
- 回答:IoU = 预测框与真实框的交集面积 / 并集面积,范围[0,1]。通常IoU>0.5视为检测正确。改进变种:GIoU(引入最小闭包框解决无重叠时梯度消失)、DIoU(考虑中心点距离)、CIoU(同时考虑宽高比)。
- 【⭐】非极大值抑制(NMS)的作用是什么?其原理是怎样的?
- 考察点:对检测后处理流程的理解。
- 得分项:说明NMS解决重复检测问题;描述算法步骤;了解NMS的阈值选取影响。
- 回答:NMS用于去除冗余的候选框。原理:按置信度排序,选中最高分框,抑制与其IoU超过阈值的其他框,重复直到处理完。阈值过大会漏检,过小会冗余。常见变种有Soft-NMS(线性或高斯衰减而非直接置零)。
- 【⭐】目标检测中常用的公开数据集有哪些?各自特点是什么?
- 考察点:对领域数据资源的了解。
- 得分项:列举至少三个数据集;说明规模、标注类型、难度特点。
- 回答:PASCAL VOC(早期标准,20类,约1.1万张);MS COCO(80类,33万张,小物体多,标注有bbox和segmentation);ImageNet Det(200类,较少用);Open Images(600类,1400万张,多标签);行人检测常用Caltech、Cityscapes;人脸检测常用Wider Face。
- 【⭐】什么是感受野(Receptive Field)?它对目标检测有什么影响?
- 考察点:对卷积网络基本属性的理解。
- 得分项:定义感受野;说明影响检测大小和上下文的关系;大感受野有利于大目标,小感受野利于小目标。
- 回答:感受野是卷积神经网络中某层特征图上一个像素点对应输入图像的区域大小。感受野越大,能看到的上下文越多,对大目标检测有利;但小目标可能被背景淹没。深层网络感受野大,浅层感受野小,因此FPN等结构融合多尺度特征。
- 【⭐】图像金字塔和特征金字塔有什么区别?在目标检测中如何应用?
- 考察点:对多尺度处理方法的理解。
- 得分项:区分两者的处理对象;说明各自的计算开销;知道FPN是现代检测的标准组件。
- 回答:图像金字塔是对原图缩放多次得到多尺度图像,分别提取特征,计算量大但精度高。特征金字塔(FPN)是在单一输入图像的特征图上构建自上而下的路径和侧向连接,融合不同层级的语义信息和空间细节,高效实现多尺度检测。
- 【⭐】什么是锚框(Anchor Box)?为什么需要锚框?
- 考察点:对anchor-based检测核心机制的理解。
- 得分项:定义锚框;说明解决目标尺度多样性和正负样本不平衡的作用;了解anchor设计的超参数。
- 回答:锚框是预先定义好的一组不同尺寸、宽高比的参考框,在特征图每个位置平铺。检测时预测锚框与真实框的偏移量。锚框使网络更容易学习,因为真实框可以匹配到相近锚框,降低了回归难度。常见设置:3种尺度×3种宽高比=9个锚框。
- 【⭐】正负样本不平衡问题在目标检测中如何解决?
- 考察点:对检测训练难点及策略的理解。
- 得分项:说出至少三种方法(OHEM、Focal Loss、样本重加权);解释原理。
- 回答:负样本(背景)远多于正样本。解决方案:(1) OHEM(在线难例挖掘):只选损失最大的样本;(2) Focal Loss:降低易分负样本的权重,聚焦难例;(3) 样本重加权或采样策略(如正负样本1:3);(4) 两阶段检测器中RPN先筛选候选框,缩小不平衡。
- 【⭐】目标检测中常用的数据增强方法有哪些?哪些对检测特别有效?
- 考察点:对训练技巧的掌握。
- 得分项:列举常见增强(翻转、旋转、缩放、裁剪、颜色抖动);说明检测中需注意bbox同步变换;提到CutOut、MixUp、Mosaic等。
- 回答:常用:随机翻转、随机缩放(多尺度训练)、随机裁剪(需确保目标完整)、颜色抖动(亮度、对比度)。检测专用:Mosaic(拼接4张图,改善小目标)、MixUp(图像混合)、随机擦除(CutOut)。多尺度训练尤其重要。
- 【⭐】什么是迁移学习?在目标检测中如何使用预训练模型?
- 考察点:对模型训练范式的理解。
- 得分项:定义迁移学习;说明使用ImageNet预训练分类模型初始化backbone;微调策略(冻结backbone或全微调)。
- 回答:迁移学习指将在一个任务(如图像分类)上训练好的模型作为起点,应用到另一任务(目标检测)。在检测中,通常加载ImageNet预训练的分类网络(如ResNet)作为backbone,替换最后的全连接层为检测头,再在检测数据集上微调。这样做收敛快、精度高,尤其当检测数据较少时。
- 【⭐】One-stage和Two-stage目标检测算法的主要区别是什么?各有哪些优缺点?
- 考察点:对检测算法分类的整体把握。
- 得分项:准确描述区别;比较速度、精度;举例代表算法。
- 回答:Two-stage先由RPN生成候选区域(region proposals),再对每个候选区域分类和回归,代表:Faster R-CNN、Mask R-CNN。One-stage直接在特征图上预测类别和位置,无需候选区域生成,代表:YOLO、SSD、RetinaNet。Two-stage精度高但速度慢;One-stage速度快但早期精度较低,现通过Focal Loss等已接近Two-stage。
- 【⭐】什么是ROI Pooling?它和ROI Align有什么区别?
- 考察点:对两阶段检测器细节的理解。
- 得分项:说明ROI Pooling的量化取整导致的偏差;ROI Align使用双线性插值保持精度。
- 回答:ROI Pooling将不同大小的候选区域映射到特征图上,并池化成固定尺寸(如7×7)。由于多次量化取整,位置会有偏差。ROI Align取消量化,保留浮点数坐标,通过双线性插值计算每个采样点的值,然后池化,更精准,对分割和定位有利(如Mask R-CNN)。
- 【⭐】FPN(特征金字塔网络)的核心思想是什么?它如何解决多尺度检测问题?
- 考察点:对FPN机制的理解。
- 得分项:说明自底向上、自顶向下和横向连接;解释每层预测不同尺度的目标。
- 回答:FPN利用CNN的层次结构构建金字塔。自底向上是前向传播,得到不同尺度的特征图;自顶向上通过上采样将高层语义传递到底层;横向连接融合相同尺度的底层细节和高层语义。最终每层独立预测,大目标在低分辨层(语义强),小目标在高分辨层(位置准),从而高效处理多尺度。
- 【⭐】空洞卷积(Dilated Convolution)的作用是什么?在目标检测中有哪些应用?
- 考察点:对卷积变体的理解。
- 得分项:说明增大感受野而不增加参数量;举例应用(TridentNet、ASPP)。
- 回答:空洞卷积通过在卷积核元素间插入空洞(0值)来扩大感受野,参数不变。在目标检测中用于提升大目标检测性能,如TridentNet使用不同空洞率的多分支捕捉多尺度;也用于语义分割中的ASPP(空洞空间金字塔池化)。
模块二:传统目标检测方法(16-25题)
- 【⭐】传统目标检测(深度学习之前)的基本流程是什么?
- 考察点:对检测发展历史的了解。
- 得分项:说明候选区域生成、特征提取、分类器三个步骤;举例经典方法(HOG+SVM、DPM)。
- 回答:流程:(1) 滑动窗口或选择性搜索生成候选区域;(2) 对每个窗口提取人工设计特征(如HOG、SIFT);(3) 用分类器(如SVM)判断类别。代表:Viola-Jones(人脸检测,Haar+Adaboost),HOG+SVM(行人检测),DPM(可变形部件模型)。
- 【⭐】HOG特征是如何计算的?它有哪些优缺点?
- 考察点:对传统特征的理解。
- 得分项:简述计算步骤:梯度、方向直方图、块归一化;说明对光照变化鲁棒,但对遮挡、旋转敏感。
- 回答:HOG(方向梯度直方图)计算:(1) 图像灰度化,计算梯度和方向;(2) 将图像划分成cell,每个cell统计梯度方向直方图;(3) 相邻cell组合成block,进行对比度归一化。优点:几何和光照不变性,对边缘形状描述好;缺点:计算慢,对旋转和形变不鲁棒,无法处理遮挡。
- 【⭐】选择性搜索(Selective Search)是如何生成候选区域的?
- 考察点:对传统候选区域方法原理的理解。
- 得分项:说明基于分割的层次合并策略;使用多样化策略(颜色、纹理、大小、形状相似度)。
- 回答:选择性搜索首先利用图割过分割得到许多小区域,然后根据颜色、纹理、大小和形状的相似度贪婪地合并最相似的区域,得到层次化的候选区域。通过多样化的相似度度量组合,生成约2000个高质量的候选框,召回率高。
- 【⭐】DPM(Deformable Parts Model)模型的原理是什么?与HOG+SVM相比有何改进?
- 考察点:对传统检测巅峰模型的理解。
- 得分项:说明根滤波器+部件滤波器的可变形结构;隐变量SVM训练;能够处理物体形变。
- 回答:DPM将物体建模为根滤波器(整体)和多个部件滤波器(如人头、四肢)。部件可以相对根位置偏移,并支付形变代价,因此能适应非刚性形变。使用隐变量SVM(LSVM)训练。相比固定模板的HOG+SVM,DPM对姿态变化更鲁棒,是当年VOC冠军。
- 【⭐】传统目标检测方法为什么被深度学习取代?
- 考察点:对技术演进原因的分析。
- 得分项:强调手工特征表达能力有限;深度学习端到端学习更优;速度和精度双重提升。
- 回答:(1) 手工特征(HOG、SIFT)表达能力弱,难以应对复杂场景;(2) 滑动窗口或候选区域+分类器流程存在信息冗余,速度慢;(3) 深度学习能自动学习层次化特征,从边缘到语义,特征更丰富;(4) 端到端训练避免了分步误差累积,且GPU加速使实时检测成为可能。
模块三:深度学习方法基础(26-40题)
- 【⭐】R-CNN系列的发展脉络是怎样的?请简述R-CNN、Fast R-CNN、Faster R-CNN的核心改进。
- 考察点:对两阶段检测演化历史的掌握。
- 得分项:逐一代说改进点:R-CNN用CNN代替手工特征但慢;Fast R-CNN引入RoI Pooling和共享卷积;Faster R-CNN引入RPN。
- 回答:R-CNN:选择性搜索生成候选框,每个候选框缩放后送入CNN提取特征,再用SVM分类。缺点:重复计算,速度极慢。Fast R-CNN:整图卷积得到特征图,再用RoI Pooling提取每个候选框的特征,然后全连接层同时分类和回归,共享计算,速度提升。Faster R-CNN:用RPN(区域建议网络)代替选择性搜索,与检测网络共享卷积特征,实现端到端训练,接近实时。
- 【⭐】YOLO系列的核心思想是什么?它如何实现实时检测?
- 考察点:对YOLO算法的理解。
- 得分项:说明将检测视为回归问题,划分网格直接预测;单次前向传播得到结果。
- 回答:YOLO将图像划分为S×S网格,每个网格负责预测中心落入该网格的物体,预测B个边界框(位置、大小、置信度)和C个类别概率。整个过程是单个回归问题,一次前向传播即得最终结果,无候选区域生成,因此极快。后续YOLOv2-v8不断改进锚框、多尺度、特征融合等。
- 【⭐】SSD(Single Shot MultiBox Detector)的设计特点是什么?与YOLO有何不同?
- 考察点:对另一one-stage经典模型的掌握。
- 得分项:说明多尺度特征图检测;预设不同尺寸的锚框;与YOLOv1相比,SSD用了卷积预测而非全连接。
- 回答:SSD使用VGG作为backbone,后接多个不同分辨率的卷积层(特征金字塔)。在每个特征图上用多个小卷积核预测锚框偏移和类别。SSD在不同尺度的特征图上检测不同大小的目标(浅层小目标,深层大目标)。与YOLOv1相比:SSD没有全连接层,使用卷积层,且特征图分层检测,对小目标更友好。
- 【⭐】RetinaNet中提出的Focal Loss是什么?它解决了什么问题?
- 考察点:对损失函数创新的理解。
- 得分项:解释Focal Loss公式,平衡因子γ和α;解决one-stage中正负样本极端不平衡问题。
- 回答:Focal Loss = -α(1-p_t)^γ log(p_t)。当γ>0,易分样本(p_t接近1)的权重(1-p_t)^γ很小,损失降低;难分样本(p_t小)权重接近1。从而让网络聚焦难例,缓解负样本主导梯度的问题。使得one-stage检测器精度首次超过two-stage。
- 【⭐】什么是可变形卷积(Deformable Convolution)?在目标检测中有何优势?
- 考察点:对先进卷积操作的理解。
- 得分项:说明偏移量学习,采样点可自适应形变;优势在于处理几何形变物体(如姿态变化)。
- 回答:可变形卷积在标准卷积核每个采样点上增加一个可学习的二维偏移量,使采样位置适应物体的形状变化。偏移量通过旁路卷积从特征图中学习。在目标检测中,能更好处理非刚性物体、不同视角和尺度变化,提升检测精度(如DCNv1/v2)。
- 【⭐】Transformer在目标检测中如何应用?以DETR为例说明。
- 考察点:对检测领域最新范式的了解。
- 得分项:说明DETR将检测视为集合预测问题,用CNN提取特征+Transformer编码器解码器+二分图匹配损失;去掉了锚框和NMS。
- 回答:DETR将目标检测看作一个端到端的集合预测问题,输入图像经过CNN提取特征,展平后送入Transformer编码器,解码器输入可学习的object queries,输出固定数量的预测框和类别。训练时用匈牙利算法匹配预测和真实框。DETR无需锚框、NMS等先验,但收敛慢。后续Deformable DETR等改进加快了收敛。
- 【⭐】什么是多尺度训练(Multi-scale Training)?在目标检测中如何实现?
- 考察点:对训练技巧的理解。
- 得分项:说明训练时随机缩放图像尺寸;每个batch或每轮采样不同尺度;提升对尺度变化的鲁棒性。
- 回答:多尺度训练是指每隔一定迭代次数随机改变输入图像的尺寸(如从320到640像素,步长32)。网络需要适应不同分辨率的输入,从而学习到尺度不变性。通常采用多尺度训练能显著提升检测器在多变尺度场景下的性能,尤其在COCO等数据集上。
- 【⭐】目标检测中常用的骨干网络(Backbone)有哪些?各自的特点?
- 考察点:对主流网络结构的了解。
- 得分项:列举VGG、ResNet、ResNeXt、MobileNet、EfficientNet等;说明深度、效率、感受野特点。
- 回答:VGG结构简单但参数量大;ResNet引入残差连接使网络可加深;ResNeXt使用分组卷积,提升效率;MobileNet系列用深度可分离卷积,适合移动端;EfficientNet通过NAS均衡缩放深度、宽度、分辨率;Swin Transformer作为backbone在检测上表现优异。
- 【⭐】什么是轻量化目标检测?常用的轻量检测网络有哪些?
- 考察点:对移动端、边缘端检测需求的了解。
- 得分项:说明模型压缩和高效设计;列举MobileNet-SSD、YOLO-tiny、NanoDet、PP-PicoDet等。
- 回答:轻量化目标检测追求在计算资源受限的设备上达到实时性,同时保持合理精度。方法包括使用轻量backbone(MobileNet、ShuffleNet)、减少特征图通道、简化检测头、使用深度可分离卷积等。典型模型:MobileNet-SSD、YOLOv3-tiny、NanoDet、PP-PicoDet、YOLOX-Nano。
- 【⭐】目标检测中的分类和回归分支通常如何设计?能否共享卷积层?
- 考察点:对检测头结构的理解。
- 得分项:说明共享backbone后,两个分支常用并行卷积;可以共享部分特征但通常不共享全部,因为分类和回归关注不同特征。
- 回答:检测头通常由两个并行子网络组成:分类分支输出类别概率,回归分支输出边界框偏移量。常见设计如RetinaNet中的四个卷积层,两个分支独立。有些方法共享浅层卷积,而后分开。部分研究尝试统一表示(如CenterNet、FCOS)或任务对齐学习(TAL)。
- 【⭐】什么是位置敏感得分图(Position-Sensitive Score Map)?在R-FCN中如何工作?
- 考察点:对特定检测模型细节的理解。
- 得分项:说明为了保持平移不变性和平移可变性的平衡;通过k²个相对位置敏感得分图,最后用位置敏感RoI池化。
- 回答:R-FCN提出位置敏感得分图,每个类别生成k²个得分图,对应物体的k×k个空间区域(如左上、中上...)。RoI被划分为k×k个格子,每个格子从对应的得分图上池化,然后投票得到类别概率。这使得计算几乎全部共享,提高了速度。
- 【⭐】CornerNet是如何检测目标的?它有什么特点?
- 考察点:对anchor-free检测器的了解。
- 得分项:说明检测左上角和右下角关键点;分组配对;使用角点池化(corner pooling)增强角点特征。
- 回答:CornerNet是一种anchor-free方法,将目标检测转化为关键点检测:分别预测物体的左上角关键点和右下角关键点的热图,以及每个角点的嵌入向量用于匹配属于同一物体的角点对。使用角点池化帮助更好定位角点。优点是无需锚框设计,但对角点敏感,后处理复杂。
- 【⭐】FCOS(Fully Convolutional One-Stage)的核心思想是什么?如何解决anchor-free中的多尺度问题?
- 考察点:对anchor-free方法新范式的理解。
- 得分项:说明每个像素点回归到边界框的四条边距离;通过多级特征检测不同尺度(FPN);引入center-ness分支抑制低质量框。
- 回答:FCOS去掉了锚框,每个特征图上的位置直接回归目标框的4个距离(l,t,r,b)。为了解决多尺度,使用FPN不同层负责不同尺寸的目标(如P3-P7)。同时引入center-ness分支,预测中心度,用来降低远离中心点的低质量框的权重。FCOS简化了检测流程,性能超过anchor-based方法。
- 【⭐】YOLOv5相对于YOLOv3有哪些改进?
- 考察点:对YOLO系列迭代的了解。
- 得分项:列举输入自适应锚框、Focus模块、CSPDarknet、PANet、Mosaic数据增强等。
- 回答:YOLOv5改进包括:(1) 自适应锚框计算;(2) Focus模块(切片操作)降低下采样信息损失;(3) CSPDarknet53骨干(借鉴CSPNet);(4) PANet代替FPN作为特征融合;(5) Mosaic和自适应图像缩放等数据增强;(6) 多种模型尺寸(s,m,l,x)。工程上易用性强。
- 【⭐】目标检测中的小目标检测为什么困难?有哪些专门优化方法?
- 考察点:对特定场景难点的分析能力。
- 得分项:说明小目标分辨率低、特征弱、锚框匹配少;方法包括多尺度训练、提高输入分辨率、特征融合、专门损失、生成对抗数据等。
- 回答:小目标像素少(如<32×32),特征信息不足,检测困难。优化方法:(1) 提高输入图像分辨率;(2) 使用浅层特征(高分辨率)检测,如FPN;(3) 小目标锚框设计;(4) 检测头多尺度预测;(5) 过采样小目标样本;(6) 数据增强如复制粘贴小目标;(7) 专门损失函数(如Normalized Wasserstein Distance)。代表性工作:SNIP、TridentNet、YOLOv5的P2检测层。
- 【⭐】什么是级联检测器(Cascade R-CNN)?它为何能提升精度?
- 考察点:对检测器改进结构的理解。
- 得分项:说明多个级联的检测头,每个头使用递增的IoU阈值;重采样使样本分布更均衡,质量逐步提升。
- 回答:Cascade R-CNN由多个检测头级联构成,每个头使用不同的IoU阈值(如0.5、0.6、0.7)训练。前一个头输出的候选框经过调整后作为下一个头的输入。随着阈值提高,正样本质量更高,检测器逐步精细回归。解决了单一阈值导致的质量与数量矛盾,显著提升定位精度。
- 【⭐】如何解决目标检测中的类别不平衡问题(除了正负样本不平衡)?
- 考察点:对多类别不平衡的理解。
- 得分项:说明长尾分布;采用重采样、重加权、类别感知损失、数据增强等方法。
- 回答:当不同类别的样本数相差悬殊(如COCO中常见类如person上万,而toaster很少),导致模型偏向多数类。解决方案:(1) 类别重采样(对少类过采样或多类欠采样);(2) 损失函数加权(如Focal Loss的α参数按类设定);(3) 类别平衡的组采样;(4) 数据合成(如类间迁移);(5) 解耦训练(先学习表示再学习分类器)。
- 【⭐】目标检测中如何使用上下文信息?举例说明。
- 考察点:对检测利用场景信息的理解。
- 得分项:说明全局上下文(场景语义)和局部上下文(物体关系);如利用人检测电脑、利用房间布局辅助。
- 回答:上下文信息能帮助推理,例如检测到键盘和鼠标,可能有人;看到大海,不太可能出现斑马。在检测中,可通过扩大感受野(大卷积核、注意力)、引入关系网络(如Relation Networks for Object Detection)、利用语义分割信息等。例如,检测器可利用“人的位置通常在自行车上”的关系提升小目标检测。
- 【⭐】什么是模型量化?在目标检测中如何应用来加速推理?
- 考察点:对模型部署优化的了解。
- 得分项:说明将浮点参数转为低精度整数(如int8);减少存储和计算;检测中对精度影响需谨慎。
- 回答:模型量化是将权重和激活从FP32映射到INT8,通过缩放因子和零点实现。在目标检测中,量化后模型大小缩小4倍,推理速度加快(尤其边缘端)。但检测任务对数值精度敏感,可能带来精度下降,需采用量化感知训练(QAT)或逐层校准。常见框架:TensorRT、NCNN、TFLite。
- 【⭐】NMS有哪些改进算法?请至少列举三个并说明原理。
- 考察点:对后处理优化的知识广度。
- 得分项:Soft-NMS、Adaptive NMS、DIoU-NMS、Weighted NMS等。
- 回答:(1) Soft-NMS:不直接删除重叠框,而是降低其置信度,保留可能漏检的物体。(2) DIoU-NMS:使用DIoU(考虑中心点距离)代替IoU,减少对遮挡物体的误抑制。(3) Adaptive NMS:根据目标密度动态调整抑制阈值,密集场景用高阈值。(4) Weighted NMS:对重叠框的坐标按置信度加权平均得到新框。
第二部分:进阶篇(41-80题)
模块四:经典检测网络详解(41-60题)
- 【⭐⭐】Faster R-CNN中的RPN是如何训练的?正负样本如何定义?
- 考察点:对两阶段检测器训练细节的深入理解。
- 得分项:说明RPN的损失函数(分类+回归);锚框分配规则(与真实框IoU>0.7为正,<0.3为负,忽略中间);每张图随机采样256个锚框,正负1:1。
- 回答:RPN训练时,每个锚框分配二分类标签(是否物体)。正样本:与任意真实框IoU>0.7,或与某个真实框有最高IoU;负样本:所有真实框IoU<0.3。其余锚框忽略。每张图随机采样256个锚框,正负比例1:1,若正样本不足则补负样本。损失为分类交叉熵和平滑L1回归损失,只对正样本回归。
- 【⭐⭐】Mask R-CNN在Faster R-CNN基础上做了哪些改进?它如何同时完成实例分割?
- 考察点:对Mask R-CNN原理的掌握。
- 得分项:添加分割分支(FCN);ROI Align解决错位;多任务损失(分类、回归、分割)。
- 回答:Mask R-CNN在Faster R-CNN基础上,并行增加一个掩码预测分支(小全卷积网络)。关键改进:(1) 用ROI Align代替ROI Pooling,避免量化误差,保证像素级对齐;(2) 损失函数L = L_cls + L_box + L_mask,其中L_mask平均二值交叉熵,每个像素独立。掩码分支预测K×m×m(K为类别数),只对检测到的类别输出掩码。
- 【⭐⭐】YOLOv4中的CSPNet、Mish激活函数、PANet分别起什么作用?
- 考察点:对YOLOv4细节的掌握。
- 得分项:CSPNet减少计算量;Mish提升非线性;PANet加强特征融合。
- 回答:CSPNet(Cross Stage Partial Network)将基础层的特征图拆成两部分,一部分经过残差块,另一部分直接连接,减少重复梯度信息,降低计算量并提高推理速度。Mish激活函数:平滑非单调,负值有轻微允许,通常比ReLU有更好表现。PANet(Path Aggregation Network)在原FPN基础上增加自底向上的路径聚合,缩短底层到高层的路径,增强定位信息传递。
- 【⭐⭐】什么是自适应注意力(Adaptive Attention)在DETR中的作用?
- 考察点:对Transformer检测器内部机制的深究。
- 得分项:说明编码器-解码器自注意力机制;解码器中的object queries通过交叉注意力在编码器特征上聚集信息。
- 回答:DETR中,解码器通过多头自注意力在object queries之间建模关系,再通过交叉注意力从编码器特征中提取对应区域信息。这种自适应注意力机制使每个query能动态关注图像中不同区域,避免NMS。此外,可变形DETR将稀疏注意力限制在参考点附近,降低计算量。
- 【⭐⭐】Swin Transformer如何用于目标检测?相比CNN backbone有何优势?
- 考察点:对transformer作为backbone的理解。
- 得分项:说明移动窗口注意力实现线性复杂度;层次化结构易兼容FPN;优势是长距离依赖和特征表达能力强。
- 回答:Swin Transformer通过移位窗口自注意力,在非重叠局部窗口内计算,并跨窗口通信,复杂度与图像大小线性关系。其层次化输出(类似CNN)可与FPN直接结合用于检测。相比CNN,Swin能建模全局依赖,对尺度变化和大物体更鲁棒,在COCO上刷榜。但需要大数据预训练。
- 【⭐⭐】CenterNet中目标检测是如何表示为点的?如何处理重叠框?
- 考察点:对关键点检测方法的深入理解。
- 得分项:说明使用高斯热图表示中心点;回归宽高和偏移量;重叠框通过不同峰值区分。
- 回答:CenterNet将每个目标表示为一个关键点(中心点)。构建热图,峰值位置即中心。每个峰值点回归对应目标的宽高和中心偏移量(亚像素精度)。训练采用Focal Loss改进版本,只关注中心点周围的高斯区域。当两个目标中心重叠(极少见),热图峰值可能融合,但通过offset和size可以区分;实践中重叠较少影响不大。
- 【⭐⭐】检测模型中的IoU预测分支(如IoU-Net)有什么用?
- 考察点:对定位质量感知的优化理解。
- 得分项:说明预测边界框与真实框的IoU;用来修正NMS排序或作为定位质量指导。
- 回答:IoU-Net在检测头中额外添加分支,预测每个候选框与真实框的IoU。在推理时,用预测的IoU代替分类置信度进行NMS排序,因为分类置信度与定位质量可能不一致。还可联合优化,使分类分数和IoU对齐,提升检测精度(如FCOS的center-ness本质也是定位质量估计)。
- 【⭐⭐】什么是特征重标定(Feature Recalibration)?SE模块在检测中如何应用?
- 考察点:对注意力机制的理解。
- 得分项:说明Squeeze-and-Excitation(SE)通过全局池化和两个全连接层学习通道权重;在检测backbone中插入SE,提升特征有效性。
- 回答:特征重标定即自动学习每个特征通道的重要性,增强有用通道,抑制无用通道。SE模块先对每个通道全局平均池化(squeeze),然后两个全连接层(bottleneck)输出通道权重(excitation),最后乘回原特征图。在检测如MobileNet-SSD、YOLOv3等中插入SE可提升mAP约1-2%。
- 【⭐⭐】检测中常用的归一化方法有BatchNorm、LayerNorm、GroupNorm,它们各适用于什么场景?
- 考察点:对归一化层的深入理解。
- 得分项:BN依赖batch大小,适合固定批量训练;LN适合RNN和Transformer;GN适合小batch检测(如Mask R-CNN)。
- 回答:BatchNorm在batch维度归一化,需要足够大batch(≥16),训练推理不一致。LayerNorm在通道和空间维度,适合变长序列(Transformer)。GroupNorm将通道分组归一化,不依赖batch,适用于检测中batch size小(如1-2)的情况。检测中常见用GN替代BN以支持更大输入分辨率。
- 【⭐⭐】什么是知识蒸馏?如何在目标检测中应用?
- 考察点:对模型压缩和性能提升方法的理解。
- 得分项:说明教师-学生网络;学生模仿教师输出(特征图、logits、回归分布);检测中可对分类和回归分支分别蒸馏。
- 回答:知识蒸馏指用大模型(教师)指导小模型(学生),使学生接近教师性能。检测中常见:(1) 对分类logits蒸馏;(2) 对特征图(如FPN各层)蒸馏;(3) 对回归框的分布(如边界框分布)蒸馏。方法如FGD(Feature-based Knowledge Distillation)等。在目标检测中可以提升轻量模型精度,或压缩模型同时保持mAP。
- 【⭐⭐】检测模型训练时,学习率策略通常有哪些?Warmup的作用是什么?
- 考察点:对训练调参经验的了解。
- 得分项:列举阶梯下降、余弦退火、指数衰减;Warmup防止初期梯度异常。
- 回答:常见学习率策略:多步下降(如每10轮下降0.1倍)、余弦退火(Cosine Annealing)、多项式衰减。Warmup指训练初期的几个epoch用很小学习率线性增长到目标值,避免因模型参数随机导致初始梯度过大而振荡,尤其适用于大batch训练。
- 【⭐⭐】目标检测中的标签分配(Label Assignment)方法有哪些?为什么动态分配更好?
- 考察点:对近年检测训练机制的深入认知。
- 得分项:传统静态(IoU阈值)、ATSS(根据统计自适应)、OTA(最优传输)、SimOTA(YOLOX)。
- 回答:标签分配决定了哪个特征点/锚框负责预测哪个目标。静态分配(如固定IoU>0.5)不够灵活;动态分配如ATSS根据锚框与真实框的距离统计均值+方差自适应确定正负;OTA将分配看作最优传输问题,全局优化。YOLOX中的SimOTA简化了OTA,计算成本低。动态分配能更好适应不同目标尺度、形状和特征响应,提升性能。
- 【⭐⭐】什么是端到端目标检测?为何主流检测器仍需要NMS?如何实现真正的端到端?
- 考察点:对检测范式前沿的理解。
- 得分项:端到端指不需要NMS后处理;重复预测问题需要解决;DETR通过集合损失和对象查询消除冗余;OneNet、DeFCN也尝试。
- 回答:端到端检测指从图像直接输出无重复的检测结果,无需NMS。由于现有模型倾向在物体周围产生多个预测框,必须NMS消除冗余。DETR通过二分图匹配直接计算集合损失,且解码器自注意力使query之间互相抑制,实现无NMS。后续OneNet使用最大匹配损失,DeFCN用匈牙利匹配。真正端到端简化部署,但训练收敛慢,仍需优化。
- 【⭐⭐】如何在检测网络中处理旋转目标(如遥感图像、文本检测)?
- 考察点:对特殊场景检测的了解。
- 得分项:介绍旋转边界框表示(五参数、八参数);检测头预测角度;常用网络R3Det、RoI Transformer等。
- 回答:旋转目标检测中,边界框需要角度信息。常用表示:(cx,cy,w,h,θ)或四个角点。方法:(1) 在常规检测器基础上增加角度回归分支;(2) 使用旋转锚框或旋转RPN;(3) 改进NMS为旋转NMS。代表模型:R3Det(RetinaNet的旋转版本)、RoI Transformer(学习旋转候选框)、S2ANet(对齐特征)。数据集:DOTA、HRSC2016。
- 【⭐⭐】如何评价目标检测模型的推理速度?常用指标有哪些?
- 考察点:对部署性能评估的理解。
- 得分项:说明FPS、延迟(latency)、吞吐量(throughput)、前向时间、后处理耗时。
- 回答:常用指标:(1) FPS(每秒处理帧数),需明确输入尺寸和硬件;(2) 平均延迟(单张图片耗时ms);(3) 吞吐量(批量处理下的每秒图片数)。注意后处理(如NMS)可能占较大比例。真实部署需考虑端到端时间。通常报告在TensorRT、ONNX等优化后的数值。
- 【⭐⭐】什么是TPU、NPU?目标检测模型如何在这些硬件上优化?
- 考察点:对AI硬件的认知。
- 得分项:TPU(Google张量处理器)、NPU(神经网络处理器);优化包括量化、算子融合、内存复用、针对硬件特性调整网络结构(如避免某些大kernel)。
- 回答:TPU专为矩阵运算设计,对卷积和全连接高效;NPU集成于手机芯片(如华为达芬奇、苹果神经网络引擎)。优化手段:(1) 模型量化到int8;(2) 使用硬件友好的算子(如深度可分离卷积);(3) 避免动态形状;(4) 融合BN到卷积;(5) 利用硬件指令集优化。有些硬件不支持某些操作(如sigmoid),需替换。
- 【⭐⭐】在视频目标检测中,如何利用时序信息提升性能?
- 考察点:对视频检测特殊点的掌握。
- 得分项:说明特征传播(通过光流或相邻帧特征聚合)、利用帧间一致性、时序信息补充单帧遮挡或模糊。
- 回答:视频目标检测利用相邻帧信息提升检测质量。常见方法:(1) 基于光流的特征扭曲(Flow-guided),将邻近帧特征对齐到当前帧;(2) 使用3D卷积或循环卷积提取时序特征;(3) 检测-跟踪框架,先检测后关联;(4) 如FGFA、MANet等。优势:改善运动模糊、遮挡情况,提高召回率。
- 【⭐⭐】什么是弱监督目标检测?它与全监督的区别以及典型方法?
- 考察点:对标签效率问题的理解。
- 得分项:说明仅用图像级标签(有无物体);典型方法多实例学习(MIL)和自训练(如WSDDN)。
- 回答:弱监督目标检测只使用图像级标注(类别标签,无边界框)。模型需要同时学习定位和分类。典型方法:(1) 多实例学习(MIL),把图像划分为候选区域,目标是最小化图像级分类误差;(2) 利用注意力或类激活图(CAM)生成伪框。代表性工作:WSDDN、PCL、OICR。挑战是易收敛到判别部位而非完整物体。
- 【⭐⭐】检测中的注意力机制通常加在哪里?有哪些常见变体?
- 考察点:对注意力模块的了解深度。
- 得分项:可加在backbone、neck或检测头;变体包括空间注意力、通道注意力、自注意力、交叉注意力等。
- 回答:通常添加在:(1) backbone中间特征层(如CBAM、SE);(2) FPN特征融合后(如PANet中的注意力);(3) 检测头前的特征(如GFLV2中的不确定性注意力)。变体:CBAM(通道+空间)、Non-local(自注意力)、DANet(位置+通道)、ECA(无降维通道注意力)。注意力能提升检测性能但增加计算。
- 【⭐⭐】如何评价检测模型在真实场景中的泛化能力?有哪些测试基准?
- 考察点:对模型鲁棒性的理解。
- 得分项:提到COCO变种(COCO-A、COCO-C)、Domain Adaptation评估、OOD检测。
- 回答:常用评估域外泛化:在COCO训练,在COCO-A(自然对抗样本)、COCO-C(常见图像扰动)、COCO-O(遮挡)上测试。另外使用跨数据集评估(在COCO训练,在VOC测试)或无人驾驶数据集(Cityscapes→BDD100K)。指标通常是mAP相对于源域的下降幅度。更鲁棒的检测器通常采用数据增强、域自适应或不确定性建模。
模块五:损失函数与优化(61-70题)
- 【⭐⭐】Smooth L1 Loss相比L2 Loss有什么优点?为什么检测回归常用它?
- 考察点:对回归损失函数的理解。
- 得分项:说明L2对离群点过于敏感,梯度爆炸;Smooth L1在误差大时梯度饱和,更稳定。
- 回答:L2损失(均方误差)对异常值敏感,梯度随误差线性增大,可能导致梯度爆炸。Smooth L1在|x|<1时为二次(平滑),在|x|≥1时为线性,梯度为±1,控制梯度范围,避免爆炸。目标检测边界框回归中,预测偏差可能较大,Smooth L1更鲁棒。后续也有使用IoU损失、GIoU损失等直接优化IoU指标。
- 【⭐⭐】GIoU Loss、DIoU Loss、CIoU Loss依次解决了什么问题?
- 考察点:对IoU系列损失的深入理解。
- 得分项:GIoU解决无重叠时梯度消失;DIoU加入中心点距离;CIoU加入宽高比一致性。
- 回答:IoU Loss当预测框和真实框无重叠时,IoU=0,梯度为0。GIoU引入最小闭包框,loss = 1 - IoU + (闭包面积-并集)/闭包面积,无重叠时仍提供梯度。DIoU在GIoU基础上加中心点归一化距离,使框更快收敛。CIoU进一步考虑宽高比的一致性,提供更完整的回归引导。目前CIoU是主流选择。
- 【⭐⭐】目标检测中如何设计针对小目标的损失函数?
- 考察点:对特定问题损失设计的了解。
- 得分项:说明加权IoU、Normalized Wasserstein Distance(NWD)、多尺度损失加权等。
- 回答:小目标对IoU敏感,微小偏移会导致IoU剧烈下降。NWD使用高斯分布建模边界框,计算Wasserstein距离,对微小偏移更鲁棒。另可对小目标损失赋予更高权重,或者在FPN不同层使用不同阈值。如YOLOv5中对不同尺寸特征图分配不同损失权重。
- 【⭐⭐】Focal Loss中的γ和α如何影响训练?如何调参?
- 考察点:对Focal Loss参数的理解。
- 得分项:γ控制易分样本降权速率;α平衡正负样本权重;典型γ=2, α=0.25。
- 回答:γ越大,对易分样本降权越明显,模型更聚焦难例。但γ过大会使模型忽略简单负样本,导致收敛不稳定。α用于调整正负样本总体比例,通常设为0.25(正样本少)。调参:通常γ在1-5之间,α在0.2-0.5之间。对于类别极不平衡的数据,可增大α。
- 【⭐⭐】什么是辅助损失(Auxiliary Loss)?在检测中有哪些应用?
- 考察点:对多任务学习设计的理解。
- 得分项:说明中间层监督或额外任务;如YOLO中每个网格的置信度损失、SSD中的中间特征监督。
- 回答:辅助损失是在网络中间层添加额外的损失,帮助梯度流动,改善特征学习。例如,在检测backbone中途添加深度监督(如CenterNet);或者YOLOv1中每个网格预测是否包含物体;Cascade R-CNN中每个stage分别计算损失。辅助损失能提升收敛速度和最终精度。
- 【⭐⭐】在训练两阶段检测器时,如何解决ROI分类和回归的不一致性?
- 考察点:对训练细节问题的思考。
- 得分项:提出质量感知损失(Quality Focal Loss)或Double-Head设计等。
- 回答:分类分支对正负样本判别,回归分支只对正样本优化,但推理时分类分数和回归质量可能不对齐(高分类分低IoU)。解决方案:(1) 使用IoU-aware分支,预测IoU并与分类分数相乘;(2) 使用Quality Focal Loss (QFL) 将分类分数变为IoU得分连续值;(3) 任务对齐学习(TAL)选择对齐程度高的样本。主流方法如GFocalV1/V2。
- 【⭐⭐】检测中的损失函数是否可以完全不需要边界框回归?如何实现?
- 考察点:对检测loss创新思路的认知。
- 得分项:参考关键点检测方法(CenterNet)或边界框直接作为参数优化,但本质上回归仍然存在。完全免回归的检测可转为分割问题。
- 回答:可以将检测转为实例分割,每个目标分割图,然后取外接矩形,但精度可能下降。一种新颖做法:将目标表示为角点对(CornerNet)或中心点(CenterNet),损失是针对关键点热图和尺寸,不直接回归角点坐标偏移(实际也有回归)。严格意义上的免回归检测不太现实,因为必须输出几何边界。
- 【⭐⭐】如何平衡多个损失项(分类、回归、掩码等)的权重?
- 考察点:对多任务训练调参经验。
- 得分项:通常通过超参数λ平衡;可根据损失量级自动调整(如Uncertainty Weighting);也可动态调整。
- 回答:常规做法:L_total = L_cls + λ1 L_box + λ2 L_mask。λ1常设为1-5(回归损失通常比分类小),λ2=1(对于Mask R-CNN)。更先进的方法:利用任务同方差不确定性(Kendall et al.),自动学习各任务权重。实践中也可根据验证集调优,简单任务先固定比例如1:1:1。
- 【⭐⭐】目标检测中的OHEM(Online Hard Example Mining)原理是什么?与Focal Loss相比有何异同?
- 考察点:对难例挖掘策略的理解。
- 得分项:OHEM根据损失排序,选择损失最大的部分样本反向传播;Focal Loss通过损失函数权重自动抑制易分样本。
- 回答:OHEM在每个mini-batch中,所有ROI(或锚框)前向计算损失,选择损失最大的N个(如256个)作为难例,仅用它们进行梯度更新。因此模型聚焦难分样本。Focal Loss通过(1-p_t)^γ给易分样本低权重,是一种软性的、连续的难例挖掘。OHEM是硬选择,且需要额外前向;Focal Loss更简单高效,但调参敏感。
- 【⭐⭐】什么是感知损失(Perceptual Loss)?在目标检测中可能用在哪里?
- 考察点:对特征级损失的了解。
- 得分项:利用预训练网络的高层特征距离;可用于检测的知识蒸馏、弱监督定位等。
- 回答:感知损失通常指通过VGG等预训练网络提取特征,计算特征图之间的L2距离,使图像结构相似。在检测中,可用于:(1) 知识蒸馏,让学生网络的特征与教师网络对齐;(2) 弱监督检测,通过感知损失约束候选区域特征一致性;(3) 无监督域适应,最小化源域和目标域特征分布差异。
模块六:评估指标与数据集(71-80题)
- 【⭐】COCO评估指标中的AP、AP50、AP75、APS、APM、APL分别代表什么?
- 考察点:对检测评价指标的精确掌握。
- 得分项:说明AP是IoU阈值从0.5到0.95平均;AP50即IoU=0.5;AP75为0.75;APs小目标(面积<32²),APM中等(32²-96²),APL大(>96²)。
- 回答:COCO中AP是10个IoU阈值(0.5:0.05:0.95)下的平均精度(Average Precision)。AP50是传统VOC指标(IoU=0.5);AP75要求更高定位精度。APS、APM、APL根据目标像素面积分别计算AP,衡量模型在不同尺度目标上的表现。此外还有AR(平均召回率)指标。
- 【⭐】mAP的计算流程是怎样的?为什么需要计算PR曲线下的面积?
- 考察点:对评估原理的理解。
- 得分项:说明先对预测框按置信度排序,逐点计算精确率和召回率,得到PR曲线,计算曲线下面积或插值平均。mAP是各类别AP的平均。
- 回答:流程:(1) 对每个类别,将所有预测框按置信度降序排序;(2) 计算每个位置下的TP、FP,得到精确率P和召回率R;(3) 画出PR曲线,计算曲线下面积(通常使用11点插值或全点平均);(4) 得到该类AP;(5) 所有类别AP平均得mAP。注意需要设置IoU阈值判断TP/FP。
- 【⭐】检测中为什么有时候mAP高但实际效果并不好?可能的原因有哪些?
- 考察点:对mAP局限性的认识。
- 得分项:说明mAP对同一物体的多个预测框敏感(NMS前);对小物体和大物体平等;不考虑定位的质量差异(AP75可缓解)。
- 回答:原因包括:(1) mAP对漏检和虚警综合平均,但用户更关注特定类型错误;(2) 没有考虑物体之间关系,比如密集场景下重复检测会降低mAP但在视觉上不明显;(3) AP对低置信度预测不敏感,可能模型输出置信度校准差;(4) 数据集偏差。因此需要结合其他指标如FPPI(误检每图)、F1-score、实际场景测试。
- 【⭐】目标检测数据集的标注质量如何影响模型训练?有哪些方法清洗标签?
- 考察点:对数据工程的理解。
- 得分项:说明标签噪声导致性能下降;清洗方法包括重标注、半自动校验、主动学习。
- 回答:标注错误(漏标、错标、边界框偏差)会误导模型学习,尤其对长尾类别影响大。清洗方法:(1) 模型辅助校验:用预训练模型检测,将预测与标注不一致的样本抽检;(2) 一致性验证:多人标注,比较标注;(3) 主动学习挑选难例重新标注;(4) 训练时使用标签平滑、噪声鲁棒损失函数。
- 【⭐】KITTI数据集用于目标检测的特点是什么?评价指标有哪些?
- 考察点:对自动驾驶数据集的理解。
- 得分项:说明KITTI包含立体视觉、激光雷达;检测对象为车、行人、自行车;评价指标为AP(中等难度,IoU=0.7或0.5)。
- 回答:KITTI数据从车上采集,包含7498张训练和7518张测试。检测任务针对cars, pedestrians, cyclists。由于物体尺度和遮挡多样,分为Easy, Moderate, Hard三个难度。官方评估使用AP (Average Precision) 且对行人、自行车使用IoU=0.5,对汽车使用IoU=0.7。此外还有方向(orientation)评估。
- 【⭐】如何构建一个自定义目标检测数据集?需要注意哪些问题?
- 考察点:对实际数据收集流程的了解。
- 得分项:说明图像采集、清洗、标注、划分;注意类别平衡、多样性、标注规范、质量检验。
- 回答:步骤:(1) 图像采集:覆盖各种场景、光照、角度;(2) 数据清洗去掉模糊、重复;(3) 标注工具(LabelImg, CVAT),定义类别、边界框属性;(4) 标注规范:严格定义边界框范围(是否包含遮挡部分)、难例处理;(5) 质量抽检;(6) 划分训练/验证/测试集,保持分布一致;(7) 数据增强策略。注意类别不平衡和长尾问题,可收集更多小类别样本。
- 【⭐】目标检测中常见的数据集划分策略有哪些?如何避免数据泄露?
- 考察点:对数据划分的实践知识。
- 得分项:随机划分、按场景划分、按视频帧划分防止帧间相似;确保测试集与训练集无重复或近似图像。
- 回答:常用按比例随机划分(70-80%训练,10-15%验证,10%测试)。对于视频连续帧,需按视频片段划分,避免同一视频的相邻帧同时出现在训练和测试集,否则过拟合。对于遥感或医疗图像,需按图像块或患者划分。数据泄露会导致模型评估过于乐观。可使用重复性检测工具(如Image Deduplicator)排除相似图片。
- 【⭐】在COCO数据集中,评估指标AP@0.5:0.95相比VOC mAP@0.5有什么优势?
- 考察点:对评价指标发展的理解。
- 得分项:说明COCO的评估更严格,要求高IoU,促使模型定位更精确;平均多阈值更全面。
- 回答:VOC只用IoU=0.5一个阈值,模型可能定位粗放仍得高分。COCO采用多个IoU阈值平均,尤其是高IoU(0.75)要求定位精准,推动检测器提升边界框质量。同时COCO对小、中、大物体分别评估,更细粒度。因此COCO AP更反映模型真实能力,已成为标准。
- 【⭐】VisDrone数据集的特点和挑战是什么?
- 考察点:对无人机视角检测的了解。
- 得分项:说明无人机航拍图像,物体小、尺度变化大、背景复杂、遮挡多;包含10类。
- 回答:VisDrone由无人机拍摄,图像尺寸大(约2000×1500),物体非常小(行人、车辆),且存在密集分布、光照变化、天气变化。挑战:小目标检测、密集遮挡、运动模糊。评估使用COCO风格指标。是检测算法的挑战性基准。
- 【⭐】如何评估目标检测模型在实际部署中的内存和功耗?
- 考察点:对边缘部署的综合理解。
- 得分项:说明测量模型参数量、计算量(FLOPs)、内存占用(激活值)、实际测试功耗(W)。
- 回答:参数量和FLOPs可粗略估计,但真实内存包括权重、输入输出特征图、中间缓存。使用工具如TensorFlow Profiler、NVIDIA Nsight。功耗测试需实际运行在目标设备(如Jetson、手机),测量电流电压。关注峰值内存和平均功耗,用于判断是否满足嵌入式需求。
第三部分:实战篇(81-100题)
模块七:工程实践与优化(81-90题)
- 【⭐⭐】训练一个目标检测模型时,你如何判断是欠拟合还是过拟合?如何应对?
- 考察点:对训练诊断的经验。
- 得分项:观察train loss和val loss曲线;欠拟合:两者高且不降;过拟合:train loss远低于val loss。应对:欠拟合增加容量、训练轮数;过拟合增加数据增强、正则化、dropout、降低模型复杂度。
- 回答:欠拟合表现:训练loss不下降,验证loss也很高且flat。措施:增加网络层数/宽度,降低学习率,增加训练epoch,使用更强的数据增强?实际欠拟合一般较少见(检测模型容量足够)。过拟合常见:训练loss持续下降但验证loss上升。措施:增加数据增强(Mosaic, MixUp),添加L2正则化,使用dropout,减少模型复杂度,早停,使用更多数据。
- 【⭐⭐】你的检测模型在训练集上mAP很高,但在验证集上很低,可能的原因及解决方案?
- 考察点:对泛化问题的分析能力。
- 得分项:过拟合、数据分布不一致、标签噪声、评估指标误解等。
- 回答:(1) 过拟合:训练集和验证集相似度低?增加正则化、数据增强、使用预训练模型。(2) 训练集和验证集分布差异(如场景不同):需要收集更多代表性数据或域适应。(3) 验证集的标注质量差或标准与训练不一致:重新检查。(4) 评估代码有误(如IoU阈值不同)。解决方案:交叉验证、增加域内验证样本、使用更多数据增强。
- 【⭐⭐】在实时检测系统中,如何平衡精度和速度?列举具体策略。
- 考察点:对工程权衡的实操能力。
- 得分项:模型选择(YOLOv5-tiny vs YOLOv7)、输入分辨率调整、TensorRT加速、模型剪枝、使用FP16或INT8量化。
- 回答:策略包括:(1) 选择轻量backbone(ShuffleNet, EfficientNet-lite); (2) 减小输入分辨率(640->416); (3) 使用更少的检测层或锚框; (4) 使用TensorRT优化,启用FP16/INT8; (5) 知识蒸馏从大模型向小模型迁移; (6) 裁剪不重要的通道和层; (7) 调整NMS阈值减少后处理时间; (8) 多尺度测试改为单尺度。实践中通过Pareto曲线选择最佳速度-精度点。
- 【⭐⭐】检测模型部署到移动端(Android/iOS)时,常见的问题和解决方案有哪些?
- 考察点:对端侧部署的实战经验。
- 得分项:模型转换(ONNX->CoreML/TFLite)、内存溢出、计算过慢、硬件加速(GPU, DSP, NPU)、输入预处理同步。
- 回答:常见问题:(1) 模型太大导致安装包超限:量化、剪枝;(2) 推理延迟高:使用GPU delegate或ANE(Apple Neural Engine);(3) 不同设备兼容性:测试多种分辨率;(4) 内存峰值高:降低batch=1,避免大尺寸特征图缓存;(5) 预处理(缩放、归一化)耗时:使用硬件加速库(如OpenCV ARM NEON);(6) NMS实现效率:用C++实现并绑定。方案:使用TFLite + GPU delegate或MACE、NCNN等框架。
- 【⭐⭐】如何实现检测模型的增量学习?例如增加新类别而不遗忘旧类别?
- 考察点:对增量学习在检测中的应用。
- 得分项:说明知识蒸馏、重放旧数据、调整网络结构(如增加新分支)。
- 回答:检测增量学习常见方法:(1) 保存部分旧类别样本(exemplar set),与新数据一起训练;(2) 使用知识蒸馏:旧模型输出作为软标签,约束新模型;(3) 采用解耦策略:特征提取器共享,分类层独立(如LUCIR);(4) 增量检测框架如iOD、ILOD。难点在于旧类别特征偏移,且边界框回归也会遗忘。简单的方法是合并数据集重新训练,但计算成本高。
- 【⭐⭐】检测模型的测试时增强(TTA)有哪些常见方法?效果如何?
- 考察点:对提升推理精度技巧的了解。
- 得分项:多尺度测试、水平翻转、十折裁剪等;性能提升通常在1-3% mAP,但推理时间倍增。
- 回答:TTA:对测试图像应用多种变换(如缩放0.5x, 0.8x, 1.0x, 1.2x, 1.5x;水平翻转),每个变换后的图像输入模型得到预测框,再将所有预测框映射回原图坐标,通过加权NMS或简单合并。通常可提升1-2% mAP,但推理时间增加5-10倍,适合离线场景。也可只做翻转和多尺度,平衡效率。
- 【⭐⭐】在目标检测系统中,如何设计和评估一个难例挖掘(Hard Mining)策略?
- 考察点:对在线难例挖掘实践的理解。
- 得分项:选择难例(FP、FN)的策略;可基于损失值、置信度、不确定性等;评估难例挖掘对性能的提升。
- 回答:难例挖掘通常指训练中或训练后,收集模型预测错误的样本(假阳性、假阴性),加入训练集或重加权。设计:(1) 设定置信度阈值选出假阳性;(2) 对漏检区域进行标注;(3) 在训练中调整采样权重。评估:在验证集上对比加入难例前后的mAP,尤其关注困难子集(如COCO的难例)。也可使用召回率-虚警曲线。实际中难例挖掘能显著提升鲁棒性。
- 【⭐⭐】检测模型中的多任务学习:分类和回归分支如何避免负迁移?
- 考察点:对多任务学习负面效应的理解。
- 得分项:共享底层特征可能互相干扰;可通过任务注意力、梯度调控(GradNorm)、不同学习率、解耦设计缓解。
- 回答:负迁移指一个任务的学习损害另一个任务性能。在检测中,分类分支关注语义差异,回归分支关注几何偏移,特征需求不同。缓解方法:(1) 设计解耦头(Double-Head:分类用全连接,回归用卷积);(2) 使用动态权重调整损失;(3) 采用任务特定批归一化;(4) GradNorm自适应调整任务梯度幅度;(5) 使用注意力为不同任务分配不同通道。例如,GFLV2中利用不确定性指导。
- 【⭐⭐】如何对检测模型进行可解释性分析?比如为什么某个目标被漏检?
- 考察点:对模型调试解释能力的掌握。
- 得分项:使用类激活热图(CAM, Grad-CAM)、特征可视化、逐层梯度分析、比较正负样本特征差异。
- 回答:方法:(1) 生成Grad-CAM热图,观察模型关注区域是否偏离目标;(2) 分析漏检目标的特征响应值,判断是否低于阈值;(3) 检查锚框匹配情况:是否因为尺度不匹配;(4) 使用特征反卷积可视化; (5) 在FPN各层查看该目标对应特征图的激活强度。对于分类置信度低,可分析分类分支的特征;对于回归不准,检查回归损失和NMS阈值设置。
- 【⭐⭐】在自动化标注或半监督目标检测中,如何利用伪标签?
- 考察点:对半监督检测的了解。
- 得分项:说明教师-学生模型、置信度筛选、弱增强和强增强策略等。
- 回答:半监督检测通常有少量标注数据和大量无标注数据。流程:(1) 用有标注数据训练教师模型;(2) 对无标注数据生成伪标签(预测框+类别);(3) 筛选高置信度伪标签(通常阈值0.7以上);(4) 将伪标签与真实标签混合,训练学生模型;(5) 迭代。关键技术:使用强数据增强(mixup、mosaic)提高学生泛化;一致性正则化。代表工作:STAC、Unbiased Teacher。
模块八:前沿趋势与开放题(91-100题)
- 【⭐⭐⭐】请比较DETR、YOLOv8和RT-DETR,谈谈你对实时Transformer检测器前景的看法。
- 考察点:对前沿检测器对比分析能力。
- 得分项:分析三者的架构特点、速度-精度权衡;RT-DETR是百度提出的实时Transformer,通过高效的编码器和解码器设计达到与YOLO相近的速度且无需NMS;评价Transformer在检测上的潜力。
- 回答:YOLOv8代表了成熟CNN-based架构,工程优化极好,速度快且易用。DETR开创了Transformer检测,但收敛慢、速度慢,不适合实时。RT-DETR通过混合编码器和可变性注意力,利用高分辨率和多尺度,在速度和精度上超越YOLOv5/v8,且端到端无NMS。我认为Transformer在检测中会逐渐渗透,尤其利用注意力机制对全局建模,但实时领域仍需硬件和算子优化。未来可能CNN和Transformer融合是趋势。
- 【⭐⭐⭐】谈谈你对通用目标检测(General Object Detection)和特定领域检测(如遥感、医疗)差异的理解,以及如何迁移?
- 考察点:对领域适应性的深度思考。
- 得分项:说明数据特点(尺度、纹理、背景)、标注成本、先验知识;迁移策略包括域自适应、微调、数据增强模拟。
- 回答:通用检测(COCO)强调日常物体多样性和尺度变化。医疗检测(如病变)通常图像灰度、目标形态特异性高,数据量小且标注昂贵;遥感检测目标小、方向任意、背景复杂。迁移方法:(1) 从COCO预训练模型微调,但要注意特征差异(医学图像纹理不同);(2) 使用域自适应(对抗或风格迁移);(3) 针对特定领域设计数据增强(旋转、缩放、色彩映射);(4) 构造领域特定的锚框尺寸和NMS策略。完全从零训练在数据少时不可取。
- 【⭐⭐⭐】未来三年目标检测领域可能有哪些突破方向?
- 考察点:对领域发展趋势的预测。
- 得分项:提及端到端检测的普及、大视觉模型+提示学习、3D/4D检测、自监督预训练、轻量化与硬件结合。
- 回答:可能方向:(1) 基础检测模型:类似SAM的分割大模型用于检测,通过提示产生任意目标检测;(2) 无需NMS的完全端到端检测器成为主流;(3) 视频检测结合时序自监督,显著提升效率;(4) 多模态检测(文本-图像对齐,开放词汇检测);(5) 自监督预训练减少标注依赖;(6) 3D检测和传感器融合(LiDAR+相机)在自动驾驶成熟;(7) 神经渲染和生成模型辅助数据合成。
- 【⭐⭐⭐】如何设计一个高精度且快速的工业缺陷检测系统?请给出架构思路。
- 考察点:对实际应用场景的综合设计能力。
- 得分项:数据采集(缺陷多样性)、检测算法选型(YOLOv8或DETR轻量变体)、部署优化(TensorRT)、后处理融合、增量学习。
- 回答:架构:(1) 数据:使用工业相机,固定光照和背景,收集足够缺陷样本(少量正常大量缺陷)。采用数据增强模拟划痕、脏污。(2) 算法:轻量YOLOv8或PP-PicoDet,使用高分辨率输入(如1280x720),训练时使用Focal Loss应对类别不平衡。(3) 后处理:根据产品尺寸设定自适应IoU阈值,可能需缺陷分类。(4) 部署:模型转TensorRT FP16,使用专用GPU或边缘盒子。推理加NMS优化到<10ms/帧。(5) 维护:定期收集难例(假阳性、假阴性),进行主动学习微调。系统需可视化告警和统计。
- 【⭐⭐⭐】在低算力设备(如树莓派)上检测多类别物体,你会如何优化?
- 考察点:对极端轻量化部署的实践。
- 得分项:选择极端轻量模型(如MobileNet-SSD、YOLOv3-tiny、NanoDet)、使用ARM NEON汇编优化、模型量化到int8、降低分辨率、减少检测层。
- 回答:具体步骤:(1) 模型:NanoDet或YOLOv5-nano,参数量<1M;(2) 输入分辨率:320x240或更低;(3) 量化:使用TensorFlow Lite Micro或NCNN int8量化;(4) 框架:使用Tengine或ncnn针对ARM优化;(5) 硬件加速:使用树莓派GPU(OpenGL ES)可能有限,更依赖CPU优化;(6) 后处理NMS改写成C++避免Python开销;(7) 如果多类别(>10),可考虑分类器分支使用低秩分解。最终可达到10-15 FPS。
- 【⭐⭐⭐】你是如何看待目标检测与SLAM、3D视觉结合的?有什么实际应用?
- 考察点:对跨领域结合的认知。
- 得分项:物体级SLAM(Object SLAM)整合检测与建图;动态环境去除;增强现实中的物体跟踪。
- 回答:将目标检测与SLAM结合,能实现语义地图(标注物体类别和实例),并为机器人导航提供语义信息。例如,检测出门、椅子,机器人能实现语义定位和交互。应用:(1) 自动驾驶中检测车辆、行人,并融合3D信息进行轨迹预测;(2) AR/VR中识别平面和物体,实现虚拟物体附着;(3) 仓储机器人检测货架和箱子。技术上需要解决检测帧间一致性、动态物体滤波、3D边界框估计。目前有CubeSLAM、DynaSLAM等工作。
- 【⭐⭐⭐】目前目标检测是否存在“饱和”现象?你觉得哪些问题还未解决?
- 考察点:对领域瓶颈的批判性思考。
- 得分项:指出COCO精度提升放缓;但真实场景(小目标、密集、开放词汇、域泛化)仍远未解决。
- 回答:在标准基准(COCO)上,顶级模型mAP已超过60%,且每年提升有限,看似接近饱和。但实际应用仍有许多挑战:(1) 小目标和极其密集物体(如细胞检测);(2) 开放词汇检测(检测任意类别,超出训练集);(3) 零样本和少样本检测;(4) 跨域检测(仿真到真实);(5) 带遮挡和截断的鲁棒检测;(6) 实时与精度权衡仍在追求。(7) 可解释性缺乏。因此,新范式(大模型、自监督)可能开辟新方向。
- 【⭐⭐⭐】如果你要去参加Kaggle目标检测竞赛,你会怎么规划你的方案?
- 考察点:竞赛实战经验。
- 得分项:EDA、多模型集成、使用额外的预训练模型、TTA、伪标签、模型蒸馏等。
- 回答:方案:(1) 数据分析:理解类别分布、目标尺度、标注噪声;(2) 构建强大的单模型:如Swin-L+FPN+Cascade R-CNN,使用ImageNet-22k预训练;(3) 数据增强:Mosaic, MixUp, Copy-Paste, 随机裁剪;(4) 训练策略:多尺度训练,大batch,余弦退火,EMA;(5) 使用测试时增强(TTA:翻转、多尺度);(6) 多模型集成:不同backbone(ConvNext, Swin),不同检测器,加权框融合 (WBF);(7) 伪标签:用训练好的模型预测测试集,高置信度伪标签加入训练;(8) 知识蒸馏:用小模型集成或提升;(9) 后处理优化:Soft-NMS, 调整阈值。
- 【⭐⭐⭐】你能设计一个无需标注的零样本目标检测方法吗?简述思路。
- 考察点:对前沿研究的创新能力。
- 得分项:利用CLIP等视觉-语言模型;通过类别名称的文本特征与图像区域特征匹配;或自监督预训练+聚类。
- 回答:零样本检测(Zero-shot Object Detection)要求检测训练集未出现的新类别。一种思路:(1) 使用区域提议网络生成候选框;(2) 对每个候选框,用视觉编码器(如CLIP图像编码器)提取特征;(3) 对目标类别,用文本编码器得到词向量;(4) 计算候选框特征与类别文本特征的余弦相似度,高于阈值则检测。(5) 需要大规模预训练模型(如CLIP)和对齐。无需检测标注,仅需图像-文本对预训练。挑战:候选框质量、细粒度区分。代表工作:ViLD、Detic。
- 【⭐⭐⭐】请深入谈谈目标检测中模型参数初始化的重要性,以及如何选择合适的初始化方法。
- 考察点:对训练稳定性和收敛的深层理解。
- 得分项:说明Xavier、Kaiming初始化原理;检测常用ImageNet预训练;从头训练可用Kaiming初始化。
- 回答:初始化影响梯度传播、收敛速度和最终性能。过小初始化导致梯度消失,过大导致梯度爆炸。Xavier初始化保持输入输出方差一致,适用于tanh。Kaiming初始化(He init)考虑ReLU,方差=2/fan_in。对于检测backbone,最佳实践是加载ImageNet预训练模型(迁移学习),因为它已学到通用特征。如果从头训练,使用Kaiming均匀分布,并配合学习率warmup。对于检测头(特别是回归分支),有时需缩放初始化,如偏置设置。有研究显示,批归一化层初始化gamma=1, beta=0。不当初始化导致loss不下降或NaN。