WenetSpeech 大规模中文语音识别实战:WeNet Conformer / U2++ 训练配置与性能记录详解
人工智能语音深度学习预训练模型推理服务【免费下载链接】wenetProduction First and Production Ready End-to-End Speech Recognition Toolkit项目地址https://gitcode.com/gh_mirrors/we/wenet点击查看免费下载WenetSpeech 是 WeNet 官方在千小时级中文语音识别基准上验证生产级效果的主战场。本文以 examples/wenetspeech/s0/README.md 中的性能记录为核心结合该目录下真实可复现的训练配置Conformer、Conformer bidecoder、U2 Conformer、U2 AISHELL-4 联合训练与端到端运行脚本系统讲解大规模中文 ASR 的数据准备、shard 化、分布式训练、Checkpoint 平均与多模式解码的完整链路以及 Dev / Test_Net / Test_Meeting 三套评测集上的 CER 对照。读完本文你将掌握 WenetSpeech 上从数据到模型再到解码的完整实战方案并能独立解读 WeNet 类 README 中的性能表格。一、WenetSpeech 基准与评测集划分WenetSpeech 是目前规模最大的开源中文语音语料之一其官方划分包含训练集train_l、train_m、train_s、train_w以及三套评测集dev、test_net网络语音与test_meeting会议语音。其中test_meeting覆盖真实会议场景远场、混响与重叠语音比例高历来是 CER 最难刷低的子集因此 README 中所有性能记录均以这三套数据分别给出 CER。在 wenetspeech_data_prep.sh 中各子集的命名映射被明确声明subsets( [L]train_l [M]train_m [S]train_s [W]train_w [DEV]dev [TEST_NET]test_net [TEST_MEETING]test_meeting)脚本以WenetSpeech.json与audio/目录为输入stage 1通过extract_meta.py抽取wav.scp / text / segments / utt2dur元数据stage 2再按utt2subsets中的标签把语料切分到各子集目录。若需要小规模训练集可通过--train-subset L|M|S|W参数选择例如只取L子集进行数据准备local/wenetspeech_data_prep.sh --train-subset L /path/to/wenetspeech data/二、四套可复现训练配置逐项拆解README 记录了四组代表性实验每一组都能在 examples/wenetspeech/s0/conf/ 下找到对应 YAML。下表汇总它们的核心训练信息实验配置文件模型结构学习率batch硬件与时长训练步数/轮数Conformertrain_conformer.yamlConformer encoder Transformer decoder0.001static 3224 × V10026 epochsConformer bidecodertrain_conformer_bidecoder.yamlConformer bitransformer decoder0.001static 3224 × V10026 epochsU2 Conformertrain_u2_conformer.yaml动态 chunk Conformer bitransformer0.001dynamic 360008 × 3090约 4.6 天130k stepsU2 AISHELL-4train_u2_conformer_wenetspeech_aishell4.yaml同上联合训练0.001dynamic 360008 × 3090 梯度检查点约 8.5 天60 epochs2.1 Conformer离线模型基线train_conformer.yaml 是标准的离线 Conformer-CTC/Attention 混合模型EncoderConformeroutput_size 512、attention_heads 8、linear_units 2048、num_blocks 12、卷积核cnn_module_kernel 15、activation_type swish、位置编码rel_pos、自注意力rel_selfattnDecoderTransformer6 层、8 头、FFN 2048模型级超参ctc_weight 0.3、lsm_weight 0.1label smoothing、length_normalized_loss false特征80 维 fbank、帧移 10ms、帧长 25ms、dither 1.0、全局 CMVN训练时speed_perturb false开启spec_aug优化Adam warmuplrwarmup_steps 5000、lr 0.001、accum_grad 16、grad_clip 5、max_epoch 26。数据侧采用batch_type static batch_size 32并用filter_conf过滤过长/过短样本max_length 1200、min_length 10配合shuffle_size 1500 / sort_size 1000的分桶排序保证 batch 内帧长分布稳定。2.2 Conformer bidecoder双向解码器train_conformer_bidecoder.yaml 与 Conformer 基线仅 decoder 不同改用bitransformernum_blocks 3 r_num_blocks 3并在model_conf中设置reverse_weight 0.3即训练时引入从右向左解码路径。2.3 U2 Conformer流式友好动态 chunktrain_u2_conformer.yaml 面向流式部署设计了动态 chunk 结构是 README 中效果最好的系列use_dynamic_chunk: true、use_dynamic_left_chunk: falsecausal: true配合input_layer conv2d完成下采样decoder 为bitransformernum_blocks 3/r_num_blocks 3model_conf中ctc_weight 0.3、reverse_weight 0.3数据侧改为dynamic batchbatch_type dynamic max_frames_in_batch 36000不再固定 batch_size而是按总帧数动态组装 batch缓解长短尾分布导致的显存浪费增加spec_sub与spec_trim两种额外增强max_t 30、num_t_sub 3并把speed_perturb打开save_interval 1000按 step 保存 checkpoint配合warmup_steps 50000、max_epoch 100适配大数据集长时间训练启用gradient_checkpointing以显存换计算是 309024G上训练该规模模型的关键手段。2.4 U2 Conformer AISHELL-4领域数据联合训练train_u2_conformer_wenetspeech_aishell4.yaml 在 U2 基础上混入 AISHELL-4 会议数据max_epoch 60、warmup_steps 100000input_dim 80 / output_dim 5549 / vocab_size 5549已写入配置。联合训练对test_meeting的 CER 改善极为显著详见第四节是会议场景的首选方案。三、从数据到训练run.sh 全流程解读run.sh 将 WenetSpeech 的完整流程固化为 stage 化的 shell 脚本stage-1至stage6要点如下。3.1 GPU 自动检测与多机配置脚本开篇自动检测本机 GPU 数量并生成CUDA_VISIBLE_DEVICES也支持手动指定多机训练通过HOST_NODE_ADDRlocalhost:0与num_nodes1控制参照 PyTorch elastic run 规范。3.2 Stage 0–2数据准备、词典与 CMVNStage 0调用local/wenetspeech_data_prep.sh --train-subset $set生成data/train_l等 kaldi 风格目录Stage 1生成字符词典data/dict/lang_char.txt。注意前三行的固定约定blank 0CTC blank 必须是 0、unk 1、sos/eos 2并额外写入▁ 3作为空格符号随后用tools/text2token.py -s 1 -n 1 --space ▁统计语料字符追加到词典Stage 2采样计算全局 CMVN。cmvn_sampling_divisor20表示只用 5% 数据估算shuf -n $sampling_size wav.scp采样后调用tools/compute_cmvn_stats.py --num_workers 16输出data/train_l/global_cmvnJSON 格式对应配置中cmvn_file: data/train_l/global_cmvn与is_json_cmvn: true。3.3 Stage 3shard 化打包大数据集采用 shard 格式tar 分包 data.list索引以提升 IO 效率。该 stage 对dev / test_net / test_meeting / train_l逐一执行tools/make_shard_list.py --resample 16000 --num_utts_per_shard 1000 \ --num_threads 32 --segments data/$x/segments \ data/$x/wav.scp data/$x/text \ $(realpath $dst) data/$x/data.list脚本明确提示shards_dir需约1.2T磁盘空间32 线程打包约需12 小时。3.4 Stage 4torchrun 分布式训练训练由wenet/bin/train.py承担通过torchrun --nnodes$num_nodes --nproc_per_node$num_gpus --rdzv_endpoint$HOST_NODE_ADDR拉起torchrun --nnodes$num_nodes --nproc_per_node$num_gpus --rdzv_endpoint$HOST_NODE_ADDR \ --rdzv_id2023 --rdzv_backendc10d \ wenet/bin/train.py \ --train_engine torch_ddp \ --config $train_config \ --data_type shard \ --train_data data/train_l/data.list \ --cv_data data/dev/data.list \ --model_dir exp/u2pp_conformer \ --tensorboard_dir tensorboard \ --ddp.dist_backend nccl \ --num_workers 8 --prefetch 10 --pin_memory --timeout 1200train_engine默认torch_ddp也支持deepspeed配合../whisper/conf/ds_stage1.json训练中会把train.yaml含模型输入/输出维度自动写到$dir供后续解码与导出复用。3.5 Stage 5Checkpoint 平均与多模式解码解码前先做 Checkpoint 平均这是 WeNet 官方实践中稳定提分的关键步骤python wenet/bin/average_model.py \ --dst_model $dir/avg5_modestep_max88888888.pt \ --src_path $dir --num ${average_num} --mode ${average_mode} \ --max_step ${max_step} --val_bestaverage_checkpointtrue、average_num5、average_modestep、max_step88888888对应 README 中 average_num 5/10 的记录口径。随后对每个测试集用wenet/bin/recognize.py并行解码python wenet/bin/recognize.py --gpu ${device_id} \ --modes ctc_greedy_search ctc_prefix_beam_search attention attention_rescoring \ --config $dir/train.yaml --data_type shard \ --test_data data/$testset/data.list --checkpoint $decode_checkpoint \ --beam_size 10 --batch_size 16 \ --blank_penalty ${blank_penalty} --length_penalty ${length_penalty} \ --ctc_weight $ctc_weight --reverse_weight $reverse_weight \ --result_dir $result_dir在 recognize.py 中各解码模式在模型前向推理阶段即被批量执行且dither、speed_perturb、spec_aug等增强项在测试配置中统一关闭、filter_conf放宽到 102400保证评测口径与训练不同。最后用tools/compute-wer.py --char1 --v1计算 CER。四、性能记录逐表解读CER 越低越好以下全部表格均转录自 examples/wenetspeech/s0/README.mdCER 单位为 %。4.1 Conformer 基线离线特征fbank dither 1.0 CMVN训练lr 0.001、static batch 32、24 × V100、accum_grad 16、26 epochs解码ctc_weight 0.5、average_num 10。解码方式DevTest_NetTest_Meetingctc_greedy_search8.8810.2915.96attention9.3810.1217.28attention_rescoring8.699.715.594.2 Conformer bidecoder同一特征与训练超参仅 decoder 换为双向。可见双向解码对网络语音Test_Net 9.25有明显增益解码方式DevTest_NetTest_Meetingctc_greedy_search8.989.5516.48attention9.4210.5718.05attention_rescoring8.859.2516.184.3 U2 Conformer动态 chunk流式部署首选训练lr 0.002、dynamic batch 24000、24 × 3090、accum_grad 16、80 epochs、约 4.5 天解码ctc_weight 0.5、reverse_weight 0.0、average_num 10blank penalty 2.5、length penalty 8.5dev/test_meetingtest_net 为 0.0。full表示整句 chunk离线16表示 chunk size 16 的流式解码解码方式 - ChunkDevTest_NetTest_Meetingctc prefix beam search - full7.219.4614.02ctc prefix beam search - 167.9311.1416.37attention rescoring - full7.108.8313.64attention rescoring - 167.5710.1315.55attention - full7.739.4414.98chunk16 相比 full 在 Test_Net 上损失约 1.3 个点这是流式场景“低延迟换精度”的典型权衡。4.4 U2 Conformertext_fixed 数据修正版基于修正后的 WenetSpeech 文本标注对应官方 discussion #54 及 PR #2371训练lr 0.001、dynamic batch 36000、8 × 3090、accum_grad 4、130k steps、约 4.6 天解码ctc_weight 0.5、reverse_weight 0.0、average_num 5、blank/length penalty 均为 0.0解码方式 - ChunkDevTest_NetTest_Meetingctc prefix beam search - full6.269.4612.52attention rescoring - full5.908.9611.99attention - full5.878.8711.79纯文本修正就把 Dev 从 7.21 压到 6.26、Test_Meeting 从 14.02 压到 12.52说明标注质量对 CER 的影响甚至大于架构变更。4.5 U2 Conformerwenetspeech aishell4在 U2 基础上混入 AISHELL-4 会议语料lr 0.001、dynamic batch 36000、梯度检查点、torch_ddp、8 × 3090、accum_grad 4、60 epochs、约 8.5 天解码ctc_weight 0.5、reverse_weight 0.0、average_num 10blank penalty 2.5 仅用于 dev解码方式 - ChunkDevTest_NetTest_Meetingctc prefix beam search - full8.0110.149.76attention rescoring - full7.899.679.38联合训练把 Test_Meeting 从 12.52 一步压到 9.38相对下降约 25%验证了“目标领域数据联合训练”是攻克会议场景的最有效手段。五、读懂 CER 表格中的 N/C/S/D/I 字段U2 表格在 CER 后给出了形如7.21 % N328207 C309358 S14175 D4674 I4801的明细含义如下对应 compute-wer.py 的统计口径N参考文本总字数C正确匹配的字数S替换substitution字数D删除deletion字数I插入insertion字数。三者满足CER (S D I) / N且N C S D。以 Dev 的N328207 C309358 S14175 D4674 I4801验算(14175 4674 4801) / 328207 ≈ 7.21%与 CER 完全一致。会议场景的 I插入偏高是口语化、语气词多的直接体现。六、解码参数对结果的影响与调优建议综合各表可见WeNet 官方解码口径的核心参数是ctc_weight、reverse_weight、blank_penalty与length_penalty全部通过 recognize.py 的 CLI 参数透传--ctc_weightCTC 与 attention 联合解码的权重测试阶段通常取 0.5高于训练时的 0.3--reverse_weight右到左解码器权重。U2 在评测中通常设为 0.0 以获得更稳的结果配置文件中训练值为 0.3--blank_penalty对 CTC blank 打惩罚分用于抑制过长停顿造成的插入/删除错误README 中 dev/test_meeting 常取 2.5test_net 取 0.0--length_penalty长度归一化指数在 search.py 中以scores / lengths.pow(length_penalty)实现对会议长句8.5与普通网络短句0.0差异显著--decoding_chunk_size流式 chunk 大小-1/不指定为 full 整句解码16 为 16 帧 chunk。建议复现流程先用默认参数ctc_weight 0.5、blank/length penalty 0.0跑通再针对目标集小范围网格搜索 blank_penalty ∈ {0, 2.5} 与 length_penalty ∈ {0, 8.5}即可贴近 README 中的最佳记录。七、总结WenetSpeech 示例目录浓缩了 WeNet 面向大规模生产语音识别的最佳实践fbank dither CMVN spec_aug/spec_sub/spec_trim的特征工程、dynamic batch 与 gradient checkpointing 的显存策略、shard 化 IO、average_model.py的 Checkpoint 平均以及ctc_greedy_search / ctc_prefix_beam_search / attention / attention_rescoring四种解码模式的横向对比。README 中的 CER 表格不仅是一组结果更是一套完整的“配置—训练—解码—评测”对照实验方法论从 15.96 到 9.38 的 Test_Meeting 演进正是架构升级U2、数据修正text_fixed与领域联合训练AISHELL-4三路并进的产物。想要在大规模中文语料上复现甚至超越该基准可直接沿用 conf/ 下的 YAML 与 run.sh 的分 stage 流水线。赞分享人工智能语音深度学习预训练模型推理服务【免费下载链接】wenetProduction First and Production Ready End-to-End Speech Recognition Toolkit项目地址https://gitcode.com/gh_mirrors/we/wenet点击查看免费下载相关推荐PaddleSpeech WenetSpeech asr1 大规模中文语音识别实验基准解读流式/非流式 Conformer 与 U2 的 CER 全解析PaddleSpeech WenetSpeech asr1 大规模中文语音识别实验基准解读流式/非流式 Conformer 与 U2 的 CER 全解析人工智能语音音频PaddleSpeech 实战基于 TALCS 数据集训练 Transformer/Conformer U2 语音识别模型PaddleSpeech 实战基于 TALCS 数据集训练 Transformer/Conformer U2 语音识别模型 TALCSTAL English人工智能语音音频WeNet TIMIT 语音识别实战phn 词表下 Conformer 与 Transformer 的训练流程与 WER 性能对比WeNet TIMIT 语音识别实战phn 词表下 Conformer 与 Transformer 的训练流程与 WER 性能对比 本文围绕 examples人工智能语音深度学习预训练模型推理服务上一篇tsx 中的 TypeScript 模块解析扩展名替换、包子路径与运行时解析策略解析下一篇MCA Selector终极指南5分钟学会Minecraft区块管理技巧创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

AE、PR、C4D三大软件怎么分工?一篇讲透视频后期工作流

AE、PR、C4D三大软件怎么分工?一篇讲透视频后期工作流

很多年前我刚开始碰视频后期的时候,电脑里只装了一个PR,觉得能剪片子就算会做视频了。后来接了个稍微有点要求的小活儿,需要做动态图形、做片头特效,当时整个人都是懵的——PR里翻来覆去找不到能做MG动画的地方,更别说…

2026/10/13 2:32:31 阅读更多 →
semantic-router 强化学习驱动选择算法 rl_driven 实战指南:Thompson Sampling、Router-R1 与在线个性化路由

semantic-router 强化学习驱动选择算法 rl_driven 实战指南:Thompson Sampling、Router-R1 与在线个性化路由

后端API网关模型推理服务AI Agent 【免费下载链接】semantic-router An open, programmable decision layer for models and compute. 项目地址: https://gitcode.com/gh_mirrors/sem/semantic-router 点击查看 免费下载 导读 rl_driven 是 semantic-router 中面向…

2026/10/13 2:32:31 阅读更多 →
ccswitch:轻量级命令行环境切换工具,解决多版本SDK共存问题

ccswitch:轻量级命令行环境切换工具,解决多版本SDK共存问题

简介:本资源是面向软件开发者的 CC-Switch(ccswitch)v3.16.3 版本官方安装实践包,聚焦 API 配置管理工具的本地化部署与跨平台适配问题,适用于需对接大模型服务但缺乏 CLI 工具集成经验的中初级开发者。压缩包为 9KB 的…

2026/10/13 2:31:31 阅读更多 →

最新新闻

PS5通用调校指南:从HDR发灰、下载慢到手柄断连的排查与优化

PS5通用调校指南:从HDR发灰、下载慢到手柄断连的排查与优化

最近一位朋友新入手了PS5,连着问了我好几个问题:电视开HDR之后画面发灰,下载一个游戏等了一夜还没好,手柄玩到一半断连,重连又要重新匹配。我一边远程指导一边发现,这些疑难杂症其实跟“哪一台PS5”没什么关…

2026/10/13 3:19:47 阅读更多 →
接口自动化测试实战:Excel用例管理+unittest+xlrd+xlsxwriter

接口自动化测试实战:Excel用例管理+unittest+xlrd+xlsxwriter

/* 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 3:19:47 阅读更多 →
AnyPS5实战:基于官方链路的PS5游戏串流全攻略

AnyPS5实战:基于官方链路的PS5游戏串流全攻略

如果你家里的 PS5 只能老老实实待在客厅电视下面,那这台机器一大半的潜力其实都没被用上。AnyPS5 是我这段时间集中折腾的一个项目,思路特别直接:把 PS5 的画面和操作,通过游戏串流的方式,送到你手边任何一块屏幕上——…

2026/10/13 3:19:47 阅读更多 →
PMI参数的解读与应用分析

PMI参数的解读与应用分析

PMI是宏观经济的重要指标,这里尝试对PMI参数进行解读和分析。 1 定义与特征 1.1 定义 采购经理指数(PMI)通过对企业采购经理的月度问卷调查结果统计汇总、编制而成的指数, 涵盖企业采购、生产、流通等各个环节,包括制造业和非制造业领域&…

2026/10/13 3:19:47 阅读更多 →
Simulink风光储并网系统建模与协调控制策略详解

Simulink风光储并网系统建模与协调控制策略详解

1. 项目概述与整体系统方案选择风电和光伏是当前电力系统中发展最快的两类清洁能源,但两者的出力特性完全不同——风电随风速波动,光伏则受辐照度和温度制约,两者叠加后仍然存在天然间歇性。储能系统的加入就是用来弥补这种波动,把…

2026/10/13 3:19:47 阅读更多 →
小白程序员必备:收藏!从零开始掌握 Codex 大模型核心技术

小白程序员必备:收藏!从零开始掌握 Codex 大模型核心技术

本文深入解析 Codex 大模型的六层架构,涵盖模型、Runtime、Context、Tool、Sandbox 和 Environment 的功能与关系。通过分析 Agent Loop 的工作原理,揭示 Token 的计量方式以及 Context Window 与 Memory 的关联。文章还探讨了长任务中出现的“忘记”现象…

2026/10/13 3:18:47 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

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

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

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

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

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

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

2026/10/12 0:16:38 阅读更多 →
影刀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/12 21:05:09 阅读更多 →
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/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练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 阅读更多 →