深夜的工厂车间里,机器嗡鸣如心跳。传送带上,一片片金属零件以每秒三个的速度经过一座半封闭的“小房子”——房子里没有工人,只有一束强光、一台相机,和一块高速运算的芯片。这是“工业体检中心”的急诊室,主角是一位从不出错的视觉医生。 这位医生不抽血、不把脉,只用相机给产品做“视觉体检”——这就是机器视觉质检。最初它只会“平面体检”,像拍X光片一样,靠黑白灰度图判断产品表面是否有划痕、污点,这叫2D视觉。可有些缺陷“色差极小、暗藏深坑”,平面照片上看过去天衣无缝,医生只能干着急。于是医院引进了“立体CT师”——3D视觉,用激光和结构光把产品表面的高低起伏重建出来,连0.1毫米的凹陷都无处遁形。为了让成百上千的产品有序检查,医院搭起了一条名为AOI的自动化体检流水线:产品进入暗室、闪光灯一亮、相机咔嚓、算法判读、坏品落箱。而真正掌握这家医院命运的,是不断给视觉医生“上课”的AI工程师——他们设计光源、挑选相机、训练缺陷分类模型,把诊断准确率一点点推到99%以上。今天,我们就走进这家体检中心,看看2D与3D两位医生各有什么绝活,AOI流水线如何运转,以及AI如何让它越用越聪明。

岗位关联

职业价值:机器视觉是智能制造中落地最快、回报最直接的AI方向;掌握2D/3D成像、AOI架构与模型调优,等于拿到了“懂产线、懂算法、懂成本”的复合型AI工程师证书。

目录
  1. 可视化演示
  2. 视觉成像基础:先把“眼睛”配齐
  3. 2D视觉检测:平面影像的读片术
  4. 3D视觉检测:立体CT的看家本领
  5. AOI架构设计:把体检流程自动化
  6. 缺陷分类方法:医生如何写诊断书
  7. 模型优化策略:越用越准的诊断经验
  8. 工程落地实践:把体检中心搬进车间
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

通过AOI检测架构、2D/3D缺陷对比和检测指标雷达三个维度,动态展示自动光学检测管线、二维三维检测能力差异与缺陷分类性能评估。

本节配有交互动效(进入视口后自动加载,约 3KB)。

AOI自动光学检测架构 采集→预处理→检测→分类 实时缺陷报警 Image→Defect→Alert

视觉成像基础:先把“眼睛”配齐

体检科医生再厉害,也离不开拍片室的灯光——灯光太暗看不清病灶,角度不对阴影掩盖病情。工业质检的“眼睛”同样由三件套构成:光源负责打光,镜头负责聚焦,相机传感器把光变成数字图像。三者配合得好,缺陷才会“现形”;配合不好,再贵的设备也是睁眼瞎。

很多初学者以为“买最贵的相机就万事大吉”,其实工业现场最值钱的经验恰恰在光源设计上。同一个划痕,在暗场照明下会反射出刺眼的亮线;在明场照明下却可能与背景融为一体。打光打得好,普通工业相机也能轻松检出;打光打得差,2000万像素照样白费。相机选型要同时看分辨率(决定最小可分辨缺陷)、帧率(决定检测节拍上限)和靶面大小(决定视野范围),这是“眼睛”的先天条件。

衡量照明质量的核心指标是对比度——缺陷区域与正常表面的灰度差异程度:

就像体检中心根据部位更换灯箱一样,视觉工程师手里也有一本“打光秘籍”:光滑金属件用同轴光消除反光,漫反射塑胶件用穹顶光均匀照亮,高速运动件用频闪补光冻结画面。眼睛配齐了,“视觉医生”才有发挥功底的基础。

C=Lf−LbLb\displaystyle C = \frac{L_f - L_b}{L_b}
公式通俗说明:可以把 $L_f$ 看成“伤口颜色”,$L_b$ 看成“周围皮肤颜色”,对比度就是伤口的“显眼程度”——越显眼,机器越好认。
  1. 前景亮度 $L_f$缺陷区域的像素灰度均值,比如划痕比背景亮,$L_f$ 就更大。
    LfL_f
  2. 背景亮度 $L_b$产品正常表面区域的灰度均值,作为归一化基准,消除整体光照强弱的影响。
    LbL_b
  3. 差值 $L_f - L_b$缺陷与背景的绝对灰度差,差值越大缺陷越容易从图像中分离出来。
    Lf−LbL_f - L_b
  4. 归一化与工程阈值 $C > C_{min}$工程经验要求对比度高于 0.3 才稳定检出,否则需要调整光源角度、亮度或波长。
    Lf−LbLb>0.3\frac{L_f - L_b}{L_b} > 0.3

2D视觉检测:平面影像的读片术

2D视觉医生拿的是一张X光片。只要物体表面存在印痕、色斑、异物,就会在黑白影像里留下灰度差异,这是最经典、最经济的读片方式,也是大多数工厂质检的第一站。

2D质检的输入是一张普通工业相机拍摄的灰度图或彩色图,任务是解决三类问题:表面缺陷、字符识读和边缘测量。

表面缺陷是划痕、污点、压伤、气泡的统称。缺陷区域与背景的灰度不同,工程师设定一个“灰度分界线”(阈值),就能把暗斑或亮斑从背景中抠出来;字符识读是让机器读出喷印在零件上的生产日期、批次码,先抠出字符区域再交给OCR引擎识别;边缘测量利用灰度突变点定位工件的边界轮廓,从而算出长宽、孔径、间距等尺寸是否超差。

要找到灰度突变点,最常用的工具是梯度——衡量图像上某个点“灰度变化有多剧烈”的指标:

不过,X光片也有盲区:如果缺陷与背景几乎同色——比如透明的气泡、同色系的压痕——灰度差异趋近于零,梯度法再灵敏也无能为力。这时,平面读片术就“黔驴技穷”了,需要请出立体CT师。

G=(∂I∂x)2+(∂I∂y)2\displaystyle G = \sqrt{\left(\frac{\partial I}{\partial x}\right)^2 + \left(\frac{\partial I}{\partial y}\right)^2}
公式通俗说明:想象走在一段陡坡上——水平方向在爬坡、垂直方向也在爬坡,坡越陡、方向越乱,越说明这里藏着一条“边界”。
  1. 水平方向变化率 $\partial I / \partial x$计算每个像素在水平方向上的灰度变化快慢,突变处数值骤然增大。
    ∂I∂x\frac{\partial I}{\partial x}
  2. 垂直方向变化率 $\partial I / \partial y$同理计算垂直方向的变化,专抓水平走向的边缘。
    ∂I∂y\frac{\partial I}{\partial y}
  3. 两个方向平方和开方把水平和垂直的变化率合成一个总幅值,避免只朝一个方向看而漏掉斜向边缘。
    (∂I∂x)2+(∂I∂y)2\sqrt{\left(\frac{\partial I}{\partial x}\right)^2 + \left(\frac{\partial I}{\partial y}\right)^2}
  4. 梯度幅值 $G$$G$ 越大说明该点越可能是边缘,配合阈值即可得到一条条边缘线,完成尺寸测量。
    G=(∂I∂x)2+(∂I∂y)2G = \sqrt{\left(\frac{\partial I}{\partial x}\right)^2 + \left(\frac{\partial I}{\partial y}\right)^2}

3D视觉检测:立体CT的看家本领

X光片看不出的暗伤,CT一照便知。2D视觉缺失的“高度维度”,正是3D视觉的看家本领。它不关心表面颜色的深浅,只关心一点:这个位置高了还是低了?凹了还是凸了?

3D视觉的任务不是拍出更漂亮的照片,而是测量物体表面每一个点的真实高度,最终输出一张“高度地形图”(深度图)或由数百万个三维点组成的“点云”。三种主流方案各显神通:

激光三角法是3D质检的主力。一条激光线投射到物体表面,相机从斜上方拍摄。当表面存在凹陷或凸起,激光线在相机画面里就会左右偏移,偏移量经过换算即得高度。结构光法则像投影仪打出光栅条纹,条纹受表面形貌调制发生扭曲,通过解相位恢复深度,适合大视野静态测量。点云分析负责最后一步:把深度数据拟合成理想平面,剔除噪声点,计算每个点与理想面之间的偏差,从而量化缺陷的面积、深度和体积。

激光三角的核心几何关系极为简洁:

回到体检比喻:2D医生看到的是“皮肤表面颜色”,3D医生摸到的是“骨骼凹凸”。单色压痕、胶路塌陷、引脚共面性——这些在2D画面里隐形的问题,在3D高度图中全部暴露。工业级质检,经常是两人协作:2D抓纹理,3D量形貌。

Z=b×fxd\displaystyle Z = \frac{b \times f}{x_d}
公式通俗说明:激光器和相机是两只“斜眼”,物体越高,两只眼的“视线夹角”差异越大,反映在相机芯片上就是光点偏移越多——偏移量就是高度的尺子。
  1. 基线 $b$激光器与相机光心之间的水平距离,出厂时固定并标定,是高度测量的“尺子基准”。
    bb
  2. 镜头焦距 $f$决定像面放大比例,焦距越长,同一偏移量对应的深度分辨率越高。
    ff
  3. 像面位移 $x_d$缺陷点在相机传感器上的落点相对基准位置偏移的像素距离,是公式里唯一实时变化的量。
    xdx_d
  4. 计算高度 $Z$物体越高,$x_d$ 越大,$Z$ 与 $x_d$ 成反比。实际设备通过标定板预先确定 $b$、$f$ 与像素尺寸的对应关系,运行时即可实时输出毫米级高度。
    Z=b×fxdZ = \frac{b \times f}{x_d}

AOI架构设计:把体检流程自动化

体检科要同时服务大量病人,靠的不只是医生水平高,还有一条流畅的流水线——扫码、拍片、读片、出报告。工厂里的AOI(自动光学检测)就是这套流水线的工业版:把“人看显微镜”升级为“机器自动看”,24小时不眨眼。

一条标准的AOI产线有四个环节。上料定位:产品通过传送带进入,传感器或光电触发相机拍照,位置偏了要先做模板匹配纠正坐标;成像采集:在遮光罩屏蔽外界光的环境下,光源与相机配合拍下高对比度图像(2D或3D);算法判读:图像传给算法模块,先预处理、再定位、后分类,输出缺陷类型与位置;结果判定与分选:根据规则把产品判为良品/次品,PLC控制气缸把次品推出轨道。

AOI架构的灵魂是“节拍”——每件产品允许消耗的时间。所有环节都得掐着秒表跑:

好的AOI架构,是软硬件协同设计的产物:硬件端遮光、减震、到位触发做得扎实;算法端做到“粗筛快、精判准”两级流水。这样整个体检中心才能有条不紊,既不会漏放一个病人,也不会让好产品白等。

T=timg+tproc+tjudge≤Treq\displaystyle T = t_{img} + t_{proc} + t_{judge} \le T_{req}
公式通俗说明:体检流水线的总耗时 = 拍片时间 + 医生读片时间 + 写报告时间,三者相加绝不能超过病人的“排队预算”。
  1. 成像时间 $t_{img}$曝光时间、传感器读出与图像传输的时间总和,高速线需要全局快门来冻结画面。
    timgt_{img}
  2. 处理时间 $t_{proc}$去噪、增强、定位、特征提取等图像预处理与算法耗时,是优化空间最大的环节。
    tproct_{proc}
  3. 判定时间 $t_{judge}$规则判断或深度模型推理耗时,深度模型上产线前必须做推理加速,否则会卡爆节拍。
    tjudget_{judge}
  4. 节拍约束 $T \le T_{req}$三项之和超过产线允许的单件上限,就必须裁剪算法或升级算力,否则流水线会追不上传送带。
    timg+tproc+tjudge≤Treqt_{img} + t_{proc} + t_{judge} \le T_{req}

缺陷分类方法:医生如何写诊断书

同样是“皮肤发红”,可能是过敏,也可能是烫伤。质检也一样:同一块暗斑,也许是灰尘,也许是划伤,也许是凹坑——病因不同,处置方式天差地别。缺陷分类,就是给“病”起名字。

工业界最常用的分类特征分三类。灰度特征看明暗:统计缺陷区域的灰度均值、方差、与背景的灰度差,用来区分亮斑、暗斑、纹理异常;几何特征看形状:面积、周长、圆度、长宽比、主轴方向,一条细长的划痕和一颗圆润的脏污,用长宽比就能轻松分开;而深度模型则彻底告别手工设计特征——卷积神经网络自动从大量标注样本中总结出“什么模样像缺陷”,尤其在纹理复杂、缺陷形态多变的场景(如布料、皮革、漆面),深度学习优势显著。

深度缺陷分类模型的基本运算是一次卷积加激活:

在实际AOI系统中,传统特征与深度模型不是二选一,而是分级合作:灰度+几何特征做毫秒级粗筛,把大量明显良品快速放行;只有可疑区域才进入深度模型精判。医生先做快速初诊,疑难杂症再请专家会诊——既保证速度,又保证准确率。

h=ReLU(W⊛x+b)\displaystyle h = \mathrm{ReLU}(W \circledast x + b)
公式通俗说明:一卷印着“标准缺陷模板”的胶带(卷积核)在画面上滑动,每滑到一个位置就比对“像不像缺陷”,比对结果经非线性“翻译”后,输出一张标出可疑点的热力图。
  1. 卷积运算 $W \circledast x$卷积核 $W$ 在输入图像 $x$ 上滑动并做加权求和,相当于用一组可学习的“缺陷模板”匹配局部图案。
    W⊛xW \circledast x
  2. 加入偏置 $b$给每个输出通道加一个可学习偏移量,让网络拟合更灵活,就像给评分标准加一个基准分调整。
    W⊛x+bW \circledast x + b
  3. ReLU 激活把负值全部压成 0,正值保持不变,引入非线性,让多层网络能表达复杂的缺陷模式。
    ReLU(t)=max⁡(0,t)\mathrm{ReLU}(t) = \max(0, t)
  4. 输出特征图 $h$响应值大的位置意味着“这里出现了卷积核感兴趣的模式”,后续接全连接层即可输出缺陷类别概率。
    h=ReLU(W⊛x+b)h = \mathrm{ReLU}(W \circledast x + b)

模型优化策略:越用越准的诊断经验

主治医师的水平不是天生的,靠的是进修:多看疑难病例、校准诊断标尺、提速门诊效率。视觉质检模型的优化,恰好也是这三板斧——数据增强、参数调优、推理加速。

数据增强是给模型“看更多疑难杂症”:把已有的缺陷样本做旋转、缩放、加噪声、模拟不同光照,让模型学会在各种环境下认出缺陷,防止换一条产线、换一种光线就“脸盲”。参数调优是“校准诊断标尺”:最重要的标尺是判定阈值——阈值提高,误检减少但漏检增多;阈值降低,漏检减少但误检飙升。工程师往往以 F1 分数作为综合体检指标来寻找最佳阈值:

推理加速则是“提速门诊”:模型量化把浮点小数换成整数、网络剪枝砍掉冗余连接,再用TensorRT等引擎优化,往往能让推理速度提升2到5倍而不明显掉精度。在三板斧配合下,质检模型越跑越快、越用越稳。

F1=2×P×RP+R\displaystyle F1 = \frac{2 \times P \times R}{P + R}
公式通俗说明:P 是“诊断书上的病确实都是病”(少误诊),R 是“真病一个不漏”(少漏诊)。F1 是这两项成绩的“综合评分”,偏科任何一项都会拖低总分。
  1. 精确率 $P$在所有被判为缺陷的样本中,真正是缺陷的比例;P 低 = 把好产品误杀得多,浪费物料。
    P=TPTP+FPP = \frac{TP}{TP + FP}
  2. 召回率 $R$在所有真实缺陷中,被正确揪出来的比例;R 低 = 缺陷漏出去,流到客户手里引起索赔。
    R=TPTP+FNR = \frac{TP}{TP + FN}
  3. 调和平均 $F1$P 和 R 的调和平均,任何一个太低都会把总分拉下来,因而成为产线调试的“统一指挥棒”。
    F1=2×P×RP+RF1 = \frac{2 \times P \times R}{P + R}

工程落地实践:把体检中心搬进车间

再好的检测方案,走出实验室、站上产线才是真本事。把体检中心搬进车间,要解决三个工程问题:工位怎么装、节奏怎么卡、模型怎么养。

产线部署讲究“稳”字当头。相机支架要足够刚性,避免震动导致图像模糊;外部光源必须用遮光罩隔离,防止车间照明干扰;强电设备要远离相机信号线,避免电磁噪声。安装角度、工作距离、触发信号都要逐项标定。

节拍控制讲究“算”字先行。投产前必须用公式预估单件耗时,上线后用高速触发+并行流水线设计(成像的同时处理上一件)把节拍压进预算。若超标,优先优化预处理算法,其次考虑GPU加速,最后才考虑降低分辨率——分辨率动一寸,检出能力退一丈。

迭代维护讲究“养”字长效。产线每天产生十万级真实图像,其中包含新形态缺陷(换料批次、刀具磨损都会带来新异常)。成熟的做法是建立缺陷样本回流机制:每周收集AOI误判与漏判的图片,人工复核后加入训练集,对模型做增量训练,并监控漏检率、误检率、停机频率三项KPI。质检系统不是“一次上线、一劳永逸”,而是像医生一样,靠持续积累临床经验越用越可靠。

优化方向的最终裁判不是准确率,而是钱:

至此,工业体检中心的完整画像浮出水面:2D医生看表面,3D医生量深度,AOI流水线保秩序,缺陷分类定诊断,模型优化长经验,工程落地成闭环。这套“体检系统”,正是智能制造里最朴实也最能赚钱的AI应用。

Ctotal=Cfn×Nfn+Cfp×Nfp\displaystyle C_{total} = C_{fn} \times N_{fn} + C_{fp} \times N_{fp}
公式通俗说明:漏掉一个坏品赔给客户的损失,加上误杀掉一个好品浪费的材料成本,两者之和才是质检系统真正的“体检账单”。
  1. 漏检损失 $C_{fn} \times N_{fn}$缺陷品流出工厂造成的退货、赔偿与品牌损失,$N_{fn}$ 是漏检数量。
    Cfn×NfnC_{fn} \times N_{fn}
  2. 误检损失 $C_{fp} \times N_{fp}$良品被误判报废造成的物料浪费与补产成本,$N_{fp}$ 是误检数量。
    Cfp×NfpC_{fp} \times N_{fp}
  3. 总质量成本 $C_{total}$两类损失之和,工程优化的目标不是追求100%检出,而是让总成本最小化。
    Ctotal=Cfn×Nfn+Cfp×NfpC_{total} = C_{fn} \times N_{fn} + C_{fp} \times N_{fp}

AI 应用场景

新能源电池极片表面凸点检测

阶段:3D视觉检测 + 点云分析

解决的问题:锂电池极片涂层若出现微小凸起,会在卷绕时压破隔膜导致短路。传统人工目检效率低,且凸起常与背景颜色相近,2D相机难以分辨,只能靠3D高度信息发现。

具体案例:某电池厂在涂布机出口部署激光三角3D相机,以每分钟80米的速度扫描极片表面,实时生成高度剖面;当点云分析检测到超过0.05mm的凸起时,系统在0.2秒内标记坐标并触发报警停机。上线后漏检率从人工的2.3%降至0.1%。

芯片封装AOI检测

阶段:AOI架构设计 + 缺陷分类

解决的问题:芯片引脚共面性偏差(一根引脚矮了几微米)会导致焊接不良,这类缺陷几乎不存在灰度差异,必须用3D检测;同时芯片表面的划痕又需要2D灰度检测。单一方案无法覆盖。

具体案例:半导体封装厂采用2D+3D复合AOI工位:2D相机先检查表面划痕与污染,3D激光轮廓仪测量引脚高度与共面性;两路数据汇入判定逻辑,按缺陷类型分流到复检或报废。产线节拍25ms/颗,误检率低于0.5%。

汽车涂装漆面外观质检

阶段:缺陷分类 + 模型优化

解决的问题:漆面的打磨痕、流挂、尘埃颗粒形态各异、对比度极低,传统灰度阈值分割完全失效,需要深度学习模型自动学习复杂缺陷模式。

具体案例:某整车厂在喷涂线末端部署多台面阵相机联合采集漆面图像,深度卷积网络对缺陷做像素级分类(打磨痕/流挂/气泡/纤维)。团队用数据增强模拟不同光照角度,以F1分数指导阈值调优,把模型推理时间压缩到80ms以内,实现在线全检。

Python 演示

python42 行
import numpy as np def make_surface(size=200, defect_center=(100, 100), defect_radius=15):    """模拟产品表面:灰度图与高度图,缺陷在高度上凹陷但色差极小"""    y, x = np.mgrid[0:size, 0:size]    dist = np.sqrt((x - defect_center[0]) ** 2 + (y - defect_center[1]) ** 2)    gray = np.full((size, size), 128.0)    depth = np.zeros((size, size))    defect_mask = dist < defect_radius    # 色差仅 2 个灰度级,阈值分割极难检出    gray[defect_mask] += 2.0    # 高度凹陷最大 50 个单位,3D 检测非常明显    depth[defect_mask] -= 50.0 * (1.0 - dist[defect_mask] / defect_radius)    return gray, depth, defect_mask  def detect_gray(gray, threshold=5.0):    """2D 阈值分割:用灰度偏差找缺陷"""    diff = np.abs(gray - gray.mean())    return diff > threshold  def detect_depth(depth, threshold=10.0):    """3D 阈值分割:用高度偏差找缺陷"""    diff = np.abs(depth - depth.mean())    return diff > threshold  def main():    gray, depth, truth = make_surface()    mask_2d = detect_gray(gray)    mask_3d = detect_depth(depth)    total = truth.sum()    ok_2d = (mask_2d & truth).sum()    ok_3d = (mask_3d & truth).sum()    print(f"真实缺陷像素数: {total}")    print(f"2D 检出: {ok_2d} ({ok_2d / total * 100:.1f}%)  ——色差太小几乎全部漏检")    print(f"3D 检出: {ok_3d} ({ok_3d / total * 100:.1f}%)  ——高度差异明显全部命中")  if __name__ == "__main__":    main()
目的:模拟同一个“色差极小、高度凹陷”的缺陷分别经 2D 灰度检测与 3D 高度检测的效果,直观复现本章核心结论——2D 看色差、3D 量高度。
  1. dist = np.sqrt((x - defect_center[0]) ** 2 + (y - defect_center[1]) ** 2)计算每个像素到缺陷中心的欧氏距离,距离小于半径的像素构成缺陷区域。
  2. gray[defect_mask] += 2.0只把缺陷区的灰度提高 2 个灰度级,模拟“肉眼几乎看不出”的低对比度缺陷。
  3. depth[defect_mask] -= 50.0 * (1.0 - dist[defect_mask] / defect_radius)让缺陷区的高度按下凹曲线减小,模拟一个深度明显的凹坑。
  4. diff = np.abs(gray - gray.mean())计算每个像素与整体灰度均值的偏差,这是 2D 阈值分割最朴素的特征。
  5. (mask_2d & truth).sum()把检测结果与真实缺陷区域做“与”运算,统计真正被检出的缺陷像素数,以此计算召回效果。

常见误区

误区“只要把相机像素从500万换成2000万,什么缺陷都能检测出来,钱花到位就行。”

正解像素决定“看得清”,但光源设计决定“看得见”。如果缺陷与背景的灰度差只有2个灰度级,像素再高也拍不出差异;反而是改变光源角度制造阴影或反光,才能让缺陷“显形”。对比度公式告诉我们,提升检出的优先手段是改善照明,而不是盲目升级相机。

为何常见:厂商营销常把“超高像素”作为核心卖点,初学者容易忽视光学系统中光源、镜头、相机三者的协同。

误区“3D相机又贵又慢,分辨率高、功能强的2D相机迟早把它淘汰。”

正解2D只能感知平面上的灰度差异,对于“色差极小但高度有落差”的缺陷——比如单色压痕、引脚共面性偏移——2D画面中几乎不可见,而3D高度图一目了然。两者是互补关系:2D擅长表面纹理与颜色异常,3D擅长立体形貌与几何偏差,替代不了。

为何常见:日常接触的产品缺陷大多颜色可见,容易让人忽略“同色异形”这类只有3D能感知的缺陷。

误区“CNN 这么强,直接上深度模型全部搞定,传统灰度/几何算法是过时技术。”

正解AOI产线要求毫秒级响应、判定可解释、训练成本可控。传统灰度与几何特征运算极快、逻辑透明、无需大量样本;深度模型处理复杂纹理缺陷确实更强,但需要海量标注、推理耗电且误判难解释。工程主流是传统算法做粗筛、深度模型做精判的组合打法。

为何常见:技术文章里的 SOTA 都是在公开数据集上比精度,而工业现场比的是成本、速度与可靠性,两者评价标准完全不同。

误区“3D相机不过是拍出来的图更有立体感,图像处理方式和2D差不多。”

正解3D成像原理与2D完全不同。激光三角是“投一条激光线+相机斜看偏移”,结构光是“投光栅+解相位”,输出的是深度图或点云,而非普通彩色图。后续算法处理的是“距离测量数据”,要做点云配准、平面拟合、偏差计算,灰度阈值那套基本用不上。

为何常见:3D相机的演示视频常渲染成炫酷三维模型,让人误以为只是“更精细的图像”,忽略了底层是测距系统。

误区“我的模型准确率99.9%,检测系统完全可以替代质检员了。”

正解产线上良品与缺陷比例可能高达10000:1,模型只要把所有产品判为良品,准确率就是99.99%——但漏检率是100%。必须看召回率、精确率与F1,还要验证是否在目标节拍内跑完。准确率在极度不均衡的数据上会欺骗人,F1和误判成本才是工程铁律。

为何常见:初学者在均衡数据集上训练,准确率高很容易;一旦面对真实产线的极端类别不均衡,指标立刻失真。

面试题

Q1. 机器视觉质检中,2D视觉主要依靠什么信号来区分缺陷?

单选题 · easy

  • A.物体表面的颜色或灰度差异← 正确答案
  • B.物体表面的三维高度差
  • C.物体的材料密度分布
  • D.物体的温度分布状态

答案:A。2D相机拍下的是平面灰度或彩色图,缺陷检测依赖缺陷区域与背景的灰度差值;高度差信息属于3D视觉的范畴。材料密度与温度不是2D相机能感知的信号。

Q2. 相比2D视觉,3D视觉独有的核心能力是?

单选题 · easy

  • A.拍摄物体的彩色图像
  • B.恢复物体表面高度形貌← 正确答案
  • C.读取印刷字符信息
  • D.测量平面像素尺寸

答案:B。3D视觉通过激光三角、结构光等手段输出深度图或点云,核心能力是恢复表面高度形貌。彩色成像、字符识读、平面尺寸测量都是2D视觉的看家本领。

Q3. 以下哪些缺陷类型更适合使用3D视觉检测?

多选题 · mid

  • A.表面微小凹陷← 正确答案
  • B.低对比度压痕← 正确答案
  • C.高对比度黑点
  • D.引脚共面性偏差← 正确答案

答案:ABD。微小凹陷、低对比度压痕和引脚共面性偏差都属于“色差小、高度差明显”的缺陷,2D灰度图上几乎隐形,需要3D高度测量。高对比度黑点在2D灰度图上就能轻松检出,无需动用3D。

Q4. 对比度公式 C = (Lf−Lb)/Lb 中,提高对比度的最常用手段是?

单选题 · mid

  • A.更换更高像素的相机
  • B.调整光源角度与亮度← 正确答案
  • C.增大检测判定阈值
  • D.加快传送带运行速度

答案:B。对比度由缺陷与背景的灰度差决定,改变光源入射角度、亮度或波长可以直接改变缺陷在图像中的表现。像素决定分辨率,阈值只是判定标准不影响成像对比度,传送带速度与成像对比度无关。

Q5. 一条完整的AOI检测流程通常包含哪些环节?

多选题 · mid

  • A.上料自动定位← 正确答案
  • B.稳定成像采集← 正确答案
  • C.算法实时判读← 正确答案
  • D.自动化物流配送

答案:ABC。AOI四环节为上料定位、成像采集、算法判读、结果分选。物流配送属于车间层面仓储系统,不属于AOI单机检测流程的组成部分。

Q6. 为什么深度学习模型在AOI中要与传统灰度/几何规则算法搭配使用?

单选题 · mid

  • A.因为深度模型完全无法训练
  • B.传统规则算法轻量稳定且可解释,深度模型负责难例精判← 正确答案
  • C.传统规则算法的精度永远高于深度模型
  • D.深度模型部署成本为零且无需数据

答案:B。工业AOI讲究节拍稳定与判定可解释,传统算法毫秒级响应、逻辑透明;深度模型在复杂纹理上优势明显但需要大量样本且推理较慢。两者组合是工程最优解,而非谁完全替代谁。

Q7. 激光三角测距中,物体表面高度变化主要反映为相机像面上的什么变化?

单选题 · easy

  • A.色彩发生变化
  • B.落点位置偏移← 正确答案
  • C.亮度明显变化
  • D.分辨率下降

答案:B。激光三角的核心是“高度变→激光线在相机里的落点水平移动”,位移量 xd 代入 Z=b×f/xd 即可算出高度。颜色、亮度、分辨率都不是三角测距的直接信号。

Q8. 在模型推理加速中,常用的方法包括哪些?

多选题 · hard

  • A.模型量化压缩← 正确答案
  • B.网络剪枝裁剪← 正确答案
  • C.扩大训练样本
  • D.TensorRT引擎加速← 正确答案

答案:ABD。模型量化(浮点转整数)、网络剪枝(裁掉冗余通道)和TensorRT等推理引擎优化都是典型的推理加速手段。扩大训练样本属于数据增强/数据集扩充,提升的是泛化能力而不是推理速度。

Q9. 某产线AOI误检率偏高,大量良品被当作缺陷报废,最优先的优化方向是?

单选题 · hard

  • A.提高检测判定阈值
  • B.优先提升精确率 P← 正确答案
  • C.大幅提升召回率 R
  • D.无脑扩充训练集

答案:B。误检率高 = 良品被误杀多,对应精确率 P 偏低。应先通过特征筛选、阈值调优提升 P,同时保持召回率不显著下降。盲目提高阈值可能转为漏检,大幅提升召回率反而加重误检,扩充训练集若不针对误检样本也无济于事。

Q10. F1分数同时衡量的是哪两个指标?

单选题 · mid

  • A.准确率与处理帧率
  • B.精确率与召回率← 正确答案
  • C.学习率与损失值
  • D.分辨率与曝光亮度

答案:B。F1 是精确率 P 与召回率 R 的调和平均,兼顾“误检少”与“漏检少”。准确率与帧率、学习率与损失、分辨率与亮度都与 F1 的内涵无关,不参与 F1 计算。