新闻详情

新闻详情

首页 / 资讯中心 / 详情

Grounded-SAM+自动标注三件套:从人工精修到批量蒸馏实战

发布时间:2026/9/30 10:01:53来源:尧图网络
Grounded-SAM+自动标注三件套:从人工精修到批量蒸馏实战
做深度学习项目的人对数据标注的印象基本都逃不过一个苦字。一张图里几十个目标框到手抽筋还是小事最崩溃的是标到一半发现标准不统一前面几天的活全部推翻重来。这两年自动标注工具层出不穷但真正经得起实战检验的没几个。我前后把 X-AnyLabeling、autodistill、Grounded-SAM 这三样都完整跑过一遍发现它们虽然定位不同组合起来却能覆盖从人工智能加人工精修到无人值守批量粗标再到数据集直接喂给训练的一整条链路。这篇文章就把这三件套的定位、部署、实操、参数调优和踩坑记录一次性讲透适合正在做目标检测或实例分割、被标注产能卡住脖子的算法工程师、数据团队以及想自己攒一份数据集的学生和独立开发者。所有操作我都按实际跑通的顺序来写照着做能少走不少弯路。1. 自动标注的核心思路三个工具各管哪一段1.1 为什么是 Grounded-SAM把一句话变成标注结果自动标注方案里最核心的引擎绕不开 Grounded-SAM。它的原理并不玄乎由两个模型串联完成先是 Grounding DINO这是一个支持文本提示的目标检测模型你输入person . car .它会在图中找出可能包含人、车的候选框然后 SAMSegment Anything Model接收这些框作为提示进一步分割出目标更精确的轮廓。整个链路可以概括成 text → box → mask也就是不需要任何预训练的样本只靠自然语言描述就能直接产出检测框和分割掩码。这里有一个关键区别传统检测模型只能识别训练集里出现过的固定类别而 Grounded-SAM 对开放词表友好得多它能泛化到没见过的类别只要文字描述足够准确基本都能把目标捞出来。这一点正是它被各类标注工具内置的核心原因。比如我标过一版工厂安全帽数据类别词写helmet效果就很稳换成中英文混写效果反而差一截说明提示词拼写对结果影响极大。1.2 X-AnyLabeling人工在环的标注工作台X-AnyLabeling 是开源的标注工具我在实际项目中把它当成标注工作台来用。它最大的特点是把一大批视觉模型内置到了标注界面里打开软件选一张图选中模型写一句提示词点一下运行Grounded-SAM 或者其他模型就先帮你把画面里的目标框出来、分割出来。你要做的事情是检查、修正、确认再按 CtrlS 保存。这个流程依然需要人介入但介入成本已经从逐像素画框降到了偶尔补一两个漏检框。它支持多种标注格式的导入导出COCO、VOC、YOLO、LabelMe JSON 都能处理适合需要在AI 自动生成和人工精修之间来回切换的场景。对我这种习惯用 PyCharm 写代码的人而言X-AnyLabeling 源码部署也方便跑起来之后标注标准完全由人把控模型的 ll 结果只当参考线这一点在精度要求高的项目里非常重要。1.3 autodistill无人值守的批量标注与数据蒸馏autodistill 是 Roboflow 团队开源的一套自动化标注框架思路相当直白用教师模型Grounded SAM、YOLO-World甚至 GPT-4V 这类大模型去标注一批未标注的图像生成完整的数据集再用这份数据去训练学生模型YOLOv8、RT-DETR 这类轻量检测器。它的口号是 label once, train anywhere翻译过来就是你只需要定义好类别后面全自动。这套流程解决的是完全不同的痛点当数据量变得很大比如几千上万张图人工逐张确认本身就是巨大的成本。如果项目对标注精度的要求不是极端严格或者后续还有专门的人工抽检环节用 autodistill 全自动批量跑一遍再抽检是最省人力的方案。它一次调用 GPU把所有图片推理完直接输出一份可以开训的数据集真正做到无人值守。1.4 三种方案的选型对比先想清楚自己的场景方案自动化程度人工介入量输出格式适用场景X-AnyLabeling Grounded-SAM半自动中逐张确认修正COCO / VOC / YOLO / JSON精度要求高的精标数据集autodistill GroundedSAM 教师全自动批量低样本抽检Pascal VOC XML数据量大的粗标、预训练、冷启动两者混合先自动后人工中低任意生产环境我比较推荐的路线选型的关键判断标准是项目对标注质量的容忍度。做医疗影像、自动驾驶这类错误代价极高的方向自动化标注只能当预标注人工必须逐张把关如果只是想给检测模型打个底或者做领域预训练autodistill 路线几乎是效率上限。2. 部署篇三个工具的环境搭建与模型准备2.1 硬件和软件基线先确认机器能跑哪一档开始安装之前先说清楚硬件底线。Grounded-SAM 是检测器加分割器两个模型串联运行时两个模型都要驻留在显存里权重合计接近 3GB推理时峰值占用大概在 5-8GB。我的建议是显卡显存至少 8GB比如 RTX 3060 12G、RTX 4060 8G、V100 这类才跑得比较舒服。如果只有 4-6GB 显存也不是完全不能玩但要选 SAM 的 vit_b 小版本输入分辨率也得降下来后面细说。软件方面Windows 10/11 或 Ubuntu 20.04/22.04 都行CUDA 建议 11.8 或 12.1Python 建议 3.8-3.10。这里要特别提醒一句别急着用最新的 Python 3.12PyQt5、torch 这些库的预编译轮子经常跟不上新版本我见过太多人卡在安装阶段纯粹是因为 Python 版本太新。2.2 X-AnyLabeling 安装以及 PyCharm 里跑源码的两条路X-AnyLabeling 的安装方式有两种。第一种是直接 pip 装打包好的发布版命令就一句pip install x-anylabeling然后终端输入x-anylabeling即可启动。这种方式最适合没耐心折腾环境、只想尽快打开软件标注的人。但如果你需要最新的模型列表、想改代码或者想加自定义模型就得走源码部署的方式这也是最近微博、知乎上很多人讨论的PyCharm 运行 x-anylabeling 源码环境部署。源码部署的步骤并不复杂我按实际顺序拆开写克隆仓库并进入目录git clone https://github.com/CVHub520/X-AnyLabeling.git cd X-AnyLabeling创建独立的 conda 虚拟环境conda create -n x-anylabeling python3.8 conda activate x-anylabeling安装依赖pip install -r requirements.txt打开 PyCharmFile → Settings → Project → Python Interpreter把解释器切换到刚才创建的 conda 环境然后打开项目根目录下的app.py右键直接 Run。我在这一步踩过几个真实的坑。一是 requirements.txt 默认装的 opencv-python 可能和机器上已有的 opencv-contrib-python 冲突表现是 ImportError 或者cv2 版本异常解决办法是pip uninstall掉其中一个再重装。二是 Windows 下启动后黑窗口一闪而过大概率是 PyQt5 相关 dll 缺失用python -m pip install PyQt5 PyQt5-Qt5 PyQt5-sip --force-reinstall重装一遍能解决。三是运行目录必须在项目根目录否则资源文件路径对不上界面会白屏。另外不建议在已有的深度学习环境里直接装PyQt5 和 torch 的版本拉扯会让人非常头疼单独建环境是最稳的选择。2.3 准备 Grounded-SAM 的权重文件下载与放置无论走 X-AnyLabeling 还是 autodistill底层都需要 Grounding DINO 和 SAM 的权重文件。需要准备三样东西Grounding DINO 配置文件GroundingDINO_SwinT_OGC.pyGrounding DINO 权重groundingdino_swint_ogc.pth约 700MBSAM 权重sam_vit_h_4b8939.pth约 2.5GB显存不够也可以换成更小的 vit_b 版本这些文件在 Hugging Face 上都有托管国内下载比较慢建议直接用hf-mirror.com这类镜像站下载或者让有条件的朋友先下载好再拷贝。X-AnyLabeling 中权重文件通常放到assets/weights目录并在对应的模型 yaml 里配置好绝对路径autodistill-grounded-sam 会自动从 HuggingFace 拉取但我更推荐设置本地的模型缓存路径省得每次都重新下载。这里顺便解释一下配置文件为什么重要。Grounding DINO 的 PyTorch 模型在加载时必须配置 权重配对GroundingDINO_SwinT_OGC.py定义了骨干网络结构、特征金字塔层数、跨模态解码器等超参数权重文件里只存参数数值两者版本不匹配就会直接报错missing keys。所以我每次都把 cfg 文件和 pth 文件放在同一个目录下做好配对再排查问题的时候也更容易定位。2.4 autodistill 安装与教师模型配置autodistill 本体加上 GroundedSAM 教师模型、YOLOv8 学生模型三行 pip 就能装好pip install autodistill autodistill-grounded-sam autodistill-yolov8它依赖的 groundingdino 和 segment-anything 会自动拉取。要注意的是autodistill 的模型缓存目录和 X-AnyLabeling 的资源目录不互通权重建议各放一份避免互相干扰。autodistill 不需要额外的配置文件核心是把 classes 列表定义准确例如classes [person, dog, car]一个比较容易被忽略的点autodistill-grounded-sam 的教师模型默认加载的是groundingdino_swint_ogc加sam_vit_h显存要求偏高。机器跑不动时可以在初始化GroundedSAM时指定更轻量的版本但对应的权重路径要提前备好否则初始化过程还是会走联网下载。3. X-AnyLabeling 实操用 Grounded-SAM 做交互式自动标注3.1 模型配置读懂模型 yaml 里的关键字段X-AnyLabeling 通过模型配置注册机制加载模型所有内置模型的 yaml 文件都在x-anylabeling/resources/configs目录下。很多新手打开界面发现模型列表里没有 Grounded-SAM多半是下载的源码版本较旧或 yaml 文件没加载出来。更新源码后还要注意模型列表的刷新不是改了文件点个刷新就完事。以常用的 grounded_sam 配置为例重点看这几个字段配置字段含义我的建议model_typeGrounding DINO 骨干类型grounding_dino_swint_ogc性价比最高model_pathGrounding DINO 权重绝对路径用绝对路径不要用相对路径sam_model_typeSAM 版本显存小用sam_vit_b精度优先用sam_vit_hsam_model_pathSAM 权重绝对路径用绝对路径prompt默认提示词写清楚类别多类用英文句点分隔box_threshold检测框置信度阈值0.25-0.35 起步密集场景降到 0.2text_threshold文本匹配阈值0.20-0.30一般比 box_threshold 略低注意prompt字段里类别词之间用英文句点分隔比如person . car . traffic light .。这是 Grounding DINO 的输入习惯不是随便写写换成逗号或空格效果都会打折扣。3.2 一次标注任务的标准操作流程打开 X-AnyLabeling 后先把图片文件夹拖进左侧工作区或者通过 File → Open 选择。然后在模型导航栏选中 Grounded-SAM模型加载成功后在控制面板里输入提示词点 Run。模型推理完成后当前图片上会出现一组目标框和分割结果这就是你的第一版标注草稿。这里有个很重要的操作习惯模型跑出来的结果默认是临时标注不保存不会落到文件里。你要做的是逐张检查把漏检的框补上、误检的框删掉、贴边的框微调然后 CtrlS 保存。如果开启的是分割模式SAM 生成的轮廓质量远高于手工描绘这一点在实例分割项目里体验特别明显。批量操作上X-AnyLabeling 的优势是逐张确认与修改很顺手但如果你有几千张图想一口气跑完它不是最优选项——这种全自动批量场景更适合交给 autodistill本章的方法更适合精标。3.3 快捷键速查表标得快全靠手不离键盘X-AnyLabeling 的快捷键设计得比较顺手我标了几百张图之后最常用的是下面这些快捷键功能W绘制矩形框进入画框工具E橡皮擦工具CtrlS保存当前标注CtrlZ撤销上一步CtrlC / CtrlV复制/粘贴选中的标注D / A下一张 / 上一张图片Ctrl滚轮缩放画布按住空格 拖拽平移画布快捷键以界面右下角提示为准不同小版本略有差异但我实测下来 W、E、CtrlS、A/D 这套核心组合是通用的。我的个人操作习惯是左手始终放在键盘左侧右手握鼠标一张密集场景图从模型跑完到人工修完平均 40 秒左右比纯手动画框至少快 5 倍。3.4 阈值参数调优心得漏检和误检的平衡点用 Grounded-SAM 标注时最常遇到两类问题漏检该框的没框和误检不该框的框一大堆。这两类问题靠box_threshold和text_threshold两个旋钮来平衡。box_threshold控制检测框的置信度阈值。调低模型更激进更多模棱两可的目标会被框出来代价是误检变多调高模型更保守漏检风险上升。text_threshold控制文本与视觉特征的匹配门限主要影响 Grounding DINO 对同一物体不同形态的表现。我的调参口诀先用默认值 box0.3、text0.25 跑一遍观察漏检多还是误检多。漏检多就把 box 降到 0.2-0.25误检多就往 0.35-0.4 方向调。密集小物体场景比如人群、货架上的商品我建议单独用 0.2 以下的阈值宁可多框再人工删也不要漏框再补框——因为补框需要手动精确定位比删框费时太多。提示词的写法对结果的影响往往比阈值还大。描述类别时尽量具体标红绿灯写traffic light比写light好标船舶写ship . boat .比只写boat好。类别之间注意用句点而非逗号这和 Grounding DINO 的文本编码方式直接相关。3.5 导出格式与训练衔接标注完成后点击导出X-AnyLabeling 支持 COCO JSON、VOC XML、YOLO txt、LabelMe JSON 等格式。这里有个容易被忽略的细节导出 YOLO 格式时软件会按实际标注时用到的类别顺序生成classes.txtYOLO 训练时这个文件必须和标注文件一一对应。如果你后面要合并 autodistill 生成的 VOC 标注一起训练务必先统一类别顺序否则类别编号错位模型训练出来会非常诡异。4. autodistill 自动化流水线无人工干预的批量标注与模型蒸馏4.1 从人在回路到机器在回路autodistill 的哲学前面讲了 X-AnyLabeling 本质还是人在回路AI 先把草稿画好人负责验收和返工。这种模式质量高但吞吐量有上限一个人一张张看一天几百张图就到头了。可很多项目的瓶颈恰恰是没有标注数据就没法训练模型没有模型就没法高效标注这是一个先有鸡还是先有蛋的局。autodistill 的思路是机器在回路让足够强的教师模型先给数据打标签再用带伪标签的数据训练轻量的学生模型。这里需要说明蒸馏并不是传统意义上拟合软标签的 logits 蒸馏本质是伪标签蒸馏也叫数据蒸馏——大模型的识别能力通过数据标签形式沉淀到小模型里。学生模型后续既能用于快速推理和边缘端部署也能作为下一轮数据筛选的引擎形成数据飞轮。4.2 基于 GroundedSAM 教师模型的自动标注代码实战确保环境装好之后下面这段代码就是从一批未标注图片生成完整数据集的最小可运行示例from autodistill_grounded_sam import GroundedSAM from autodistill_yolov8 import YOLOv8 classes [person, dog, backpack] # 1. 初始化教师模型 base_model GroundedSAM(classesclasses) # 2. 对输入文件夹里的所有图片自动标注 dataset base_model.label( input_folder./round1_raw, output_folder./round1_dataset ) # 3. 查看数据集描述 print(dataset.description())跑完之后round1_dataset目录下会生成 images 和 annotations 两个子目录标注文件是 Pascal VOC 格式的 XML。dataset.description()返回图片总数、目标总数和类别分布这是评估自动标注质量的第一步。以 RTX 3060 为例一张 1080p 图片推理大约 1.5-3 秒1000 张图一个晚上跑完毫无压力。如果对标注结果不放心可以用 supervision 快速可视化抽查import supervision as sv import cv2 annotations_path ./round1_dataset/annotations/000001.xml detections sv.Detections.from_pascal_voc(annotations_path) image cv2.imread(./round1_dataset/images/000001.jpg) annotator sv.BoxAnnotator() label_annotator sv.LabelAnnotator() labels [f{class_name} {conf:.2f} for class_name, conf in zip(detections.data[class_name], detections.confidence)] frame annotator.annotate(image.copy(), detections) frame label_annotator.annotate(frame, detections, labelslabels) cv2.imwrite(visual_check.jpg, frame)把抽查结果可视化输出比盯着一堆 XML 看直观得多。我强烈建议每跑完一批就抽查 2%-5% 的图片尤其注意类别占比少的样本因为教师模型对长尾类别的识别效果往往差于常见类别。4.3 算一笔效率账自动标注到底省了多少时间我在团队里实际做过一次对比。一批 2000 张安防场景数据每张图平均 25 个目标。纯手工标注的话一个熟练标注员一小时大约能完成 40-60 张按平均 50 张算一个人需要整整 40 小时多人协同还要额外消耗时间统一标准、处理争议样本。自动标注路线是2000 张图在单张 RTX 4090 上跑 GroundingDINO SAM推理约 90-120 分钟跑完之后人工抽检 5% 的图片修正个位数错误总计不到 3 小时。即便把后续学生模型的训练时间也算进去YOLOv8n 在 2000 张图上跑 100 轮大约是 1-2 小时整个流程半天内结束。这个前提是类别描述准确、提示词调得稳实际差距稳定在 8-10 倍非常可观。4.4 蒸馏实战用自动标注的数据集训练 YOLOv8 学生模型拿到 dataset 之后训练学生模型同样是几行代码# 4. 初始化学生模型类别必须和教师模型完全一致 target_model YOLOv8(yolov8n.pt, classesclasses) # 5. 开始训练 target_model.train(dataset, yolov8n_round1)训练完的模型输出在runs/detect目录下接下来可以拿它对更大规模的未标注数据进行推理也可以直接投入业务。这里要提醒一点autodistill 的train方法内部调用的是 Ultralytics 的 YOLO 训练接口所以传入的 dataset 必须是 DetectionDataset 对象如果你把标注转成了其他格式需要先转回它规定的目录结构。训练过程报类别数不匹配的错多半是 XML 里 object 的 name 字段和 classes 定义不一致。我在代码里加了统计函数训练前先打印一遍数据集里所有类别出现次数能避免很多莫名其妙的训练报错。4.5 学生模型效果验证不要只看 mAP学生模型训练完之后评估方法我坚持两步走。第一步拿验证集算 mAP0.5 和 mAP0.5:0.95和教师模型在同一验证集上对照差距过大说明训练过程有问题。第二步随机抽一批教师模型没见过的真实场景图让学生模型和教师模型分别预测人眼对比漏检和误检的分布。mAP 再高落到具体业务场景里表现不好也没有意义尤其是小物体和遮挡严重的场景建议针对这些样本单独统计 AP。另外一个容易忽略的问题是误差传递。教师模型在数据集上的系统性偏差比如对某类目标整体框偏小会直接写进标签再传给学生模型。第一轮自动标注完成后我习惯检查同类目标在整批图片里的框尺寸分布如果发现大量异常小的框多半是教师模型对该类目标的定位有问题需要调阈值或优化提示词后重新标注而不是急着训练。5. 踩坑实录与常见问题排查5.1 权重文件下载慢、加载不出来这个问题出现频率最高表现是模型加载一直转圈或日志里出现连接超时。解决办法有几个优先从hf-mirror.com镜像站下载 pth 文件设置环境变量或在工具配置里指定本地权重路径而不是让工具每次在线拉取。autodistill-grounded-sam 初始化时可以传本地权重路径参数X-AnyLabeling 直接改 yaml 里的绝对路径。还有一个小坑权重文件的路径里不要有中文或空格有些模型加载库解析起来会出问题。5.2 PyCharm 源码运行时界面白屏或启动崩溃这是 PyCharm 跑 X-AnyLabeling 源码时最常见的问题。大概率是三个原因目录不对、依赖冲突、Qt 插件异常。先确认当前工作目录是项目根目录这是很多人忽略的一点再用pip list检查是否存在多个 opencv 相关包同时存在最后重装 PyQt5 系列包。如果启动后提示缺少resources目录多半是 clone 仓库时 LFS 文件没拉全运行git lfs pull补一下。5.3 显存溢出OOM问题Grounded-SAM 两个模型串联6GB 显存很容易爆掉。降低占用的手段按优先级排列把 SAM 换成sam_vit_b小版本把输入图片分辨率控制在 1280 以下batch 设小或推理时启用半精度torch.float16Linux 下设置PYTORCH_CUDA_ALLOC_CONFexpandable_segments:True减少显存碎片注意半精度对检测框输出的边界质量有一定影响精标场景建议保持 fp32批量粗标则可以直接上 float16 提速。5.4 Grounded-SAM 漏检和误检排查表现象可能原因排查方向某类目标大面积漏检提示词写法不对或缺类别换更具体的英文词或拆成多个词背景大量误检阈值太低抬高 box_threshold 与 text_threshold密集小目标混在一起NMS 阈值不合适调整 nms_threshold 或降低输入分辨率出现大量重复框教师模型重复解码提高 nms_threshold检查输出去重逻辑5.5 autodistill 训练报错类别数量对不上训练阶段最常见的报错是 number of classes does not match。原因是教师模型标注 XML 里出现了 classes 里没有定义的 name或者学生模型初始化时 classes 和数据集实际类别不一致。排查方法是解析全部 XML提取 object name 的并集和 classes 列表对比。我分享一个亲自踩过的例子类别定了backpack提示词里写成了bag教师模型照常标注训练时类别编号错位整个模型输出全乱。建议训练前先跑个统计函数import glob import xml.etree.ElementTree as ET from collections import Counter counter Counter() for xml_file in glob.glob(./round1_dataset/annotations/*.xml): tree ET.parse(xml_file) for obj in tree.findall(object): counter[obj.findtext(name)] 1 print(counter)结尾我的实际体会这套三件套组合我最舒适的使用姿势是先拿 X-AnyLabeling 配 Grounded-SAM 精标一小批样本比如 300 张把提示词和阈值打磨到稳定状态再用同样的配置交给 autodistill 批量跑剩余数据最后随机抽检把不合格的图挑出来回到 X-AnyLabeling 里补标。三件套之间不是互相替代而是各管一段配合起来能把标注成本压到最低。最后分享一个我一直坚持的习惯任何自动标注结果进入训练之前一定先做一次可视化抽检把标注画出来、人眼过一遍这个环节省不掉——你越是信任模型越要在这里保持挑剔。希望这篇实战记录能让你的标注管线早点跑起来少踩几个我已经替你踩过的坑。
网站建设高端定制企业官网
RELATED

相关资讯

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

较早相关资讯

最新相关资讯

Java面试实战:Spring Boot、微服务与SSE流式输出全攻略 2026/9/30 10:44:20

Java面试实战:Spring Boot、微服务与SSE流式输出全攻略

最近帮几位朋友做了一轮大厂Java面试的模拟复盘,发现一个明显变化:面试官已经不满足于“背八股”了。Spring Boot、微服务依然是必考底盘,但AI技术相关的追问越来越多,经常一开口就是“你项目里大模型回答是怎么流式渲染的”“客户…

阅读更多 →
Docker 容器中 GNU Radio 与 USRP B210 的 WiFi IQ 采集实战 2026/9/30 10:44:20

Docker 容器中 GNU Radio 与 USRP B210 的 WiFi IQ 采集实战

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

阅读更多 →
嵌入式设备合规从操作系统开始:openEuler与ARM平台安全启动实践 2026/9/30 10:44:20

嵌入式设备合规从操作系统开始:openEuler与ARM平台安全启动实践

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

阅读更多 →
IEEE 802.3cm 标准解读:400G 多模光纤 100 米链路部署与验收 2026/9/30 10:44:20

IEEE 802.3cm 标准解读:400G 多模光纤 100 米链路部署与验收

简介:IEEE Std 802.3cm-2020 是 IEEE 发布的以太网修订标准,聚焦多模光纤上 400Gb/s 的物理层与管理参数,面向光模块研发、数据中心网络架构及高速以太网测试工程师。标准新增 Clause 150,定义了 400GBASE-SR8 与 400GBASE-SR4.2 …

阅读更多 →
KeyarchOS适配leveldb全流程:编译验证与性能实践 2026/9/30 10:44:12

KeyarchOS适配leveldb全流程:编译验证与性能实践

1. 适配前的思考:为什么是KeyarchOS和leveldb信创这个词已经喊了好几年,落到实际工作上,就是一个个具体组件的适配验证。我手头这台机器装的是浪潮信息的KeyarchOS(KOS),内核基于主流Linux发行版体系构建&a…

阅读更多 →
Python+Scapy实现局域网设备扫描:快速获取IP与MAC地址 2026/9/30 10:44:04

Python+Scapy实现局域网设备扫描:快速获取IP与MAC地址

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

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

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

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