Kappa检测方法

Kappa系数是一种评价分类任务中机器评分与专家评分一致性的指标,尤其适用于离散值的评估。简单Kappa系数通过比较实际一致率和随机一致率来计算,而加权Kappa系数引入了不同错误分类的权重。在3分类的例子中,展示了如何计算Kappa系数,结果显示其为0.5。此外,还提到了PCC相关系数和其在回归问题中的应用。

kappa检测方法

  • 评价相关性的一种指标
  • 注意只能计算离散值,不能计算回归问题,如果计算回归问题,必须将值进行离散化
  • 这个评价指标经常用在作文评分当中,用来评价机器评分与专家评分的一致性

Simple Kappa Coefficient(简单kappa系数)

在这里插入图片描述

  • Clinician 1看做真实分布,Clinician2看做预测分布
  • 实际一致率与随机一致率是否有显著的差别
    Kappa=Po−Pe1−Pe;Po=a+dn;Pe=(a+b)(a+c)+(c+d)(b+d)n2 Kappa = \frac{P_o - P_e}{1 - P_e}; P_o = \frac{a+d}{n}; P_e = \frac{(a+b)(a+c) + (c+d)(b+d)}{n^2} Kappa=1PePoPe;Po=na+d;Pe=n2(a+b)(a+c)+(c+d)(b+d),其中PoP_oPo实际一致率,PeP_ePe理论一致率
  • P0P_0P0比较容易理解,PeP_ePe我们可以拆成a+bn∗a+cn+c+dn∗b+dn\frac{a+b}{n}*\frac{a+c}{n} + \frac{c+d}{n}*\frac{b+d}{n}na+bna+c+nc+dnb+d
    • 其中a+bn∗a+cn\frac{a+b}{n}*\frac{a+c}{n}na+bna+c,这个有点类似于交叉熵的概念真实分布概率*预测分布概率

一个3分类的例子:

123
1400
2040
3040

上表表明:将类别1分为类别1的个数有4个,将类别2分为类别2的有4个,将类别3分为类别2的有4个

  • 对角线元素就是分对的数目:Po=(4+4+0)/12=2/3P_o = (4+4+0)/12 = 2/3Po=(4+4+0)/12=2/3
  • 观测一致率:Pe=(4+0+0)∗(4+0+0)122+(0+4+0)∗(0+4+4)122+(0+4+0)∗(0+0+0)122=1/3P_e = \frac{(4+0+0)*(4+0+0)}{12^2} + \frac{(0+4+0)*(0+4+4)}{12^2} + \frac{(0+4+0)*(0+0+0)}{12^2} = 1/3Pe=122(4+0+0)(4+0+0)+122(0+4+0)(0+4+4)+122(0+4+0)(0+0+0)=1/3
    • (为1的行的和 * 为1的列的和) / 样本数目的平方
    • (为2的行的和 * 为2的列的和) / 样本数目的平方
    • (为3的行的和 * 为3的列的和) / 样本数目的平方
  • 最终结果:kappa=Po−Pe1−Pe=2/3−1/31−1/3=0.5kappa = \frac{P_o - P_e}{1 - P_e} = \frac{2/3 - 1/3}{1 - 1/3} = 0.5kappa=1PePoPe=11/32/31/3=0.5

Weighted Kappa Coefficient(加权Kappa系数)

Kappaw=∑wfo−∑wfen−∑wfe Kappa_w = \frac{\sum wf_o - \sum wf_e}{n - \sum wf_e} Kappaw=nwfewfowfe

  • 为了惩罚分错类别的情况,给不同分错类别的加上不同的权重
  • ∑wfo\sum wf_owfo: 观察一致性,带权重
  • ∑wfe\sum wf_ewfe: 理论一致性,带权重
  • 线性权重 linearweight=1−∣i−j∣k−1 linear weight = 1 - \frac{|i-j|}{k-1} linearweight=1k1ij, kkk是样本总数, i,ji,ji,j是不同的类别
  • 平方权重 quadraticweight=1−(i−jk−1)2 quadratic weight = 1 - (\frac{i-j}{k-1})^2 quadraticweight=1(k1ij)2

PCC相关系数

  • 皮尔逊相关系数ρX,Y=cov(X,Y)σXσY=E[(X−uX)(Y−uY)]σXσY \rho_{X,Y} = \frac{cov(X,Y)}{\sigma_X \sigma_Y} = \frac{E[(X-u_X)(Y-u_Y)]}{\sigma_X \sigma_Y} ρX,Y=σXσYcov(X,Y)=σXσYE[(XuX)(YuY)]

参考资料

  • http://blog.sina.com.cn/s/blog_8db50cf70101cffj.html
  • https://en.wikipedia.org/wiki/Cohen%27s_kappa
<think>我们正在讨论Vision Master检测锡尖的方法。锡尖是焊接过程中常见的缺陷,通常表现为焊点顶部出现尖锐的突起。根据Vision Master的功能特点,我们可以采用以下几种方法进行检测: 1. **高度梯度分析**(适用于3D检测): - 如果使用3D传感器(如激光三角测量或结构光),可以获取焊点的高度图(点云数据)。 - 计算高度梯度:在焊点顶部区域,锡尖会表现出局部高度突变。通过计算梯度幅值,当梯度超过设定阈值$\theta$时,判定为锡尖。 - 公式:$$\nabla z = \sqrt{ \left( \frac{\partial z}{\partial x} \right)^2 + \left( \frac{\partial z}{\partial y} \right)^2 }$$ 其中,$\nabla z > \theta$的区域被标记为锡尖[^1]。 2. **形态学与轮廓分析**(适用于2D检测): - 对焊点进行二值化分割,提取焊点的轮廓。 - 利用形态学操作(如顶帽变换)增强锡尖的突出部分。 - 计算轮廓的凸包,并检测凸性缺陷。锡尖通常表现为凸包上的一个尖锐凸起,可以通过凸缺陷的深度和角度来判断。 - 设定缺陷深度阈值$d_{\text{th}}$和角度阈值$\alpha_{\text{th}}$:当凸缺陷深度大于$d_{\text{th}}$且缺陷夹角小于$\alpha_{\text{th}}$(即缺陷尖锐)时,认定为锡尖[^2]。 3. **区域灰度/高度统计**: - 在焊点顶部定义一个小的检测区域(ROI),计算该区域内的最大高度(或最大灰度值)与周围区域的对比度。 - 如果该区域的最大高度显著高于周围区域(例如,超过阈值$h_{\text{th}}$),则判定为锡尖。 4. **模板匹配与差异分析**: - 使用Vision Master中的“模板匹配”工具定位标准焊点区域。 - 然后,使用“图像差分”工具比较当前焊点图像与标准焊点模板(无锡尖)的差异。 - 在差分图像中,锡尖区域会呈现明显的亮斑,通过阈值分割即可检测。 5. **深度学习方法**: - 使用Vision Master的深度学习模块(如语义分割或异常检测): - 收集带有锡尖缺陷的焊点图像进行训练。 - 训练一个U-Net模型,输出每个像素是否为锡尖的概率图。 - 通过后处理(如连通区域分析)确定锡尖位置和大小。 **实施步骤示例(伪代码)**: ```python # 锡尖检测流程示例 image = capture_image() # 采集图像 roi = locate_solder_joint(image) # 定位焊点区域(例如通过模板匹配) # 方法1:3D梯度检测(如果有3D数据) if using_3d_sensor: point_cloud = get_3d_data(roi) gradient_map = compute_gradient(point_cloud) tin_points = threshold(gradient_map, theta=0.3) # 设置梯度阈值 if count_pixels(tin_points) > area_threshold: return NG # 方法2:2D轮廓分析 else: binary_img = binarize(roi) # 二值化 contour = find_contours(binary_img)[0] # 提取轮廓 hull = convex_hull(contour) defects = convexity_defects(contour, hull) for defect in defects: depth = defect.depth angle = defect.angle if depth > d_th and angle < alpha_th: # 深度大且角度小表示尖锐 return NG # 方法3:深度学习 if using_dl_model: mask = dl_model.predict(roi) # 输出锡尖分割掩膜 if np.sum(mask) > pixel_threshold: return NG # 若无锡尖则判定为OK return OK ``` **注意事项**: - 锡尖检测的关键是区分正常的焊点隆起和尖锐的突起。因此,梯度阈值$\theta$、凸缺陷深度阈值$d_{\text{th}}$和角度阈值$\alpha_{\text{th}}$的设置至关重要,需要根据实际焊点形状调整。 - 对于小尺寸锡尖,可能需要使用高分辨率相机。 **典型参数参考范围**: - 梯度阈值$\theta$:0.2~0.5 mm/pixel(根据锡尖高度设置) - 凸缺陷深度$d_{\text{th}}$:焊点高度的10%~20% - 角度阈值$\alpha_{\text{th}}$:60°~90°(角度越小表示越尖锐) §§相关问题§§ 1. 如何设置锡尖检测的梯度阈值$\theta$才能避免误检? 2. 在2D图像中如何区分焊点正常隆起和锡尖? 3. Vision Master的深度学习模块训练锡尖检测模型需要哪些步骤? 4. 检测锡尖时如何解决光照不均匀的问题? [^1]: 海康威视Vision Master 3D检测模块用户手册 [^2]: 基于机器视觉的焊点缺陷检测技术研究. *电子工艺技术* </think>### Vision Master 锡尖检测方法 Vision Master 检测锡尖(焊接工艺中的尖锐突起缺陷)主要通过以下核心方法实现,结合了高度分析、轮廓识别和深度学习技术: --- #### 一、核心检测原理 1. **高度梯度阈值法** - 通过3D点云数据计算焊点表面梯度,锡尖表现为局部高度突变: $$ \nabla z = \sqrt{ \left( \frac{\partial z}{\partial x} \right)^2 + \left( \frac{\partial z}{\partial y} \right)^2 } $$ 当$\nabla z > \theta_{\text{tip}}$(锡尖专用梯度阈值)时判定为缺陷[^1]。 - **关键参数**:$\theta_{\text{tip}}$需根据焊点正常高度设定(通常为正常高度的$120\%\sim150\%$)。 2. **尖锐轮廓特征提取** - **步骤**: 1. 定位焊点区域(基于模板匹配或Blob分析) 2. 提取轮廓并计算曲率: $$ \kappa = \frac{|x'y'' - y'x''|}{(x'^2 + y'^2)^{3/2}} $$ 3. 识别曲率峰值点($\kappa > \kappa_{\text{th}}$),尖锐锡尖表现为高曲率点[^2]。 - **优势**:对光照变化鲁棒性强。 3. **深度学习分割优化** - 使用U-Net网络训练锡尖专用分割模型: - 输入:焊点区域ROI图像 - 输出:锡尖像素级掩码 - 数据要求:$200\sim500$张标注样本可达到$95\%+$精度[^1]。 - **部署**:Vision Master中直接加载预训练模型推理。 --- #### 二、实施流程示例 ```python # Vision Master 锡尖检测伪代码 img = acquire_image() # 采集焊点图像 roi = locate_solder_joint(img, method='Blob') # 定位焊点区域 [^2] # 方法1:3D梯度检测(需3D相机) if using_3d_sensor: point_cloud = generate_3d_map(roi) gradient_map = compute_gradient(point_cloud) tin_tips = threshold(gradient_map, θ_tip=0.4) # 锡尖专用阈值 # 方法2:2D轮廓分析 contour = extract_contour(roi) curvature = calculate_curvature(contour) tips = find_peaks(curvature, &kappa;_th=0.8) # 曲率阈值 # 方法3:深度学习 if dl_enabled: mask = dl_model.predict(roi) # 输出锡尖掩码 tips = filter_small_regions(mask, min_area=5) # 判定逻辑 if area(tips) > area_threshold: result = "NG" # 存在锡尖 else: result = "OK" # 合格焊点 ``` --- #### 三、关键参数设置建议 | 参数 | 典型值范围 | 优化方法 | |---------------|-----------------|----------------------------| | 梯度阈值 $\theta_{\text{tip}}$ | $0.3\sim0.6$ | 基于正常焊点高度统计分布设定 | | 曲率阈值 $\kappa_{\text{th}}$ | $0.7\sim1.2$ | 通过OK样本最大曲率校准 | | 最小锡尖面积 | $5\sim15$ 像素 | 根据镜头分辨率调整 | --- #### 四、典型应用场景 - **PCB焊点检测**:识别波峰焊/回流焊后的锡尖 - **连接器焊接**:检测引脚顶部的尖锐残留 - **精密电子**:避免锡尖导致短路(如BGA封装)[^1] > **注**:对高反光焊点,建议结合偏振光源或多角度照明抑制镜面反射[^2]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值