基于YOLOv10的绝缘子缺陷检测系统:从数据集训练到UI部署实战

干电力视觉检测这行的朋友,多半都跟绝缘子打过交道。输电线路上的绝缘子一旦自爆或者缺失,轻则跳闸,重则大面积停电,传统的巡检靠人爬塔、拿望远镜看,效率低还危险。这个项目就是用YOLOv10深度学习方法训练了一个绝缘子缺陷检测模型,配上YOLO格式的标注数据集、一套本地UI界面,打包成完整的Python项目源码加预训练模型,可以用图片跑,也可以接摄像头实时检测。如果你正在做工业视觉、电网巡检方向的项目,或者要拿一套完整的检测系统练手,这套东西正好能覆盖从数据到落地的全部环节。

1. 项目整体设计:为什么用YOLOv10啃绝缘子缺陷

1.1 绝缘子缺陷检测到底在检测什么

先理清业务问题。绝缘子挂在输电线上,主要作用是电气绝缘和机械支撑,长期暴露在户外,经历雷击、污秽、冰灾、温差,最容易出现两类问题:一是自爆,玻璃绝缘子在钢化过程中存在一定自爆率,运行中也会因为外力或质量问题突然碎裂;二是破损和缺失,瓷绝缘子的伞裙边缘磕碰后容易掉瓷,复合绝缘子的伞裙会老化开裂。不管是哪一种,都意味着绝缘强度下降,严重时引发短路接地。

从视觉检测角度看,这些缺陷有很明显的图像特征:自爆后的绝缘子串会出现明显的缺片,轮廓断裂;破损部位有尖锐的边缘和色差;缺失位置则直接少了一两片。难点在于绝缘子本身是长条状小目标,在巡检图像里往往只占几十个像素,背景又是电线、铁塔、山林等复杂纹理,加上光线变化、拍摄角度不同,很容易漏检误检。所以就明确了系统目标:识别绝缘子串的位置,同时判断它是正常还是缺陷状态,输出类别框和置信度。

1.2 YOLOv10凭什么比前代更香

我最早考虑过YOLOv5和YOLOv8,最后还是选了YOLOv10,核心原因是它解决了两个实际痛点——NMS后处理的额外耗时和模型效率上限。

早期YOLO系列在训练时用一对多标签分配,推理时每个目标会预测出多个框,需要用NMS(非极大值抑制)去重。后处理逻辑本身不复杂,但在大批量推理或边缘设备部署时,NMS占用CPU资源、增加延迟,还会引入一部分精度损失。YOLOv10引入了一致双分配策略,训练时同时使用一对多和多对一分配,推理时只保留多对一分支的预测,不需要NMS,直接输出最终框。换句话说,模型自己学会了“哪些框该留、哪些框该丢”,推理链路更干净。

网络结构上,YOLOv10继续沿用了CSP瓶颈模块的C2f设计,在特征融合阶段加入了大核注意力模块PSA,把全局上下文信息和局部特征都抓得更细。对绝缘子这种细长目标来说,这个特性很重要——模型能更好地感知绝缘子串的整体走向和断片处的局部突变。再加上模型把计算冗余进一步压缩,同等精度下参数量和FLOPs比前代更低,训练和部署成本都降下来了。

模型变体从N、S、M到B、L、X都有,覆盖轻量化到高精度场景。我这个项目用的是YOLOv10n和YOLOv10s两个版本,前者做实时视频流检测,后者做高精度图片分析,训练策略和部署代码完全共用。这套设计的收益很直接:训练开销小,推理延迟低,改起来也顺手。

2. YOLO数据集:从零构建绝缘子缺陷数据集

2.1 类别设计与标注规范

做检测项目第一步是定义检测目标,不是越多越好。我参考工程需求把类别定为三类:normal(正常绝缘子)、broken(破损/自爆)、missing(缺失)。为什么不做成单一“缺陷”类别?因为现场处置策略不同——破损的绝缘子可能需要计划检修,缺失的往往要紧急处理,而且在视觉特征上二者差异明显,分开训练模型更容易收敛。

数据来源分两部分:一部分是公开的绝缘子检测数据集,包含不同电压等级、不同拍摄场景的图片;另一部分是从无人机巡线视频里截帧、挑清晰的样本。总体筛选后保留约8000张有效图片。这里面有个容易踩的坑:网上很多数据集只标了“绝缘子”整类,没有缺陷细分标签,需要人工二次标注。我用LabelImg重新标注了一遍,输出格式选YOLO的txt格式,每个文件对应图片中一个目标的归一化坐标。

标注时有个细节值得强调:框一定要贴着目标边界,不要为了省事把多个绝缘子串框在一起。YOLO的锚框机制对目标大小分布敏感,如果一张图里既有密集小目标又有稀疏大目标,框范围不统一会严重干扰回归头学习。另外,缺陷样本至少要占总样本的25%,不然模型会倾向于把所有目标都判成正常,因为那样损失最小。我最初就是正常样本占了九成,跑了50个epoch后精度看着高,一测缺陷召回率惨不忍睹。

2.2 数据清洗、划分与增强

标注完成后别急着训练,数据清洗这步省不得。我用脚本统计了每张图片的标注框数量和目标尺度分布,筛掉三类问题数据:

  • 空标注图:文件有但txt掉线了,训练时yield会报错,还污染损失计算。
  • 误标注样本:框的中心点严重偏离图像中心,或者宽高比离谱到超过5:1的,基本是手滑点错。
  • 重复样本:从视频截帧得到的图片相邻帧高度相似,保留间隔帧即可。

清洗完剩下约7600张。按8:1:1划分训练集、验证集、测试集。划分要用随机种子固定住,而且按整个视频来源分,而不是简单随机切单帧——同一个视频的相邻帧内容几乎一样,如果随机切,训练集和验证集会高度相似,评估结果虚高,换到真实场景马上现原形。

数据增强方面,YOLOv10的训练管线内置了Mosaic、随机仿射变换、HSV色域扰动、翻转等策略。Mosaic把四张图拼接成一张训练,让小目标在图中占比更接近真实分布,也减少了batch间的分布波动。我对绝缘子数据集额外调大了hsv_v扰动值(曝光和色偏),因为巡线图像的光照变化非常大,从正午强光到阴天阴影都有,模型必须对这些变化不敏感。

最终数据集目录结构如下:

datasets/insulator/ ├── images/ │ ├── train/ │ ├── val/ │ └── test/ └── labels/ ├── train/ ├── val/ └── test/

3. 模型训练:环境搭建、参数调优与评估

3.1 环境搭建与工程目录

训练环境其实没有想象中复杂,核心依赖就三块:PyTorch、Ultralytics、CUDA。我建议用conda建独立环境,避免跟其他项目互相污染依赖版本。我的环境版本配置如下:

conda create -n yolov10 python=3.9 pip install torch==2.1.2 torchvision==0.16.2 --index-url https://download.pytorch.org/whl/cu121 pip install ultralytics

这里要特别提醒:Ultralytics对Python版本和PyTorch版本有兼容范围,Python 3.9+/3.10+配PyTorch 2.0+基本没问题,但如果用Python 3.12,有些扩展包的预编译轮子可能装不上,建议别追新。训练前先验证CUDA可用:

python -c "import torch; print(torch.cuda.is_available(), torch.cuda.get_device_name(0))"

工程目录我会单独建一个项目文件夹,不跟Ultralytics源码混在一起:

insulator_detection/ ├── dataset/ ├── runs/ # 训练输出 ├── weights/ # 预训练模型和训练产物 ├── UI/ # PyQt5界面代码 └── utils/ # 通用工具函数

3.2 训练参数设置与命令实战

训练前先下载YOLOv10的预训练权重,我用的yolov10n.pt和yolov10s.pt。迁移学习的好处不用多说,COCO上预训练得到的特征提取能力能帮模型快速收敛,尤其对小数据集,直接从头训练很容易欠拟合。

关键训练参数我列个表:

参数值说明
modelyolov10n.pt / yolov10s.pt预训练权重
datainsulator.yaml数据配置文件
epochs150早停机制下通常够了
batch16根据显存调整,8G卡建议8
imgsz640兼顾精度与速度
lr00.01初始学习率
lrf0.01余弦退火最终学习率系数
patience20验证集mAP连续20轮不涨则早停
device0单卡训练

insulator.yaml内容很简单,指定路径和类别名:

path: dataset/insulator train: images/train val: images/val test: images/test names: 0: normal 1: broken 2: missing

训练命令一行搞定:

yolo detect train data=insulator.yaml model=yolov10n.pt epochs=150 batch=16 imgsz=640 lr0=0.01 patience=20 project=runs name=insulator_n

训练过程中我盯着两个东西:loss曲线和验证集的PR曲线。YOLOv10输出里包含box_loss、cls_loss、dfl_loss,正常情况下这几个值都应该是平滑下降的,如果训练中后期出现loss震荡上升,多半是学习率过大或者数据里有脏标注,先停掉检查数据再说。

3.3 精度评估与错误分析

训练结束先看验证集指标,mAP50和mAP50-95都要记。我的YOLOv10n在测试集上达到mAP50约89.5%,YOLOv10s约92.3%,mAP50-95则分别是67.4%和71.8%。数字看着不错,但真正要分析的是错误类型。

我用yolo detect val生成的混淆矩阵做错误分析,发现两个典型问题:一是missing类别经常和broken混淆,原因在于缺失一两片绝缘子时,视觉上很容易和破损的边界形状混淆;二是远景小目标漏检,图像里绝缘子串只有10x30像素时,模型容易直接忽略。

针对第一类问题,我重新检查了标注,把“明显缺片但边界有碎痕”的样本统一归到broken,把“整片光滑消失”的归到missing,让类别边界更干净。针对第二类问题,我把imgsz从640提到960重新训练了一个版本,mAP50涨了1.8个百分点,代价是推理速度下降,但用在图片分析模式完全可以接受。视频实时模式继续用640模型,两种模式配合,正好把精度和速度都照顾到。

4. UI界面设计与系统集成

4.1 界面方案选型

模型训练好了,要落地还得有个能用的界面。我对比过三条路线:

  • Tkinter:Python内置,轻量,但控件风格老气,做复杂布局要自己拼,开发体验一般。
  • PyQt5:控件丰富,支持拖拽式设计,文件对话框、表格、绘图区都齐全,社区资料多,适合本地工具类应用。
  • Web前后端(Flask/FastAPI + Vue):美观且跨平台,但需要搭前端工程,对本地单机工具来说太重了。

我最后选了PyQt5。理由很实在:这套检测系统本质是本地单机工具,需要频繁读写本地文件、调用摄像头、展示检测结果,PyQt5拿Qt Designer画界面很快,Python调用模型推理也直接,不需要额外起服务。界面痛点这个东西很多人低估了——算法再准,如果操作路径绕、等待反馈不明确,现场人员根本不愿意用。

界面功能清单定了五块:

  • 模型加载:下拉选择权重文件,加载后显示模型信息。
  • 图片检测:选择本地图片,画框显示结果,旁边列出每个目标类别和置信度。
  • 视频/摄像头检测:打开本地视频或调用USB摄像头,实时推理并显示FPS。
  • 结果统计:当前画面各类别目标数量,检测耗时。
  • 结果导出:保存标注后的图片、检测结果CSV。

4.2 核心功能与线程处理

UI开发有个必须处理好的问题——界面卡顿。模型推理是耗时操作,如果直接在主线程里跑,界面会像死机一样卡住,移动窗口都没反应。解决办法是把推理放到QThread里,主线程只负责响应界面交互。

核心逻辑是这样拆的:

class InferThread(QThread): frame_ready = pyqtSignal(object) # 推送检测后的画面 stats_ready = pyqtSignal(dict) # 推送统计数据 def __init__(self, model, source): super().__init__() self.model = model self.source = source self.running = True def run(self): if isinstance(self.source, str): cap = cv2.VideoCapture(self.source) else: cap = cv2.VideoCapture(self.source) while self.running: ret, frame = cap.read() if not ret: break results = self.model.predict(frame, conf=0.4, imgsz=640) annotated = results[0].plot() self.frame_ready.emit(annotated) self.stats_ready.emit(build_stats(results[0]))

画面显示这块有个小技巧:cv2.VideoCapture读出来的是BGR格式,QPixmap显示需要RGB,转换用cv2.cvtColor处理,否则颜色偏蓝。另外QPixmap需要从QImage构造,注意保持图像数据生命周期,别让numpy数组被回收。

图片检测和高斯滤波类操作同样放到工作线程里,界面只接收信号更新。如果你发现界面出现了“未响应”提示,先检查是不是有耗时操作跑在主线程。这是PyQt开发最常见的坑,没有之一。

4.3 打包与发布经验

项目要交付,打包这关绕不过去。我用的PyInstaller,版本6.x,一条命令:

pyinstaller -F -w -n InsulatorDetect main.py --add-data "weights:weights"

-F表示单文件模式,-w表示隐藏控制台窗口。这里有个很坑的细节:PyQt5和Ultralytics依赖的资源文件比较多,直接打包容易漏掉,运行时报找不到Qt platform plugin或ultralytics配置文件。解决办法是在spec文件里通过datas显式添加关键资源目录,并且用collect_all收集动态库:

pyinstaller main.py -F -w \ --collect-all ultralytics \ --collect-all torch \ --hidden-import opencv-python

打包产物体积会到几百MB,这是PyTorch生态的正常现象,别慌。如果要更优雅的发布形式,可以考虑用ONNX推理替代PyTorch动态图,体积和启动速度都会改善,但模型跟PyTorch的兼容性调试又得花一轮时间。这个看项目需求取舍。

5. 常见问题与排查技巧

5.1 训练阶段高频问题

显存不足是最先遇到的。我一开始按batch=32跑YOLOv10s,8G显存的卡直接报CUDA out of memory。解决办法按优先级排序:先降batch,再降imgsz,最后换小模型。注意batch最好保持2的幂次,跟CUDA内存对齐有关。

训练曲线收敛但精度低,十有八九是数据问题。先看标注框是否规范,再看类别数量是否均衡。绝缘子场景里正常样本远多于缺陷样本,我用cls损失加权和欠采样把正负比压到3:1以内,效果比单纯堆数据明显。

验证集mAP高但实测拉胯,通常是过拟合。我在训练日志里对比过train loss和val loss的gap,如果400轮后还在扩大,说明模型开始死记训练集。这时候最有效的不是加正则,而是增加数据增强强度,把Mosaic概率调大,同时把hsv_v从默认0.4提到0.6,让模型见到更多光照变化。

5.2 推理与部署阶段高频问题

输出框抖动:视频流检测时,同一个绝缘子的检测框在相邻帧之间会轻微跳动,这是检测模型在置信度波动时的正常现象。如果项目要求框稳定,可以加一个简单的帧间过滤逻辑——保留上一帧框位置,当前帧置信度低于阈值时沿用上一帧结果,做平滑处理。我在UI里加了个“稳定模式”开关,实测抖动降低明显。

CPU推理太慢:没有GPU的机器跑YOLOv10s,640输入大概要300-500ms一帧,体验很差。两个思路:一是用YOLOv10n模型加imgsz=480,速度能提升一倍以上,精度损失在可接受范围;二是导出ONNX格式,配合Intel OpenVINO或ONNX Runtime的CPU加速,实测能再快30%-50%。导出命令如下:

from ultralytics import YOLO model = YOLO("weights/best.pt") model.export(format="onnx", imgsz=640, simplify=True)

摄像头画面颜色不对:前面提过一次,BGR/RGB转换问题,用OpenCV读框时画框颜色是BGR,记得直接传(0, 255, 0)这类三元组是BGR顺序,UI显示前再转RGB,否则绿色框会变成洋红框。

模型加载慢:每次启动UI都要加载PyTorch权重,几秒到十几秒不等,用户会以为程序卡死。我在界面加了启动画面和加载进度条,实际上是增加一个后台线程加载模型,加载完成后发信号通知界面,体验好很多。

5.3 项目扩展方向

这套系统做完之后,继续优化的空间还很大。如果现场有成百上千张图片要看,可以加一个批量检测模式,配合多进程并行推理,吞吐量立马上来。模型层面,可以用TensorRT导出INT8量化模型,在Jetson这类边缘设备上跑到实时没问题。数据集层面,如果现场能持续收集误检图像,每个月回滚一轮数据,用半自动标注工具做增量集,模型会越来越贴合实际场景。这些都是值得往下走的方向。

最后聊几个实际体会

这个项目做下来,我最大的感受是——技术栈不是瓶颈,数据和工程化才是。YOLOv10本身足够强,模型结构和训练流程都有成熟范式,真正花时间的是理解业务场景、把数据集收拾干净、把界面做成别人顺手用的样子。如果你也在做类似项目,我建议别急着调参,先花几天时间把标注质量、数据分布摸清楚,后面训练和部署会顺很多。

还有一个实操细节想多说一句:跑训练时一定要关掉其他占用显存的程序,浏览器多标签页、视频播放器都会影响显存分配,导致莫名的OOM。这不算技术问题,但能帮你省下大量排查时间。最后,希望这套东西能给你的项目打个好底子,少走点我踩过的弯路。

相关新闻

LibTV私人好莱坞实操:AI数字演员+自动分镜,一个人跑通5集短剧

LibTV私人好莱坞实操:AI数字演员+自动分镜,一个人跑通5集短剧

做短剧这半年,我最大的感受就一个词:卡资源。约演员要等档期,租场地要看天气,拍一整天最后能用的镜头可能只有几十秒。直到我接触了 LibTV 这套自助式短剧创作工具,才真正理解什么叫“私人好莱坞”——从剧本、角色、场…

2026/10/20 3:13:57 阅读更多 →
嘎嘎降AI实操指南:从原理到避坑的完整降重流程

嘎嘎降AI实操指南:从原理到避坑的完整降重流程

查重报告飘红,或者被领导一句“这报告一看就是AI写的”堵得说不出话,这种经历但凡你经历过一次,就会明白为什么这两年“AI降重”这个词的火热度一直没降下来。我自己经手的项目里,有大半的时间不是花在写原创内容上,而…

2026/10/20 3:13:57 阅读更多 →
SpringBoot+Vue企业客户管理系统全栈开发实战:从数据库到部署解析

SpringBoot+Vue企业客户管理系统全栈开发实战:从数据库到部署解析

最近帮几个做毕设的同学排查项目代码,发现一个很有意思的现象:十个里面有八个选题都落在“企业客户管理系统”上。不是大家偷懒,而是这个题目确实太适合做Java Web毕业设计了——既有实体业务可以建模,又有前后端交互可以展示&…

2026/10/20 3:13:57 阅读更多 →

最新新闻

多Agent系统架构设计与工程实践:从单Agent瓶颈到Agent蜂群

多Agent系统架构设计与工程实践:从单Agent瓶颈到Agent蜂群

1. 多Agent系统到底在解决什么问题1.1 从单Agent的瓶颈说起做过Agent项目的人大概都有这种体会:单个Agent在简单任务上表现还行,一旦任务链路变长、涉及的工具变多、需要同时处理的信息源超过三四个,它就开始“犯糊涂”了。具体表现包括&…

2026/10/20 22:17:20 阅读更多 →
从屏幕到物理世界:AI Agent如何通过开源SDK接管现实硬件

从屏幕到物理世界:AI Agent如何通过开源SDK接管现实硬件

Muse 登顶 App Store 免费榜那天,开发者群里最热闹的不是它 UI 多好看,而是一张截图:一个看起来跟普通聊天助手没什么区别的 App,被用户指示着自己打开外卖平台、翻出历史订单、比对优惠、完成支付,最后把取餐号推到表…

2026/10/20 22:17:20 阅读更多 →
Python爬虫实战:TOP250电影数据采集与可视化分析

Python爬虫实战:TOP250电影数据采集与可视化分析

简介:面向Python学习者与毕设学生的豆瓣TOP250电影爬虫与数据分析可视化项目,覆盖爬虫采集、数据清洗、数据库建表、可视化出图完整流程,适合作为课程设计、期末大作业或毕业设计的参考源码。资源共11个文件,包含3个Python程序文件…

2026/10/20 22:17:20 阅读更多 →
Agent交互设计:用心理模型与状态透明化建立用户信任

Agent交互设计:用心理模型与状态透明化建立用户信任

我前阵子盯着一个Agent产品做可用性测试,有个场景印象特别深:一位测试用户对着对话框输入“帮我把这份表格里的数据做个趋势分析,再生成一张图表发我”。消息发出去之后,界面开始转圈。用户盯着那个旋转指示器看了十几秒&#xff…

2026/10/20 22:17:20 阅读更多 →
本地部署大模型实战:Ollama 安装、配置与模型运行全攻略

本地部署大模型实战:Ollama 安装、配置与模型运行全攻略

很多人第一次听说本地跑大模型,第一反应是这事跟普通人有关系吗?老实说,我开始也是这么想的。直到我下决心在自己电脑上跑通一次 Ollama,才发现把一个大模型装进本地环境,已经在不知不觉中变得很像装一个普通应用——下…

2026/10/20 22:17:20 阅读更多 →
大模型与特征工程在A股量化策略中的落地实践

大模型与特征工程在A股量化策略中的落地实践

做A股量化一段时间后,你会发现真正决定策略能不能活下来的,往往不是模型本身有多高级,而是特征怎么构造、信号怎么合成、实盘链路怎么打通。这篇是系列的下篇,重点聊特征工程和大模型决策落地的完整路线。如果你还在纠结"该怎…

2026/10/20 22:16:04 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

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

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

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

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

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

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/20 20:43:59 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

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

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

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

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

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

2026/10/20 9:50:45 阅读更多 →