真实面经题目 · 原创解析
MTCNN 的模型结构和训练过程是怎样的?
MTCNN 是级联式人脸检测和关键点定位框架,核心是 P-Net、R-Net、O-Net 逐级候选、筛选、精修,并用多任务损失联合训练。
真实面经题目 · 原创解析
MTCNN 是级联式人脸检测和关键点定位框架,核心是 P-Net、R-Net、O-Net 逐级候选、筛选、精修,并用多任务损失联合训练。
MTCNN 可以按三级级联回答。P-Net 在图像金字塔上快速生成大量候选人脸框,并做初步边框回归;R-Net 对 P-Net 的候选框进一步分类和回归,过滤掉大量误检;O-Net 最后输出更精细的人脸框和五点关键点。每一级都会做 NMS 去重和 bounding box calibration。训练时是多任务学习,通常包含人脸/非人脸分类损失、边框回归损失和关键点定位损失,不同样本类型承担不同任务。整体优势是速度和精度平衡,级联结构让早期网络快速筛掉简单负样本,后续网络专注难样本和精定位。
P-Net、R-Net、O-Net 是从粗到细的级联。前一级负责高召回地产生候选,后一级负责更强判别和更精确定位,这样避免直接用大网络扫描整张图。
P-Net 是全卷积网络,作用在图像金字塔上,快速预测每个位置是否有人脸以及边框偏移。它追求召回率,候选框多但允许噪声,后面会继续过滤。
R-Net 接收 P-Net 候选裁剪区域,进一步分类和边框回归;O-Net 做最终分类、边框回归和关键点定位,输出更稳定的人脸框与眼、鼻、嘴角等关键点。
训练样本通常按 IoU 分为正样本、负样本、部分人脸样本和关键点样本。分类使用交叉熵,边框和关键点用回归损失,不同样本只参与对应任务或赋予不同 loss 权重。
常见训练流程是先训练 P-Net,用它在训练集上挖掘候选和 hard negative,再训练 R-Net,最后训练 O-Net。每一级都通过 NMS 和框校准把候选传给下一级。
人脸尺度变化大,图像金字塔让固定感受野的 P-Net 能在不同缩放尺度上检测不同大小的人脸。
每级网络都会产生重叠候选框,NMS 用来去掉重复框,减少后续计算并稳定最终输出。
它们通常不用于分类正负,而用于边框回归,让模型学习如何把不准的候选框修正到真实框。
对极端姿态、遮挡、低分辨率和复杂光照可能不够鲁棒,现代方案可能用更强 backbone 或 anchor-free 检测器替代。