OK. Today’s OCI C++ lunch features Rob Martin talking about McObject‘s eXtremeDB embedded database product.
本文提出了一种相对简单的缺陷校正算法,仅需7×7的原始彩色滤光片阵列数据核即可有效校正多种缺陷类型。该自适应边缘算法具有高质量、占用图像行数少、适应性强且独立于其他板载DSP算法的特点。实验结果表明,相较于传统一维校正方法,该算法在高频图像区域的校正效果显著提升
https://github.com/hukefei/GAN-defect 4、不同行业应用 1)PCB https://github.com/Ixiaohuihuihui/Tiny-Defect-Detection-for-PCB https://github.com/chinthysl/AXI_PCB_defect_detection https://github.com/gustavo95/pcb-defect-detection 2)钢材缺陷检测 https://github.com/khornlund/severstal-steel-defect-detection https://github.com/Diyago/Severstal-Steel-Defect-Detection https://github.com/toandaominh1997/Steel-Defect-Detection https://github.com/rook0falcon/steel-defect-detection https://github.com/Eatzhy/Surface-defect-Detection-dataset 本文仅做学术分享,如有侵权,请联系删文。
这里使用(NEU surface defect database),数据集收集了夹杂、划痕、压入氧化皮、裂纹、麻点和斑块总计6种缺陷,每种缺陷300张,图像尺寸为200×200。部分示例如下: ? = file_name.split("_") d_index = defect_labels.index(defect_attrs[0]) self.images.append (os.path.join(root_dir, file_name)) self.defect_types.append(d_index) index + ') 转为为ONNX模式,OpenCV DNN部署调用,代码如下: defect_net = cv.dnn.readNetFromONNX("surface_defect_resnet18.onnx") (blob) res = defect_net.forward() idx = np.argmax(np.reshape(res, (6))) defect_txt = defect_labels
= generate_defect( good_image_path="normal_part.jpg", mask_path="scratch_mask.png", # 指定划痕位置 prompt="a deep scratch with metallic luster on metal surface, industrial defect")defect_img.save("generated_scratch.jpg = random.choice(defect_types) material = random.choice(materials) prompt = prompt_template.format( defect_type=defect_type, material=material } on {material} surface, industrial defect" ) # Step 2: 合并真实缺陷和生成缺陷 print
文件和yolo格式txt文件) 图片数量(jpg文件个数):67 标注数量(xml文件个数):67 标注数量(txt文件个数):67 标注类别数:2 标注类别名称:[“Comb plate defect ”,“setp defect”] 每个类别标注的框数: 类别名称 框数 Comb plate defect 2 setp defect 116 总框数 118 使用标注工具:labelImg 标注规则
操作和扩展 示例 选择元素 var query = from user in SampleData.AllUsers select user; 过滤和排序 var query = from defect in SampleData.AllDefects where defect.Status ! = Status.Closed where defect.AssignedTo = tim orderby defect.Severity descending select defect.Summary on defect.Project equals subscription.Project into groupedSubscriptions select new {Defect = defect , Subscription = groupedSubscriptions } 分组 var query = from defect in SampleData.AllDefects group defect
from mcp_sdk import DeploymentManagerDeploymentManager.deploy( model_name="defect_cls", version from mcp_sdk import MonitorEngineMonitorEngine.watch(model_name="defect_cls", version="v1.0", metrics { "route_by": "station_id", "rules": { "station_1": "defect_cls_A:v1.0", "station_2": "defect_cls_B 热更新部署DeploymentManager.deploy( model_name="defect_cls_A", version="v1.1", target="station_1" ", value=1) # 1代表有缺陷还可结合报警系统输出灯光、声音或 PLC 动作:if result["label"] == "defect": trigger_alarm(zone="B2
文件个数):4159 标注数量(txt文件个数):4159 标注类别数:5 标注类别名称(注意yolo格式类别顺序不和这个对应,而以labels文件夹classes.txt为准):["Geometric defect ","Non-fusion defect","crack","porosity","spatters"] 每个类别标注的框数: Geometric defect 框数 = 921 Non-fusion defect 框数 = 487 crack 框数 = 1453 porosity 框数 = 2732 spatters 框数 = 5829 总框数:11422 使用标注工具:labelImg 标注规则:
defect_types']: analysis['defect_types'][defect_class] += 1 else: = {} for result in results: for defect_type, count in result['analysis']['defect_types'].items (): if defect_type in defect_statistics: defect_statistics[defect_type] += count else: defect_statistics[defect_type] = count print("\n缺陷类型统计:" ) for defect_type, count in defect_statistics.items(): print(f" {defect_type}: {count}")if
= new Defect(payload); defect.history.push({ by: userId, action: 'created', detail: { payload }}); = await Defect.findById(id); if (! : toStatus, comment }}); await defect.save(); // 异步通知 notify.queue({ to: [defect.assignee, defect.reporter = await Defect.findById(id); if (! 'closed' : 'reopened'; await defect.save(); // notify notify.queue({ to: [defect.assignee, defect.reporter
on defect.ProjectID equals subscription.ProjectID select new { defect.Summary, subscription.EmailAddress 编译器的转译为: Defects.Join ( NotificationSubscriptions, defect => defect.ProjectID, subscription into groupedSubscriptions select new { Defect=defect, Subscriptions=groupedSubscriptions } 其结果将会是: ? 编译器的转译为简单的调用GroupJoin方法: Defects.GroupJoin ( NotificationSubscriptions, defect => defect.Project { Defect = defect, Subscriptions = groupedSubscriptions
一张图片对应一个json文件 json部分内容如下: { "version": "5.1.1", "flags": {}, "shapes": [ { "label": "defect GitHub - ultralytics/ultralytics: NEW - YOLOv8 in PyTorch > ONNX > OpenVINO > CoreML > TFLite 3.1 defect_obb.yaml /data/defect_obb/defect_obb # dataset root dir train: images/train # train images (relative to 'path images #test: images/test # test images (optional) 937 images # Classes for DOTA 1.0 names: 0: defect /defect_obb.yaml', cache=False, imgsz=640, epochs=50,
图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):1166 标注数量(xml文件个数):1166 标注数量(txt文件个数):1166 标注类别数:2 标注类别名称:["defect_diode ","defect_hotspot"] 每个类别标注的框数: defect_diode 框数 = 2034 defect_hotspot 框数 = 3819 总框数:5853 使用标注工具:labelImg
bashmkdir -p /root/openclaw-skills/defect-detectioncd /root/openclaw-skills/defect-detection创建核心检测脚本 defect_detector.py:python#! ): defect_type = DEFECT_CLASSES[cls_id] else: defect_type = ": f"⚠️ 告警:今日缺陷率{defect_rate:.2%},超过10%阈值" } return {"alert": False}def main(): /root/openclaw-skills/defect-detection && python3 defect_detector.py alert | grep "告警" && /root/send_alert.sh
Anomaly An atypical defect or problem with a mask. Defects Defect Types 缺陷类型 含义 Bridging an opaque or clear defect that joins two or more lines of the same that is not a hard defect Glass Damage damage in the substrate from laser or FIB repair Hard a defect feature Nuisance a false defect that is routinely detected by the inspection system Soft a defect that K 名词 解释 KLA A company that manufactures defect inspections systems (now called KLA-Tencor) KLA defect
"].label == "good": sample["defect_mask"] = fo.Segmentation( mask=np.zeros_like(sample ["pred_defect_mask_padim"].mask) ) 我们还需要确保真实值和预测值之间的命名/标签的一致性。 我们将所有“良好”图像重命名为“正常”,并将每种类型的异常重命名为“异常”: old_labels = test_split.distinct("defect.label") label_map = { eval_classif_padim = mapped_view.evaluate_classifications( "pred_anomaly_padim", gt_field="defect ") == "anomaly").evaluate_segmentations( "pred_defect_mask_patchcore", gt_field="defect_mask"
1、A fast and robust convolutional neural network-based defect detection model in product quality control 优缺点: 由于使用分类方式,准确率较为高 由于滑窗遍历,速度慢 2、Automatic Defect Detection of Fasteners on the Catenary Support Device 3、Automatic Fabric Defect Detection with a Multi-Scale Convolutional Denoising Autoencoder Network Model 5、Automatic Metallic Surface Defect Detection and Recognition with Convolutional Neural Networks 检测对象 7、A Surface Defect Detection Method Based on Positive Samples 检测对象:密集织物 主要思想:本文提出了一种新的基于正样本训练的缺陷检测框架。
For Dev 在Story下创建子任务 Dev sub-task 需要填写‘预估时间’,‘到期日’,‘log time’ Investigation Defect Created By & Resolution 在Story下创建子任务 Test sub-task 需要填写‘预估时间’,‘到期日’,‘log time’ bug (这个bug指的是当前story下造成的in sprint defect)(新增 )必填校验,Defect Created By & Resolutions In sprint defect 需要在当前sprint修复并关闭,如因特殊原因无法修复,需报PM,由PM决定是否要在当前sprint Step3 QA:已完成待测试,测试中 Step4 (PM) Result:已关闭,测试完毕等待上线,已上线 bug Step1 DEV:等待排期,开发中,Code review (新增)必填校验,Defect
格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):3890 标注数量(xml文件个数):3890 标注数量(txt文件个数):3890 标注类别数:1 标注类别名称:["defect "] 每个类别标注的框数: defect 框数 = 4044 总框数:4044 使用标注工具:labelImg 标注规则:对类别进行画矩形框 重要说明:暂无 特别声明:本数据集不对训练的模型或者权重文件精度作任何保证