面试问题记录
}记录在求职过程中的一些面试问题
面试技术问答#
问题1:YOLOv8模型相比较之前的算法有哪些改进?#
-
采用了更高效的骨干网络(Backbone)与颈部网络(Neck)
YOLOv8 使用 C2f 模块替代 YOLOv5 中的 C3 模块。C2f 基于 Cross Stage Partial 结构,引入更多分支和残差连接,增强梯度流动,同时保留更丰富的浅层特征信息,从而提升小目标检测能力。 -
采用无锚框(Anchor-Free)检测头
与 YOLOv3/v5 等依赖预定义锚框不同,YOLOv8 直接预测目标中心点及其宽高,无需聚列生成先验框。这简化了训练流程,降低了对数据集分布的依赖,提高了模型泛化能力和训练稳定性。
问题2:简述一下行人检测跟踪算法如何实现?#
-
目标检测阶段
使用预训练的 YOLOv8 模型(如yolov8s.pt)对视频每一帧进行推理,输出所有行人的边界框、类别(person)及置信度。 -
目标跟踪阶段(DeepSORT)
将检测结果输入 DeepSORT 跟踪器:- 利用卡尔曼滤波预测目标下一帧位置;
- 提取外观 Re-ID 特征进行跨帧匹配;
- 为每个行人分配唯一 ID,减少 ID 切换(ID Switch)。
-
撞线计数逻辑
- 在图像中预设一条计数线(如水平线 y = line_y);
- 对每个 track_id,记录其边界框中心点 (cx, cy) 的历史轨迹;
- 若中心点从线一侧跨越到另一侧(例如 cy_prev < line_y ≤ cy_curr),则判定为一次有效穿越;
- 根据跨越方向区分”进入”或”离开”,实现双向计数,并通过状态管理避免重复计数。
问题3:简述一下如何利用卡尔曼滤波预测目标位置?#
卡尔曼滤波通过融合运动模型与观测数据,实现对目标状态的最优估计:
-
状态建模
定义状态向量 ,其中 为中心坐标, 为宽高比, 为高度, 为对应速度。 -
预测阶段
基于匀速运动模型,通过状态转移矩阵 预测下一时刻状态:,并更新协方差矩阵 表示不确定性。 -
更新阶段
当新一帧检测结果到来时,将其作为观测值:- 计算预测值与观测值的残差;
- 通过卡尔曼增益动态融合两者;
- 更新状态向量 和协方差 ,得到更精确的当前估计。
-
循环执行
每帧重复”预测 → 更新”流程,实现稳定连续跟踪。
问题4:解释多头注意力的优点,自注意力和注意力的区别,以及 Focal Loss 与交叉熵的公式。#
-
多头注意力的优点
多头机制允许模型在多个子空间中并行学习不同类型的依赖关系(如位置、语义、语法等)。每个头拥有独立参数,相当于从不同视角理解输入,显著增强模型表达能力与泛化性能。 -
自注意力 vs 注意力
- 注意力(Attention):建立两个不同序列之间的关联(如查询序列与键值序列),常用于编码器-解码器架构,可理解为”查字典”。
- 自注意力(Self-Attention):在同一序列内部计算元素间的相关性,用于捕捉全局上下文,可理解为”照镜子”。
-
损失函数公式
- 二分类交叉熵(Binary Cross-Entropy):
- Focal Loss(聚焦难样本,缓解类别不平衡): 其中 为真实类别的预测概率, 为类别平衡因子, 为聚焦参数(通常取 2)。
问题5:梯度消失和梯度爆炸及其解决方法?#
-
梯度消失
反向传播中梯度逐层衰减趋近于零,导致浅层参数难以更新。
解决方法:- 使用 ReLU 或其变体(导数在正区恒为 1);
- 引入残差连接(ResNet)跳过部分层;
- 应用批归一化(BN)稳定激活分布;
- 采用合适的权重初始化(如 He 初始化)。
-
梯度爆炸
梯度逐层放大,导致参数剧烈震荡甚至数值溢出。
解决方法:- 梯度裁剪(限制梯度范数上限);
- 权重正则化(L1/L2 惩罚项抑制大权重);
- 同样可借助 BN 和良好初始化间接缓解。
问题6:在卷积神经网络计算中为什么宽高常设为奇数?#
主要为了保持空间对称性。卷积核通常为奇数尺寸(如 3×3),配合 same padding 可使输出中心与输入中心严格对齐。若输入尺寸为奇数,则经对称卷积后输出仍为奇数,便于后续操作(如池化、上采样)维持结构一致性,避免特征图偏移或信息不对齐。
问题7:解释一下 TensorRT?#
TensorRT 是 NVIDIA 推出的高性能深度学习推理优化引擎。它将训练好的模型(如来自 PyTorch 或 TensorFlow)转换为高度优化的推理引擎,核心技术包括:
- 层融合(Layer Fusion)消除冗余计算;
- 支持 FP16/INT8 精度量化以降低显存与计算开销;
- 针对特定 GPU 架构自动调优 CUDA kernel;
- 最终实现低延迟、高吞吐的推理部署,广泛应用于边缘设备与数据中心。
问题8:解释一下 FFN?#
FFN(Feed-Forward Network)是 Transformer 中的核心组件之一,位于多头注意力之后。其结构通常为两层全连接网络加非线性激活(如 GELU):
FFN 引入非线性变换,使模型能够学习复杂的函数映射,是提升模型表达能力和实现”智能理解”的关键环节。
问题9:解释准确率、召回率等指标?#
- 准确率(Accuracy):所有预测中正确的比例,适用于类别均衡场景。
- 精确率(Precision):预测为正类的样本中真实为正类的比例,回答”我说是正类,有多大概率是真的?”
- 召回率(Recall):所有真实正类中被正确找出的比例,回答”真正的正类,我找出了多少?”
- F1 Score:精确率与召回率的调和平均,综合衡量二者。
- ROC 曲线与 AUC:ROC 描绘不同阈值下真正率(TPR)与假正率(FPR)的权衡;AUC 为曲线下面积,取值范围 [0.5, 1],越大越好,0.5 表示随机猜测。
问题10:大模型中的 Encoder-Decoder 与 Decoder-Only 架构分别是什么?它们的核心区别在哪里?#
Encoder-Decoder 和 Decoder-Only 是当前大语言模型的两种主流架构,其核心区别在于任务范式与训练方式的不同。

-
Encoder-Decoder 架构(如 T5、BART)包含两个组件:编码器负责理解输入,解码器负责生成输出。它天然适用于“输入-输出”式的任务(如翻译、摘要、问答),但要求训练数据必须明确划分为“问题-答案”对,数据准备成本较高。
-
Decoder-Only 架构(如 GPT 系列)仅包含解码器,通过“文本续写”方式进行训练:给定一段上下文,预测下一个词。这种设计使得模型可以直接利用任意连续文本(如网页、书籍)进行自回归训练,无需人工标注或结构化切分,极大提升了数据利用效率和可扩展性。
Encoder-Decoder 擅长结构化理解与转换,而 Decoder-Only 擅长开放式生成;前者依赖成对数据,后者只需原始文本即可训练