
人工智能计算机视觉深度学习预训练微调【免费下载链接】Vim[ICML 2024] Vision Mamba: Efficient Visual Representation Learning with Bidirectional State Space Model项目地址https://gitcode.com/gh_mirrors/vim2/Vim点击查看免费下载本篇文章围绕 DensePose 项目 2021 年 3 月版本发布说明RELEASE_2021_03.md展开系统梳理该版本带来的两大核心能力——面向无标注数据的 DensePose Evolution 自举训练管线以及将 DensePose 从人体扩展到任意类别的 Continuous Surface EmbeddingsCSE框架——同时详解随之而来的大规模组件重构、HRNet/HRFPN 骨干与 PoseTrack 数据集支持。读完本文你将掌握该版本新增模块的职责划分、关键源码调用链与配置文件组织方式能够在当前仓库中快速定位对应实现并理解其设计动机。版本概览一次发布两条主线DensePose 2021 年 3 月发布RELEASE_2021_03的技术主线可以概括为两条DensePose Evolution 管线一个在无标注数据上自举bootstrapDensePose 模型的框架典型场景是将人体 DensePose 迁移到近缘动物类别如黑猩猩相关背景方法见 Sanakoyeu et al., 2020DensePose CSEContinuous Surface Embeddings借助 3D 网格模型将 DensePose 从仅限人体扩展到多种类别人类与动物相关背景方法见 Neverova et al., 2020。此外该版本还对全部主要组件——损失函数、预测器、模型输出、模型结果、可视化器——进行了系统重构并引入 HRNet / HRFPN 骨干网络、PoseTrack 数据集与 IUV 纹理可视化器。下文将按上述主线逐条深入每条均给出仓库内的源码或配置定位方便对照研读。DensePose Evolution在无标注数据上自举训练总体框架master 与 student 两阶段Evolution 管线的完整设计记录在 BOOTSTRAPPING_PIPELINE.md其核心是两阶段训练该方法在 DENSEPOSE_IUV.md 的 Bootstrapping Chart-Based Models 一节有示意Master 模型在源域人体含完整S、I、U、VDensePose 标注与支撑域动物仅含分割标注数据上训练并通过类别过滤器只保留与目标域质量相关的类别训练以**类别无关class-agnostic**方式进行——所有选中类别统一映射到单一类别personStudent 模型在源域、支撑域数据之上再加入由 master 模型在目标域图像上推理、经高置信度筛选与采样得到的伪标注进行训练这一用模型产出训练数据的过程即自举。该版本发布说明中明确指出当前管线仅对 chart-basedIUV模型实现见 BOOTSTRAPPING_PIPELINE.md黑猩猩类别有对应的预训练 master/student 模型可供直接使用见下文模型动物园。InferenceBasedLoader把推理结果变成标注的加载器自举管线的中枢组件是InferenceBasedLoader。从源码看它由三部分组成一个提供图像批次的数据加载器data_loader一个用于推理产出结果的模型model构造时即置为eval()模式一个把推理结果转换成标注的数据采样器data_sampler以及可选的输出过滤器data_filter。其关键构造参数包括参数含义默认值model用于产出数据的模型torch.nn.Module必填data_loader提供含images与categories字段的批次的可迭代对象必填data_sampler从推理结果生成标注数据的函子Nonedata_filter筛选推理输出的过滤器Noneshuffle是否对输入图像随机打乱Truebatch_size产出的标注数据批次大小4inference_batch_size推理时输入的图像批次大小4drop_last末尾不足一批时是否丢弃Falsecategory_to_class_mapping类别到类的映射用于类别无关训练{}核心执行流程在__iter__与_produce_data中每次迭代先取出数据加载器的一批图像将其展平为(image, category)对并可选随机打乱随后按inference_batch_size分组在torch.no_grad()下调用self.model(batch)完成推理推理输出经category_to_class_mapping为每个实例标注目标类别再依次经过data_filter如按检测分数过滤与data_sampler如均匀采样或置信度采样得到标注数据最后按batch_size聚合成批次产出。仓库内置的ScoreBasedFilter提供最简单的过滤策略丢弃所有分数低于min_score默认 0.8的检测结果对应配置中的FILTER: TYPE detection_score MIN_VALUE 0.8。数据采样器从稠密结果中采样稀疏标注自举训练中master 模型输出的稠密 DensePose 结果需要被采样为稀疏标注。当前实现支持两类策略对应文件位于 densepose/data/samplers均匀采样densepose_uniform.py每个类别随机抽取固定数量样本置信度采样densepose_confidence_based.py利用模型产出的置信度值挑选最有把握的估计。其confidence_channel支持三个取值——sigma_2UV 坐标置信度、fine_segm_confidence精细分割置信度、coarse_segm_confidence粗略分割置信度默认sigma_2count_per_class控制每类最多采样数默认 8。此外还提供两个互斥的候选池控制参数search_count_multiplier候选数为min(count * multiplier, N)与search_proportion候选数为min(max(N * proportion, count), N)N为该类估计总数。从源码看置信度采样先对置信度通道排序只在前search_count个最高置信度像素中均匀抽取——即以局部最高置信度优先的方式得到多样化的稀疏标注。使用置信度采样要求 master 模型本身产出置信度估计发布说明中强调WC1M系列的 master 模型可同时产出 UV、精细分割、粗略分割三类置信度详见下文掩码置信度估计。视频关键帧加载VideoKeyframeDataset自举训练常常需要海量未标注图像其中一大来源是视频。为此该版本提供了VideoKeyframeDataset用于高效地从视频关键帧加载图像。从配置见 BOOTSTRAPPING_PIPELINE.md 中的示例看配套的图像加载器类型为video_keyframe配合帧选择策略使用例如IMAGE_LOADER: TYPE: video_keyframe SELECT: STRATEGY: random_k NUM_IMAGES: 4 TRANSFORM: TYPE: resize MIN_SIZE: 800 MAX_SIZE: 1333 BATCH_SIZE: 8 NUM_WORKERS: 1SELECT.STRATEGY random_k表示在每个视频中随机选取最多 4 个关键帧。只考虑关键帧一方面保证被采样图像之间存在时间间隔避免连续帧高度相似另一方面可显著加速 seek 操作帧随后被缩放到MIN_SIZE 800 / MAX_SIZE 1333与标准 DensePose 训练预处理一致使用标准 PyTorchDataLoader配置BATCH_SIZE 8、NUM_WORKERS 1完成批量化。数据集注册为VIDEO_LIST类型见 densepose/data/datasets/chimpnsee.py即由一个文本文件列出的多个视频构成。此外还有帧选择策略相关的完整实现位于 densepose/data/video/frame_selector.py以及配套的 densepose/data/combined_loader.py按 RATIO 混合多个数据源的批次构成比例。类别过滤器与类别映射类别无关训练为了在保证目标域分割质量的同时做类别无关训练配置文件提供两层机制示例见 configs/evolution/Base-RCNN-FPN-Atop10P_CA.yamlWHITELISTED_CATEGORIES: base_coco_2017_train: - 1 # person - 16 # bird - 17 # cat - 18 # dog - 19 # horse - 20 # sheep - 21 # cow - 22 # elephant - 23 # bear - 24 # zebra - 25 # girafeCATEGORY_MAPS: base_coco_2017_train: 16: 1 # bird - person 17: 1 # cat - person 18: 1 # dog - person 19: 1 # horse - person 20: 1 # sheep - person 21: 1 # cow - person 22: 1 # elephant - person 23: 1 # bear - person 24: 1 # zebra - person 25: 1 # girafe - personWHITELISTED_CATEGORIES通过类别过滤器把训练集裁剪到person 与目标域最接近的 10 类动物配置名中的Atop10P即由此得名CATEGORY_MAPS把所有动物类别映射到类别 1person实现类别无关训练配置名中的CA即 class-agnostic。在代码层面InferenceBasedLoader的category_to_class_mapping参数正是这一机制的落地推理时对每个实例调用category_to_class_mapping.get(category, 0)设置dataset_classes见 inference_based_loader.py。自举训练配置示例与日志解读一个完整的自举训练配置片段取自 configs/evolution/densepose_R_50_FPN_DL_WC1M_3x_Atop10P_CA_B_uniform.yamlBOOTSTRAP_DATASETS: - DATASET: chimpnsee RATIO: 1.0 IMAGE_LOADER: TYPE: video_keyframe SELECT: STRATEGY: random_k NUM_IMAGES: 4 TRANSFORM: TYPE: resize MIN_SIZE: 800 MAX_SIZE: 1333 BATCH_SIZE: 8 NUM_WORKERS: 1 INFERENCE: INPUT_BATCH_SIZE: 1 OUTPUT_BATCH_SIZE: 1 DATA_SAMPLER: TYPE: densepose_uniform COUNT_PER_CLASS: 8 FILTER: TYPE: detection_score MIN_VALUE: 0.8 BOOTSTRAP_MODEL: WEIGHTS: ...要点解析BOOTSTRAP_DATASETS下可挂多个自举数据集每个都配置独立的数据加载、推理与采样策略RATIO控制自举数据在混合批次中的权重CombinedDataLoader中标准数据加载器默认RATIO 1.0比例越高该数据源样本被选入批次的概率越大INFERENCE.INPUT_BATCH_SIZE为推理分批大小此处 1OUTPUT_BATCH_SIZE为采样结果输出的分批大小此处 1BOOTSTRAP_MODEL.WEIGHTS指定 master 模型权重路径。训练日志中可跟踪各数据源的占比例如[... densepose.engine.trainer]: batch/ 1.8, batch/base_coco_2017_train 6.4, batch/densepose_coco_2014_train 3.85表示最近 20 个迭代内平均每 1.8 个自举样本对应 6.4 个base_coco_2017_train样本与 3.85 个densepose_coco_2014_train样本。部分标注训练与掩码置信度估计该版本还支持DensePose head 的部分标注训练即仅使用分割标注S训练 DensePose head支撑域数据正是以这种形态参与 master 训练的带掩码置信度估计的 DensePose 模型模型除 UV 坐标置信度外还额外估计与粗、细分割相关的置信度。对应配置家族为WC1M/WC2MM即 Mask模型清单见 DENSEPOSE_IUV.md 的 Baselines with Mask Confidence Estimation 一节。这类模型正是置信度采样densepose_UV_confidence、densepose_fine_segm_confidence、densepose_coarse_segm_confidence能工作的前提。DensePose Chimps 数据集IUV 评估Evolution 管线的目标域评估依托DensePose Chimps数据集黑猩猩 IUV 标注用于评估 master/student 模型相关数据集说明见 DENSEPOSE_DATASETS.mddensepose-chimps一节。自举基线在评估时使用的松弛指标dp. APex GPS会在阈值 0.2、0.3、0.4 处额外计匹配其最小阈值由配置项DENSEPOSE_EVALUATION.MIN_IOU_THRESHOLD控制见 DENSEPOSE_IUV.md。DensePose CSE把 DensePose 扩展到任意类别核心思想CSE 框架详见 DENSEPOSE_CSE.md将 DensePose 的图块坐标 (I, U, V)范式替换为连续表面嵌入对于每个检测目标模型预测粗分割S2 通道前景/背景与嵌入E16 通道与此同时embedder 为对应 3D 网格的每个顶点生成顶点嵌入Ê通过匹配像素级通用位置嵌入E与顶点嵌入Ê即可为每个像素推导出其在网格表面上的连续位置。该管线沿用 Faster R-CNN FPN 元架构因而天然支持将任意有 3D 网格模型的类别纳入训练——这是 CSE 相较传统 DensePose 的最大扩展点。Hard 与 Soft 嵌入损失CSE 训练使用两类嵌入损失Hard embedding lossdensepose/modeling/losses/embed.py从源码看EmbeddingLoss将同一 mini-batch 中属于同一网格的实例归组对每个网格分别计算损失。其做法是用双线性插值BilinearInterpolationHelper在预测嵌入embedding形状[N, D, S, S]D为嵌入维度由MODEL.ROI_DENSEPOSE_HEAD.CSE.EMBED_SIZE决定上按标注顶点位置取值并归一化与 embedder 产出的全部网格顶点嵌入计算平方欧氏距离矩阵再除以-EMBEDDING_DIST_GAUSS_SIGMA得到未归一化分数最后以真实顶点 ID 为标签做交叉熵损失ignore_index-1屏蔽无效点。同一网格 ID 由MeshCatalog.get_mesh_name(mesh_id)解析Soft embedding lossdensepose/modeling/losses/soft_embed.py与 hard 版本相对用于训练通用位置嵌入的软分配形式。两个损失都依赖 densepose/modeling/losses/embed_utils.py 中定义的PackedCseAnnotations等数据结构将标注顶点 ID、所属网格 ID 等打包为张量。Embedder网格顶点嵌入管理Embedder负责为网格顶点计算嵌入。仓库在 densepose/modeling/cse 目录下提供了两种实现形态vertex_direct_embedder.py直接从可学习参数表查取顶点嵌入vertex_feature_embedder.py由顶点特征计算嵌入。网格本身通过 densepose/data/meshes 下的MeshCatalog注册与查询CSE 模型的损失与预测器均通过MeshCatalog与embedder交互。大规模评估存储TensorStorageCSE 评估需要在顶点级数十万量级收集匹配数据为此引入TensorStorage用于在高数据量评估场景下暂存张量。配套的网格对齐评估器见 densepose/evaluation/mesh_alignment_evaluator.pyDensePose COCO 风格评估见 densepose/evaluation/densepose_coco_evaluation.py。CSE 预训练模型与数据集CSE 模型分两类提供预训练权重详见 DENSEPOSE_CSE.md 的 Model Zoo人类 CSE 模型按 Neverova et al, 2020 的协议训练分别提供 harddensepose_rcnn_R_50_FPN_s1x等与 softdensepose_rcnn_R_50_FPN_soft_s1x等版本均有R_50/R_101与是否使用 DeepLabV3 head_DL_的变体动物 CSE 模型在人类 CSE 模型基础上用动物数据微调包含ds1_train系列如R_50_FPN_soft_chimps_finetune_4k、R_50_FPN_soft_animals_finetune_4k其中CA表示类别无关训练与ds2_train系列如R_50_FPN_soft_animals_I0_finetune_16k部分配合 cycle losses相关方法见 Neverova et al, 2021 对应的 Cycle Losses 引用。CSE 的微调与评估依托两个数据集DensePose Chimps与DensePose LVIS说明见 DENSEPOSE_DATASETS.md 的densepose-chimps与densepose-lvis小节相关数据加载实现见 densepose/data/datasets/lvis.py 与 densepose/data/datasets/chimpnsee.py。顶点与纹理映射可视化器为直观检查 CSE 输出该版本提供顶点可视化器 densepose_outputs_vertex.py将像素的连续表面嵌入映射回网格顶点并渲染IUV 纹理可视化器 densepose_results_textures.py将 DensePose 结果按纹理图渲染。两者均属于该版本可视化器拆分工作的产物见下文。组件重构结构、预测器、转换器与损失的组织化该版本对全部主要组件进行了系统性重构目标是把图块chart与CSE两条技术线统一到同一套组件框架下。具体拆分为专用的输出结构与结果结构structures/chart.pychart 输出DensePoseChartPredictorOutputstructures/chart_confidence.py带置信度的 chart 输出structures/chart_result.pychart 结果含后处理后的IUV等structures/cse.pyCSE 输出DensePoseEmbeddingPredictorOutput。相关文件还包含cse_confidence.pyCSE 置信度输出、data_relative.py、transform_data.py等配套结构共同支撑不同头与损失之间的数据流动。专用预测器modeling/predictors/chart.py基于图块的稠密估计预测器modeling/predictors/chart_confidence.py置信度估计预测器modeling/predictors/cse.pyCSE 嵌入预测器。每个预测器都负责把 ROI head 的特征映射为对应输出结构注册机制见 modeling/predictors/registry.py。转换器与损失的组织化转换器densepose/converters统一处理输出 → 结果等各类转换例如chart_output_to_chart_result.py、segm_to_mask.py、to_chart_result.py、to_mask.py、chart_output_hflip.py、hflip.py等通过 converters/builtin.py 统一注册损失densepose/modeling/losses按任务组织为chart.pyIUV 图块损失、chart_with_confidences.py带置信度、cse.py、embed.pyhard 嵌入损失、soft_embed.pysoft 嵌入损失、mask.py、mask_or_segm.py、segm.py以及 cycle 损失cycle_pix2shape.py/cycle_shape2shape.py注册见 losses/registry.py损失数据累加器分离IUV 设置下的累加器位于 modeling/losses/utils.pyCSE 设置下的累加器位于 modeling/losses/embed_utils.py——两类任务的数据打包逻辑因此互不干扰。可视化器拆分可视化逻辑被拆分为多个独立模块densepose/visdensepose_data_points.py标注点、densepose_outputs_iuv.pyIUV 输出、densepose_outputs_vertex.py顶点/嵌入输出、densepose_results.py结果、densepose_results_textures.py纹理结果、extractor.py结果提取等并统一提供base.py定义的可视化基类。新增骨干与数据集HRNet 与 HRFPN 骨干modeling/hrnet.py 与 modeling/hrfpn.py 提供 HRNet 主干及对应 FPN 结构为更高分辨率特征的需求提供支持相关配置见 configs/HRNet 下的densepose_rcnn_HRNet_R_50_FPN_s1x.yaml等文件PoseTrack 数据集新增支持说明见 DENSEPOSE_DATASETS.md 的densepose-posetrack小节IUV 纹理可视化器即上文提及的 densepose_results_textures.py。模型动物园速览与评估指标发布说明将完整模型清单指向 DENSEPOSE_IUV.mdchart-based与 DENSEPOSE_CSE.mdCSE两份文档。chart-based 侧按演进顺序分为五类基线家族特点代表性配置Legacy按 Güler et al, 2018 的旧协议训练densepose_rcnn_R_50_FPN_s1x_legacy.yaml改进基线原全卷积头改进训练协议 Panoptic FPN headdensepose_rcnn_R_50_FPN_s1x.yamlDeepLabV3 头DL在上一档基础上换用 DeepLabV3 headdensepose_rcnn_R_50_FPN_DL_s1x.yaml置信度估计WC1/WC2额外估计 UV 坐标置信度densepose_rcnn_R_50_FPN_WC1_s1x.yaml等掩码置信度WC1M/WC2M额外估计粗/细分割置信度densepose_rcnn_R_50_FPN_WC1M_s1x.yaml等自举基线Atop10P/CA/B_...master/student 管线黑猩猩为目标类别configs/evolution/下densepose_R_50_FPN_DL_WC1M_3x_Atop10P_CA*其中WC1/WC2指 UV 坐标置信度估计的两种模型类型带M后缀者额外包含掩码置信度估计Atop10P训练使用 person 与最适配的 10 类动物CA类别无关训练B_...带指定采样策略的自举训练计划所有可下载模型均采用 Creative Commons Attribution-ShareAlike 3.0 许可。评估指标方面常规 DensePose 报告box AP、segm AP、dp. AP GPS、dp. AP GPSm自举基线的dp. APex GPS是 Sanakoyeu et al., 2020 下实现其中 d2_evaluator_adapter.py 负责与 detectron2 评估器对接。小结与进一步阅读DensePose 2021 年 3 月发布的核心价值在于用Evolution 自举管线打通了无标注数据 → 伪标注 → 新类别模型的路径用CSE把 DensePose 从人体泛化到任意有网格模型的类别并通过组件重构让 chart 与 CSE 两条技术线共享同一套结构、预测器、转换器与损失框架。配套的 HRNet/HRFPN 骨干、PoseTrack 数据集与纹理可视化器进一步补齐了工程化能力。若关注自举管线完整流程请阅读 BOOTSTRAPPING_PIPELINE.md并对照 inference_based_loader.py 与 configs/evolution 下的配置文件若关注 CSE 原理与模型请阅读 DENSEPOSE_CSE.md并对照 modeling/losses/embed.py、modeling/losses/soft_embed.py 与 modeling/cse/embedder.py若关注数据集请阅读 DENSEPOSE_DATASETS.md并在 densepose/data/datasets 下查看各数据集注册实现项目入口脚本与安装方式见 DensePose README 与 tools/train_net.py--config-file配合configs/下的 YAML 使用。需要说明的是该仓库当前位于以 ICML 2024 Vision Mamba 为主题的 Vim 项目根目录下DensePose 模块作为det/projects子项目随仓库一并提供上文所有路径均以仓库根目录为基准可直接对照源码研读。赞分享人工智能计算机视觉深度学习预训练微调【免费下载链接】Vim[ICML 2024] Vision Mamba: Efficient Visual Representation Learning with Bidirectional State Space Model项目地址https://gitcode.com/gh_mirrors/vim2/Vim点击查看免费下载相关推荐Detectron2 DensePose 2021-03 发布深度解读DensePose CSE 连续表面嵌入与 DensePose Evolution 自举框架Detectron2 DensePose 2021 03 发布深度解读DensePose CSE 连续表面嵌入与 DensePose Evolution 自举人工智能计算机视觉深度学习机器学习Vim 仓库 DensePose 项目实战指南IUV 图表估计与 CSE 连续表面嵌入双范式全解析Vim 仓库 DensePose 项目实战指南IUV 图表估计与 CSE 连续表面嵌入双范式全解析 本指南以 Vim 仓库中 det/projects/Den人工智能计算机视觉深度学习预训练微调DensePose 连续表面嵌入CSE技术全解从人类到动物的稠密姿态估计与模型实战DensePose 连续表面嵌入CSE技术全解从人类到动物的稠密姿态估计与模型实战 导读 本文围绕 DensePose 项目的 Continuous Su人工智能计算机视觉深度学习机器学习上一篇Ao桌面任务管理应用评测跨平台待办应用如何提升工作效率下一篇Shuttle苹果事件处理深入理解NSAppleScript工作机制终极指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考