AI-Agent 面试题汇总 - 计算机视觉篇(目标检测)

1. 从 R-CNN 到 Faster R-CNN 的演变

  • R-CNN:Selective Search 提候选框,逐框CNN提特征,慢。
  • Fast R-CNN:整图卷积 + RoI Pooling,共享特征,速度提升。
  • Faster R-CNN:引入 RPN 生成候选框,实现端到端 two-stage 检测。

2. 目标检测 two-stage 模型有哪些?

典型 two-stage:

  • Faster R-CNN
  • Mask R-CNN
  • Cascade R-CNN特点:精度高,尤其对小目标和复杂场景更稳;但速度一般慢于 one-stage。

3. 说一下 NMS 的处理思想

NMS(非极大值抑制)用于去重框:按置信度排序,保留最高分框,删除与其 IoU 超阈值的重复框,迭代直到结束。目标是减少多重检测。

def nms(boxes, scores, iou_th=0.5):
    idxs = scores.argsort(descending=True)
    keep = []
    while len(idxs) > 0:
        i = idxs[0]
        keep.append(i.item())
        if len(idxs) == 1: break
        ious = iou(boxes[i].unsqueeze(0), boxes[idxs[1:]]).squeeze(0)
        idxs = idxs[1:][ious <= iou_th]
    return keep

4. Soft-NMS 为什么可以提升检测效果?

Soft-NMS不直接删除重叠框,而是根据重叠程度衰减其分数,避免误删真正目标(尤其密集场景)。因此通常提升召回率与mAP。

5. 描述一下 IoU 的作用

IoU(Intersection over Union)衡量预测框和真实框重叠程度。用于:

  1. 正负样本分配
  2. NMS判定
  3. 评估指标(mAP@IoU阈值)
def iou_xyxy(a, b):
    x1 = max(a[0], b[0]); y1 = max(a[1], b[1])
    x2 = min(a[2], b[2]); y2 = min(a[3], b[3])
    inter = max(0, x2-x1) * max(0, y2-y1)
    area1 = (a[2]-a[0]) * (a[3]-a[1])
    area2 = (b[2]-b[0]) * (b[3]-b[1])
    return inter / (area1 + area2 - inter + 1e-9)

6. RoI Pooling 如何实现坐标映射?

RoI Pooling把原图候选框按特征图缩放比例映射到特征图上,再划分固定网格(如7×7)做池化,输出固定维度特征。缺点是量化误差,后续 RoI Align 通过双线性插值避免该误差。

7. SPP(或SPP-Net)在检测中的作用

在检测中,SPP可将不同尺寸候选区域转为固定长度特征,减少重复卷积并适配多尺度输入。思想与空间金字塔池化一致,强调多尺度汇聚。

8. RPN 的作用是什么?

RPN(Region Proposal Network)在共享特征图上滑窗,预测 anchor 的前景概率和边框偏移,快速生成高质量候选框,替代传统Selective Search。

9. 说一下 Faster R-CNN 的损失函数

Faster R-CNN是多任务损失:[L = L{cls} + \lambda L{reg}]其中分类损失用于前景/类别判定,回归损失用于框偏移(常用Smooth L1)。RPN和RoI head通常都有各自的分类+回归损失。

10. Faster R-CNN 如何筛选正负 anchor?

通常按 IoU 与 GT 的关系:

  • IoU ≥ 正阈值(如0.7)→ 正样本
  • IoU ≤ 负阈值(如0.3)→ 负样本
  • 中间忽略并控制正负比(如1:1或1:3)稳定训练。

11. 为什么使用 Focal Loss?

在 one-stage 检测中,负样本远多于正样本,易被大量“简单负样本”主导。Focal Loss通过降低易分类样本权重、提高困难样本权重,缓解类别不平衡。

# 二分类 focal loss 简化版
import torch
def focal_loss(p, y, alpha=0.25, gamma=2.0, eps=1e-8):
    p = torch.clamp(p, eps, 1-eps)
    pt = torch.where(y==1, p, 1-p)
    at = torch.where(y==1, torch.tensor(alpha), torch.tensor(1-alpha))
    return -(at * (1-pt)**gamma * torch.log(pt)).mean()

12. 目标检测 one-stage 模型有哪些?

常见 one-stage:

  • YOLO 系列(v1~v10及衍生)
  • SSD
  • RetinaNet特点:速度快、部署友好;早期精度略低于two-stage,但新版本差距已明显缩小。

13. SSD 如何生成目标框(default box)?

SSD在不同尺度特征图上为每个位置预设多种比例与尺度的 default boxes;训练时用 IoU 将 GT 与 default box 匹配,学习类别和偏移量,实现多尺度检测。

14. YOLOv1 如何生成目标框?

YOLOv1把图像划分为 (S \times S) 网格,每个网格预测固定数量框及类别概率。由“网格负责其中心落入该网格的目标”完成检测,速度快但对小目标和密集目标较弱。

AI-Agent面试实战专栏 文章被收录于专栏

本专栏聚焦 AI-Agent 面试高频考点,内容来自真实面试与项目实践。系统覆盖大模型基础、Prompt工程、RAG、Agent架构、工具调用、多Agent协作、记忆机制、评测、安全与部署优化等核心模块。以“原理+场景+实战”为主线,提供高频题解析、标准答题思路与工程落地方法,帮助你高效查漏补缺.

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务