GluonCV 数据批处理指南:深入解析 gluoncv.data.batchify 的 Stack、Pad、Append 与 Tuple
计算机视觉深度学习预训练【免费下载链接】gluon-cvGluon CV Toolkit项目地址https://gitcode.com/gh_mirrors/gl/gluon-cv点击查看免费下载gluoncv.data.batchify是 GluonCV 为计算机视觉任务量身定制的样本到 mini-batch聚合工具集。计算机视觉数据天然存在形状不齐的问题——图片尺寸各异、每张图的目标数量不同、视频片段长度不一——无法直接送入神经网络。本文以 docs/api/data.batchify.rst 为骨架结合 gluoncv/data/batchify.py 的源码实现、训练脚本与单元测试系统讲解四大核心批处理函数Stack、Pad、Append、Tuple的原理、参数、源码细节与实战组合方式帮助读者在 SSD、YOLO、CenterNet、Faster R-CNN 等检测/实例分割训练管线中正确选用并自定义 batchify 函数。为什么视觉任务需要专门的 batchify 函数在 Gluon 数据管线中mxnet.gluon.data.DataLoader每次从Dataset中取出若干样本后会调用batchify_fn将这些样本折叠成一个 mini-batch。默认的 batchify 函数假设所有样本形状一致直接做nd.stack但在计算机视觉任务中这一前提几乎不成立图像尺寸不同Faster R-CNN 等检测模型直接处理原始长宽比图片同一 batch 内图片大小各异标签长度不同每张图中目标object数量不同标签数组形状为(num_object, 5)num_object 逐图变化需要保留原始长度Pad 后的标签必须能还原真实长度否则无法计算匹配与损失。GluonCV 因此在gluoncv.data.batchify中提供了一套即插即用的批处理函数。模块的公开导出在源码中通过__all__ [Stack, Pad, Append, Tuple, FasterRCNNTrainBatchify]声明而 gluoncv/data/init.py 通过from . import batchify将其挂载为gluoncv.data.batchify。Stack同形状样本的快速堆叠Stack将 N 个形状/长度完全一致的输入样本沿新 batch 轴堆叠成单个 NDArray。官方文档给出了三类输入的示例from gluoncv.data import batchify # 堆叠多个列表 a [1, 2, 3, 4] b [4, 5, 6, 8] c [8, 9, 1, 2] batchify.Stack()([a, b, c]) # [[1. 2. 3. 4.] # [4. 5. 6. 8.] # [8. 9. 1. 2.]] # NDArray 3x4 cpu(0) # 堆叠多个 numpy.ndarray 或 mxnet.nd.NDArray 亦可 import numpy as np a np.array([[1, 2, 3, 4], [5, 6, 7, 8]]) b np.array([[5, 6, 7, 8], [1, 2, 3, 4]]) batchify.Stack()([a, b]) # NDArray 2x2x4 cpu(0)从 gluoncv/data/batchify.py 的_stack_arrs实现可以看到关键细节输入为 NDArray 时调用mx.nd.stack(*arrs)输入为列表/numpy 数组时先转成 numpy 再整体np.asarray转 NDArray。值得注意的是Stack.__call__固定使用use_shared_memTrue将结果写入cpu_shared上下文这是为了配合多进程 DataLoader 在 worker 进程间高效传递数据详见下文多进程与共享内存小节。Pad将不等长样本补齐后堆叠Pad解决形状不齐但必须堆叠的问题所有输入先被填充pad到指定维度上的最大长度再堆叠成 batch。官方文档参数表参数类型/默认值含义axisint 或 tuple默认0沿哪个/哪些轴做 padding数组会填充到该轴的最大维度pad_valfloat 或 int默认0填充值num_shardsint默认1分片数量每个 shard 独立填充对应一块设备ret_lengthbool默认False是否同时返回各样本在填充轴上的原始有效长度官方示例演示了三种输入形态from gluoncv.data import batchify # 输入为多个不等长列表默认 axis0、pad_val0 a [1, 2, 3, 4] b [4, 5, 6] c [8, 2] batchify.Pad()([a, b, c]) # [[ 1 2 3 4] # [ 4 5 6 0] # [ 8 2 0 0]] # NDArray 3x4 cpu(0) # ret_lengthTrue 时额外返回原始长度 batchify.Pad(ret_lengthTrue)([a, b, c]) # ( # [[1 2 3 4] # [4 5 6 0] # [8 2 0 0]] # NDArray 3x4 cpu(0), # [4 3 2] # NDArray 3 cpu(0)) # 指定 axis 与填充值 import numpy as np a np.array([[1, 2, 3, 4], [5, 6, 7, 8]]) b np.array([[5, 8], [1, 2]]) batchify.Pad(axis1, pad_val-1)([a, b]) # [[[ 1 2 3 4] # [ 5 6 7 8]] # [[ 5 8 -1 -1] # [ 1 2 -1 -1]]] # NDArray 2x2x4 cpu(0)源码级实现细节Pad.__call__会先检查首元素类型仅接受mx.nd.NDArray、np.ndarray或list否则抛出NotImplementedError见 gluoncv/data/batchify.py。其底层_pad_arrs_to_max_lengthgluoncv/data/batchify.py值得关注几个设计点多轴填充当axis为 tuple 时如 Faster R-CNN 训练用的axis(1, 2)会逐轴记录原始长度并堆叠成(N, len(axis))的original_length矩阵分片shardingoriginal_length按num_shards用np.array_split切分每个 shard 独立计算该轴的最大长度——这样每张 GPU 卡拿到的是按自己 batch 内最大尺寸填充的数据避免全局最大尺寸造成浪费当 batch 无法被 shards 整除时会输出 warning共享内存use_shared_memTrue时用mx.nd.full(..., ctxmx.Context(cpu_shared, 0))分配填充结果同时original_length以int32存于共享内存回填形状与目标一致的数组直接整块赋值不一致时按slices切片回填到左上角实现补齐效果。Append保留各自形状的松散列表Append不做任何堆叠或填充仅把样本逐个转为 NDArray 后以列表形式返回因此对样本形状没有任何约束。代价是后续只能做单样本级操作如逐图前向无法享受 batch 运算。from gluoncv.data import batchify a [1, 2, 3, 4] b [4, 5, 6] c [8, 2] batchify.Append()([a, b, c]) # [ # [[1. 2. 3. 4.]] # NDArray 1x4 cpu_shared(0), # [[4. 5. 6.]] # NDArray 1x3 cpu_shared(0), # [[8. 2.]] # NDArray 1x2 cpu_shared(0) # ]Append接受两个构造参数expandTrue默认表示在batch_axis默认 0上增加一维 batch 轴expandFalse时直接返回原始形状的 NDArray 列表。内部实现_append_arrsgluoncv/data/batchify.py同样把结果放到cpu_shared上下文中方便多进程传输。在 Faster R-CNN 的验证阶段图片与标签形状各不相同且无需堆叠脚本 scripts/detection/faster_rcnn/eval_faster_rcnn.py 使用batchify.Tuple(*[batchify.Append() for _ in range(3)])原样保留三个输出字段。Tuple按字段组合多个 batchify 函数Tuple是组合器每个样本应是一个 list/tuple包含多个属性字段Tuple中第 i 个 batchify 函数作用于第 i 个字段。典型场景是检测任务中每个样本形如(image, label)其中 image 可堆叠、label 需填充。from gluoncv.data import batchify a ([1, 2, 3, 4], 0) b ([5, 7], 1) c ([1, 2, 3, 4, 5, 6, 7], 0) # 三种等价写法Tuple(A, B)、Tuple([A, B])、Tuple((A, B)) batchify.Tuple(batchify.Pad(), batchify.Stack())([a, b]) # ( # [[1 2 3 4] # [5 7 0 0]] # NDArray 2x4 cpu(0), # [0. 1.] # NDArray 2 cpu(0)) # 三个字段两个 Pad、一个 Stack a ([1, 2, 3, 4], [5, 6], 1) b ([1, 2], [3, 4, 5, 6], 0) c ([1], [2, 3, 4, 5, 6], 0) batchify.Tuple(batchify.Pad(), batchify.Pad(), batchify.Stack())([a, b, c]) # ( # [[1 2 3 4] # [1 2 0 0] # [1 0 0 0]] # NDArray 3x4 cpu(0), # [[5 6 0 0 0] # [3 4 5 6 0] # [2 3 4 5 6]] # NDArray 3x5 cpu(0), # [1. 0. 0.] # NDArray 3 cpu(0))Tuple.__init__gluoncv/data/batchify.py支持Tuple(fn1, fn2, ...)与Tuple([...])两种传参方式并断言每个成员都是可调用对象__call__中还会校验样本字段数与函数个数一致随后按列拆分数据ele_fn([ele[i] for ele in data])分别处理。实战组合SSD / YOLO / CenterNet 训练脚本中的标准用法SSD图片 Stack 标签 Pad在 scripts/detection/ssd/train_ssd.py 中训练集每个样本包含 image、cls_targets、box_targets 三个字段三者形状一致anchor 个数固定因此全部 Stack而验证集每张图目标数不定标签用Pad(pad_val-1)补齐from gluoncv.data.batchify import Tuple, Stack, Pad batchify_fn Tuple(Stack(), Stack(), Stack()) # 训练堆叠 image、cls_targets、box_targets train_loader mx.gluon.data.DataLoader( train_dataset.transform(train_transform), batch_size, True, batchify_fnbatchify_fn, last_batchrollover, num_workersnum_workers) val_batchify_fn Tuple(Stack(), Pad(pad_val-1)) # 验证图片堆叠、标签填充 val_loader mx.gluon.data.DataLoader( val_dataset.transform(val_transform), batch_size, False, batchify_fnval_batchify_fn, last_batchkeep, num_workersnum_workers)这段训练 Stack、验证 StackPad的模式与官方教程 docs/tutorials/detection/train_ssd_voc.py 完全一致Pad负责把变长标签补齐Stack负责堆叠形状一致的张量Tuple负责为不同输出字段指定不同行为。YOLO六路 Stack 加一路 Padscripts/detection/yolo/train_yolo.py 展示了更复杂的组合——YOLO 训练样本包含 6 个目标张量多尺度输出与 1 个变长标签batchify_fn Tuple(*([Stack() for _ in range(6)] [Pad(axis0, pad_val-1) for _ in range(1)]))即前 6 个字段用Stack()堆叠最后 1 个字段用Pad(axis0, pad_val-1)沿第 0 轴填充到该 batch 最大目标数。CenterNet列表式 Tuplescripts/detection/center_net/train_center_net.py 演示了Tuple([...])列表写法与验证阶段Tuple(Stack(), Pad(pad_val-1))的标准组合与 SSD 的训练/验证差异策略相同。FasterRCNNTrainBatchify检测专用的端到端批处理FasterRCNNTrainBatchify是面向 Faster R-CNN 训练流程的专用批处理类gluoncv/data/batchify.py每个样本固定包含 5 个元素img, bbox, rpn_cls_targets, rpn_box_targets, rpn_box_masks。其构造参数为参数类型/默认值含义netmxnet.gluon.HybridBlockFaster R-CNN 网络用于推断特征图输出形状num_shardsint默认1分片数每个 shard 对应一块设备其内部逻辑分为三步图片与标签填充内部组合了Pad(axis(1, 2), num_shardsnum_shards)沿高、宽两轴填充图像与Pad(pad_val-1, num_shardsnum_shards)bbox 标签填充为 -1作为忽略标记RPN 目标按特征图形状对齐对每张输入图通过net.features(mx.sym.var(namedata))的符号图feat_sym调用infer_shape得到各层特征图的高宽w, h然后把每个样本的 cls/box/mask 目标填充到对应特征图尺寸并reshape为(1, -1)与(1, -1, 4)后沿特征层维度concat分片打包按num_shards切分后使用mx.nd.concat(..., dim0)聚合并将所有结果转移到cpu_shared上下文返回。训练脚本 scripts/detection/faster_rcnn/train_faster_rcnn.py 中FasterRCNNTrainBatchify(net, num_shards)被直接传入DataLoader(batchify_fn...)与SplitSortedBucketSampler按图像长宽比分桶排序、保证同桶形状相近配合使用验证阶段则退化为Tuple(*[Append() for _ in range(3)])保留原始形状。教程 docs/tutorials/detection/train_faster_rcnn_voc.py 对此有同样说明Faster R-CNN 处理各种长宽比、各种形状的原始图像Append既不堆叠也不填充使每个样本保持自身形状。在此基础上MaskRCNNTrainBatchifygluoncv/data/batchify.py将样本扩展为 6 个元素内部复用FasterRCNNTrainBatchify处理前 5 个字段并用Pad(axis(0, 1, 2), pad_val0)单独处理 mask 字段被 scripts/instance/mask_rcnn/train_mask_rcnn.py 使用。多进程 DataLoader 与共享内存机制细心的读者会发现上述四个类在内部实现中无一例外地把结果写入了mx.Context(cpu_shared, 0)。这是 GluonCV 针对num_workers 0多进程数据加载的刻意设计worker 进程在各自内存中生成 batch 后需要通过 IPC 传回主进程普通内存拷贝代价高昂而共享内存cpu_shared可被多个进程直接读写显著降低传输开销。在 gluoncv/data/dataloader.py 中可以看到配套的默认实现default_mp_batchify_fn与default_pad_batchify_fn是 GluonCV 自己维护的默认 共享内存版本前者用于无填充的普通堆叠后者在标签不等长时按pad max([l.shape[0] ...])用-1填充为统一形状tsn_mp_batchify_fn则针对时序段网络TSN将默认的nd.stack改为nd.concat(dim0)因为其 batch 维度已经存在。此外DetectionDataLoader与RandomTransformDataLoader在num_workers 0时也分别默认采用default_mp_pad_batchify_fn/default_mp_batchify_fngluoncv/data/dataloader.py。其他形态的 batchify分割与深度估计gluoncv.data.batchify之外仓库还提供了两类面向特定任务的批处理函数可作为自定义 batchify 的参考ms_batchify_fngluoncv/data/segbase.py多尺寸multi-size分割任务专用。它对字符串与 NDArray 直接返回列表、对 tuple 递归展开保证推理时多尺度输入不被强制堆叠被 scripts/segmentation/test.py 用于多尺度测试dict_batchify_fngluoncv/data/kitti/kitti_utils.py按 dict 键递归批处理的函数NDArray 走mx.nd.stack、dict 按键分别递归被 scripts/depth/trainer.py 等单目深度估计脚本作为batchify_fn使用。单元测试验证仓库在 tests/unittests/test_data_dataloader.py 中对 batchify 的组合行为做了系统性验证test_detection_dataloader构造了一个目标数随机的DummyDetectionDataset每个样本返回(300, 300, 3)图像与(num_object, 5)标签遍历num_workers ∈ {0,1,2,4}、shuffle开闭与last_batch ∈ {keep, discard, rollover}的全部组合分别用Tuple(Stack(), Pad(pad_val-1))与Tuple(Append(), Append())作为 batchify_fn 迭代 DataLoadertests/unittests/test_data_dataloader.py。此外 tests/unittests/test_data_transforms.py 在 SSD、YOLO、CenterNet、Faster R-CNN 的训练/验证 loader 构造中复用了Tuple、Stack、Pad、Append的全部典型组合验证了各检测任务的批处理约定。小结gluoncv.data.batchify以四个基础构件覆盖了视觉批处理的全部形态函数适用场景输出形态Stack形状一致的张量单个 NDArrayPad形状不一致但需堆叠如变长标签、变尺寸图片单个 NDArray可选返回有效长度Append形状各异、无需统一如 Faster R-CNN 验证NDArray 列表Tuple按字段组合不同策略各字段独立结果的 tuple配合FasterRCNNTrainBatchify/MaskRCNNTrainBatchify等专用类、cpu_shared共享内存机制以及 scripts/detection 下的各类训练脚本范例开发者可以快速为自己的数据集与模型定制正确、高效的批处理管线。需要进一步研究时可直接阅读 gluoncv/data/batchify.py 源码与其在 tests/unittests 中的测试用例。赞分享计算机视觉深度学习预训练【免费下载链接】gluon-cvGluon CV Toolkit项目地址https://gitcode.com/gh_mirrors/gl/gluon-cv点击查看免费下载相关推荐PaddleNLP paddlenlp.data.collate 批处理函数详解Stack、Pad、Tuple 与 Dict 的组合实战PaddleNLP paddlenlp.data.collate 批处理函数详解Stack、Pad、Tuple 与 Dict 的组合实战 本文围绕 Paddl人工智能大模型预训练微调LoRARLHF强化学习分布式训练模型推理服务推理引擎模型量化模型压缩本地部署NLP5分钟读懂palera1n越狱从DFU模式到成功上手的完整指南5分钟读懂palera1n越狱从DFU模式到成功上手的完整指南 如果你的抽屉里还躺着一台iPhone 6s、iPhone 7、iPhone 8或者iPhoneCLI固件如何使用RedwoodJS导入器实现高效数据导入与批量处理完整指南如何使用RedwoodJS导入器实现高效数据导入与批量处理完整指南 RedwoodJS是一个全栈JavaScript框架专为现代web应用开发设计。其内置的后端前端Web框架开发工具上一篇如何为swin_base_patch4_window12_384.ms_in22k准备训练数据图像预处理与增强技巧终极指南下一篇OBS Studio插件开发终极指南数据目录路径问题的深度解析与实战技巧创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

C#串口调试工具开发:从ASCII通信到上位机实现

C#串口调试工具开发:从ASCII通信到上位机实现

简介:一份以C#实现ASCII码串口调试的示例工程,适合具备基础C#语法、正在学习串口通信或从事嵌入式、物联网设备调试的开发者参考。资源围绕System.IO.Ports命名空间下的SerialPort类展开,演示如何创建串口对象、配置波特率、数据位、停止位、…

2026/10/15 2:41:26 阅读更多 →
REFramework 完全指南:给 RE Engine 游戏注入 VR 与脚本改造

REFramework 完全指南:给 RE Engine 游戏注入 VR 与脚本改造

REFramework 完全指南:给 RE Engine 游戏注入 VR 与脚本改造 【免费下载链接】REFramework Mod loader, scripting platform, and VR support for all RE Engine games 项目地址: https://gitcode.com/GitHub_Trending/re/REFramework REFramework 是一套面向…

2026/10/15 2:41:26 阅读更多 →
蓝鲸 CMDB 资源变更事件存储表详解:cc_WatchChain 事件链与 cc_WatchToken 监控令牌

蓝鲸 CMDB 资源变更事件存储表详解:cc_WatchChain 事件链与 cc_WatchToken 监控令牌

后端企业应用运维 【免费下载链接】bk-cmdb 蓝鲸智云配置平台(BlueKing CMDB) 项目地址: https://gitcode.com/gh_mirrors/bk/bk-cmdb 点击查看 免费下载 本文深入剖析蓝鲸智云配置平台(bk-cmdb)中资源变更事件(Watch&#xff09…

2026/10/15 2:40:26 阅读更多 →

最新新闻

KVM内存虚拟化实战:EPT、气球驱动、KSM、大页与NUMA调优指南

KVM内存虚拟化实战:EPT、气球驱动、KSM、大页与NUMA调优指南

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

2026/10/15 3:16:37 阅读更多 →
具身智能中的协同机理研究(113):TVA-World毫秒级闭环控制核心技术解析

具身智能中的协同机理研究(113):TVA-World毫秒级闭环控制核心技术解析

前沿技术探索:TVA智能体(简称TVA) TVA智能体(亦称“AI智能体视觉”)是依托Transformer架构与“因式智能体”理论构建的新型工业视觉系统,也是当前最具代表性的具身视觉技术之一。它有机融合深度强化学习&a…

2026/10/15 3:16:37 阅读更多 →
2026年,薪酬设计软件已成为企业人才竞争的秘密武器

2026年,薪酬设计软件已成为企业人才竞争的秘密武器

2026年,薪酬设计软件已成为企业人才竞争的秘密武器在新能源汽车、人工智能、芯片半导体等赛道的抢人大战中,越来越多的企业发现,仅靠“高薪”已难以锁定顶尖人才。真正拉开差距的,是一套能科学定价、动态迭代、精准激励的薪酬设计…

2026/10/15 3:16:37 阅读更多 →
2026年薪酬设计避坑指南:怎样筛选靠谱生产厂家?

2026年薪酬设计避坑指南:怎样筛选靠谱生产厂家?

如果你现在就职于一家正在经历业务转型或者加速扩张的企业,手里握着老板“必须把核心人才给我留住”的死命令,那么你一定正在头疼一件事:明年的薪酬体系到底要怎么设计?薪酬设计不是拍脑袋画饼,也不是关起门来缝缝补补…

2026/10/15 3:16:37 阅读更多 →
C#-WPF-调试与输出Console Debug Trace

C#-WPF-调试与输出Console Debug Trace

Console输出Console.WriteLine(" 卡尔曼零维模型滤波 \n");Debug输出Debug.Write()不换行,连续输出HelloWorldDebug.WriteLine()自动换行,每次输出后换行HelloWorldDebug.Write("调试输出---"(ha)"\r\n");Trace输出Trace.…

2026/10/15 3:16:37 阅读更多 →
RAG2SQL实战:用Vanna构建自然语言数据库查询助手

RAG2SQL实战:用Vanna构建自然语言数据库查询助手

说实话,我写这篇文章之前,刚被业务同事堵在工位上要数据。需求很简单:"帮我看下华东区上个月退货率超过10%的品类有哪些。"难倒是不难,但类似的临时查询我一天能接到七八个,每一个都要打开终端、连数据库、回…

2026/10/15 3:15:37 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/14 3:29: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/15 0:14:36 阅读更多 →
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/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练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/14 7:53:34 阅读更多 →