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-

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

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

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

全部评论

相关推荐

头像
03-18 10:36
绥化学院 Java
平时干活的时候,觉得自己挺厉害的。线上问题排查,看一眼日志就能定位到是哪段代码;线程池参数调优,随手配个队列大小心里就有数;。跟同事讨论技术方案的时候,甚至能说出“我觉得这里用ConcurrentHashMap比HashTable合适”这种有深度的话。那一刻,觉得自己是个成熟的Java开发了,八股文?那都是新手背的东西。然后面试前一周,开始心虚了。先是刷招聘网站,看看人家都问什么。好家伙,JVM内存模型、垃圾回收器对比、CMS和G1的区别、synchronized和ReentrantLock的底层实现……看着这些问题,脑子里开始冒问号:CMS我好像用过,但它的具体流程是什么来着?synchronized锁升级的过程,我记得是偏向锁到轻量级锁到重量级锁,但每个阶段触发的条件是什么?然后开始翻收藏夹里吃灰的博客,翻《深入理解Java虚拟机》,翻自己几年前记的笔记。最诡异的是,这些东西每天都在用,但一旦要“讲出来”,就发现脑子里是一团浆糊。就像会骑自行车,但让我写一篇《论自行车平衡原理及其在复杂路况下的应用》,也能写,但就是觉得怎么写都不对。会骑,但你不太会“说”你会骑。面试前一晚,是这种焦虑的巅峰。本来打算早点睡,养足精神。躺下之后,脑子里开始自动播放八股文:JVM运行时数据区,堆、栈、方法区、程序计数器……等等,方法区在JDK8之后叫什么来着?元空间。好,元空间。那元空间和永久代有什么区别?用本地内存了。那为什么用本地内存?因为永久代容易OOM……就发现停不下来了。然后爬起来,打开电脑,把线程池那几个参数又过了一遍:corePoolSize、maximumPoolSize、keepAliveTime、workQueue、threadFactory、handler。默默背了一遍拒绝策略有哪几种,AbortPolicy、CallerRunsPolicy、DiscardPolicy、DiscardOldestPolicy。背完觉得还不够,又把ThreadPoolExecutor的执行流程在脑子里跑了一遍:先看核心线程数,再看队列,再看最大线程数,最后走拒绝策略。嗯,应该没问题了。以为可以睡了,但突然想起还有个“你遇到最难的问题是怎么解决的”没准备。这是最耗神的。得从记忆里翻出一件事,既要有技术含量,又不能显得太蠢,最好还能体现思考和成长。想了半天,想起来去年有个线上内存泄漏的问题定位了好久,最后发现是第三方SDK的bug。但这个故事讲出来,会不会显得只是运气好?或者显得团队的基础设施不行?开始纠结措辞,在脑子里反复排练:当时现象是这样,我第一反应查了哪些指标,然后怀疑是哪里,最后怎么验证的,怎么解决的,事后做了什么复盘……等你想好怎么说,一看时间,凌晨两点。想着明天随缘吧。但躺下之后,心跳有点快,脑子里还在过HashMap的put流程。第二天去面试的路上,还在默念:红黑树,阈值8和64……念着念着,突然想笑:我天天写代码,什么时候用过自定义红黑树?面试前的这种“token消耗”,其实不是因为不会,而是因为太想证明自己会。怕答不上来,怕被问住,怕一个闪失就错失机会。但说实话,面试本质上是个沟通的过程,不是八股文背诵大赛。该失眠还是失眠,该背还是得背。
把自己当AI,现在最消耗...
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

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