ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

大疆计算机视觉算法笔试B卷复盘:三维视觉与工程化考点详解

大疆计算机视觉算法笔试B卷复盘:三维视觉与工程化考点详解 前天刚做完大疆的计算机视觉算法岗笔试B卷趁着记忆还热乎赶紧把整个过程和题目思路复盘一遍。当时我是在牛客网上面做的双机位监控全程不能切屏整体节奏相当紧凑差点没写完最后一道编程题。这篇文章主要给准备投大疆算法岗、计算机视觉方向的朋友一个参考尤其是对笔试难度、考点分布、时间分配还有哪些坑不太清楚的看完这篇基本能心里有个底。先说结论大疆的计算机视觉算法笔试题风格非常鲜明——极度务实、贴近真实业务场景不会故意出偏题怪题来刁难你但会在你自以为熟悉的基础概念上狠狠挖坑。和互联网大厂那种刷LeetCode为主的风格完全不同它更看重你对整个CV技术栈的理解深度和工程落地能力。1. 笔试概况与整体节奏1.1 大疆算法岗笔试到底在考什么大疆的算法笔试分为A卷和B卷题目内容会有差异但整体出题思路一致。我这次抽到的是B卷考试时长90分钟题型分布大概是这样单选、多选、两三道简答题、两道编程题。选择题占比最大覆盖了数学基础、图像处理、深度学习、三维视觉几乎每个方向都会考到。重点来了大疆的算法岗笔试和一般互联网公司最大的区别在于它对三维视觉、SLAM、相机模型这些内容的考察比例非常高。如果你平时主要做二维图像分类、目标检测对相机标定、对极几何、点云处理这些接触不多那笔试的观感大概就是“每个字都认识但每个选项都觉得模棱两可”。反过来如果你是做SLAM或者三维重建出身前面几道选择可能会觉得相当顺手。1.2 B卷的题型分布与时间分配建议B卷的具体题型分布我印象里是这样的选择题约12道包含单选和多选每题大约4-6分这部分占了大头简答题2-3道主要考察你对某个具体问题的理解和方案设计能力编程题两道一道偏数据结构与算法一道偏图像处理。总共90分钟时间非常紧张。我个人的失误在于在选择题上纠结太久尤其是有几道多选题总觉得有两个选项都能说得通消耗了大量时间。等到编程题的时候只剩不到四十分钟导致第二道图像处理的编程题写得不完整有些思路已经想到了但没有全部落实到代码里。事后复盘比较合理的时间分配是选择题控制在40-45分钟简答题15分钟左右剩下的三十分钟左右全部留给编程题。选择题实在拿不准的就标记一下先跳过去别在单题上死磕超过三分钟。2. 计算机视觉核心考点深度复盘2.1 图像处理与特征点提取这些基础题最容易踩坑图像处理部分的考点很典型卷积核计算、高斯滤波、边缘检测算子、直方图均衡化、图像金字塔这些基本都出现了。但大疆的出题风格比较灵活很少直接问你“Sobel算子的公式是什么”这种死记硬背的问题而是会给你一个具体的应用场景让你判断该用哪种方法或者该方法会带来什么效果。比如有一道题记忆比较深刻给你一个带有噪声的纹理图像需要做边缘检测用于后续的特征点提取问下列预处理步骤的先后顺序哪个合理。这里面的陷阱在于去噪和边缘检测的顺序、以及用均值滤波还是双边滤波都有讲究。如果先用强平滑去噪虽然噪声没了但边缘细节也模糊了后续边缘检测的定位精度会下降。比较好的方案是用保边滤波比如双边滤波或者引导滤波再做梯度计算。特征点部分考了ORB和SIFT的对比。题目给出一系列描述比如实时性要求高、需要专利规避、对尺度变化有要求让你选哪种特征点更合适。这里要注意虽然SIFT的尺度不变性更好但由于专利问题和计算量较大很多实际工程项目包括大疆的一些视觉方案更倾向于用ORB或其改进版本。如果你只是背了“SIFT比ORB好”这个结论这道题就容易错。2.2 三维视觉与相机标定这是大疆笔试的分水岭如果说图像处理题是基础分那三维视觉相关的题目就是真正的分水岭。B卷里相机模型、畸变校正、对极几何、本质矩阵、单应矩阵基本都有涉及。有一道多选题问在双目立体匹配中极线校正的作用和原理。选项包括了“使左右图像的对极线平行”、“降低匹配搜索维度”、“消除镜头畸变”、“使同名点在左右图像同一行上”其中前两个和最后一个都是对的“消除镜头畸变”这个选项是干扰项极线校正并不负责畸变消除畸变校正是更早的步骤。这类题考察的不只是记忆而是整个三维视觉知识链的完整度。我建议准备时把几个核心概念串起来理解相机的内参矩阵K焦距、主点、外参旋转R和平移t、畸变系数径向和切向然后搞清楚从世界坐标系到像素坐标系的一整个投影链路。只要这条链路通了很多题即使具体选项没看过也能根据原理推出来。另外还有一道题关于单应矩阵H的应用场景。题目问哪些场景下可以用单应矩阵来描述两幅图像之间的变换选项是纯旋转的相机运动、相机看一个平面场景、相机做纯平移运动、任意两个视角下的三维场景。答案是前两项。我当时对“纯旋转”这个选项犹豫了一下后来想想确实是对的因为纯旋转时两帧之间的对应点可以由无限远的平面上的一点来描述单应矩阵成立。而纯平移会产生视差效应必须用对极几何来描述不能用单应矩阵统一建模。2.3 深度学习与模型部署工程化能力决定你能不能过深度学习相关的题目主要集中在卷积网络的基本原理、注意力机制、轻量化网络设计以及模型部署中的量化感知训练。有一道题考察了空洞卷积的感受野计算给了卷积核大小、膨胀率等参数让你计算输出特征图的尺寸和感受野。这种题只要你理解并记住感受野的递推公式RF_new RF_old (kernel_size - 1) × dilation_rate基本上就能做对。大疆笔试特别关注模型在嵌入式设备上的落地情况这和它们做无人机、手持云台等硬件产品的业务密切相关。有一道简答题问的是在算力有限的嵌入式平台上部署目标检测模型你会如何做模型加速和轻量化设计。我当时答了几个层面在模型层面用MobileNet或ShuffleNet这类轻量级骨干、使用模型剪枝和知识蒸馏在推理层面使用TensorRT或NCNN加速开启FP16精度如果还嫌不够就用INT8量化但要注意校准数据集的选择否则精度掉得厉害。这个思路基本就是工程里最常用的组合拳。还考了一道关于BatchNorm在训练和推理阶段行为差异的题。训练时BN使用当前batch的均值和方差推理时使用训练阶段统计好的全局均值和方差。这个点很多人背过但题目做了一个变形问在batch size很小的情况下训练时BN的稳定性问题以及如何缓解选项包括了同步BN、降低BN momentum、使用Group Norm替代等。这就考察你是否真正理解了BN统计量在不同场景下会产生什么影响属于联想应用型的题目。3. 算法题的解题思路与踩坑实录3.1 编程题第一道经典算法题的变体要会解也要会讲B卷的编程题第一道是一道动态规划或者贪心类的问题大意是给定一个数组表示某个任务序列的资源消耗或收益让你求满足某个约束下的最优值。题目原型其实很像常见的“跳跃游戏”或“任务调度最大化收益”问题但在一些边界条件上做了改动。我的经验是这种看起来眼熟的题千万不要直接默写模板。先花两分钟看数据范围判断时间复杂度的容忍值然后注意题目的约束条件有没有和经典版本不一样。比如经典版本里下标从0开始题目给的是从1开始这会影响dp数组的初始化和边界判断。我在写第一道编程题时就因为数组下标没对齐浪费了好几分钟调试。如果时间紧张至少要写出暴力解法并保证样例能过然后再优化。判卷系统会先跑用例暴力解法通常能拿一半以上的分只有部分超大规模用例过不了。直接用一个能说明思路的解法过样例比闷头追求最优解然后没写完要划算得多。3.2 编程题第二道图像处理算法的实现从思路到编码的完整链路第二道编程题考察的是图像处理算法的实现具体是一个类似卷积或滤波操作的代码填空。给你一个输入的二维数组表示灰度图像让你实现均值滤波或者中值滤波并处理图像的边界问题。核心考点其实不在算法本身而是在于你是否能正确处理边界以及是否理解padding的几种模式包括零填充、复制填充、镜像填充。我当时在第二道题上踩了一个大坑在处理边界时直接跳过了边界像素没做任何填充处理想着反正边界像素占比小忽略也没关系。但题目明确要求输出图像尺寸保持不变那我这种做法直接导致输出矩阵的尺寸和原来不一致程序运行直接报错。意识到问题后赶紧改成镜像填充好在语言基础比较扎实最后勉强调通但时间确实不够再做进一步的优化。这里想跟各位说编程题写图像处理算法时第一步不是急着写卷积循环而是把输出尺寸、边界处理方式、数据类型这三件事先想想清楚。这种题不是为了刁难你而是检验你是不是真的有代码落地的习惯是否具备完整的工程思维。3.3 手撕代码时的几个关键习惯在笔试环境里没有IDE的自动补全只能靠纯手打代码几种常用的算法模板一定要提前写好并烂熟于心。比如二分查找的边界写法、DFS/BFS的框架、最大公约数、前缀和数组、单调栈这类高频模式在笔试时直接用模板可以大幅降低出错率。另一个经验是代码的变量命名也尽量规范。有些判卷系统会人工复看代码尤其是简答题和编程题的回答如果你的变量名是a、b、c之类泛化的字母就算跑通了也可能影响面试官对你的印象。用grid、dp、visited、padSize这种能够见名知意的命名会更贴近一个成熟工程师的代码风格。4. 常见问题与排查技巧实录4.1 我踩过的坑和复盘总结笔试过程中我反复被几个问题绊住写出来也希望大家避一避坑。第一个坑是多选题漏选。大疆笔试的多选题规则是少选得部分分、错选倒扣分或者不得分具体的计分规则需要在考试前仔细阅读说明。如果规则是错选不得分那对于不确定的选项宁愿不选也不要冒险多选。我当时因为纠结一道关于相机标定多选题最后选了一个不确定的选项结果整道题零分非常可惜。第二个坑是简答题答得太散。有一道简答题关于多传感器融合中视觉和IMU的标定问题我洋洋洒洒写了一大堆但没有用分点或者分步骤的结构来组织答案预期面试官看到会觉得逻辑不够清晰。这种问答题一定要分步骤作答比如先回答外参标定通常指什么再回答标定方法的基本流程最后补充注意事项条理清楚比篇幅长更重要。第三个坑是过度纠结编程题的最优解法。第一道编程题我其实已经有了一个DP思路但总觉得还可以优化到更优复杂度反复修改逻辑反而引入了不少边界错误。现在回头看笔试的判卷逻辑是按运行通过率给分一个能跑通所有测试用例的普通解法拿的分远高于一个没写完的“最优解法”。在限定时间内能稳定拿分的方案就是好方案。4.2 大疆笔试题型变化趋势与应对策略从这次的真题体验以及我搜集到的往年面经来看大疆算法岗的笔试题越来越偏向对工程能力和系统理解能力的综合考察单纯靠刷题很难拿高分。选择题对概念的考察深度在增加题干里经常混入实际业务背景比如在无人机避障场景下问你该用什么传感器融合策略、在手持云台稳定场景下该用什么控制策略和视觉算法。针对这种趋势准备时的核心策略是跳出零散的知识点建立一个完整的知识地图。比如从相机标定、特征提取、立体匹配、位姿估计、建图定位再到目标检测、语义分割、模型部署这几个关键模块之间的串联关系和典型的数据流要非常清楚。面试官想看到的不是你会背结论而是你真的理解一个完整的视觉系统是怎么搭建起来的每个环节的输入输出是什么、坑在哪里、业界主流做法是什么。4.3 备战大疆笔试可以用到的资料和路线参考如果你是准备投递大疆视觉算法方向我的建议是不要直接刷题先把知识框架建立起来。推荐从经典的视觉教材和公开课入手建立图像处理、特征点、多视几何这几个基础模块然后重点啃透相机模型、极线几何、光流与立体匹配这几块硬骨头这是大疆比较看重的部分。同时也要保持对业界新技术方向的敏感度比如基于Transformer的检测头、BEV视角下的感知方案、统一特征表示等在智能驾驶和机器人中快速普及的技术很有可能会出现在笔试或面试的讨论中。从时间规划上来说如果还有一到两周优先看三维视觉相关的高频考点比如张正友标定法的原理和流程、对极几何里的基础矩阵和本质矩阵的区别、RANSAC在特征匹配中的应用场景、双目立体视觉的完整流程。这些内容密度大、在笔试中占比高短期突击的价值也最大。如果还有一个月以上建议配合简单的代码实践比如用矩阵变换实现一个基本的相机投影过程或者手动实现一个NMS和IoU计算这两个是目标检测里最基础也最常脱手写的代码。4.4 笔试后还有哪些需要留意的事项笔试结束后大概一到两周内会收到后续通知这个阶段不要把时间浪费在焦虑上。建议趁记忆还新鲜立刻做一次完整的复盘把你记住的题目和考点整理出来哪怕只是列一个清单。复盘的意义不仅仅是针对这一场考试而是在这个过程里你会发现自己哪些模块的理解是薄弱的是深度学习原理不清楚还是三维视觉的基础概念不牢还是代码手速跟不上。把这些薄弱点记录下来补上对应的知识盲区这也是面试前最好的备战方式。另外多说一句大疆的面试流程通常不止一面笔试之后会有技术面、现场面或者综合面很多高级别岗位还会要求做PPT讲项目经历。笔试只是投递过程中的第一道门槛即使笔试发挥不理想也不代表整个流程终结后续面试是一次又一次重新证明自己的机会。手上有拿得出手的项目经历的话一定要提前梳理清楚项目的动机是什么、你用哪些方法解决了什么问题、模型推理效果和性能如何、和Baseline对比的指标差异、如果重来一遍哪些环节你会做得不一样。这些内容比临时背十道八股文都要重要。我在实际准备阶段感受最深的就是大疆的笔试题目和它自己的业务场景绑得非常紧。你平时如果习惯只看论文和刷题对产品落地和系统架构缺乏感觉做起来会有明显的吃力感。反过来如果你亲手搭过一套完整的视觉系统哪怕功能很简陋也不管是用在了机器人还是手机上只要你对它做了调试、优化甚至推到嵌入式设备上跑过做这套题的时候就会有一种莫名的熟悉感。最后再分享一个小技巧笔试前把常见相机标定和双目立体匹配里的核心公式在草稿纸上单独抄一遍比如针孔相机模型、极线约束方程、三角测量原理、深度与视差的关系。这些公式考场上如果临时推演容易紧张出错但提前抄一遍会有一种天然的底气。祝大家笔试顺利都拿到心仪的面试机会。
返回列表