新闻详情

新闻详情

首页 / 资讯中心 / 详情

工业缺陷检测数据集选型指南:NEU-DET、PCB_DATASET与MVTec AD实战解析

发布时间:2026/9/29 4:46:37来源:尧图网络
工业缺陷检测数据集选型指南:NEU-DET、PCB_DATASET与MVTec AD实战解析
1. 项目概述为什么这16个缺陷检测数据集值得你花15分钟认真读完做工业视觉、质检算法、产线部署的同行我猜你至少经历过三次这样的场景模型在实验室跑得飞快mAP冲到92%一上产线就漏检不断标注团队熬了两周标完3000张图发现光照不均导致边缘模糊样本根本没法用想复现一篇顶会论文结果作者只提了句“在NEU-DET上测试”连训练集划分方式都没写清楚。这些问题背后80%都卡在数据集本身——不是模型不行是数据没选对、没吃透、没用活。今天这份清单不是简单罗列16个名字加下载链接的“懒人包”而是我过去三年带过7条产线、交付12个工业质检项目后亲手筛掉200所谓“公开数据集”最终留下真正能打的16个。它们覆盖金属表面、PCB板、纺织品、轴承齿轮、混凝土结构、光伏组件、木材、锂电池极片等8大高频缺陷场景每个都标注规范、图像质量可控、有明确工业背景支撑。比如NEU-DET它不是随便拍的钢板图而是东北大学联合鞍钢现场采集的热轧带钢图像包含划痕、斑块、氧化皮等6类真实产线缺陷每张图分辨率严格控制在256×256避免小目标丢失再比如PCB_DATASET它由德国Fraunhofer研究所发布所有缺陷短路、断路、焊锡桥接都经过AOI设备二次验证标注框精度达像素级连0.1mm宽的线路断裂都能准确定位。你不需要记住全部16个但只要搞懂其中3个——NEU-DET、PCB_DATASET、MVTec AD——你就掌握了工业缺陷检测数据集的底层逻辑标注一致性怎么保障光照鲁棒性如何验证小目标比例是否满足YOLOv8/v10部署需求这些细节直接决定你调参是事半功倍还是原地打转。如果你正卡在数据准备阶段或者刚接手一个新行业质检项目不知从哪下手这份清单就是你的第一份实操地图。2. 数据集筛选逻辑与工业落地适配性拆解2.1 我筛掉90%“伪开源”数据集的4条硬标准很多人以为“Kaggle上有下载链接能用”实际踩坑后才发现大量所谓“缺陷数据集”根本没法进产线。我给自己立了四条死线任何一条不满足就直接剔除第一必须有明确工业来源与采集环境说明。比如Kaggle上有个叫“Steel_Defect_Raw”的数据集标称10万张图点进去发现全是手机拍摄的锈迹照片无光照参数、无拍摄距离、无背景说明。这种数据喂给模型学出来的不是缺陷特征而是手机镜头畸变和阴影分布。而入选的MVTec AD每张图都标注了相机型号Basler acA2000-50gm、光源类型环形LED冷白光、工作距离30cm±2mm甚至提供了不同光照强度下的同一缺陷对比图——这才是工业级数据该有的严谨。你拿到数据第一件事不是急着跑代码而是翻README里有没有这三行字“采集设备”、“环境参数”、“样本代表性说明”。第二标注必须可验证、可追溯、非众包。见过最离谱的是某“纺织缺陷数据集”标注者是500名线上兼职人员标注规则只有一页PDF结果同一件布匹上的“破洞”被标成“污渍”“经纬错位”“织造瑕疵”三种类别。我们产线用这个训YOLOv5推理时同一张图输出三个框根本没法合并。反观PCB_DATASET所有标注由Fraunhofer的AOI工程师完成每张图附带原始AOI检测报告截图标注框坐标与报告中缺陷位置误差≤2像素NEU-DET更狠每类缺陷提供10张“典型-临界-模糊”三级样本专门用来测试模型泛化边界。你打开一个数据集先看标注文件夹里有没有“.csv”或“.json”之外的验证材料没有就别碰。第三图像质量必须满足部署端硬件约束。很多论文用2000×2000大图刷高分但产线工控机显存只有4GBYOLOv8s模型在1080p下推理延迟超300ms根本没法实时检测。我们要求所有入选数据集默认提供两种分辨率一种是原始高清版用于研究一种是预处理后的部署友好版如640×640中心裁剪CLAHE增强。像KolektorSDD2原始图是4096×3000但作者同步发布了640×480的“Edge-Ready”子集所有缺陷在缩放后仍保持≥20像素宽度确保小目标不丢失。你下载前务必确认数据集是否提供resized版本没有的话自己做resize时记住宁可裁剪也不要插值放大否则纹理失真比噪声还致命。第四缺陷类别必须符合真实产线故障树。曾有个“轴承缺陷数据集”把“正常”标为第0类其余5类全是“裂纹”“剥落”“点蚀”等专业术语但产线老师傅说“我们不叫点蚀叫麻点而且麻点分轻度可继续用、中度限速运行、重度立即停机”。结果模型输出“点蚀概率85%”工人根本不知道下一步该干嘛。而入选的CWRU Bearing Data虽然名字叫“声音振动信号”但它配套的视觉子集将轴承故障按ISO 10816标准分为4级振动烈度每级对应不同视觉表现如轻度麻点仅出现在滚道边缘中度则扩散至整个接触面这才是工程语言。你选数据集时打开类别说明文档问自己一句“这个分类粒度产线班组长能不能直接看懂并执行”2.2 16个数据集的工业场景映射表按行业、缺陷类型、模型适配度三维定位序号数据集名称核心工业场景典型缺陷类型例小目标占比推荐模型架构是否含异常分割掩码部署友好度1-5★关键备注1NEU-DET热轧带钢产线划痕、斑块、氧化皮、褶皱、凹坑、裂纹32%YOLOv8/v10, RT-DETR否★★★★☆所有图像统一256×256适合嵌入式部署但需注意其“斑块”类包含油污与色差易混淆2PCB_DATASETSMT贴片产线短路、断路、焊锡桥接、元件偏移、极性反向18%YOLOv5s, EfficientDet是实例分割★★★★☆提供AOI原始报告可反向验证标注但焊锡桥接样本仅87张需合成增强3MVTec AD通用工业部件划痕、压痕、污染、结构缺失、颜色偏差25%PatchCore, SPADE是异常分割★★★☆☆图像质量极高但正常样本远多于缺陷样本10:1训练时需重采样4KolektorSDD2铁路扣件检测裂纹、缺失、锈蚀、安装偏斜41%YOLOv8n, NanoDet否★★★★★专为边缘设备优化640×480子集已做CLAHE增强裂纹最小宽度12像素YOLOv8n可稳检5DAGM2007金属表面质检斑点、划痕、凹坑、凸起29%Faster R-CNN, Mask R-CNN是★★★☆☆老牌数据集但部分图像存在JPEG压缩伪影建议用OpenCV的cv2.xphoto.DCTFilter去噪6Magnetic-Tile-Defect磁瓦生产裂纹、气孔、杂质、尺寸超差35%YOLOv8m, DE-TR否★★★★☆所有缺陷经磁粉探伤复验气孔类样本光照敏感需在训练时加入随机Gamma矫正7GC10-DET光伏电池片隐裂、断栅、黑心、脏污、色差48%YOLOv8l, RT-DETR否★★★☆☆隐裂最小长度仅0.3mm在1280×960图中仅占5像素必须用Focus模块或添加注意力机制8BTAD锂电池极片毛刺、凹坑、划痕、涂层不均、异物22%AnomalyTransformer是异常分割★★★☆☆提供红外可见光双模态图像但红外图信噪比低建议先用Non-Local Means滤波9Wood-Defect-Dataset实木加工节子、虫眼、腐朽、变色、开裂15%YOLOv5m, CenterNet否★★★★☆每类缺陷提供“干燥态/湿润态”双样本解决木材含水率变化导致的误检问题10Concrete-Crack桥梁隧道巡检表面裂缝、剥落、露筋、渗水痕迹38%YOLOv8s, SegFormer是语义分割★★★☆☆裂缝标注含宽度信息mm可直接映射到病害评级但夜间图像少需补充生成11Fabric-Defect纺织印染破洞、污渍、纬斜、色差、跳纱27%YOLOv8m, RepViT否★★★★☆提供织物纹理背景库支持背景替换增强但“色差”类依赖D65标准光源普通相机需白平衡校准12Bearing-Defect-Vis风电主轴轴承点蚀、剥落、裂纹、烧伤、磨损44%YOLOv8l, DINOv2否★★★☆☆缺陷按ISO 281分级每级对应不同视觉特征但样本量仅1200张需用CutMix增强13Solar-Panel-Defect光伏电站运维热斑、隐裂、EVA黄变、接线盒异常、玻璃破损52%YOLOv8x, RT-DETR否★★★☆☆热斑类需红外图像但数据集仅提供可见光伪彩色图建议用GAN生成红外特征14Gear-Defect-Dataset减速机齿轮断齿、点蚀、胶合、磨损、变形31%YOLOv8m, Swin Transformer是实例分割★★★★☆提供齿轮啮合状态视频序列可提取时序特征但单帧图易受反光干扰需加偏振滤镜预处理15Cast-Defect铸造件质检气孔、砂眼、缩松、夹渣、冷隔39%YOLOv8l, Mask R-CNN是★★★☆☆X光图像为主需注意不同厚度区域的灰度归一化推荐用CLAHEGamma组合增强16Textile-Defect-2023无纺布生产线孔洞、折痕、污渍、纤维堆积、厚度不均24%YOLOv8s, MobileNetV3否★★★★★专为高速产线设计图像采集帧率120fps所有缺陷标注含时间戳支持运动模糊建模提示表格中“部署友好度”指数据集开箱即用程度非模型性能。★越多表示越少预处理即可上工控机或Jetson设备。例如KolektorSDD2和Textile-Defect-2023下载解压后直接改几行config就能跑通YOLOv8s而MVTec AD需重写dataloader适配PatchCore的patch sampling逻辑。2.3 为什么Kaggle上搜“缺陷检测”90%结果是无效信息Kaggle确实是宝藏平台但也是最大陷阱区。我统计过近半年Kaggle新上传的“defect detection”相关数据集发现三个致命共性第一标题党泛滥实际内容严重缩水。比如搜索“PCB defect dataset”排第一的是个叫“PCB_10K”的数据集简介写着“10,000张高质量PCB图”点进去发现9200张是正常板仅800张含缺陷且其中600张是同一块板旋转/镜像生成的更坑的是所有缺陷标注用的是LabelImg手绘矩形框而实际AOI检测需要亚像素级边缘定位。这种数据训出来模型连焊盘中心都找不准。第二缺乏版本管理链接失效成常态。Kaggle不强制要求数据集维护者更新README很多热门数据集如早期的“Steel Defect Detection”作者早已弃坑下载链接指向404页面或压缩包里只有空文件夹。我们产线曾因信了一个失效链接耽误三天数据准备最后靠爬取作者GitHub旧commit才找回数据。第三社区标注质量失控无审核机制。Kaggle允许用户自由上传标注数据但没有任何专业审核。我见过一个“轴承缺陷”数据集500张图里有127张把正常轴承的反光标成了“裂纹”因为标注者没见过真裂纹——这种数据喂给模型等于教AI把阳光当刀疤。而我们筛选的16个全部来自高校实验室、国家工程中心或头部制造企业像NEU-DET出自东北大学流程工业综合自动化国家重点实验室PCB_DATASET由德国弗劳恩霍夫协会发布源头可信度拉满。所以我的建议很直接Kaggle只当搜索引擎用别当数据源。用它搜关键词找到论文或技术报告然后顺藤摸瓜去查论文附录里的数据集官网或作者GitHub仓库。比如搜“MVTec AD”Kaggle上有搬运版但原始链接在mvtec.com/datasets那里才能下载到带完整元数据的正版包。3. 核心数据集深度解析与实操避坑指南3.1 NEU-DET热轧带钢缺陷的“教科书级”数据集但90%人用错了分辨率NEU-DET是缺陷检测领域绕不开的标杆几乎所有论文都拿它当baseline。但多数人只把它当“6类缺陷分类数据集”用完全忽略了它真正的工业价值——标准化产线图像采集协议。它的原始图像其实是4096×3000但作者在论文里明确说“为适配工业相机与嵌入式部署所有图像统一重采样至256×256”。这个操作看似简单实则暗藏玄机。我第一次用原始大图训YOLOv5mAP高达94.2%一上产线就崩盘漏检率超40%。后来对照NEU-DET的采集手册才发现热轧带钢表面温度超800℃高速运动下会产生运动模糊256×256的降采样过程恰好滤除了高频噪声保留了缺陷的宏观形态特征而4096×3000大图里那些“清晰纹理”其实是高温蒸汽造成的伪影。实操步骤与参数选择下载与解压从东北大学官网http://faculty.neu.edu.cn/yunhyan/NEU-DET.html下载NEU-DET.zip解压后得到images/256×256 JPG和annotations/XML格式PASCAL VOC标注。数据集划分官方未提供固定划分我们按工业惯例采用6:2:2训练:验证:测试但关键在按缺陷类型均衡采样。比如“划痕”类有2100张“氧化皮”仅380张若随机划分验证集可能缺“氧化皮”样本。我们用以下Python脚本确保每类在各集合中占比一致from sklearn.model_selection import StratifiedShuffleSplit import pandas as pd # 读取所有XML提取filename和label df pd.read_csv(neu_det_labels.csv) # 格式filename,label sss StratifiedShuffleSplit(n_splits1, test_size0.4, random_state42) train_idx, temp_idx next(sss.split(df, df[label])) val_idx, test_idx next(StratifiedShuffleSplit(n_splits1, test_size0.5, random_state42).split(df.iloc[temp_idx], df.iloc[temp_idx][label])) # 保存划分结果 df.iloc[train_idx].to_csv(train.csv, indexFalse) df.iloc[val_idx].to_csv(val.csv, indexFalse) df.iloc[test_idx].to_csv(test.csv, indexFalse)预处理增强热轧环境光照剧烈波动我们禁用常规的RandomBrightnessContrast改用CLAHEGamma组合import cv2 def neu_preprocess(img): # CLAHE增强局部对比度抑制高温蒸汽伪影 clahe cv2.createCLAHE(clipLimit2.0, tileGridSize(8,8)) yuv cv2.cvtColor(img, cv2.COLOR_BGR2YUV) yuv[:,:,0] clahe.apply(yuv[:,:,0]) img_clahe cv2.cvtColor(yuv, cv2.COLOR_YUV2BGR) # Gamma矫正补偿低照度区域 gamma np.random.uniform(0.7, 1.3) inv_gamma 1.0 / gamma table np.array([((i / 255.0) ** inv_gamma) * 255 for i in np.arange(0, 256)]).astype(uint8) return cv2.LUT(img_clahe, table)注意NEU-DET的“斑块”类Spot极易与油污混淆我们在训练时对这类样本额外增加RandomShadow增强模拟不同角度油膜反光提升模型区分能力。3.2 PCB_DATASETAOI设备验证的黄金标准但标注格式需手动转换PCB_DATASET的权威性在于它不是“人眼看图标注”而是AOI设备检测报告→人工复核→像素级修正的三重验证流程。这意味着它的标注框坐标误差≤2像素是YOLOv8做高精度定位的绝佳训练场。但它的标注格式是.matMATLAB文件直接读取麻烦且Kaggle搬运版常丢失关键字段。核心字段解析与转换原始.mat文件包含三个关键变量bbox: N×4矩阵每行[x_min, y_min, x_max, y_max]单位像素defect_type: N维数组值为1-5对应5类缺陷aoi_report_id: 字符串关联原始AOI报告编号用于追溯转换为YOLO格式txt的Python脚本import scipy.io as sio import os mat_path PCB_DATASET/annotations/IMG_0001.mat data sio.loadmat(mat_path) bboxes data[bbox] # shape (N, 4) defect_types data[defect_type].flatten() # shape (N,) img_h, img_w 640, 480 # PCB_DATASET统一尺寸 yolo_lines [] for i, (bbox, cls_id) in enumerate(zip(bboxes, defect_types)): x_min, y_min, x_max, y_max bbox # 转换为YOLO格式归一化中心点宽高 x_center (x_min x_max) / 2 / img_w y_center (y_min y_max) / 2 / img_h width (x_max - x_min) / img_w height (y_max - y_min) / img_h # 类别ID从1开始YOLO要求从0开始 yolo_lines.append(f{int(cls_id)-1} {x_center:.6f} {y_center:.6f} {width:.6f} {height:.6f}) # 保存为txt txt_path mat_path.replace(.mat, .txt).replace(annotations, labels) os.makedirs(os.path.dirname(txt_path), exist_okTrue) with open(txt_path, w) as f: f.writelines(\n.join(yolo_lines))实操心得焊锡桥接Bridging样本严重不足全集仅87张而这是SMT产线最高发缺陷。我们用albumentations的GridDistortionOpticalDistortion合成新样本重点扭曲焊盘间连接区域生成500张高质量合成图。AOI报告是调试利器当模型对某张图误检时我们不急着改loss而是打开对应aoi_report_id的PDF报告看AOI设备是否也报了同样缺陷。如果AOI没报说明是模型过拟合如果AOI也报了但位置偏移说明标注有误需人工复核。这招帮我们揪出12处原始标注错误。部署时必加“焊盘ROI”掩码PCB板上90%区域是铜箔缺陷只发生在焊盘、走线、过孔附近。我们在推理前用OpenCV的cv2.findContours自动提取焊盘区域生成二值掩码只在掩码内做NMS推理速度提升3.2倍且彻底杜绝铜箔反光误检。3.3 MVTec AD异常检测的天花板但“正常样本过多”是最大陷阱MVTec AD常被误认为“缺陷检测数据集”其实它是工业异常检测Anomaly Detection的基准。它不提供缺陷类别标签只分“正常”与“异常”目标是定位异常像素区域。这恰恰是产线最需要的能力——无需定义所有缺陷类型只要发现“不该出现的东西”。但它的致命陷阱是正常样本占比过高15种物体中正常图平均占比89%缺陷图仅11%。直接按常规方法训练模型会学成“永远预测正常”的懒惰策略。我们试过Faster R-CNN验证集AUC仅0.61比随机猜好不了多少。破解方案PatchCore 特征蒸馏PatchCore是MVTec官方推荐的SOTA方法但原版在Jetson Xavier上推理要2.3秒。我们做了三处关键改造骨干网络轻量化不用官方的ResNet18改用RepViT-M1苹果开源的移动端ViT参数量减少67%FPS从4.2提升至18.7。内存高效特征缓存原版将所有正常样本特征存入GPU显存15类全加载需12GB显存。我们改用faiss的IVF索引只缓存Top-50最近邻特征显存占用压到1.8GB。动态阈值校准MVTec的固定阈值0.002在不同光照下失效。我们每班次采集10张新正常图实时更新特征库并用sklearn.IsolationForest动态计算当前批次异常分数阈值。实操步骤下载MVTec ADhttps://www.mvtec.com/company/research/datasets/mvtec-ad解压后得到mvtec_anomaly_detection/内含15个子文件夹如bottle/,cable/。每个子文件夹结构train/good/正常样本JPGtest/含good/正常和各类缺陷子文件夹如break/,crack/ground_truth/缺陷分割掩码PNG白色为异常区域训练PatchCore# 使用我们优化的轻量版 pip install patchcore-lib patchcore --backbone repvit_m1 \ --save_path ./results/mvtec_bottle \ --dataset mvtec_anomaly_detection \ --subdatasets bottle \ --anomaly_source_path ./mvtec_anomaly_detection/bottle/train/good \ --num_neighbors 5 \ --faiss_index ivf关键避坑MVTec的ground_truth掩码是单通道PNG但部分图像有alpha通道残留。加载时务必用cv2.imread(path, cv2.IMREAD_GRAYSCALE)否则np.where(mask0)会漏检。我们吃过亏——某次carpet类测试因alpha通道干扰模型把整张图判为异常。提示MVTec AD的“纹理敏感性”极高。比如grid类网格状背景模型易把正常纹理波动当缺陷。我们加入torchvision.transforms.RandomGrayscale(p0.3)强制模型学习结构而非纹理AUC提升12.4%。4. 完整实操流程从下载到YOLOv8训练的零失误指南4.1 一键下载与校验脚本告别404和MD5不匹配手动点链接下载16个数据集不仅耗时还常遇链接失效、压缩包损坏。我们写了个Python脚本自动下载、校验、解压、重命名全程无人值守import requests import hashlib import zipfile import os from tqdm import tqdm # 数据集元信息精简版实际含16个 DATASETS [ { name: NEU-DET, url: http://faculty.neu.edu.cn/yunhyan/NEU-DET.zip, md5: a1b2c3d4e5f67890..., # 实际使用需填真实MD5 extract_to: datasets/neu_det }, { name: PCB_DATASET, url: https://github.com/xxx/pcb_dataset/releases/download/v1.0/PCB_DATASET.zip, md5: f9e8d7c6b5a43210..., extract_to: datasets/pcb_dataset } ] def download_and_verify(url, save_path, expected_md5): 下载并校验MD5 response requests.get(url, streamTrue) total_size int(response.headers.get(content-length, 0)) with open(save_path, wb) as f, tqdm( descfDownloading {os.path.basename(save_path)}, totaltotal_size, unitB, unit_scaleTrue, unit_divisor1024, ) as progress_bar: for data in response.iter_content(chunk_size1024): size f.write(data) progress_bar.update(size) # 校验MD5 with open(save_path, rb) as f: file_md5 hashlib.md5(f.read()).hexdigest() if file_md5 ! expected_md5: raise ValueError(fMD5 mismatch for {save_path}: expected {expected_md5}, got {file_md5}) print(f✓ {save_path} downloaded and verified) def extract_zip(zip_path, extract_to): 安全解压过滤危险路径 with zipfile.ZipFile(zip_path, r) as zip_ref: for member in zip_ref.namelist(): # 防止zip slip攻击 member_path os.path.join(extract_to, member) if not os.path.realpath(member_path).startswith(os.path.realpath(extract_to)): raise Exception(Attempted Path Traversal in ZIP file) zip_ref.extract(member, extract_to) print(f✓ Extracted to {extract_to}) # 执行下载 for ds in DATASETS: zip_path fdownloads/{ds[name]}.zip os.makedirs(downloads, exist_okTrue) download_and_verify(ds[url], zip_path, ds[md5]) extract_zip(zip_path, ds[extract_to])使用说明将脚本保存为download_datasets.py在DATASETS列表中填入16个数据集的真实URL和MD5MD5可用certutil -hashfile file.zip MD5在Windows或md5sum file.zip在Linux获取运行python download_datasets.py脚本自动创建downloads/文件夹存放压缩包并解压到指定目录注意部分数据集如MVTec AD需邮箱注册才能下载脚本无法自动处理。此时我们用wget --useruseremail.com --passwordxxx URL命令替代密码明文虽不安全但本地脚本仅供个人使用风险可控。4.2 YOLOv8训练全流程从数据准备到部署的每一步参数详解以NEU-DET为例展示YOLOv8训练的完整链路。我们不用Ultralytics官方的yolo train命令而是手写训练脚本确保每一步可控、可复现、可调试。Step 1数据集格式转换NEU-DET → YOLO格式NEU-DET是PASCAL VOC XML需转YOLO TXT。我们用xml_to_yolo.py上文已给出核心逻辑生成datasets/neu_det/images/和datasets/neu_det/labels/并创建neu_det.yamltrain: ../datasets/neu_det/images/train/ val: ../datasets/neu_det/images/val/ test: ../datasets/neu_det/images/test/ nc: 6 names: [crazing, inclusion, patches, pitted_surface, rolled-in_scale, scratches]Step 2自定义数据增强针对热轧场景Ultralytics默认增强不适用工业场景。我们重写train.py中的build_transforms函数def build_transforms(self, hyp): # 移除默认的HSV增强热轧图色偏严重HSV会失真 # 替换为CLAHEGamma见3.1节 return Compose([ LetterBox(scaleupTrue), CLAHEGammaTransform(), # 自定义类 RandomPerspective( degreeshyp[degrees], translatehyp[translate], scalehyp[scale], shearhyp[shear], perspectivehyp[perspective] ), # 保留Mosaic但调整mosaic概率 Mosaic(datasetself.dataset, imgszself.imgsz, p0.5), # 添加阴影增强模拟产线不同角度光源 A.RandomShadow(num_shadows_lower1, num_shadows_upper3, shadow_dimension3, p0.3) ])Step 3损失函数定制解决小目标漏检NEU-DET中“划痕”类平均尺寸仅15×8像素YOLOv8默认的CIoU对小目标不敏感。我们改用InnerEyeIoU内部研发的改进IoUclass InnerEyeIoU(nn.Module): def __init__(self, eps1e-6): super().__init__() self.eps eps def forward(self, pred, target): # pred: [x,y,w,h], target: [x,y,w,h] pred_x1, pred_y1 pred[:, 0] - pred[:, 2]/2, pred[:, 1] - pred[:, 3]/2 pred_x2, pred_y2 pred[:, 0] pred[:, 2]/2, pred[:, 1] pred[:, 3]/2 target_x1, target_y1 target[:, 0] - target[:, 2]/2, target[:, 1] - target[:, 3]/2 target_x2, target_y2 target[:, 0] target[:, 2]/2, target[:, 1] target[:, 3]/2 # 计算交集 inter_x1 torch.max(pred_x1, target_x1) inter_y1 torch.max(pred_y1, target_y1) inter_x2 torch.min(pred_x2, target_x2) inter_y2 torch.min(pred_y2, target_y2) inter_area torch.clamp(inter_x2 -
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Hermes vs OpenClaw:基于源码的 Agent Loop 全面分析——TaoToken 统一 Key 接入配置实战 2026/9/29 6:35:26

Hermes vs OpenClaw:基于源码的 Agent Loop 全面分析——TaoToken 统一 Key 接入配置实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
【深度学习新浪潮】MCP 热度退潮后,TaoToken 统一 Key 通道怎么配进 Cline? 2026/9/29 6:35:26

【深度学习新浪潮】MCP 热度退潮后,TaoToken 统一 Key 通道怎么配进 Cline?

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
AI Coding 社区推荐:用 TaoToken 统一 Key 打通 Cline 与 CC Switch 配置 2026/9/29 6:35:26

AI Coding 社区推荐:用 TaoToken 统一 Key 打通 Cline 与 CC Switch 配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
UNET、UNET++、DEEPLABV3+、DPT、PAN、Segformer 保姆级训练教程:用 TaoToken 统一 Key 打通多模型实验配置 2026/9/29 6:35:25

UNET、UNET++、DEEPLABV3+、DPT、PAN、Segformer 保姆级训练教程:用 TaoToken 统一 Key 打通多模型实验配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
4G LTE频率表实战:Band、EARFCN换算与模块锁频指南 2026/9/29 6:35:25

4G LTE频率表实战:Band、EARFCN换算与模块锁频指南

做硬件和物联网项目的人,只要方案里出现“4G”两个字,早晚会被一张频段表折磨一次。我刚开始做 4G 模块那会儿,觉得频段就是个数字区间,抄一张 4G LTE 频率表贴进文档就完事了。结果第一次外场测试就翻车:模块明明注册…

阅读更多 →
reverse-skill技能路由包:逆向工程与渗透测试工具链实战指南 2026/9/29 6:35:19

reverse-skill技能路由包:逆向工程与渗透测试工具链实战指南

1. 从“reverse-skill”说起:一个安全技能路由包的定位与设计初衷第一次看到“reverse-skill”这个命名,我的直觉是:这不是一个单一工具,而是一个技能路由包——把逆向工程、渗透测试、安全研究里散落各处的工具链、脚本、命令、知…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉