189张军事目标图像小样本YOLO训练实战:从数据管线到边缘部署
简介这份资源面向从事军事目标探测与遥感图像识别的算法工程师、研究生及计算机视觉学习者提供一套可直接投入训练的YOLO系列目标检测数据集覆盖飞机、无人机、直升机等典型军事目标类别适用于安防监控、遥感侦察等场景的模型验证与课程实验。压缩包共190个文件其中189张jpg图像与1个yaml配置文件整体约8.55MB图像均已标注并划分好训练与验证集开箱即可用于yolov5、yolov8、yolov9、yolov7、yolov10及yolo11等主流框架。标签同时提供YOLO格式txt与VOC格式xml两套分别存放于独立文件夹YOLO格式采用类别索引加归一化中心点与宽高的标准写法便于直接读取或转换。目前已有461人学习下载适合希望快速搭建军事目标检测基线、验证数据增强策略或对比不同YOLO版本性能的读者能省去自行采集与标注的时间成本。1. 189张军事目标图像小样本YOLO训练到底能不能打手里只有189张带标签的军事目标图像飞机和无人机两类想跑YOLO做检测——这是很多做边缘部署、课题验证、原型演示的工程师真实会遇到的局面。公开数据集动辄上万张但涉及特定目标、特定场景时能拿到的往往就是这种百来张规模的小包。问题很直接这点数据够不够会不会一训练就过拟合mAP能不能看我的判断是189张能跑通但能不能“打”取决于你怎么切分、怎么增强、怎么选模型尺度。小样本YOLO训练的核心矛盾不是算法本身而是数据利用率和过拟合控制。这篇文章就围绕这个zip包的实际条件把从环境搭建、标签检查、数据增强、训练参数到验证排查的完整路径讲清楚让你拿到类似规模的数据集时知道每一步该怎么做、哪里会翻车。适合人群手头有百张级标注数据、想快速验证YOLO可行性的算法工程师、做课题的学生、需要在边缘设备上跑自定义检测的开发者。如果你指望189张直接产出工业级模型那需要先调整预期但如果你要的是一个能复现、能迭代、能说清楚边界的基础版本下面的内容可以直接抄。2. 从zip到可训练数据管线搭建与标签校验2.1 解压后的目录结构该怎么组织拿到“189张图像带标签”的zip第一件事不是急着跑训练而是把目录结构理清楚。常见做法是图像和标签分开存放YOLO格式要求每张图对应一个同名txt文件txt里每行是类别 x_center y_center width height坐标全部归一化到0到1之间。我一般会整理成这样的结构dataset/ ├── images/ │ ├── train/ │ └── val/ ├── labels/ │ ├── train/ │ └── val/ └── data.yaml整理脚本如下把原始图像和标签按8:2切分import os import shutil import random random.seed(42) # 固定随机种子保证切分可复现 src_img_dir raw/images src_lbl_dir raw/labels dst_root dataset # 收集所有有对应标签的图像 pairs [] for fname in os.listdir(src_img_dir): if not fname.lower().endswith((.jpg, .png, .jpeg)): continue stem os.path.splitext(fname)[0] lbl_path os.path.join(src_lbl_dir, stem .txt) if os.path.exists(lbl_path): pairs.append((fname, stem .txt)) random.shuffle(pairs) split_idx int(len(pairs) * 0.8) train_pairs pairs[:split_idx] val_pairs pairs[split_idx:] for subset, data in [(train, train_pairs), (val, val_pairs)]: img_out os.path.join(dst_root, images, subset) lbl_out os.path.join(dst_root, labels, subset) os.makedirs(img_out, exist_okTrue) os.makedirs(lbl_out, exist_okTrue) for img_f, lbl_f in data: shutil.copy(os.path.join(src_img_dir, img_f), os.path.join(img_out, img_f)) shutil.copy(os.path.join(src_lbl_dir, lbl_f), os.path.join(lbl_out, lbl_f)) print(ftrain: {len(train_pairs)}, val: {len(val_pairs)})这段脚本做了三件事过滤掉没有标签的孤儿图像、固定种子随机切分、按YOLO要求的目录结构复制文件。参数上唯一需要你改的是src_img_dir和src_lbl_dir指向解压后的实际路径。random.seed(42)不是可有可无的小数据集上切分方式对最终指标影响很大固定种子才能保证你每次复现的是同一组验证集。2.2 标签格式检查别让坏标注毁掉训练189张里只要有两三张标签格式错误训练时可能直接报错退出或者更隐蔽地导致某个类别的mAP异常低。标签检查这一步不能省。import os lbl_dir dataset/labels/train img_dir dataset/images/train issues [] for fname in os.listdir(lbl_dir): if not fname.endswith(.txt): continue path os.path.join(lbl_dir, fname) with open(path, r) as f: lines f.readlines() if len(lines) 0: issues.append(f{fname}: 空标签文件) continue for i, line in enumerate(lines): parts line.strip().split() if len(parts) ! 5: issues.append(f{fname} 第{i1}行: 字段数{len(parts)}应为5) continue cls_id parts[0] coords list(map(float, parts[1:])) if cls_id not in (0, 1): issues.append(f{fname} 第{i1}行: 类别ID{cls_id}超出0-1范围) for c in coords: if c 0 or c 1: issues.append(f{fname} 第{i1}行: 坐标{c}超出[0,1]) break # 检查图像是否存在 stem os.path.splitext(fname)[0] if not any(os.path.exists(os.path.join(img_dir, stem ext)) for ext in (.jpg, .png, .jpeg)): issues.append(f{fname}: 找不到对应图像) if issues: for msg in issues: print(msg) else: print(标签检查通过)检查逻辑覆盖四类高频问题空标签文件、字段数不对、类别ID越界、坐标越界。坐标越界是最常见的标注工具导出时如果图像被裁剪过归一化坐标可能算出负值或大于1的值。这类问题不检查训练时YOLO的损失函数会直接产生NaN。提示如果发现坐标越界不要手动改回到标注工具里重新导出。手动改容易引入新的不一致。2.3 data.yaml的写法与类别映射YOLO训练需要一个yaml配置文件告诉它数据在哪、有几个类别、类别名是什么。189张两类目标的配置如下path: ./dataset train: images/train val: images/val nc: 2 names: 0: aircraft 1: dronenc是类别数names的键必须从0开始连续。这里有个容易翻车的地方如果你的标签里飞机是0、无人机是1但yaml里写反了训练不会报错但推理时类别名会完全对不上。我一般会在检查脚本里顺便统计每个类别的实例数确认标签里的ID分布和yaml一致。from collections import Counter cls_counter Counter() for fname in os.listdir(dataset/labels/train): if fname.endswith(.txt): with open(os.path.join(dataset/labels/train, fname)) as f: for line in f: if line.strip(): cls_counter[line.split()[0]] 1 print(类别分布:, dict(cls_counter))189张图像如果两类实例数差距超过5:1训练时就需要考虑类别权重或者过采样。军事目标数据集里飞机和无人机的比例往往不均衡这一点在训练前就要心里有数。3. 小样本YOLO训练模型选型、增强策略与参数配置3.1 189张该选YOLOv8n还是YOLOv8s模型尺度选择直接决定过拟合风险。189张图像属于典型小样本我的经验是优先选nano或small级别不要上m或l。原因很直接参数量越大拟合能力越强在189张上几乎必然过拟合验证集loss会在前几个epoch就开始上升。模型参数量189张上的表现预期适用场景YOLOv8n3.2M验证集mAP波动小收敛快边缘部署、快速验证YOLOv8s11.2M需要强增强才能压住过拟合精度优先、可接受更长训练YOLOv8m25.9M189张上几乎必然过拟合不推荐我一般先用YOLOv8n跑一轮baseline看验证集mAP能不能到0.5以上。如果能再考虑换s看有没有提升如果n都过拟合换大模型只会更糟。3.2 数据增强小样本的救命稻草还是毒药189张图像增强策略是决定成败的关键。YOLO默认的增强包括HSV色彩抖动、随机翻转、随机缩放裁剪、mosaic。小样本场景下mosaic和mixup要谨慎开因为它们会进一步减少单张图像的有效信息量。我的配置思路是几何增强拉满色彩增强适度mosaic降低概率。from ultralytics import YOLO model YOLO(yolov8n.pt) results model.train( datadataset/data.yaml, epochs200, imgsz640, batch16, patience30, # 30轮无提升就早停 lr00.001, # 初始学习率小样本调低 lrf0.01, # 最终学习率因子 warmup_epochs5, # 小样本需要更长warmup hsv_h0.015, # 色调抖动默认值 hsv_s0.5, # 饱和度抖动适度 hsv_v0.3, # 亮度抖动 degrees10.0, # 旋转角度军事目标方向多变 translate0.1, # 平移 scale0.5, # 缩放 fliplr0.5, # 水平翻转 flipud0.1, # 垂直翻转航拍视角可适当开 mosaic0.5, # mosaic概率从默认1.0降到0.5 mixup0.0, # 小样本关闭mixup copy_paste0.0, # 关闭copy-paste device0, projectruns/military, nameyolov8n_189, )参数逐个说patience30是早停小样本上验证集指标波动大给30轮缓冲避免过早停止。lr00.001比默认的0.01低一个量级因为189张的梯度噪声大学习率高了容易震荡。warmup_epochs5让模型在前5轮慢慢升温避免一开始就过拟合到少数样本。mosaic0.5是关键调整mosaic把4张图拼成1张等效于让模型看到更少的独立样本小样本上开太高会拖慢收敛。mixup0.0直接关掉189张经不起mixup的进一步信息稀释。3.3 训练过程监控看什么指标、什么时候该停训练启动后终端会输出每个epoch的loss和mAP。小样本训练要盯三个信号第一训练loss和验证loss的分离速度。如果训练loss持续下降但验证loss在10个epoch内就开始上升说明过拟合已经发生需要加强增强或减小模型。第二mAP50和mAP50-95的差距。mAP50高但mAP50-95低说明框的位置不够准可能是标注框的松紧不一致导致的。第三每个类别的AP。如果飞机AP正常但无人机AP极低回去检查无人机的标签数量和标注质量。# 训练结束后加载最佳权重做验证 model YOLO(runs/military/yolov8n_189/weights/best.pt) metrics model.val(datadataset/data.yaml, splitval) print(fmAP50: {metrics.box.map50:.4f}) print(fmAP50-95: {metrics.box.map:.4f}) for i, ap in enumerate(metrics.box.ap50): print(f类别{i} AP50: {ap:.4f})这段验证代码在训练结束后跑输出整体指标和每类指标。metrics.box.ap50是一个列表按类别ID顺序排列。如果某个类别的AP50低于0.3基本可以判断该类别的标注或样本量有问题。4. 推理验证与边缘部署从权重到实际检测4.1 用验证集做一轮完整推理训练完拿到best.pt不要直接上真实场景先在验证集上跑一轮推理肉眼确认检测结果。YOLO的推理接口很简单from ultralytics import YOLO import cv2 model YOLO(runs/military/yolov8n_189/weights/best.pt) results model.predict( sourcedataset/images/val, conf0.25, # 置信度阈值 iou0.45, # NMS的IoU阈值 saveTrue, # 保存带框的图像 save_txtTrue, # 保存检测结果txt projectruns/detect, nameval_check, )conf0.25是默认值小样本模型建议先调到0.1看召回再逐步提高看精度变化。iou0.45控制NMS的合并程度如果同一目标出现多个框调低这个值如果相邻目标被误合并调高。推理结果保存在runs/detect/val_check/下打开几张图看看框的位置是否准确、有没有漏检、有没有把背景误检成目标。这一步的肉眼检查比任何指标都直接。4.2 导出ONNX并在边缘设备上跑通如果最终要部署到边缘设备常见做法是导出ONNX再转TensorRT或OpenVINO。YOLOv8导出ONNX的命令model YOLO(runs/military/yolov8n_189/weights/best.pt) model.export( formatonnx, imgsz640, halfTrue, # FP16量化边缘设备上提速明显 simplifyTrue, # 简化计算图 opset12, )halfTrue导出FP16模型在支持FP16的设备上推理速度能提升30%到50%精度损失通常在0.5%以内。simplifyTrue会调用onnx-simplifier做图优化去掉冗余算子。opset12是兼容性较好的版本如果目标推理引擎支持更高opset可以往上调。导出后在边缘设备上用ONNX Runtime验证import onnxruntime as ort import numpy as np session ort.InferenceSession(best.onnx, providers[CPUExecutionProvider]) input_name session.get_inputs()[0].name # 预处理resize到640x640归一化HWC转CHW加batch维度 img cv2.imread(test.jpg) img cv2.resize(img, (640, 640)) img img[:, :, ::-1].transpose(2, 0, 1).astype(np.float32) / 255.0 img np.expand_dims(img, axis0) outputs session.run(None, {input_name: img}) print(outputs[0].shape) # 应该是 (1, 4nc, 8400)输出shape里4nc是框坐标加类别数8400是候选框数量。后处理需要做置信度过滤和NMS这部分代码较长建议直接用ultralytics的推理接口或者参考官方导出脚本里的后处理实现。注意边缘设备上如果只跑CPUYOLOv8n在640分辨率下单帧大约80到150毫秒具体取决于设备。如果要求实时考虑降到416或320分辨率或者用INT8量化。5. 避坑与排查189张训练中最容易翻车的5个地方5.1 验证集mAP为0标签路径或类别映射错了现象训练loss正常下降但验证集mAP始终为0。原因最常见的是data.yaml里的val路径写错YOLO找不到验证集图像或者找到了图像但标签路径不匹配。另一种可能是类别ID在yaml和标签里不一致。解决先用第2章的检查脚本确认标签文件存在且格式正确再打印data.yaml的绝对路径确认指向正确。如果路径没问题用model.val()单独跑验证看输出里有没有“no labels found”的警告。5.2 训练loss变NaN坐标越界或学习率过高现象前几个epoch正常突然loss变成NaN训练中断。原因标签里有坐标越界负值或大于1或者学习率过高导致梯度爆炸。189张小样本上默认的lr00.01有时会直接炸。解决跑第2.2节的标签检查脚本把所有越界坐标找出来。如果标签没问题把lr0降到0.001或更低同时开warmup_epochs5。如果还炸加梯度裁剪grad_clip10.0。5.3 验证集指标剧烈波动验证集太小现象每个epoch的mAP50上下跳动超过0.1没有稳定趋势。原因189张按8:2切分验证集只有38张左右。38张上的指标本身就有很大随机性一张图的检测结果变化就能让mAP跳动几个百分点。解决两种做法。一是用k折交叉验证把189张分成5折每折轮流做验证集取平均指标。二是接受波动看训练loss和验证loss的整体趋势而不是单点值。我一般会选第二种因为k折在189张上每折训练数据更少反而更容易过拟合。5.4 某个类别AP极低样本不均衡或标注遗漏现象飞机AP50到0.8无人机AP50只有0.2。原因无人机样本数远少于飞机或者无人机的标注框大量遗漏。军事目标数据集里无人机往往是小目标标注时容易漏。解决先统计两类实例数如果比例超过5:1在训练时给少数类加权或者对少数类做过采样。如果是标注遗漏只能回去补标。小目标还要检查imgsz是否够大640下如果无人机只有十几个像素考虑提高到1024或1280。5.5 推理时框重叠严重NMS的IoU阈值不合适现象同一架飞机被检出多个框或者相邻两架无人机被合并成一个框。原因NMS的iou阈值默认0.45对于密集小目标场景这个值可能偏高或偏低。解决如果同一目标多个框把iou降到0.3到0.4如果相邻目标被合并把iou升到0.5到0.6。这个值没有万能解需要在验证集上试几组看效果。另外可以开agnostic_nmsFalse让不同类别的框独立做NMS。6. 小样本YOLO的进阶技巧从189张到可迭代的检测基线189张能跑出一个baseline但要让这个baseline真正可用还需要做几件事。第一建立迭代闭环。把验证集上检测错误的图像挑出来按漏检、误检、框不准三类归档。漏检的补标误检的加负样本框不准的重新标。每轮迭代增加20到30张跑一次训练看指标变化。这个闭环比一次性堆数据更有效因为每一张新增数据都针对模型的薄弱点。第二用预训练权重做领域适配。YOLOv8n的COCO预训练权重里已经有飞机类别虽然和军事目标的分布不同但底层特征可迁移。我的习惯是先用预训练权重跑50轮再解冻全部层跑150轮。如果直接从头训练189张很难收敛到可用水平。第三验证时用TTA测试时增强。YOLO支持在验证时开TTA对每张图做多尺度、多翻转的推理再合并结果。小样本模型本身不稳定TTA能平均掉一部分随机性。开TTA的验证命令metrics model.val( datadataset/data.yaml, splitval, augmentTrue, # 开启TTA conf0.001, # TTA下置信度阈值要调低 iou0.6, )augmentTrue会启用TTAconf要调到0.001让所有候选框都参与合并。TTA通常能把mAP提升1到3个百分点但推理时间增加3到5倍只在验证阶段用部署时不开。第四记录每次实验的配置和指标。189张上的训练对超参敏感不记录的话两周后你根本想不起来哪组参数对应哪个结果。我一般用一个简单的csv记录时间、模型、epochs、lr0、mosaic、mAP50、mAP50-95、备注。这个习惯帮我省了很多重复试错的时间。最后说一个我踩过的坑不要用验证集的指标去调超参。189张的验证集只有38张你在上面调参调到0.7换一批数据可能直接掉到0.4。正确的做法是切一个独立的测试集哪怕只有20张调参只看验证集最终评估只看测试集。这个习惯在小样本场景下尤其重要因为过拟合验证集的速度比你想象的快得多。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

Zapier、Coze、Dify、n8n 四方混战:企业 AI 工作流到底押注谁?

Zapier、Coze、Dify、n8n 四方混战:企业 AI 工作流到底押注谁?

Zapier、Coze、Dify、n8n 四方混战:企业 AI 工作流到底押注谁? 【免费下载链接】n8n Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400 integrations. 项目地…

2026/10/10 18:05:39 阅读更多 →
弹性网络回归实战:从原理到调参,解决高维共线性特征选择难题

弹性网络回归实战:从原理到调参,解决高维共线性特征选择难题

简介:这份文档面向机器学习初学者与数据分析从业者,聚焦回归算法中的弹性网络回归,帮助读者理解其如何结合岭回归与Lasso回归的优势,在特征选择与模型复杂度之间取得平衡。内容从回归算法在预测建模中的核心作用讲起,逐…

2026/10/10 18:05:39 阅读更多 →
电控软件测试方法论与实战:从用例设计到自动化回归

电控软件测试方法论与实战:从用例设计到自动化回归

干电控软件测试这些年,我经常被问到同一个问题:测试用例到底怎么设计才能把故障真正测出来?问这个问题的,有刚转行入门的工程师,也有带了几年项目的骨干。大家的困惑其实都指向同一个点——电控软件和普通应用软件不一…

2026/10/10 18:04:35 阅读更多 →

最新新闻

647回文子串与516最长回文子序列:区间DP两种典型玩法全解析

647回文子串与516最长回文子序列:区间DP两种典型玩法全解析

各位打卡代码随想录的伙计们,第四十五天来了。今天这两道题——647 回文子串、516 最长回文子序列——看起来名字只差两个字,实际上一个是把字符串切成一段段判断"是不是回文",另一个是允许跳跃地凑出"最长回文有多长"。…

2026/10/10 21:19:06 阅读更多 →
用幸运大转盘项目掌握Python循环:for、while与range实战

用幸运大转盘项目掌握Python循环:for、while与range实战

1. 项目拆解:为什么用“幸运大转盘”讲循环在Python入门的教学顺序里,循环永远是绕不过去的坎。很多初学者学完变量、条件判断之后,一到for和while就开始晕:for循环里那个range到底怎么数数?while循环什么时候停&#…

2026/10/10 21:19:06 阅读更多 →
mcp-brasil快速上手指南:2分钟接入Claude/Cursor,免费解锁66个巴西公共数据API

mcp-brasil快速上手指南:2分钟接入Claude/Cursor,免费解锁66个巴西公共数据API

【免费下载链接】mcp-brasil MCP Server para 70 APIs pblicas brasileiras 项目地址: https://gitcode.com/gh_mirrors/mc/mcp-brasil 点击查看 免费下载 mcp-brasil 是一个开源的 MCP Server,一个命令即可把 66 个无需密钥的巴西公共数据 API&#xf…

2026/10/10 21:19:06 阅读更多 →
AI 齐套性专家 | 实战案例成果演示

AI 齐套性专家 | 实战案例成果演示

#玄宿科技#AI齐套性交付#案例分享#自主协同软件#GJB438B#Qt开发#交付文档上一期我们演示了 AI 齐套性交付专家的完整生成过程,但所用案例与真实业务贴合度不够。本期我们换了一个完全贴合业务的方向,重新生成了一整套成果:原型图、可交互程序…

2026/10/10 21:19:06 阅读更多 →
OOOSplat 处理流水线全解:FFmpeg、COLMAP 与 Brush 三大引擎如何协同工作

OOOSplat 处理流水线全解:FFmpeg、COLMAP 与 Brush 三大引擎如何协同工作

桌面应用图形学3D渲染计算机视觉 【免费下载链接】ooosplat A local desktop app that turns videos and images into 3D Gaussian Splats in one click. 项目地址: https://gitcode.com/gh_mirrors/oo/ooosplat 点击查看 免费下载 OOOSplat 是一款把视频和图片序列…

2026/10/10 21:19:06 阅读更多 →
零基础 30 分钟出片:用万相 Animate 把角色设定变成可复用的动画素材

零基础 30 分钟出片:用万相 Animate 把角色设定变成可复用的动画素材

零基础 30 分钟出片:用万相 Animate 把角色设定变成可复用的动画素材 【免费下载链接】Wan2.2-Animate-2-14B 项目地址: https://ai.gitcode.com/hf_mirrors/Wan-AI/Wan2.2-Animate-2-14B 做一条角色动画,过去意味着什么?画角色设定、…

2026/10/10 21:18:06 阅读更多 →

日新闻

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

1. 从“卫星轨道分类”这个标题说起:为什么值得花时间搞懂第一次接触“卫星轨道分类”这个概念,很多人会觉得它离自己很远——不就是天上的星星怎么转吗?但如果你正在做航天任务规划、遥感数据接收、星座设计,甚至只是准备一场航天…

2026/10/10 0:00:39 阅读更多 →
Spring AOP 核心原理与实战:从概念到日志切面落地

Spring AOP 核心原理与实战:从概念到日志切面落地

1. 从一个真实痛点说起:为什么你的代码里到处都是重复逻辑刚入行那会儿,我写过一个用户管理模块,注册、登录、改密码、注销四个接口。每个接口里都塞了几乎一样的日志打印、参数校验、事务开启和提交。当时觉得没什么,能跑就行。直…

2026/10/10 0:00:40 阅读更多 →
Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

简介:这是一套面向计算机相关专业学生与项目实战学习者的Python数据采集与分析可视化完整项目,以Boss直聘岗位数据为对象,适合用作毕业设计、课程设计或期末大作业。资源包共38个文件,约246KB,以13个py源码文件为核心&…

2026/10/10 0:00:40 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

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

2026/10/10 11:14:25 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

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

2026/10/10 1:36:08 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

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

2026/10/10 11:14:58 阅读更多 →

月新闻

我发现了一个新思路:用 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/10 5:23: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/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练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/10 10:38:42 阅读更多 →