YOLOv5 6.1全中文注释包:从源码解析到自定义训练与部署
简介这份资源是YOLOV5 6.1版本的全中文注释代码压缩包面向目标检测方向的研究生、参加创新创业大赛的学生以及刚接触物体识别项目的开发者主要解决官方源码注释稀少、初学者难以读懂网络结构与训练流程的问题。压缩包共约2000个文件整体296.99MB以py源码、pyc字节码、h头文件、pyi与pyd扩展模块为主同时包含yaml配置、txt说明、mat数据、csv与png等素材覆盖模型定义、数据加载、训练推理及依赖库等模块。目前已有2785人学习下载说明其在目标检测入门群体中具备一定认可度。资源对YOLOV5 6.1的核心代码逐行添加中文注释并配套CSDN专栏进行讲解读者可据此理解模型微调、参数量优化与移动端部署思路快速上手物体识别项目减少在源码阅读和环境配置上的试错成本。1. 拿到 YOLOV5 6.1 全中文注释包先别急着解压如果你正在做目标检测相关的课题、比赛或者工程项目大概率经历过这种场景从 GitHub 上 clone 下来 YOLOv5 的源码打开train.py、yolo.py、common.py满屏的英文注释和缩写知道它在跑但说不清每一步在干什么。尤其是导师问“你这个 NMS 怎么实现的”“损失函数那几行什么意思”翻源码翻半天找不到关键位置。这个 YOLOV5 6.1 版本全中文注释压缩包解决的就是这个问题——它把核心代码逐行加上了中文注释同时配套了一套 CSDN 专栏教程覆盖从环境搭建到训练自己数据集再到推理部署的完整链路。适合谁正在用 YOLOv5 做物体识别的研究生、准备创新创业大赛需要讲清楚技术细节的团队、以及想从“会跑通”进阶到“能改代码”的工程师。压缩包本身不包含数据集和权重文件它给的是带注释的源码工程你需要自己准备数据。下面从代码结构、注释覆盖范围、怎么用这套注释去训练自己的数据集、以及几个容易翻车的点一步步拆开讲。2. YOLOV5 6.1 的代码骨架与中文注释覆盖范围2.1 6.1 版本相比 5.0 改了什么YOLOv5 6.1 是在 5.0 基础上做了一轮工程化收敛的版本。最直观的变化是模型配置文件从yolov5s.yaml这种单一文件扩展成了带_6后缀的 6.0 系列结构比如yolov5s6.yaml对应的 P6 结构增加了更大的感受野对小目标更友好。同时 6.1 把models/目录下的模块拆分得更细common.py里新增了C3模块的变体experimental.py里对Sum、Concat等跨层连接做了整理。参数量方面YOLOv5s 在 6.1 下大约 7.2M 参数、16.5 GFLOPs比 5.0 略降推理速度在 V100 上单张 640 输入大概 6-7ms。这些数字你在注释包里能直接看到对应代码行的中文说明不用再去翻 release note。注释包覆盖的文件包括train.py训练主循环、学习率调度、EMA 更新、detect.py推理后处理、NMS、坐标还原、val.pymAP 计算、混淆矩阵、models/yolo.pyDetect 头、anchor 生成、models/common.pyConv、Bottleneck、C3、SPPF、utils/dataloaders.py数据加载、mosaic 增强、letterbox、utils/loss.pyBCEWithLogitsLoss、CIoU 损失、utils/general.py非极大值抑制、坐标变换、日志。你打开任意一个.py文件关键行上方都有# 中文说明比如# 将预测框从 xywh 转换为 xyxy 格式这种粒度。2.2 注释的粒度和阅读顺序注释不是逐行翻译而是按逻辑块标注。以utils/loss.py里的ComputeLoss类为例__call__方法里会先注释“前向传播计算三个尺度的预测输出”然后在build_targets里标注“将 GT 框分配到对应网格和 anchor”。这种粒度对理解数据流足够但如果你想改损失函数还是得自己顺着变量跟一遍。我一般建议的阅读顺序是先看detect.py搞清推理全流程再看train.py理解训练循环最后啃loss.py和yolo.py。因为推理链路短、变量少容易建立信心。# 解压后进入工程根目录先确认目录结构 unzip yolov5-6.1-chinese-comment.zip -d yolov5_6.1_cn cd yolov5_6.1_cn ls -la # 你会看到 train.py detect.py val.py models/ utils/ data/ 等 # 用 grep 快速定位中文注释密度 grep -c # train.py grep -c # utils/loss.py上面这段命令的作用是解压后先看目录再用grep -c统计注释行数。train.py大概有 80 行注释loss.py有 60 行。注意grep -c #会把代码里的#也算进去但能粗略判断注释覆盖。如果你看到某个文件注释行数明显偏少说明那个模块可能没被完整注释需要结合配套教程补。2.3 配套教程和注释包的对应关系配套教程是按模块拆的基本和源码目录一一对应。比如教程里有一篇专门讲dataloaders.py里的LoadImagesAndLabels类对应源码里 mosaic 增强、rect 训练、缓存机制那几百行。你读教程的时候最好把源码窗口放在旁边看到mosaic参数就去源码里搜mosaic看它怎么控制四图拼接的概率。教程里还会给一些调参建议比如hyp.scratch-low.yaml里mosaic: 1.0改成0.5能降低过拟合这些在注释里没有展开属于教程的增量价值。提示注释包里的中文注释是 UTF-8 编码如果你在 Windows 上用记事本打开出现乱码换 VS Code 或 PyCharm右下角确认编码为 UTF-8。3. 用这套注释包训练自己的数据集从 yaml 配置到训练启动3.1 数据准备与 data.yaml 写法训练自己的数据集第一步是把标注转成 YOLO 格式。常见做法是用 labelImg 或 CVAT 标注导出 YOLO txt每行class_id x_center y_center width height坐标归一化到 0-1。然后建一个mydata.yaml放在data/目录下。注释包里data/coco128.yaml有中文注释说明每个字段含义你照着改就行。# data/mydata.yaml path: ../datasets/mydata # 数据集根目录相对路径或绝对路径 train: images/train # 训练集图片路径相对 path val: images/val # 验证集图片路径 test: # 测试集可选留空则不评估 nc: 3 # 类别数改成你自己的 names: [person, car, dog] # 类别名称顺序要和标注 id 一致这里path是根目录train和val是相对path的子路径。nc必须和names长度一致否则训练时分类头维度对不上会报错。names的顺序决定了class_id的映射如果你标注时 person 是 0这里 person 就必须放第一个。改完 yaml 后建议先用val.py跑一下验证集确认数据加载没问题再开训练。3.2 模型配置选择与 anchor 适配YOLOv5 6.1 提供了yolov5s.yaml、yolov5m.yaml、yolov5l.yaml、yolov5x.yaml以及对应的6版本。选哪个取决于你的硬件和精度要求。s 最小最快x 最准最慢。如果你在树莓派 4B 或 RK3568 这类边缘设备上部署直接选yolov5s6.yaml或者yolov5n6.yamln 是 nano 版本参数量不到 2M。注释包里models/yolo.py的Detect类有中文说明 anchor 是怎么生成的6.1 默认用anchors自动计算你不需要手动改但如果你的数据集目标尺寸分布很特殊比如全是细长条可以在train.py里加--noautoanchor然后自己跑 k-means 重新聚类。# 训练命令示例基于 yolov5s6 python train.py \ --data data/mydata.yaml \ --cfg models/yolov5s6.yaml \ --weights yolov5s6.pt \ --epochs 100 \ --batch-size 16 \ --img-size 640 \ --device 0 \ --workers 4 \ --name mydata_s6参数说明--weights指定预训练权重没有就写从零训练但强烈建议用预训练权重收敛快很多。--batch-size根据显存调8G 显存跑 s6 大概能到 16跑 l6 可能只能到 4。--img-size默认 640如果你的目标很小可以调到 1280但显存占用会翻倍。--workers是数据加载线程数Windows 下建议设 0 或 2设大了容易卡死。--name是输出目录名结果会存到runs/train/mydata_s6/。3.3 训练过程监控与超参数调整训练启动后终端会打印每个 epoch 的 box_loss、obj_loss、cls_loss、precision、recall、mAP0.5。注释包里utils/metrics.py有中文说明这些指标怎么算的。如果你看到 box_loss 震荡不降常见原因是学习率太大可以在data/hyp.scratch-low.yaml里把lr0从 0.01 降到 0.001。如果 mAP 一直上不去先检查标注有没有问题再看mosaic增强是不是太强导致小目标被裁掉。我一般会在训练前 10 个 epoch 用--noval关掉验证加速等 loss 稳定了再开验证。# 在 train.py 里找到这一行可以手动调整学习率调度 # 注释包里有说明lf 是学习率衰减函数one_cycle 表示余弦退火 lf lambda x: ((1 - math.cos(x * math.pi / epochs)) / 2) * (lrf - 1) 1 # 如果你想改成阶梯衰减可以替换成 # lf lambda x: 0.1 ** (x // 30) # 每30个epoch降为原来的0.1上面这段代码展示了学习率调度函数的修改方式。默认的one_cycle是余弦退火前期 warmup 后逐渐下降适合大多数场景。如果你训练轮次很少比如 50 以内余弦退火可能还没降到最低就结束了这时候换成阶梯衰减或者固定学习率反而更稳。改完记得把--cos-lr参数去掉否则会覆盖你的自定义函数。4. 推理、验证与导出注释包里的后处理细节4.1 detect.py 推理流程拆解detect.py是注释包里注释最密的地方之一。整个流程是加载模型 → 读取图片/视频/摄像头 → letterbox 预处理 → 前向推理 → NMS 后处理 → 画框保存。注释里会告诉你letterbox为什么要保持长宽比、NMS的iou_thres和conf_thres分别控制什么。默认conf_thres0.25iou_thres0.45。如果你的场景误检多把conf_thres提到 0.5如果漏检多降到 0.1 试试。--classes参数可以只保留特定类别比如--classes 0 2只检测 person 和 dog。# 推理单张图片 python detect.py \ --weights runs/train/mydata_s6/weights/best.pt \ --source test.jpg \ --conf-thres 0.4 \ --iou-thres 0.5 \ --device 0 \ --save-txt--save-txt会把检测框的坐标和类别存成 txt方便你后续做量化评估。--source可以是图片、文件夹、视频文件也可以写0调用摄像头。注意如果你在服务器上没有显示器摄像头模式会报错用--source rtsp://或者直接传视频文件。4.2 val.py 计算 mAP 与混淆矩阵验证集评估用val.py它会输出 mAP0.5、mAP0.5:0.95、precision、recall并在runs/val/下生成混淆矩阵和 PR 曲线。注释包里utils/metrics.py的ap_per_class函数有中文说明 AP 是怎么积分算出来的。如果你发现 mAP 和训练日志里的对不上检查--data和--weights是不是同一组。另外--task test会评估 test 集前提是 yaml 里配了 test 路径。python val.py \ --data data/mydata.yaml \ --weights runs/train/mydata_s6/weights/best.pt \ --batch-size 16 \ --img-size 640 \ --task val \ --save-json--save-json会生成 COCO 格式的 json方便你提交到某些比赛平台。--task可选train、val、test、speedspeed只测推理速度不评估精度。4.3 导出 ONNX 与 RK3568 量化注意事项如果你要部署到 RK3568 或者树莓派通常先导出 ONNX。注释包里export.py有中文说明每个导出格式的参数。RK3568 的 NPU 一般走 RKNN 工具链需要 ONNX 输入。导出时注意--opset用 12 或 13--img-size要和训练时一致--batch-size设 1。量化的时候校准集要覆盖你的实际场景否则精度掉得厉害。python export.py \ --weights runs/train/mydata_s6/weights/best.pt \ --include onnx \ --img-size 640 640 \ --batch-size 1 \ --opset 12 \ --simplify--simplify会调用 onnx-simplifier 去掉冗余节点RKNN 转换时更稳。导出后你会得到best.onnx然后用 RKNN Toolkit 转成.rknn。注意 RK3568 对某些算子支持有限比如SiLU激活函数可能需要替换成ReLU这个在注释包的common.py里可以改。5. 避坑与排查注释包使用中的五个血泪经验5.1 解压后中文注释乱码现象用 Windows 自带解压或记事本打开.py文件中文注释显示成注释这种乱码。原因压缩包内文件是 UTF-8 编码但 Windows 默认用 GBK 解码。解决用 VS Code 打开右下角点击编码选择Reopen with Encoding→UTF-8或者用 PyCharm设置里File Encodings全部改成 UTF-8。如果已经乱码保存过重新解压一次。5.2 训练时 dataloader 报 “No labels found”现象启动训练后报AssertionError: No labels found in ...。原因YOLO 要求图片和标注文件同名且在同一级目录比如images/train/001.jpg对应labels/train/001.txt。很多人把标注放在labels/train/但图片在images/train/路径没对应上。解决检查data/mydata.yaml里train路径指向的是图片目录YOLOv5 会自动把images替换成labels去找标注。如果目录结构不是images/和labels/并列需要手动改dataloaders.py里的img2label_paths函数。5.3 显存溢出 “CUDA out of memory”现象训练几个 batch 后报 CUDA OOM。原因batch-size太大或者img-size太大或者workers太多导致内存泄漏。解决先把--batch-size减半如果还不行把--img-size从 640 降到 416。另外--workers在 Windows 下设 0Linux 下设 4-8 即可。如果用的是 6.1 的 P6 模型显存占用比 P5 高不少8G 卡跑yolov5s6建议 batch 不超过 8。5.4 mAP 为 0 或极低现象训练完 mAP0.5 接近 0。原因最常见的是names顺序和标注class_id不一致比如标注里 person 是 1yaml 里 person 写在第一个id 0。解决打开一个标注 txt看第一列数字和 yaml 里names列表的下标对齐。另一个原因是图片路径有中文或空格YOLOv5 的 dataloader 对中文路径支持不好把数据集放到纯英文路径下。5.5 导出 ONNX 后推理结果和 PyTorch 不一致现象PyTorch 推理正常ONNX 推理框偏移或类别错乱。原因导出时--img-size和推理时不一致或者--opset太低导致某些算子行为不同。解决导出和推理都用同一个img-sizeopset用 12。另外检查detect.py里--half参数PyTorch 用 FP16 推理时 ONNX 也要对应。如果还是不对用onnxruntime跑一遍对比输出 tensor 的数值差异。6. 进阶技巧用注释包快速定位网络结构并修改注释包最大的价值不是“看懂”而是“改得动”。我拿一个具体场景举例你想把 YOLOv5s6 的 SPPF 模块换成 SPPCSPC或者把 C3 换成 C2f怎么快速找到改动点打开models/common.py中文注释会告诉你class SPPF在哪个位置它的forward里做了三次最大池化再拼接。你只需要复制这个类改个名字然后在models/yolov5s6.yaml里把SPPF替换成你的新类名。注释包里yolo.py的parse_model函数有说明 yaml 里的模块名是怎么映射到common.py里的类的。再比如你想在Detect头前面加一个注意力模块。常见做法是在models/common.py里定义一个SE或CBAM类然后在 yaml 的 backbone 最后一行和 head 第一行之间插入。注释包里yolo.py的Detect类有中文说明ch参数是输入通道列表你插入的模块输出通道要和下一层对齐。改完 yaml 后用python models/yolo.py --cfg models/yolov5s6-se.yaml可以单独测试模型能不能构建成功不用跑完整训练。# 在 common.py 里加一个 SE 模块注释包风格的中文说明 class SE(nn.Module): # Squeeze-and-Excitation 注意力模块 def __init__(self, c1, c2, r16): super().__init__() self.avgpool nn.AdaptiveAvgPool2d(1) # 全局平均池化 self.fc nn.Sequential( nn.Linear(c1, c1 // r), # 降维 nn.ReLU(inplaceTrue), nn.Linear(c1 // r, c1), # 升维 nn.Sigmoid() # 输出 0-1 权重 ) def forward(self, x): b, c, _, _ x.size() y self.avgpool(x).view(b, c) # [b,c,1,1] - [b,c] y self.fc(y).view(b, c, 1, 1) # 权重 reshape return x * y.expand_as(x) # 逐通道加权上面这个 SE 模块可以直接插到 yaml 里比如在 backbone 的[[-1, 1, SPPF, [1024, 5]],后面加一行[-1, 1, SE, [1024]],。注意SE的c1和c2要一致因为它是通道加权不改变通道数。改完后用yolo.py测试构建如果报KeyError: SE说明parse_model里没注册需要在yolo.py的if m in ...那行加上SE。验证改动是否生效最直接的方法是打印模型结构python models/yolo.py --cfg models/yolov5s6-se.yaml输出里会显示每一层的类型和通道数。如果看到SE出现在 SPPF 后面说明插入成功。然后跑 10 个 epoch 的小训练对比 mAP 有没有提升。如果没有提升甚至下降可能是注意力模块的位置不对或者学习率需要重新调。我一般会先用--epochs 10 --img-size 320快速验证确认有效再上完整训练。从那以后我每次改网络结构都强制先跑一遍yolo.py构建测试再跑 10 epoch 小训练最后才开完整训练。这个习惯帮我省了至少几十小时的无效等待。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

飞鸟数据集全流程实战:从VOC标签转换到YOLOv8训练与调优

飞鸟数据集全流程实战:从VOC标签转换到YOLOv8训练与调优

简介:飞鸟数据集是一套面向目标检测任务的鸟类图像资源,适合计算机视觉初学者、算法研究者以及无人机监控、野生动物保护等应用方向的开发者,也适用于课程设计与科研实验。数据涵盖近景个体、飞翔姿态与群鸟场景,覆盖树上、城市等…

2026/10/12 22:07:22 阅读更多 →
Windows上运行iOS模拟器:三条靠谱路线与避坑指南

Windows上运行iOS模拟器:三条靠谱路线与避坑指南

简介:对于想在Windows(含Windows 7)电脑上运行苹果iOS系统、体验iPad类应用的普通用户和开发者,这份资源提供了一条无需购买真实苹果设备的替代路径。模拟器本质上是通过软件在异平台模拟另一个系统环境,因此资源不仅介…

2026/10/14 2:05:32 阅读更多 →
Android 广播 - 组件通信

Android 广播 - 组件通信

一、Service 通知 Activity 更新 UI 1、Service public class BroadcastConstants {public static final String ACTION_UPDATE_UI "com.example.ACTION_UPDATE_UI";public static final String EXTRA_DATA "extra_data"; }public class MyService exten…

2026/10/12 22:06:21 阅读更多 →

最新新闻

Java 设计模式之 Template View:用模板视图分离静态布局与动态内容,打造可复用网页渲染骨架

Java 设计模式之 Template View:用模板视图分离静态布局与动态内容,打造可复用网页渲染骨架

示例工程教程 【免费下载链接】java-design-patterns Design patterns implemented in Java 项目地址: https://gitcode.com/GitHub_Trending/ja/java-design-patterns 点击查看 免费下载 导读:Template View(模板视图)是一种面向…

2026/10/14 2:05:18 阅读更多 →
电力弹簧技术在主动配电网中的关键应用与优化

电力弹簧技术在主动配电网中的关键应用与优化

1. 电力弹簧技术背景与配电网痛点电力弹簧(Electric Spring)作为第三代柔性电力电子装置,本质上是一种具备快速响应能力的电压/电流双模式补偿器。与传统STATCOM、SVG等无功补偿设备相比,其独特之处在于能够通过智能控制算法主动调…

2026/10/14 2:05:18 阅读更多 →
OpenClaw 会话工具(Session Tools)完全指南:sessions_list / sessions_history / sessions_send / sessions_spawn

OpenClaw 会话工具(Session Tools)完全指南:sessions_list / sessions_history / sessions_send / sessions_spawn

人工智能大模型LLM 网关AI Agent即时通讯 【免费下载链接】openclaw-zero-token OpenClaw: Use All Major AI Models NO API Token! Claude/ChatGPT/Gemini/DeepSeek/Doubao/Grok/Qwen/Manus/Kimi 项目地址: https://gitcode.com/gh_mirrors/op/openclaw-zero-token…

2026/10/14 2:05:18 阅读更多 →
T3 Stack实战:t3code如何实现端到端类型安全的全栈开发

T3 Stack实战:t3code如何实现端到端类型安全的全栈开发

t3code 这个名字,乍一看确实有点抽象。但如果你这几年一直混在 Next.js 和 TypeScript 的圈子里,看到 t3 前缀,大概率会想到那个火得一塌糊涂的 T3 Stack——Next.js、TypeScript、tRPC、Prisma、Tailwind 再加上 NextAuth 的组合。t3code 其…

2026/10/14 2:05:18 阅读更多 →
仓颉框架 CJoy 配置模块测试设计:从 config-tests 规格到测试用例实现

仓颉框架 CJoy 配置模块测试设计:从 config-tests 规格到测试用例实现

后端Web框架MCP 服务 【免费下载链接】cjoy 一个高性能、可扩展、轻量、省心的仓颉应用开发框架。IoC,Rest,宏路由,Json,中间件,参数绑定与校验,文件上传下载,OAuth2,MCP...... 项目…

2026/10/14 2:05:18 阅读更多 →
voidImageViewer 项目内 WebP 规范文档生成指南:用 kramdown 从 Markdown 文本源构建 Container Spec HTML

voidImageViewer 项目内 WebP 规范文档生成指南:用 kramdown 从 Markdown 文本源构建 Container Spec HTML

桌面应用图像处理 【免费下载链接】voidImageViewer Lightweight image viewer for Windows with animated GIF/WEBP support 项目地址: https://gitcode.com/gh_mirrors/vo/voidImageViewer 点击查看 免费下载 本篇技术指南讲解 voidImageViewer 仓库所集成的 lib…

2026/10/14 2:04:18 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 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/13 22:01:27 阅读更多 →
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/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练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/12 18:11:17 阅读更多 →