news 2026/4/16 12:00:56

解决焊缝AI评片中常见问题

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
解决焊缝AI评片中常见问题

TOI Filter 区域过滤函数

通过标注焊缝区域并训练YOLOv11s模型,实现焊缝内外区域的划分。

import numpy as np def toi_filter(detections, weld_region_mask, threshold=0.7): """过滤焊缝区域外的检测框 Args: detections: List[Dict], 检测框信息(x1,y1,x2,y2,score,cls) weld_region_mask: np.ndarray, 焊缝区域二值掩膜 threshold: float, 面积占比阈值 Returns: List[Dict], 过滤后的检测框 """ filtered = [] for det in detections: x1, y1, x2, y2 = map(int, [det['x1'], det['y1'], det['x2'], det['y2']]) box_mask = np.zeros_like(weld_region_mask) box_mask[y1:y2, x1:x2] = 1 intersection = np.logical_and(box_mask, weld_region_mask) eta = intersection.sum() / box_mask.sum() if eta >= threshold: filtered.append(det) return filtered

线性缺陷智能桥接函数

针对分割评定导致的线性缺陷断裂问题,提出以下处理流程:

  1. 筛选与排序:筛选裂缝、未熔合(LF)等线性缺陷框,按类别和位置排序。
  2. 合并条件:基于x轴间隙、y轴对齐度及桥接区域灰度特征,合并满足条件的同类别缺陷框。
  3. 迭代优化:循环合并直至无新操作,输出合并后的缺陷框。
    此方法有效解决因图像分块处理导致的线性缺陷截断问题。
    def linear_defect_bridging(defects, max_x_gap=20, max_y_diff=10, min_gray_diff=30): """合并断裂的线性缺陷框 Args: defects: List[Dict], 线性缺陷检测框 max_x_gap: int, 最大水平间距 max_y_diff: int, 最大垂直偏移 min_gray_diff: int, 最小灰度差异 Returns: List[Dict], 合并后的缺陷框 """ # 按类别和x坐标排序 defects.sort(key=lambda x: (x['cls'], x['x1'])) merged = [] i = 0 while i < len(defects): current = defects[i] j = i + 1 while j < len(defects) and defects[j]['cls'] == current['cls']: next_box = defects[j] # 检查合并条件 x_gap = next_box['x1'] - current['x2'] y_diff = abs((current['y1']+current['y2'])/2 - (next_box['y1']+next_box['y2'])/2) if x_gap <= max_x_gap and y_diff <= max_y_diff: # 计算桥接区域灰度特征 bridge_gray = calculate_bridge_gray(current, next_box) if bridge_gray >= min_gray_diff: # 合并框 current['x2'] = next_box['x2'] current['y1'] = min(current['y1'], next_box['y1']) current['y2'] = max(current['y2'], next_box['y2']) j += 1 else: break else: break merged.append(current) i = j return merged

位置抑制函数

针对未熔合与未焊透的混淆问题,利用位置特征优化分类:

  • 未熔合特征:黑线宽度不一,位于焊缝中心至边缘的1/2处,纵向延伸。
  • 未焊透特征:位于焊缝根部或中部,可能贯穿整张底片。
    规则
  • 焊缝中部30%区域中,置信度<0.5的未熔合预测修正为未焊透。
  • 焊缝中部30%以外,置信度<0.5的未焊透预测修正为未熔合。
    通过位置约束提升两类缺陷的区分准确率。
    def position_suppression(defects, weld_center_region, conf_thresh=0.5): """基于位置特征修正未熔合/未焊透分类 Args: defects: List[Dict], 缺陷检测框 weld_center_region: Tuple[float,float], 焊缝中部区域(0.35,0.65) conf_thresh: float, 置信度阈值 Returns: List[Dict], 修正后的缺陷框 """ center_start, center_end = weld_center_region for det in defects: if det['cls'] in ['lack_of_fusion', 'incomplete_penetration']: # 计算归一化位置 y_center = (det['y1'] + det['y2']) / 2 / weld_mask.shape[0] if center_start <= y_center <= center_end: if det['cls'] == 'lack_of_fusion' and det['conf'] < conf_thresh: det['cls'] = 'incomplete_penetration' else: if det['cls'] == 'incomplete_penetration' and det['conf'] < conf_thresh: det['cls'] = 'lack_of_fusion' return defects

实现效果

  • TOI Filter减少焊缝外误检90%以上。
  • 桥接函数使线性缺陷检出完整率提升35%。
  • 位置抑制使未熔合/未焊透分类准确率提高22%。
    三项后处理机制协同优化,显著提升评片系统的鲁棒性。
    # 加载焊缝区域掩膜 weld_mask = load_weld_mask('weld_region.png') # 原始检测结果 raw_detections = model.predict(xray_image) # 应用TOI过滤 filtered = toi_filter(raw_detections, weld_mask) # 线性缺陷桥接 linear_defects = [d for d in filtered if d['cls'] in ['crack', 'lack_of_fusion']] bridged = linear_defect_bridging(linear_defects) # 位置抑制修正 final_detections = position_suppression(bridged, weld_center_region=(0.35,0.65))
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 12:00:11

ESTUN工业机器人坐标系详解:从关节到工具的精准控制

1. 工业机器人坐标系基础概念 第一次接触ESTUN工业机器人时&#xff0c;最让我困惑的就是各种坐标系的概念。记得当时看着示教器上跳动的数字&#xff0c;完全不明白这些数字代表什么意义。直到有老师傅告诉我&#xff1a;"坐标系就是机器人的眼睛和尺子&#xff0c;没有它…

作者头像 李华
网站建设 2026/4/16 11:59:54

聊聊建设专业网站开发公司质价比天花板如何辨别?

大家好&#xff0c;我是老纪。最近几个月&#xff0c;我不是一直在科普网站开发的文章嘛&#xff0c;遇到几位粉丝后台私信我&#xff0c;他说现在想找个靠谱的专业网站开发公司&#xff0c;怎么就这么难&#xff1f;要么报价低得离谱&#xff0c;然后做出来的网站根本没法用&a…

作者头像 李华
网站建设 2026/4/16 11:54:34

OBS Multi RTMP:如何一键开启多平台直播新时代

OBS Multi RTMP&#xff1a;如何一键开启多平台直播新时代 【免费下载链接】obs-multi-rtmp OBS複数サイト同時配信プラグイン 项目地址: https://gitcode.com/gh_mirrors/ob/obs-multi-rtmp 你是否曾经为了在不同平台直播而不得不重复配置OBS&#xff1f;或者因为切换平…

作者头像 李华