尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
MMagic 图像抠图实战:GCA(Guided Contextual Attention)算法原理、配置文件解析与训练测试全流程指南
媒体生成计算机视觉深度学习人工智能大模型【免费下载链接】mmagicOpenMMLab Multimodal Advanced, Generative, and Intelligent Creation Toolbox. Unlock the magic : Generative-AI (AIGC), easy-to-use APIs, awsome model zoo, diffusion models, for text-to-image generation, image/video restoration/enhancement, etc.项目地址https://gitcode.com/gh_mirrors/mm/mmagic点击查看免费下载本文以 configs/gca/README_zh-CN.md 为骨架结合 MMagic 仓库中 GCA 的源码实现gca.py、gca_module.py、resgca_enc.py 等与配置文件configs/gca 目录系统讲解 GCA 图像抠图算法在 MMagic 中的完整落地流程从算法原理、复现指标、配置文件逐项解读到数据集准备、训练与测试命令、评估指标含义帮助你在 Composition-1K 数据集上完成从零到推理的完整实战。一、算法背景什么是 GCA 与引导式上下文注意力GCAGuided Contextual Attention由 Li Yaoyi 与 Lu Hongtao 提出发表于 AAAI 2020论文标题为Natural Image Matting via Guided Contextual Attention对应 BibTeX 引用见 configs/gca/README_zh-CN.md 头部。在 MMagic 中GCA 属于**图像抠图Matting**任务给定一张已经和背景合成的图像merged image以及一张三分图trimap将像素划分为确定前景、确定背景与未知区域模型需要预测每个像素的 alpha 值前景不透明度从而把前景精确地从背景中分离出来。GCA 的核心创新是引导式上下文注意力Guided Contextual Attention模块。与经典上下文注意力Contextual Attention常用于图像修复不同GCA 利用 trimap 提供的未知区域信息作为引导让注意力计算聚焦于真正需要估计的前景边缘与半透明区域从而显著提升 alpha matte 的预测精度。在 MMagic 中GCA 的实现由以下几个核心文件构成gca.pyGCA模型类继承自BaseMattor负责组装 backbone、前向传播与损失计算gca_module.pyGCAModule引导式上下文注意力的核心算子实现resgca_enc.pyResGCAEncoder带 GCA 模块的 ResNet 编码器resgca_dec.pyResGCADecoder与编码器对称的解码器base_mattor.pyBaseMattor基类提供测试时的输入尺寸调整与 alpha 后处理逻辑。二、复现结果一览基线 vs GCAconfigs/gca/README_zh-CN.md 中给出了四组在 Composition-1K 测试集上的复现结果涵盖四个指标SAD绝对误差和、MSE均方误差、GRAD梯度误差、CONN连通性误差数值越低越好。主结果标准训练流水线200k 迭代4 卡 × batch 10算法SADMSEGRADCONNGPU 数配置文件基线原文40.620.010621.5338.43--GCA原文35.280.009116.9232.53--基线MMagic 复现34.610.008316.2132.124baseline_r34_4xb10-200k_comp1k.pyGCAMMagic 复现33.380.008114.9630.594gca_r34_4xb10-200k_comp1k.py其他结果使用 DIM 训练流水线即dimaug变体算法SADMSEGRADCONNGPU 数配置文件基线使用 DIM 流水线49.950.014430.2149.674baseline_r34_4xb10-dimaug-200k_comp1k.pyGCA使用 DIM 流水线49.420.012928.0749.474gca_r34_4xb10-dimaug-200k_comp1k.py上述数值、模型权重与训练日志的元数据同时收录在 configs/gca/metafile.yml 中。可以看到MMagic 的复现结果全面优于原文报告值且 GCA 相对基线在四个指标上均有稳定提升印证了引导式上下文注意力模块的有效性。三、快速开始训练与测试命令3.1 训练configs/gca/README_zh-CN.md 提供了三种训练方式全部基于 tools/train.py 与 tools/dist_train.sh# CPU 上训练 CUDA_VISIBLE_DEVICES-1 python tools/train.py configs/gca/gca_r34_4xb10-200k_comp1k.py # 单个 GPU 上训练 python tools/train.py configs/gca/gca_r34_4xb10-200k_comp1k.py # 多个 GPU 上训练以 8 卡为例 ./tools/dist_train.sh configs/gca/gca_r34_4xb10-200k_comp1k.py 8要点说明CUDA_VISIBLE_DEVICES-1会强制程序在纯 CPU 环境运行适合在无 GPU 的机器上做流程验证速度会非常慢不建议用于实际训练。多卡训练时dist_train.sh的第二个参数8是 GPU 数量脚本内部会自动设置分布式环境NCCL 后端相关配置继承自 configs/base/matting_default_runtime.py 中的env_cfg.dist_cfg。若在 Slurm 集群上运行可使用./tools/slurm_train.sh ${PARTITION} ${JOB_NAME} ${CONFIG_FILE} ${WORK_DIR}。更多训练细节如单卡/多卡/多节点、可选参数--amp与--resume参见 docs/zh_cn/user_guides/train_test.md 中的Train a model部分。3.2 测试测试统一使用 tools/test.py 与 tools/dist_test.sh需要传入配置文件和预训练权重# CPU 上测试 CUDA_VISIBLE_DEVICES-1 python tools/test.py configs/gca/gca_r34_4xb10-200k_comp1k.py https://download.openmmlab.com/mmediting/mattors/gca/gca_r34_4x10_200k_comp1k_SAD-33.38_20220615-65595f39.pth # 单个 GPU 上测试 python tools/test.py configs/gca/gca_r34_4xb10-200k_comp1k.py https://download.openmmlab.com/mmediting/mattors/gca/gca_r34_4x10_200k_comp1k_SAD-33.38_20220615-65595f39.pth # 多个 GPU 上测试以 8 卡为例 ./tools/dist_test.sh configs/gca/gca_r34_4xb10-200k_comp1k.py https://download.openmmlab.com/mmediting/mattors/gca/gca_r34_4x10_200k_comp1k_SAD-33.38_20220615-65595f39.pth 8测试命令中的 URL 对应metafile.yml中记录的 GCA 复现权重测试时 MMagic 会自动下载并缓存权重文件你也可以将 URL 替换为本地已下载的.pth文件路径。更多测试细节参见 docs/zh_cn/user_guides/train_test.md 中的Test a pre-trained model部分。四、配置文件逐项解读gca_r34_4xb10-200k_comp1k.pyGCA 的主训练配置为 configs/gca/gca_r34_4xb10-200k_comp1k.py它继承自两个基础配置_base_ [ ../_base_/datasets/comp1k.py, ../_base_/matting_default_runtime.py ]configs/base/datasets/comp1k.py定义 Composition-1K 数据集、dataloader 与评估指标configs/base/matting_default_runtime.py定义默认运行环境、hook、可视化后端等。下面逐块拆解主配置文件。4.1 模型结构modelmodel dict( typeGCA, data_preprocessordict( typeMattorPreprocessor, mean[123.675, 116.28, 103.53], std[58.395, 57.12, 57.375], proc_trimapas_is, ), backbonedict( typeSimpleEncoderDecoder, encoderdict( typeResGCAEncoder, blockBasicBlock, layers[3, 4, 4, 2], in_channels6, with_spectral_normTrue, init_cfgdict( typePretrained, checkpointopen-mmlab://mmedit/res34_en_nomixup)), decoderdict( typeResGCADecoder, blockBasicBlockDec, layers[2, 3, 3, 2], with_spectral_normTrue)), loss_alphadict(typeL1Loss), test_cfgdict( resize_methodpad, resize_modereflect, size_divisor32, ))各字段含义与底层原理typeGCA注册在MODELS中的模型类名对应 gca.py 中的GCA类。它继承自BaseMattorbase_mattor.py训练时通过_forward_train计算损失测试时通过_forward_test输出预测。data_preprocessorMattorPreprocessor抠图专用预处理器实现见 mattor_preprocessor.py负责将 BGR 图像转为 RGB、按mean/std归一化归一化发生在通道顺序转换之后并把图像与 trimap 在通道维上拼接为模型输入。proc_trimapas_is表示 trimap 的 one-hot 转换交由数据管线中的FormatTrimap完成见配置中的 train/test pipeline。backboneSimpleEncoderDecoder由ResGCAEncoder编码器与ResGCADecoder解码器组成。编码器采用 ResNet-34 风格结构layers[3, 4, 4, 2]输入in_channels63 通道图像 3 通道 one-hot trimap并开启谱归一化with_spectral_normTrue解码器layers[2, 3, 3, 2]与之对称。编码器权重使用 ImageNet 预训练 checkpointopen-mmlab://mmedit/res34_en_nomixup初始化init_cfg.typePretrained。loss_alphaL1Lossalpha 预测损失。在 gca.py 的_forward_train中只对 trimap 的未知区域计算加权 L1 损失先通过get_unknown_tensor从 one-hot trimap 中提取未知区域权重再调用self.loss_alpha(pred_alpha, gt_alpha, weight)。test_cfg测试时输入尺寸处理策略。resize_methodpad表示用size_divisor32将图像与 trimap 填充pad到 32 的整数倍因为编码器经过 5 次下采样1/32 是网络输出的最小分辨率resize_modereflect指定填充模式为反射填充。对应逻辑实现在 base_mattor.py 的resize_inputs与restore_size中。4.2 数据管线train_pipeline / test_pipeline训练管线完整地展示了 GCA 的**在线合成online composition**训练策略——它不像传统 DIM 流水线那样预先合成好merged图而是在训练过程中动态合成从而获得近乎无限的数据多样性data_root data/adobe_composition-1k bg_dir data/coco/train2017 train_pipeline [ dict(typeLoadImageFromFile, keyalpha, color_typegrayscale), dict(typeLoadImageFromFile, keyfg), dict(typeRandomLoadResizeBg, bg_dirbg_dir), dict( typeCompositeFg, fg_dirs[ f{data_root}/Training_set/Adobe-licensed images/fg, f{data_root}/Training_set/Other/fg ], alpha_dirs[ f{data_root}/Training_set/Adobe-licensed images/alpha, f{data_root}/Training_set/Other/alpha ]), dict( typeRandomAffine, keys[alpha, fg], degrees30, scale(0.8, 1.25), shear10, flip_ratio0.5), dict(typeGenerateTrimap, kernel_size(1, 30)), dict(typeCropAroundCenter, crop_size512), dict(typeRandomJitter), dict(typeMergeFgAndBg), dict(typeFormatTrimap, to_onehotTrue), dict(typePackInputs), ]流水线关键步骤说明LoadImageFromFile分别加载 alpha 通道灰度与前景fgRandomLoadResizeBg从 COCO 训练集data/coco/train2017随机采样并缩放背景CompositeFg将前景与 alpha 合成到随机背景上得到带真值的合成样本RandomAffine对alpha与fg施加随机仿射变换旋转degrees30、缩放scale(0.8, 1.25)、剪切shear10、翻转概率flip_ratio0.5GenerateTrimap根据 alpha 生成 trimapkernel_size(1, 30)表示未知区域扩张半径在 1~30 像素间随机取值CropAroundCenter围绕前景中心裁剪出512×512的训练块RandomJitter对前景/背景颜色做轻微扰动增强鲁棒性MergeFgAndBg得到最终合成的merged图像FormatTrimap将 trimap 转为 one-hot 编码to_onehotTrue与模型in_channels6的输入约定对齐PackInputs打包为模型输入。测试管线则直接加载预先合成的merged、trimap与alpha真值alpha与trimap均设置save_original_imgTrue以保留原始尺寸用于后处理test_pipeline [ dict( typeLoadImageFromFile, keyalpha, color_typegrayscale, save_original_imgTrue), dict( typeLoadImageFromFile, keytrimap, color_typegrayscale, save_original_imgTrue), dict(typeLoadImageFromFile, keymerged), dict(typeFormatTrimap, to_onehotTrue), dict(typePackInputs), ]4.3 数据加载器dataloadertrain_dataloader dict( batch_size10, num_workers8, datasetdict(pipelinetrain_pipeline), ) val_dataloader dict( batch_size1, datasetdict(pipelinetest_pipeline), ) test_dataloader val_dataloader训练批大小batch_size10、8 个 worker验证/测试批大小固定为 1BaseMattor.postprocess目前仅支持单样本后处理见 base_mattor.py 中的注释 Currently only batch_size 1 is actually supported。数据集类型AdobeComp1kDataset、训练/测试注释文件training_list.json/test_list.json与评估器均在基础配置 configs/base/datasets/comp1k.py 中定义。4.4 训练循环、优化器与学习率调度train_cfg dict( typeIterBasedTrainLoop, max_iters200_000, val_interval10_000, ) val_cfg dict(typeMultiValLoop) test_cfg dict(typeMultiTestLoop) optim_wrapper dict( constructorDefaultOptimWrapperConstructor, typeOptimWrapper, optimizerdict(typeAdam, lr4e-4, betas[0.5, 0.999])) param_scheduler [ dict( typeLinearLR, start_factor0.001, begin0, end5000, by_epochFalse, ), dict( typeCosineAnnealingLR, T_max200_000, eta_min0, begin0, end200_000, by_epochFalse, ) ]采用**基于迭代iteration**的训练循环总计 200,000 次迭代每 10,000 次迭代验证一次val_interval10_000配置文件名中的200k即来源于此优化器为 Adam学习率4e-4betas(0.5, 0.999)GAN 风格训练常用的 beta 取值学习率策略为线性预热 余弦退火前 5,000 次迭代从start_factor0.001线性爬升到完整学习率随后在 200,000 次迭代内按余弦曲线衰减至eta_min0。4.5 运行时与可视化运行时配置继承自 configs/base/matting_default_runtime.py关键点包括默认 hookCheckpointHook每 10,000 次迭代保存一次 checkpoint 到./work_dirs/LoggerHook每 100 次迭代打印一次日志可视化使用ConcatImageVisualizer将pred_alpha、trimap、gt_merged、gt_alpha拼接展示bgr2rgbTrue并由BasicVisualizationHook每 2,000 次迭代输出一次可视化结果到本地LocalVisBackend。4.6 基线配置与 DIM 流水线变体baseline_r34_4xb10-200k_comp1k.py 与 GCA 配置几乎一致唯一区别是 backbone 编码器/解码器替换为不带 GCA 模块的ResShortcutEnc/ResShortcutDec用于消融对照gca_r34_4xb10-dimaug-200k_comp1k.py 通过_base_ [./gca_r34_4xb10-200k_comp1k.py]继承主配置仅将编码器输入改为in_channels43 通道图像 1 通道 trimap并把数据管线替换为 DIM 风格的CropAroundUnknownFlipResize流水线对应 README 中其他结果一栏的实验设置。五、源码级原理GCAModule 是如何工作的GCA 的核心竞争力在于GCAModule实现见 gca_module.py。其前向流程可以用一句话概括用图像特征图之间的相似度计算注意力分数再用注意力分数加权聚合 alpha 特征图最后与原始 alpha 特征相加。具体分四步特征降采样与未知区域提取guidance_conv1×1 卷积把图像特征通道减半再以rate2下采样到原图 1/16同时将 trimap 生成的 unknown 掩码下采样到相同分辨率见 resgca_enc.py 中ResGCAEncoder.forwardunknown 由 one-hot trimap 的第 5 通道或x[:, 3:].eq(1)提取特征块展开extract_feature_maps_patches用F.unfold将图像特征展开为kernel_size3的块alpha 特征展开为rate*24的块引导注意力打分compute_similarity_map以图像特征块为卷积核与原图像特征做相关卷积得到相似度图随后compute_guided_attention_score结合 unknown 掩码对未知区域与已知区域使用不同的 softmax 缩放系数process_unknown_mask中按 unknown 占比动态计算unknown_scale/known_scale并限制在 0.1~10 之间同时用self_mask值为penalty-1e4的自相关掩码抑制未知块与自身的匹配最后做 softmaxalpha 特征传播propagate_alpha_feature用引导注意力分数对 alpha 特征块做反卷积F.conv_transpose2drate2时 stride2、padding1聚合回原分辨率经out_conv卷积后与输入 alpha 特征做残差相加。从网络结构看ResGCAEncoder的 docstring 中给出了数据流图GCAModule(128, 128)被插入在layer2之后输入为该层的特征x3、由 3 通道图像经三层步长 2 卷积得到的img_feat128 通道以及下采样后的 unknown 掩码。这意味着注意力引导发生在网络最深的 1/8 分辨率特征层兼顾了语义信息与计算开销。相关单元测试见 tests/test_models/test_editors/test_gca/test_gca_module.py覆盖了rate1、rate2等不同参数配置下的前向正确性。另外GCA模型类的 alpha 输出经由(raw_alpha.tanh() 1.0) / 2.0映射到 [0, 1] 区间见 gca.py 的_forward测试时再经BaseMattor.postprocess做尺寸恢复、trimap 硬约束确定前景区置 1、确定背景区置 0、clamp 与 uint8 量化得到最终 alpha matte。六、数据集准备Composition-1K 的合成与目录结构训练 GCA 需要 Adobe Composition-1Kcomp1k数据集。该数据集本身只包含alpha与fg测试集还含trimap在训练/评估前必须将前景与背景合成。MMagic 提供了一键合成脚本完整说明见 tools/dataset_converters/comp1k/README_zh-CN.md# 在 MMagic 根目录下运行合成训练集与测试集训练集使用 COCO 背景测试集使用 VOC 背景 python tools/dataset_converters/matting/comp1k/preprocess_comp1k_dataset.py data/adobe_composition-1k data/coco data/VOCdevkit --composite去掉--composite选项可跳过耗时的训练集合成仅合成测试数据加上--skip-train可跳过训练集预处理GCA/FBA 支持在线合成训练数据训练时由数据管线动态完成无需预先合成脚本同时会生成training_list.json与test_list.json注释文件供 configs/base/datasets/comp1k.py 中的AdobeComp1kDataset读取。最终目录结构应如下以训练集为例data/ ├── adobe_composition-1k │ ├── Training_set │ │ ├── Adobe-licensed images │ │ │ ├── alpha │ │ │ ├── fg │ │ ├── Other │ │ │ ├── alpha │ │ │ ├── fg │ │ ├── merged (由 preprocess_comp1k_dataset.py 生成) │ │ ├── bg (由 preprocess_comp1k_dataset.py 生成) │ ├── test_list.json (由 preprocess_comp1k_dataset.py 生成) │ ├── training_list.json (由 preprocess_comp1k_dataset.py 生成) ├── coco │ ├── train2017 ├── VOCdevkit │ ├── VOC2012七、评估指标SAD / MSE / GRAD / CONN测试时configs/base/datasets/comp1k.py 通过val_evaluator/test_evaluator同时启用四项抠图指标val_evaluator [ dict(typeSAD), dict(typeMattingMSE), dict(typeGradientError), dict(typeConnectivityError), ]各项指标的语义详见 docs/zh_cn/user_guides/metrics.mdSAD预测 alpha 与真值 alpha 逐像素绝对误差之和衡量整体预测精度MattingMSE均方误差对较大偏差更敏感GradientErrorGRAD基于 alpha 梯度的误差反映边缘细节的锐利程度与保真度ConnectivityErrorCONN连通性误差衡量 alpha matte 在结构连通性上的失真。在使用 DIM 流水线的dimaug配置中由于FormatTrimap(to_onehotFalse)会改变 trimap 的未知值编码README 表格中这组结果的数值整体偏高属于不同训练策略下的对照实验不应与主结果直接比较。八、从源码验证测试链路一瞥为帮助读者理解配置如何驱动运行这里给出测试时的关键调用链tools/test.py启动 Runner 后数据经test_pipeline预处理BaseMattor.forward(modepredict)依次执行resize_inputs按test_cfg填充到 32 的倍数→_forward_testGCA backbone 前向→postprocess恢复尺寸、trimap 硬约束、clamp 到 [0,1] 并转 uint8→ 打包进DataSample最终由SAD、MattingMSE等 evaluator 完成指标计算。该流程的输入输出约定在 tests/test_models/test_editors/test_gca/test_gca.py 中有完整覆盖训练模式输出loss键测试模式输出uint8的pred_alpha。九、总结本文以 MMagic 中的 GCA 抠图模型为主线完整覆盖了从算法原理引导式上下文注意力、复现指标、配置文件逐项解读、数据在线合成管线到训练/测试命令与四项评估指标的完整链路。你可以直接基于 configs/gca/gca_r34_4xb10-200k_comp1k.py 开始训练或使用metafile.yml中记录的预训练权重复现 SAD 33.38 的基准结果如需进一步研究算法实现细节建议从 gca_module.py 与 resgca_enc.py 入手阅读源码。赞分享媒体生成计算机视觉深度学习人工智能大模型【免费下载链接】mmagicOpenMMLab Multimodal Advanced, Generative, and Intelligent Creation Toolbox. Unlock the magic : Generative-AI (AIGC), easy-to-use APIs, awsome model zoo, diffusion models, for text-to-image generation, image/video restoration/enhancement, etc.项目地址https://gitcode.com/gh_mirrors/mm/mmagic点击查看免费下载相关推荐MMagic 中 IndexNet 图像抠图实战从配置解析、模型原理到训练测试全指南MMagic 中 IndexNet 图像抠图实战从配置解析、模型原理到训练测试全指南 IndexNetICCV 2019是 OpenMMLab MMagi媒体生成计算机视觉深度学习人工智能大模型MMagic 中 IndexNet 抠图模型实战指南学习索引的图像 Matting 原理、配置解析与训练测试MMagic 中 IndexNet 抠图模型实战指南学习索引的图像 Matting 原理、配置解析与训练测试 导读 本文以 MMagicOpenMMLab媒体生成计算机视觉深度学习人工智能大模型对着摄像头动动嘴唇就能打字本地实时唇语识别工具 Chaplin 从零实测对着摄像头动动嘴唇就能打字本地实时唇语识别工具 Chaplin 从零实测 深夜加班开视频会你想插一句话可四周静得能听见键盘声——于是你只能对着摄像头无声地媒体生成计算机视觉深度学习人工智能大模型上一篇华硕笔记本终极瘦身用G-Helper替代臃肿奥创的完整指南下一篇Bonsai-demo金融分析实战用yfinanceJupyter构建本地量化分析的完整指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

3步搞定wordpress本地无法打开,新手建站怎么选才不踩坑

3步搞定wordpress本地无法打开,新手建站怎么选才不踩坑

3步搞定wordpress本地无法打开,新手建站怎么选才不踩坑 不会代码想做网站,最怕的就是本地环境一崩,wordpress本地无法打开,这时候别急着重装系统。很多人卡在“环境配置”和“选型”上,不知道 怎么选…

📅 2026/9/28 8:41:04
量化投资的神话与真相:从规则化决策到策略失效的完整解析

量化投资的神话与真相:从规则化决策到策略失效的完整解析

"量化投资"这四个字,这几年在投资圈里被吹得神乎其神。朋友圈有人晒资金曲线,论坛里有人晒策略代码,似乎只要沾上"量化"的边,收益就能坐上火箭。我在这个行业摸爬滚打了十几年,见过太多人带着&quo…

📅 2026/9/28 8:41:04
Libero SoC 2024.2环境配置避坑指南:License、ModelSim与环境变量

Libero SoC 2024.2环境配置避坑指南:License、ModelSim与环境变量

1. 为什么Libero SoC 2024.2的环境配置总在“最后一公里”翻车Libero SoC这套工具链有个很鲜明的特点:安装过程本身几乎不会出问题,真正让人抓狂的全是装完之后的事。License突然失效、ModelSim启动报错、环境变量改了没生效、仿真波形全是红线——这些问…

📅 2026/9/28 8:41:04
MORE NEWS

更多资讯

📰

同分异构体种类系统梳理:构造异构与立体异构全解析

很多学有机化学的同学,第一次被同分异构体打懵,往往是在数C4H10的异构体时。分子式明明只有一种写法,画出来却发现正丁烷和异丁烷是两种不同的东西。等到后面学顺反异构、光学异构,这个坑还会越挖越深。同分异构体是化学里最基础、…

📰

KMP算法与next数组详解:字符串匹配核心难点一次讲透

字符串匹配这个场景,凡是你用过编辑器的CtrlF、写过爬虫、解析过日志,基本都绕不开它。KMP算法就是解决字符串匹配问题的经典算法,它在很多人的算法学习路上是第一道坎——题目题号不大,思路却让一堆人来回折腾。这篇文章整理的是…

📰

F28388x CM核EtherCAT从站开发:SSC Tool到TwinCAT实战全记录

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

📰

DRV8323电流采样五大硬件设计坑与修复方案

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

📰

Linux下Python CAN通信开发:SocketCAN与DBC解析实战

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

📰

FastVIT图像分类实战:从环境搭建到注意力可视化全流程

简介:本资源面向图像分类初学者与Transformer实践者,提供一套基于FastVIT的完整实战项目。FastVIT作为ViT的优化版本,在保持高性能的同时降低计算复杂度,适合在资源有限的环境中高效训练。压缩包共约2000个文件,以1979…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬