知识蒸馏+增量学习:目标检测模型如何越训越强不忘旧类
简介本资源为基于知识蒸馏的目标检测模型增量深度学习方法的Python源码面向人工智能、计算机视觉方向的高校学生、教师及企业研发人员尤其适合正在做毕设、课程设计或算法进阶的学习者用于解决目标检测模型在增量学习中易遗忘旧类别、精度下降的问题。压缩包共476个文件约5.99MB以189个py源码与192个pyc编译文件为核心辅以xml标注、jpg样例图、so与o底层库、c与pyx扩展源码及docx运行说明结构完整便于复现。资源内附多份运行说明文档覆盖知识蒸馏、剪枝与VGG16等实验流程可帮助读者理解教师-学生网络蒸馏、特征对齐与增量训练的实现细节并在此基础上修改扩展。目前已有263人学习下载适合具备一定深度学习基础、希望快速上手目标检测增量学习实践的人群参考。1. 知识蒸馏遇上增量学习目标检测模型怎么越训越强还不忘旧类你辛辛苦苦训好一个 YOLO 检测器能稳定识别 20 类目标上线跑了三个月。现在业务说新增 5 类下周上线。你第一反应是拿新数据接着训——结果模型把旧类全忘了mAP 从 0.78 掉到 0.41这就是灾难性遗忘。更麻烦的是旧数据因为合规或存储成本已经删了你手上只有新类的标注。这个场景就是「基于知识蒸馏的目标检测模型增量深度学习」要解决的问题在不保留或极少保留旧数据的前提下让检测模型学会新类同时不丢旧类。核心手段是知识蒸馏——用旧模型当老师约束新模型的输出别偏离太远。适合谁做工业质检、安防、遥感这类类别会持续增加、但数据不能长期囤积的一线工程师。Python 是主流落地语言PyTorch 生态下可复现性最好。2. 先搞清楚蒸馏在检测任务里到底蒸什么从分类头到回归头的三层约束2.1 检测蒸馏和分类蒸馏不是一回事分类任务的知识蒸馏很干净老师模型输出一个 softmax 概率分布学生模型去拟合它KL 散度一算就完事。检测任务不行因为输出是结构化的——每个位置有分类 logits、有框回归的 4 个偏移量、还有 objectness 分数。你直接对整张特征图做 MSE背景区域占 90% 以上梯度全被背景淹没了。常见做法是把蒸馏拆成三块分类头的软标签蒸馏、回归头的定位蒸馏、以及特征图层面的中间层蒸馏。分类头用带温度 T 的 softmax回归头用 L2 或者 IoU-aware 的加权特征层用注意力掩码只蒸前景区域。这三块的权重怎么配直接决定增量效果。2.2 温度系数 T 和蒸馏权重的取值逻辑温度 T 的作用是软化概率分布让次优类的信息也能传递。T1 就是原始 softmaxT 越大分布越平。检测任务里我一般从 T2 起步类别数多50时调到 4。T 太大有个坑背景类的概率被抬起来学生模型会学到一堆假阳性。蒸馏总损失长这样# 蒸馏总损失分类KD 回归KD 特征KD import torch import torch.nn as nn import torch.nn.functional as F class DetectionDistillLoss(nn.Module): def __init__(self, temperature2.0, alpha0.5, beta0.3, gamma0.2): super().__init__() self.T temperature self.alpha alpha # 分类蒸馏权重 self.beta beta # 回归蒸馏权重 self.gamma gamma # 特征蒸馏权重 def forward(self, student_out, teacher_out, targets, feat_s, feat_t): # 1. 分类蒸馏带温度的 KL 散度只在前景 anchor 上算 s_cls F.log_softmax(student_out[cls] / self.T, dim-1) t_cls F.softmax(teacher_out[cls] / self.T, dim-1) # foreground_mask 由 teacher 的 objectness 阈值生成 fg_mask teacher_out[obj] 0.5 loss_cls_kd F.kl_div(s_cls[fg_mask], t_cls[fg_mask], reductionbatchmean) * (self.T ** 2) # 2. 回归蒸馏只对前景框做 L2背景框不参与 loss_reg_kd F.mse_loss(student_out[reg][fg_mask], teacher_out[reg][fg_mask]) # 3. 特征蒸馏1x1 卷积对齐通道后做 MSE loss_feat F.mse_loss(feat_s, feat_t) # 4. 学生自身的检测损失正常训练损失 loss_det student_out[det_loss] return (loss_det self.alpha * loss_cls_kd self.beta * loss_reg_kd self.gamma * loss_feat)逻辑说明fg_mask是关键它把蒸馏限制在前景区域避免背景梯度淹没信号。T**2是标准 KD 的梯度缩放保证温度变化时梯度量级一致。三个权重 alpha/beta/gamma 我一般设 0.5/0.3/0.2新类样本少时把 alpha 提到 0.7。参数说明temperature控制软标签平滑度2~4 之间alpha分类蒸馏权重太高会压制新类学习beta回归权重定位漂移严重时提到 0.5gamma特征权重显存紧张可以关掉。2.3 增量学习的任务划分按类增量还是按域增量增量学习分两种class-incremental新类加入旧类不变和 domain-incremental类别不变数据分布变。这个标题说的是前者。class-incremental 的难点在于新旧类之间的决策边界会互相挤压——新类的梯度会把旧类的分类面推歪。我一般用「蒸馏 少量旧样本回放」的组合。纯蒸馏不存旧数据效果上限有限存 5% 的旧样本做回放mAP 能多保住 8~12 个点。如果合规不允许存任何旧数据那就只能靠蒸馏加原型prototype约束效果会打折扣要有心理预期。3. 用 PyTorch 搭一套可复现的增量蒸馏训练流程3.1 环境准备与依赖版本Python 3.8 以上PyTorch 1.12torchvision 对应版本。检测框架我建议直接用 Ultralytics 的 YOLOv8/v11 做 backbone它的检测头结构清晰改蒸馏损失方便。装依赖# 创建虚拟环境避免污染系统 Python python -m venv distill_env source distill_env/bin/activate # Windows 用 distill_env\Scripts\activate # 安装核心依赖版本锁定避免玄学问题 pip install torch2.0.1 torchvision0.15.2 --index-url https://download.pytorch.org/whl/cu118 pip install ultralytics8.1.0 pip install numpy opencv-python pyyaml tqdm逻辑说明torch 和 torchvision 版本必须匹配否则 import 就报错。ultralytics 8.x 的 API 和 7.x 有差异蒸馏钩子挂载点不同别混用。参数说明CUDA 版本按你显卡驱动选cu118 对应驱动 520。没有 GPU 也能跑但增量训练一轮要几小时不推荐。3.2 教师模型加载与学生模型初始化教师模型是上一轮训好的旧模型冻结全部参数只做前向。学生模型用同样的结构但分类头输出维度要扩到旧类新类总数。import torch from ultralytics import YOLO # 加载教师模型上一轮的旧模型冻结参数 teacher YOLO(runs/detect/old_model/weights/best.pt) teacher.model.eval() for p in teacher.model.parameters(): p.requires_grad False # 学生模型从教师权重初始化但分类头扩展 student YOLO(yolov8n.yaml) old_ckpt torch.load(runs/detect/old_model/weights/best.pt) old_state old_ckpt[model].state_dict() # 分类头最后一层维度从 old_nc 扩到 old_nc new_nc old_nc, new_nc 20, 5 cls_key model.22.cv3.0.2.weight # YOLOv8 分类头最后一层 old_w old_state[cls_key] # shape: [old_nc, 256, 1, 1] new_w torch.zeros(old_nc new_nc, *old_w.shape[1:]) new_w[:old_nc] old_w # 旧类权重直接继承 # 新类权重用旧类均值初始化比随机初始化收敛快 new_w[old_nc:] old_w.mean(dim0, keepdimTrue).repeat(new_nc, 1, 1, 1) old_state[cls_key] new_w student.model.load_state_dict(old_state, strictFalse)逻辑说明分类头扩展是增量学习的关键一步。旧类权重直接继承保证旧类性能不崩新类权重用旧类均值初始化比随机初始化收敛快 2~3 个 epoch。strictFalse是因为检测头其他层维度可能也变了。参数说明cls_key的具体名字取决于模型结构YOLOv8n 是model.22.cv3.0.2.weight换模型要打印 state_dict 确认。新类初始化方式可以换成 Xavier但均值初始化在实测中更稳。3.3 训练循环里挂蒸馏损失Ultralytics 的 trainer 封装较深我一般不用它的model.train()而是自己写训练循环这样蒸馏损失好插入。from torch.utils.data import DataLoader from dataset import IncrementalDataset # 自定义数据集含新旧类 def train_one_epoch(student, teacher, loader, optimizer, distill_loss, device): student.model.train() total_loss 0.0 for imgs, targets in loader: imgs imgs.to(device) targets [{k: v.to(device) for k, v in t.items()} for t in targets] # 教师前向不计算梯度 with torch.no_grad(): t_out teacher.model(imgs) t_feat teacher.model.model[15](imgs) # 中间层特征 # 学生前向 s_out student.model(imgs) s_feat student.model.model[15](imgs) # 学生自身检测损失 det_loss, _ student.model.loss(s_out, targets) # 蒸馏损失 kd_loss distill_loss( {cls: s_out[cls], reg: s_out[reg], obj: s_out[obj], det_loss: det_loss}, {cls: t_out[cls], reg: t_out[reg], obj: t_out[obj]}, targets, s_feat, t_feat ) optimizer.zero_grad() kd_loss.backward() # 梯度裁剪防止蒸馏损失和检测损失量级差异导致爆炸 torch.nn.utils.clip_grad_norm_(student.model.parameters(), max_norm10.0) optimizer.step() total_loss kd_loss.item() return total_loss / len(loader)逻辑说明教师前向必须包在torch.no_grad()里否则显存翻倍。中间层特征取model[15]是 YOLOv8 的 neck 输出换模型要调整索引。梯度裁剪是必须的蒸馏损失和检测损失量级可能差一个数量级不裁剪容易梯度爆炸。参数说明max_norm10.0是经验值梯度范数持续超过 10 说明损失权重配比有问题。IncrementalDataset要保证每个 batch 里新旧类样本比例约 1:1否则新类梯度会主导。3.4 学习率调度与 warmup 策略增量训练的学习率要比从头训低一个量级否则旧类权重会被冲垮。我一般用余弦退火 3 轮 warmupfrom torch.optim.lr_scheduler import CosineAnnealingLR, LinearLR, SequentialLR optimizer torch.optim.SGD(student.model.parameters(), lr0.001, momentum0.937, weight_decay0.0005) warmup LinearLR(optimizer, start_factor0.1, total_iters3) cosine CosineAnnealingLR(optimizer, T_max50, eta_min1e-5) scheduler SequentialLR(optimizer, schedulers[warmup, cosine], milestones[3])逻辑说明warmup 让模型先适应新类梯度避免一开始就大幅更新旧类权重。余弦退火让后期学习率降下来精细调整决策边界。参数说明lr0.001是从头训的 1/10旧类保持好可以再降。T_max50是总 epoch 数按新类样本量调整样本少就 30。4. 增量蒸馏的避坑清单这五个坑我全踩过4.1 坑一新类 mAP 上去了旧类崩了现象训练日志里新类 mAP 从 0 涨到 0.65但旧类 mAP 从 0.78 掉到 0.35。原因蒸馏权重 alpha 太低学生模型被新类梯度主导旧类的分类面被推歪。或者分类头扩展时旧类权重没继承被随机初始化覆盖了。解决先把 alpha 提到 0.7观察旧类 mAP 是否回升。如果没变化检查load_state_dict时strictFalse是否导致旧类权重没加载上——打印分类头权重对比确认。我一般会在训练前跑一次旧类验证集确认初始 mAP 和教师模型一致再开训。4.2 坑二蒸馏损失 NaN训练直接崩现象第 2 个 epoch 损失变成 NaN模型输出全零。原因KL 散度里log_softmax遇到全零输入会出 -inf或者温度 T 太大导致 softmax 下溢。也可能是学习率太高梯度爆炸。解决在 KL 散度前加clamp(min1e-8)温度 T 别超过 6。梯度裁剪max_norm10.0必须开。如果还 NaN把蒸馏权重降到 0.1 先跑通再逐步加。4.3 坑三显存不够batch size 降到 1 还 OOM现象教师学生同时前向显存直接爆24G 卡只能跑 batch2。原因教师模型虽然不计算梯度但中间层特征全存着显存占用和学生差不多。特征蒸馏又额外存了两份特征图。解决教师前向用torch.no_grad()包住中间层特征只取一层别多层都蒸。如果还不够用梯度累积模拟大 batchaccum_steps 4 for i, (imgs, targets) in enumerate(loader): loss compute_loss(imgs, targets) / accum_steps loss.backward() if (i 1) % accum_steps 0: optimizer.step() optimizer.zero_grad()4.4 坑四新旧类样本不均衡新类学不动现象新类只有 200 张图旧类回放样本 2000 张训练 10 轮新类 mAP 还是 0.1。原因新类梯度被旧类淹没分类头的新类权重几乎不更新。解决用加权采样器让每个 batch 里新旧类比例接近 1:1。或者用 focal loss 替代交叉熵降低易分类样本的权重。我一般两个一起用新类 mAP 能提到 0.5 以上。4.5 坑五蒸馏温度 T 设太大背景类假阳性暴增现象T8 时模型在纯背景区域输出一堆低置信度框误检率翻倍。原因温度太高softmax 分布太平背景类的概率被抬到 0.1~0.2学生模型以为背景也是目标。解决T 控制在 2~4背景类概率超过 0.05 就说明 T 太大了。可以在蒸馏损失里对背景类做掩码只蒸前景类的 KL。5. 验证增量效果与一个提点技巧别只看 mAP5.1 增量学习的评估指标不能只用 mAPmAP 是整体指标新旧类混在一起算看不出遗忘程度。我一般看三个数旧类 mAP衡量遗忘、新类 mAP衡量学习、以及调和平均新旧类平衡。旧类 mAP 掉超过 5 个点说明蒸馏没压住新类 mAP 低于 0.3说明新类没学进去。还有一个容易被忽略的指标旧类在新数据上的误检率。增量训练后旧类模型可能把新类样本误判成旧类这个误检率上升说明决策边界模糊了。# 分类型评估分别算旧类和新类的 mAP def evaluate_per_class(model, dataloader, old_classes, new_classes): model.eval() old_preds, new_preds [], [] with torch.no_grad(): for imgs, targets in dataloader: preds model(imgs) for p, t in zip(preds, targets): cls_ids p[cls].int().unique() if all(c in old_classes for c in cls_ids): old_preds.append((p, t)) elif all(c in new_classes for c in cls_ids): new_preds.append((p, t)) old_map compute_map(old_preds) new_map compute_map(new_preds) harmonic 2 * old_map * new_map / (old_map new_map 1e-8) return old_map, new_map, harmonic逻辑说明按预测类别归属拆分评估集分别算 mAP。调和平均能反映新旧类的平衡程度比算术平均更敏感。参数说明old_classes和new_classes是类别 id 列表按你的数据集定义。调和平均低于 0.4 说明增量策略需要调整。5.2 一个提点技巧用教师模型的伪标签做新类半监督新类标注样本少是常态。我一般用教师模型对新类无标注数据做推理置信度 0.7 的框当伪标签加入训练集。这相当于把教师的知识通过伪标签再蒸馏一次新类 mAP 能多提 5~8 个点。注意伪标签要过滤只保留教师模型高置信度的框且 NMS 阈值调严一点0.5 提到 0.6避免重复框。伪标签的损失权重设 0.5别和真实标注同等对待。# 伪标签生成教师模型推理 置信度过滤 def generate_pseudo_labels(teacher, unlabeled_loader, conf_thres0.7): teacher.model.eval() pseudo_dataset [] with torch.no_grad(): for imgs in unlabeled_loader: results teacher.model(imgs, confconf_thres, iou0.6) for r in results: if len(r.boxes) 0: pseudo_dataset.append({ img: r.path, boxes: r.boxes.xyxy.cpu(), cls: r.boxes.cls.cpu() }) return pseudo_dataset逻辑说明conf0.7是置信度阈值低于 0.7 的框噪声太大。iou0.6比默认 0.7 严减少重复框。伪标签数据集和真实标注混在一起训练损失权重设 0.5。参数说明置信度阈值按教师模型质量调教师旧类 mAP 高就设 0.7一般就设 0.8。伪标签比例别超过真实标注的 2 倍否则噪声累积。这套流程我在三个工业质检项目上跑过旧类 mAP 保持率 92%~96%新类 mAP 0.55~0.72。最深的教训是蒸馏权重别拍脑袋设先跑一组消融实验alpha 从 0.3 到 0.8 各跑 10 个 epoch看旧类 mAP 曲线拐点在哪。我吃过亏alpha0.9 时旧类保住了但新类完全学不动白跑两天。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

AI Agent记忆管理实战:四层架构与可验证落地指南

AI Agent记忆管理实战:四层架构与可验证落地指南

1. 为什么“记忆”是AI Agent最常被忽略的致命短板 我第一次在某跨平台系统里跑通一个带多轮对话的Agent时,兴奋地给团队演示“它能记住用户刚说过的偏好”。结果第三轮对话刚过,它就把用户明确说过的“不要推荐咖啡因饮料”忘得一干二净,转头…

2026/10/12 10:03:54 阅读更多 →
AI Agent工程实践指南:从决策判断到故障防御

AI Agent工程实践指南:从决策判断到故障防御

1. 这不是又一本“AI科普书”,而是一份给动手者的Agent开发手记你点开这个标题,大概率不是想听“AI Agent是什么”这种教科书定义——毕竟搜索引擎里铺天盖地的“概念图解”“三层架构图”“RAGLLMAgent”已经够多。真正卡住你的,是那几个深夜…

2026/10/12 10:03:54 阅读更多 →
GEO优化全指南:从大模型内容偏好到AI引用实战

GEO优化全指南:从大模型内容偏好到AI引用实战

1. GEO 不是 SEO 的换皮:AI 回答正在重写流量分配规则 过去一年里,我发现一个特别明显的趋势:身边越来越多的人问"为什么我在百度上排名第一,用户却说搜不到我"。不是搜不到,而是用户不再逐条点蓝色链接了。…

2026/10/12 10:03:54 阅读更多 →

最新新闻

Spring @Required 注解废弃解析:依赖注入校验演进与构造器注入迁移

Spring @Required 注解废弃解析:依赖注入校验演进与构造器注入迁移

1. 一个被遗忘的注解,为什么还值得聊Required这个注解,如果你是从 Spring Boot 时代入行的,大概率没见过它,甚至在 IDE 里敲出来会发现它上面压着一道醒目的删除线。它属于那种"存在于文档里、消失在代码里"的元老级 AP…

2026/10/12 10:43:37 阅读更多 →
C++实战:课程安排中的约束建模与搜索优化

C++实战:课程安排中的约束建模与搜索优化

1. 从"排课"这个老问题说起:为什么值得用C认真做一遍课程安排这件事,看起来是个教务处的活儿,但真正动手写过的人都知道,它本质上是一个带约束的组合优化问题。每学期开始前,教务老师面对的是几十个班级、上…

2026/10/12 10:43:37 阅读更多 →
电磁场与电磁波教案:时变场与麦克斯韦方程组的课堂推导

电磁场与电磁波教案:时变场与麦克斯韦方程组的课堂推导

简介:面向电子信息类专业《电磁场与电磁波》课程的教案文档,适合高校教师备课、课后复盘及学生自学,内容覆盖法拉第电磁感应定律、位移电流、麦克斯韦方程组及不同介质交界面边界条件等核心知识点,强调积分形式与微分形式的对应转…

2026/10/12 10:43:37 阅读更多 →
Ubuntu 20.04 LTS 服务器安装与初始化配置全攻略

Ubuntu 20.04 LTS 服务器安装与初始化配置全攻略

简介:《Ubuntu 20.04 LTS操作系统安装及初始化配置指南》是一份面向Linux初学者、希望摆脱单一Windows/macOS环境的技术爱好者及开发者的实操文档,内容覆盖从镜像下载、Rufus启动盘制作到BIOS/UEFI启动项调整的完整前置流程,并详细讲解安装引…

2026/10/12 10:43:37 阅读更多 →
[特殊字符]Cursor降智别慌!WindSurf零代码开发MCP Server,五分钟给Claude和AutoGen挂载LightRAG知识库(附TaoToken统一Key配置)

[特殊字符]Cursor降智别慌!WindSurf零代码开发MCP Server,五分钟给Claude和AutoGen挂载LightRAG知识库(附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/12 10:43:37 阅读更多 →
从 Ubuntu 25.10 到 26.04 LTS:一次跨版本升级的完整技术路线图与 TaoToken 配置实践

从 Ubuntu 25.10 到 26.04 LTS:一次跨版本升级的完整技术路线图与 TaoToken 配置实践

/* 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 10:42:36 阅读更多 →

日新闻

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

在数码相机、高清显示屏与现代矢量图形技术高度发达的今天,画面可以做到绝对的锐利、平滑与无瑕。然而,当一张秋日手账插画或拍立得照片过于“平整无瑕”时,往往会散发出一种冰冷生硬的“数码塑料感(Digital Plasticity&#xff0…

2026/10/12 0:00:59 阅读更多 →
活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

在现代网页与移动端设计中,横排(Horizontal Layout)早已经成为了绝对的主流。然而,当我们翻开泛黄的线装古籍、宋版木刻诗集,或是欣赏一张茶道雅集的手写便签时,那种**自上而下纵向书写、自右向左逐列铺展&…

2026/10/12 0:00:59 阅读更多 →
周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

每到周日的晚上八点到十点,很多人心里都会悄悄亮起一盏警示灯。 在心理学上,这种现象有一个专门的称谓——“周日夜晚焦虑症(Sunday Scaries)”。明天又是周一,闹钟又要重新在七点响彻卧房;脑海里仿佛有一个…

2026/10/12 0:00:59 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 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/11 10:45:37 阅读更多 →
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/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练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/11 14:36:54 阅读更多 →