YOLOv10车辆行人检测系统搭建:从数据训练到UI界面落地
跑目标检测项目的朋友应该能感受到一件事YOLO的版本迭代快得让人追不动v5还没吃透v8已经成主流v9才在圈子里热闹过一阵v10又来了。但绝大多数新版本真正拿到工程里去用总有几个让人头疼的地方——要么训练时数据处理特别麻烦要么推理前还要单独挂一个NMS后处理模块要么就是精度和速度总有一个拉胯。前几天我把基于YOLOv10的车辆行人检测系统完整搭建了一遍从数据集整理、模型训练到UI界面和源码整合全程跑通最大的感受是这可能是目前对工程落地和毕设项目最友好的一个版本。这篇文章就把整个系统的实现过程、每个模块怎么设计、有哪些我已经替你踩过的坑全部梳理出来给正在做智能交通、安防监控或者辅助驾驶场景检测的朋友一份可以直接参考的完整方案。1. 项目整体拆解它到底在解决什么问题1.1 这套系统由哪几个模块组成这个系统说白了就是给电脑装上一双眼睛。输入一张图片、一段视频或者摄像头画面它能把里面的车辆和行人用框标出来同时给出每个目标的类别和置信度。整套东西拆开来看由四个部分拼起来数据侧、训练侧、推理侧和界面侧。数据侧负责准备车辆和行人的样本做标注和格式统一这是整个流程的地基。训练侧负责把YOLOv10模型在这些数据上跑通得到能用的权重文件。推理侧负责加载权重并对新的图像或视频做检测。界面侧则是用Python写的一个图形窗口让不熟悉命令行的人也能点上几个按钮就完成检测。这四块的关系就像经营一家小餐馆数据集是菜谱和食材训练是把菜做出来模型是提前做好的半成品UI界面是前台点餐和上菜的环节。每一环都可以独立研究和替换所以哪怕你只对其中一块感兴趣也能单独拎出来学习。文章后面会按这个顺序逐个展开每一环都给了可以直接用的方案和命令。1.2 为什么选YOLOv10而不是v8/v9选择YOLOv10最核心的理由是它的端到端设计。推理阶段不需要非极大值抑制也就是常说的NMS。NMS一直是YOLO系列里绕不开的负担它要做大量框与框之间的交并比计算来过滤重复框既拖慢推理速度又增加了部署难度。YOLOv10在训练时引入了一种双分支匹配机制一个分支做一对多监督一个分支做一对一匹配训练完成之后把冗余分支去掉推理直接输出最终结果速度和实现复杂度都明显改善。另一个理由是生态。YOLOv10代码库是基于ultralytics这套成熟框架的训练接口、数据集格式要求、命令行参数和很多人已经用惯的v5/v8系基本一致迁移成本很低。再加上车辆行人检测这个任务本身类别少、目标尺度相对固定对网络容量的要求不像通用目标检测那么高用一个中等或者轻量级的权重就能交出不错的成绩这对在CPU上做演示或者部署到边缘设备来说非常友好。这里说句实在话如果机器配置一般又想把项目快速落地轻量权重的性价比很高。如果是追求极致精度那上大模型也不亏但我不建议盲目追求最大的权重后面训练部分会细说原因。2. 环境搭建与数据集处理最容易被忽视的地基2.1 开发环境怎么搭才不折腾YOLOv10的底层是PyTorch所以环境的核心就三件事Python解释器、PyTorch、CUDA版本匹配。推荐Python 3.9到3.11之间直接用conda建独立环境是最稳妥的。conda create -n yolov10 python3.9 conda activate yolov10 pip install ultralytics如果你使用的是官方开源仓库也可以clone到本地后执行pip install -e .这样可以用上仓库里预置的训练脚本和配置。GPU环境需要先安装和显卡驱动匹配的CUDA版本再装对应版本的PyTorch这一步的版本不匹配会在训练时引发各种诡异报错比如常见的no kernel image available。最好的做法是去PyTorch官网用安装命令生成器按自己的CUDA版本挑选命令不要自己在pip里乱拼版本号。除了核心依赖还需要准备opencv-python、pillow、matplotlib做UI界面则需要PyQt5。如果你是纯CPU机器PyTorch的CPU版本也能跑只不过训练速度会慢到怀疑人生建议至少找一张支持CUDA的GPU哪怕显存不大也比CPU强很多。2.2 车辆行人数据集怎么构建和标注车辆行人检测的数据集来源一般有两种直接用公开数据集或者自己做标注。如果做毕设、课程作业或者功能演示直接抽取公开数据里的车辆和行人子集就够了。但如果你的目标是特定场景比如自己学校的路口、小区停车场或者某个园区的出入口公开数据集的效果往往一般因为场景光照、摄像头视角、目标距离都不一样最好还是自己采集一些样本做微调。标注工具我最常推荐的是LabelImg界面简单导出格式可以方便地转成YOLO需要的txt。YOLO标注格式其实非常简单每个txt文件对应一张图片每一行代表一个目标class_id x_center y_center width height注意这四个坐标都是相对于图片宽高的归一化值。举个例子一张1920x1080的图片里某个行人的框中心在(960,540)框宽200像素、高500像素那一行就是0 0.5 0.5 0.1041 0.4630类别id从0开始必须和后面data.yaml里的类别顺序一一对应。这个顺序一旦定下来就不要乱改否则训练完加载权重时类别会整体错位到时候画面里明明框的是汽车显示的标签却是行人排查起来非常折磨人。数据在放入模型前还要做划分。常规做法是训练集、验证集、测试集按7:2:1左右分配。如果整体样本量不大可以先只划训练集和验证集测试阶段直接用真实视频看效果。目录结构建议这样组织datasets/ ├── images/ │ ├── train/ │ └── val/ ├── labels/ │ ├── train/ │ └── val/一个很容易踩的坑是路径。整个项目不要出现中文很多人把项目放在桌面或“我的文档”下面路径一出现中文训练时轻则读不到图片重则模型保存直接报错。把项目放到磁盘根目录的纯英文路径下是最省心的处理方式。2.3 data.yaml配置与类别顺序的坑训练前还需要写一个data.yaml文件用来告诉模型数据在哪、类别有哪些。内容大致如下path: datasets train: images/train val: images/val names: 0: person 1: car 2: bus 3: truck这里names的顺序必须和标注文件里的class_id对应。如果你还想检测摩托车、自行车就继续往后面加类别。不过类别不是越多越好每增加一个类别对数据量、训练时间的要求都会上升尤其有些类别样本少时会导致严重的类别不平衡模型会对那一类频繁漏检。如果只是做车辆和行人两个核心类别先把这两个做精比贪多要实用得多。还有一个细节容易被忽略标注框的类别顺序、data.yaml的类别顺序、训练脚本里的类别列表这三处必须完全一致。我见过不少项目在标注一半时改了类别顺序结果训练时损失函数能收敛但推理结果完全是乱的。所以我每次都建议训练前花两分钟把这三处对着检查一遍可以省掉后面一整天的排错时间。3. 模型训练与调参从命令行到权重落地的关键步骤3.1 训练流程与关键参数训练默认从预训练权重开始这是深度学习里非常划算的做法。YOLOv10官方提供了n/s/m/b/l/x几个尺寸的预训练权重体积从几兆到几十兆不等。在命令行里可以直接执行yolo train datadata.yaml modelyolov10s.pt epochs100 imgsz640 batch16训练过程中会自动把模型、训练曲线、验证指标保存到runs目录下。几个关键参数的取值我结合自己的经验给一个参考epochs数据集样本量小的画30到50轮就够样本多了可以加到100到150轮不是越多越好跑过头就过拟合了。imgsz默认640。如果画面里的目标很小比如监控中远处的行人只占几十个像素可以试着提到800或960但显存占用也会跟着涨。batch根据显存来定6G显存跑yolov10s建议8到16跑m以上模型先试4。device有GPU就填device0没有GPU用CPU训练会等到让人崩溃尽量别试。pretrained默认True用预训练权重能让收敛速度快很多数据集规模不大的时候提升尤其明显。对于车辆行人检测我一般会优先考虑s或m这两个尺寸。它们兼顾了速度和精度轻量级权重在CPU上还能勉强跑推理做演示不至于卡到没法看。最大号的模型虽然精度上限更高但训练时间、显存占用、推理耗时都成倍增加对小团队或者单机实验来说性价比并不高。3.2 训练日志怎么读loss曲线怎么看训练过程中日志里会持续打印几个指标box_loss、cls_loss、dfl_loss以及验证集上的mAP50和mAP50-95。很多人盯着数字跳来跳去就是看不懂其实只要抓住健康曲线应该长什么样就行。健康的训练是训练loss整体下降验证集指标波动上升。如果训练loss降得很舒服但验证mAP在某个epoch之后开始明显往下掉那基本就是过拟合了需要减小epoch、增大数据增强、或者开启早停。YOLOv10在训练结束时会自动比较历轮的结果保存表现最好的权重weights/best.pt你后面做推理和UI加载只用best.pt就行别拿last.pt硬刚。如果在日志里看到loss变成了nan多半是学习率太大或者梯度爆炸。解决办法是把学习率调到0.01以下或者减小batch再试。还有一种情况是loss死活不降这通常不是模型问题而是数据没配对好比如data.yaml里的类别顺序和标注不一致或者标注文件里出现了超出类别范围的id。3.3 评估指标和模型导出模型训练完不能只看mAP一定要拿几段没参与训练的真实视频跑一遍看漏检和误检情况。mAP50关注的是目标有没有被框住mAP50-95则更严格会同时评估框位置的准确程度。在车辆行人检测中行人是最容易出问题的类别因为行人姿态复杂、相互遮挡加上尺寸小漏检率通常比车辆高。如果发现漏检多优先检查训练数据里行人的样本量以及尺度和姿态是否丰富而不是盲目加训练轮次。导出模型这一步很多人会忽略但它对工程部署非常重要。要脱离PyTorch训练环境推荐导出成ONNX格式yolo export modelruns/train/xx/weights/best.pt formatonnx opset12导出的ONNX文件不依赖PyTorch运行可以在很多推理框架里加载也为后面接入UI和实时流提供了更灵活的方式。我通常会在项目里同时保留PyTorch权重和ONNX两个推理入口按部署环境切换。4. UI界面搭建与源码组织从命令行到点一点就能用4.1 UI功能怎么设计才完整一个能拿去给别人演示的系统界面至少要支持图片检测、视频检测、摄像头实时检测三种输入方式。功能上再加三个东西体验会好很多置信度阈值滑块、结果展示区域、检测统计信息。置信度阈值滑块让用户能实时调整灵敏度低于阈值的检测框会被过滤掉。这个设计在演示时特别有用因为现场画面光照复杂固定的置信度阈值往往不够用——调高了漏检调低了误报多给用户一个滑块比写死参数合适得多。检测统计信息在视频流里很有价值可以直接在界面上显示当前画面里有多少辆车、多少人很适合做展示汇报。界面布局可以参考经典风格左侧放功能按钮中间是画面显示右侧展示检测结果信息。这样设计的好处是即使完全不懂代码的人拿到界面上手也能操作。我在工程里还会加一个状态栏显示当前帧率这样演示的时候观众能直观感受到模型速度不用你费口舌解释“很快”。4.2 核心代码怎么组织UI层我用的是PyQt5模型加载放在主窗体的初始化里。这个设计保证模型只加载一次不会每检测一张图片就重新加载一遍权重否则演示时会卡到让人崩溃。from ultralytics import YOLO class MainWindow(QMainWindow): def __init__(self): super().__init__() self.model YOLO(best.pt) self.conf_thres 0.5图片检测的槽函数里调用模型预测然后绘制并显示。这里有一个非常经典的坑OpenCV读出来的图像是BGR顺序直接显示到Qt里颜色会错乱必须先转成RGB。def detect_image(self, path): results self.model.predict(path, confself.conf_thres) annotated results[0].plot() rgb cv2.cvtColor(annotated, cv2.COLOR_BGR2RGB) pixmap QImage(rgb.data, rgb.shape[1], rgb.shape[0], rgb.strides[0], QImage.Format_RGB888) self.label_result.setPixmap(QPixmap.fromImage(pixmap))视频和摄像头检测不能放在主线程里否则一遇到推理耗时界面就会直接“未响应”。正确做法是用QThread把帧读取和推理扔到子线程主线程只负责刷新画面。在工程里我会写一个VideoThread类在run方法里循环执行cap.read()对每一帧做predict然后通过Qt信号把处理结果发回主线程。摄像头检测和视频检测其实是同一套逻辑区别只在于cv2.VideoCapture的参数视频文件传路径摄像头传0或1。想要切换摄像头只需要给VideoThread增加一个index参数封装两三个方法就够用了不要重复写两套代码。4.3 轻量级UI备选方案如果你不想花时间调Qt布局可以试试Gradio。Gradio是一个Python库几行代码就能出一个网页版界面支持上传图片、拖拽视频对做成果展示来说完全够用。缺点也很明显实时摄像头推流在Gradio里做起来没有原生界面顺手如果你只演示上传图片和视频Gradio完全可以顶上代码量只有PyQt5的五分之一不到。打包发布时常见的问题有两个。一是PyInstaller打包后模型路径读不到因为打包后的程序会解压到一个临时目录原来的相对路径失效了需要用sys._MEIPASS来定位真实资源路径。二是打包出来的exe体积很大这是正常的毕竟模型文件本身就近百兆。如果想要小体积可以把模型导出成ONNX之后再用onnxruntime推理打包体积能小一些但流程上需要多写一套推理代码。5. 常见问题排查与性能优化实战中踩过的坑全记录5.1 训练阶段的坑和解决思路数据、配置都正常训练却出各种怪毛病这是每个做目标检测的人都绕不过去的阶段。整理一下我遇到过最多的情况。显存不足是最常见的报错信息通常是CUDA out of memory。第一次遇到不要慌优先减小batch从16减到8再不行减到4同时可以考虑把imgsz降到512。如果你还想保住大batch可以开启梯度累积相当于分几次小batch凑成一个大batch但训练时间会变长。loss不下降或者下降极慢多半是学习率不合适或者data.yaml写错了导致类别错位。训练到一半数据读取卡住先检查图片路径里有没有损坏的图片文件可以给dataloader设置workers0排查。还有一个非常隐蔽的坑训练时验证集mAP看起来还挺高但一到真实场景效果就很差。这种情况下问题通常出在训练数据和真实场景差异太大而不是模型结构有错。解决办法是采集真实场景的图片做针对性微调而不是继续堆epoch。比如我用公开数据训练出来的模型在室内测试效果不错但拿到停车场夜间的画面就频繁漏检补了几百张夜间图片微调之后才明显改善。5.2 推理性能优化到底怎么做如果只是做演示直接加载best.pt就够了。但如果你打算跑摄像头实时监控建议先做一个推理时间的压测。默认FP32精度下YOLOv10在中等配置的GPU上处理640x640输入通常稳定在几十毫秒以内跑实时没问题。如果还想更快有三个方向可以尝试方向一是导成ONNX格式用onnxruntime加载推理。onnxruntime比PyTorch自带的推理路径更轻量CPU上也能明显提速而且不依赖特定的Python训练环境。方向二是用TensorRT加速这个能在GPU上带来明显收益但TensorRT生成的引擎和GPU型号强相关换一张显卡可能要重新生成引擎文件调试成本略高。方向三是把输入尺寸从640降到416推理速度可以提升不少代价是远处小目标的检测效果会下降。我的建议是工程里同时保留PyTorch和ONNX两套推理入口调试的时候用PyTorch权重部署上线的时候切到ONNX。这样既保持了开发阶段调试的便利性又能获得部署阶段的性能提升。TensorRT可以作为进阶优化手段等前面两条路走通之后再考虑。5.3 常见问题速查表现象可能原因解决办法训练显存不足batch太大或imgsz太高减小batch到4或2imgsz降到512loss变成nan学习率过大或梯度爆炸调低lr降低batch验证mAP不高数据量少或类别不平衡补充样本使用预训练权重增加数据增强漏检远处行人小目标样本不足提升imgsz单独补充小目标样本UI播放视频卡顿推理放在主线程用QThread处理只把结果回传主线程摄像头画面花屏摄像头索引冲突检查VideoCapture的index是否被占用中文路径读不到图片路径编码问题项目放在纯英文路径下导出ONNX后效果变化输入尺寸或预处理不一致保持训练时的imgsz和归一化方式一致模型加载慢权重文件大或CPU推理换小模型或导出ONNX加速打包后模型路径报错相对路径失效用sys._MEIPASS定位资源路径这张表格里的每一行都是我实际跑项目时碰到过的场景。有些问题看起来是小事不处理却能浪费一整天比如路径里的中文问题报错信息还不一定会直接提示。写到最后说点自己的体会。做这类检测系统最难受的往往不是训练本身而是数据、训练、界面三个环节之间的衔接。很多朋友模型已经跑得不错却在UI集成时把BGR和RGB搞反或者在数据路径上反复折腾。这套基于YOLOv10的车辆行人检测系统从项目组织上讲其实很清晰每一块都可以独立替换。如果你只想复现一个能跑的效果建议先把第2章的数据准备好再照第3章的跑命令训练界面先从图片检测写起跑通之后再接视频和摄像头。最后分享一个小技巧训练前把标注文件的类别id、data.yaml里的names、训练脚本里的类别列表三者对着检查一遍这三处的顺序是最容易被忽略、却影响最严重的一环。

相关新闻

PMSM双闭环控制从SVPWM到ADRC的完整调试实战

PMSM双闭环控制从SVPWM到ADRC的完整调试实战

先说个我自己的真实经历。有一段时间我在调一台PMSM驱动器的速度控制,给到3000rpm的阶跃指令,电机会先啸叫一声,然后电流波形上明显带着锯齿状毛刺。当时第一反应是PI参数不够,把速度环Kp压低、Ki抬高来回试了十几组,问…

2026/10/19 2:40:48 阅读更多 →
C语言选择法排序核心原理与代码逐行拆解,附常见错误分析

C语言选择法排序核心原理与代码逐行拆解,附常见错误分析

“习题7-1”——看到这个编号,估计不少人都能想起被C语言教材第七章支配的日子。数组刚讲完,函数刚入门,冷不丁冒出个“选择法排序”,要求把一串乱序数字排好。说实话,这道题的代码量不大,核心逻辑也就十来…

2026/10/19 2:39:48 阅读更多 →
虚拟声卡完全指南:音频路由原理、配置与实战排查

虚拟声卡完全指南:音频路由原理、配置与实战排查

简介:基于微软虚拟音频设备示例(MSVAD)的虚拟声卡实现源码包,面向Windows音频驱动开发学习者与底层编程爱好者,旨在演示如何通过软件模拟创建虚拟音频设备,并实现DirectSound、WASAPI/Core Audio等接口的对…

2026/10/19 2:39:47 阅读更多 →

最新新闻

Diagram as Code:用可执行图表构建系统逻辑骨架

Diagram as Code:用可执行图表构建系统逻辑骨架

1. 项目概述:这不是画图,是构建可执行的系统逻辑骨架“diagram-design”这个标题乍看像一个设计类工具操作,但在我过去十年带过的几十个跨领域项目里,它从来不是美术课——而是工程师、产品负责人、运维人员和业务方坐在一起&…

2026/10/19 5:53:33 阅读更多 →
diagram-design:用结构化图形重建信息表达逻辑

diagram-design:用结构化图形重建信息表达逻辑

1. 项目概述:这不是画图,是用结构化思维重建信息表达的底层逻辑“diagram-design”这个词组乍看像一个工具名或功能按钮,但在我带过的十几个跨领域协作项目里,它从来不是指“用Visio拖几个矩形框”,而是指一套完整的信…

2026/10/19 5:53:33 阅读更多 →
从布尔到时间盲注:SQL注入无回显场景的完整实战指南

从布尔到时间盲注:SQL注入无回显场景的完整实战指南

如果你在靶场里手动测过SQL注入,一定会经历一个非常分裂的阶段:刚开始觉得注入特别简单,参数后面丢一个单引号,看报错、看回显,再union select一撞,数据就哗啦啦全出来了,像开卷考试。但很快你就…

2026/10/19 5:53:33 阅读更多 →
diagram-design:从草图到可维护系统的图表设计实战指南

diagram-design:从草图到可维护系统的图表设计实战指南

1. 从一张草图到一套系统:diagram-design 到底在解决什么问题第一次看到 diagram-design 这个词,很多人会以为它只是一个画图工具的别名,或者某个设计模板库的代号。但真正在工程团队里待过几年的人会明白,它指向的是一套远比“画…

2026/10/19 5:53:33 阅读更多 →
DCMTK 3.6.5 Windows预编译包:开箱即用的DICOM工程解决方案

DCMTK 3.6.5 Windows预编译包:开箱即用的DICOM工程解决方案

简介:本资源是面向医学影像开发人员、生物医学工程研究人员及DICOM系统集成工程师的DCMTK 3.6.5 Windows 64位预编译工具包,专为免编译快速上手DICOM数据处理而优化,解决Windows环境下源码构建复杂、依赖配置繁琐等实际痛点。压缩包共238个文…

2026/10/19 5:53:33 阅读更多 →
基于最佳簇半径的无线传感器网络分簇路由算法详解

基于最佳簇半径的无线传感器网络分簇路由算法详解

做无线传感器网络这块也有几年了,前前后后调过不少路由协议,从最开始的洪泛、LEACH,到后来各种改进的PEGASIS、TEEN、EEUC都摸过一遍。说实话,分簇路由这个方向看着简单,就是把节点分成一组一组的,选个簇头…

2026/10/19 5:52:33 阅读更多 →

日新闻

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

简介:本资源为电源技术方向的学术研究文档,聚焦介质阻挡放电型臭氧发生器电源的频率跟踪型PWM控制策略,面向电力电子、高压电源及臭氧应用领域的科研人员与工程技术人员。针对负载呈容性、等效电容随外加电压升高而增大、谐振频率随之漂移的难…

2026/10/19 0:00:47 阅读更多 →
Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

Vibe Coding 遇上 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/19 0:00:47 阅读更多 →
HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

【免费下载链接】HundredCV-Chat 项目地址: https://ai.gitcode.com/hf_mirrors/Jax-dan/HundredCV-Chat 点击查看 免费下载 HundredCV-Chat 是一个由 100 位青年简历数据开发而来的中文多轮对话数据集,共包含 24,750 组日常闲聊对话和 4,871 个话题标签…

2026/10/19 0:00:47 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/19 1:30:52 阅读更多 →

月新闻

我发现了一个新思路:用 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/19 2:54:50 阅读更多 →
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/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练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/18 12:16:16 阅读更多 →