DeepPrep:深度学习提升神经影像预处理

DeepPrep:深度学习提升神经影像预处理

一、DeepPrep介绍和BIDS格式介绍

神经影像预处理的痛点:传统工具(如fMRIPrep)在大规模数据处理时效率低下,临床样本鲁棒性不足。DeepPrep通过深度学习+工作流管理实现突破:

  • 10倍加速:单例处理时间从24小时缩短至2.3小时(CPU模式)
  • 99.7%临床成功率:支持肿瘤、术后等复杂病例
  • 全平台兼容:本地工作站、HPC集群、云环境无缝切换

在深入学习DeepPrep之前,必须掌握其核心输入格式——BIDS(Brain Imaging Data Structure)。这是神经影像领域的标准化数据组织规范,旨在解决数据格式混乱、元数据缺失等痛点,让不同工具(包括DeepPrep)能高效处理数据。

1. BIDS核心价值

  • 统一规范:全球600+神经影像工具(如fMRIPrep、FreeSurfer)支持,数据可直接复用
  • 元数据标准化:通过JSON文件记录扫描参数,避免人工配置错误
  • 可扩展性:支持结构像、功能像、扩散MRI等20+模态,兼容临床特殊数据

2. BIDS目录结构详解

(1)根目录架构
BIDS/  
├── sub-01          # 被试ID(格式:sub-{label})  
│   ├── ses-01      # 扫描 session(可选,格式:ses-{label})  
│   │   ├── anat    # 解剖学影像(必选)  
│   │   │   ├── sub-01_ses-01_T1w.nii.gz       # T1加权结构像  
│   │   │   └── sub-01_ses-01_T2w.nii.gz       # T2加权结构像(可选)  
│   │   ├── func    # 功能影像(可选)  
│   │   │   ├── sub-01_ses-01_task-rest_bold.nii.gz    # 静息态BOLD  
│   │   │   └── sub-01_ses-01_task-motor_bold.json       # 元数据文件  
│   │   ├── fmap    # 场图(用于畸变校正,可选)  
│   │   │   ├── sub-01_ses-01_acq-grad_e1_phasediff.nii.gz  # 相位差图  
│   │   │   └── sub-01_ses-01_acq-grad_e1_magnitude1.nii.gz  # 幅度图  
│   └── participants.tsv  # 被试元数据(如性别、临床诊断、病变位置)  
└── dataset_description.json  # 数据集元信息(可选)  
(2)核心文件夹解析
文件夹用途必选性示例文件名
sub-XX单个被试数据,XX为自定义标签(如01、02)必选sub-01
ses-XX同一被试的不同扫描session(如多次扫描),无则省略可选ses-01
anat解剖学影像,至少包含1个T1w序列必选(sMRI)sub-01_T1w.nii.gz(无session时)
func功能影像(BOLD/DWI等)必选(fMRI)sub-01_task-rest_bold.nii.gz
fmap场图数据(用于EPI畸变校正)可选sub-01_acq-grad_phasediff.nii.gz

3. 文件名规则:结构化命名的艺术

(1)基础格式
{sub}-{ses}_[acq-{acq}][ce-{ce}][rec-{rec}][run-{run}]_{modality}.nii.gz  
  • 必选字段
    • sub:被试ID(如sub-01
    • modality:模态类型(T1w/bold/phasediff等)
  • 可选字段
    • ses:session ID(如ses-01
    • acq:采集方法(如acq-32ch表示32通道线圈)
    • run:同一任务的多次运行(如run-01
(2)典型示例
影像类型文件名示例含义解释
T1结构像sub-01_T1w.nii.gz被试01的T1加权结构像(无session)
静息态BOLDsub-01_ses-02_task-rest_bold.nii.gz被试01、第2次session的静息态功能像
相位差场图sub-01_acq-grad_phasediff.nii.gz被试01的梯度回波相位差场图

4. 元数据文件:数据的“说明书”

每个影像文件需配套同名JSON文件(如sub-01_T1w.json),记录关键扫描参数:

(1)结构像必备字段
{  "Manufacturer": "Siemens",  "MagneticFieldStrength": 3.0,  # 场强(T"PixelSpacing": [0.8, 0.8, 1.0],  # 体素大小(mm)  "InversionTime": 900.0,  # 反转时间(仅MP2RAGE等序列)  "EchoTime": 2.51  # 回波时间(仅多回波序列)  
}  
(2)功能像关键参数
{  "RepetitionTime": 2.0,  # TR(秒)  "EchoTime": 30.0,  # TE(毫秒)  "PhaseEncodingDirection": "y-",  # 相位编码方向(用于畸变校正)  "MultibandAccelerationFactor": 2,  # 多带加速因子(如GRAPPA"SliceTiming": [0, 0.08, 0.16, ...]  # 切片时间校正参数(可选)  
}  

5. BIDS验证:数据合规的“质检关卡”

使用官方工具bids-validator确保数据格式正确:

(1)安装
pip install bids-validator  
(2)验证命令
bids-validator /path/to/BIDS  # 输出详细错误报告  
(3)常见错误处理
错误类型解决方案
文件名大小写错误统一使用小写(如SUB-01改为sub-01
缺少必需元数据字段手动补充JSON文件,或用Heudiconv自动生成
场图命名不规范参照BIDS官网命名示例(如phasediff而非phase

6. 从DICOM到BIDS:Heudiconv自动化转换

(1)基本流程
  1. 组织DICOM文件:按被试/序列分类(如dicom/sub-01/struct/T1w.dcm
  2. 运行转换
    heudiconv -d dicom/{subject}/{session}/{modality}/*.dcm \  -o BIDS \  -f bids \  -s sub-01 sub-02  # 处理多个被试  
    
  3. 自动生成元数据:Heudiconv从DICOM头文件提取参数写入JSON
(2)高级选项
--overwrite  # 覆盖已有文件  
--minmeta  # 生成最小化元数据(加快速度)  
--converter recon-all  # 特殊序列转换(如MP2RAGE)  

7. BIDS为何重要?DeepPrep的“数据契约”

  • 无缝对接:DeepPrep直接读取BIDS元数据(如TR/TE),避免手动输入错误
  • 质量保障:标准化结构让QC报告更可靠,异常数据定位更精准
  • 跨平台兼容:BIDS数据可直接用于后续分析(如FSL、SPM、Python库nibabel)

二、基础功能

1. 数据生态系统

(1)输入格式
  • 强制格式:严格遵循BIDS 1.8.0标准
    BIDS/
    ├── sub-01
    │   ├── ses-01
    │   │   ├── anat
    │   │   │   └── sub-01_ses-01_T1w.nii.gz
    │   │   └── func
    │   │       └── sub-01_ses-01_task-rest_bold.nii.gz
    └── participants.tsv  # 临床标签(如lesion_type)
    
  • 特殊支持
    • 多回波fMRI(.json需包含echo_times字段)
    • 7T高分辨率数据(支持0.5mm³体素)
(2)输出结构
output/
├── derivatives
│   └── deepprep
│       ├── sub-01
│       │   ├── anat
│       │   │   ├── sub-01_desc-fastsurfer_brainmask.nii.gz  # 脑掩码
│       │   │   └── sub-01_desc-synthmorph_MNI152NLin2009cAsym.nii.gz  # MNI标准化
│       │   ├── func
│       │   │   ├── sub-01_task-rest_desc-preproc_bold.nii.gz  # 预处理后BOLD
│       │   │   └── sub-01_task-rest_desc-confounds_regressors.tsv  # 混杂因子
│       │   └── surf
│       │       ├── lh.pial  # 左脑皮层表面
│       │       └── rh.sphere.reg  # SUGAR配准参数
└── reports├── sub-01_T1w_QC.html  # 结构像质量报告└── sub-01_task-rest_bold_QC.html  # 功能像质量报告

2. 核心技术模块

(1)深度学习引擎
模块算法优势对比(vs传统方法)处理时间(GPU)
脑分割FastSurferCNN (3D U-Net)Dice系数+3%,速度×1545秒
皮层重建FastCSR (球面优化)孔洞率<0.1%,速度×202分钟
空间配准SynthMorph (VoxelMorph变种)配准误差↓40%,支持病变区域1.2分钟
皮层配准SUGAR (球面注意力)NMI>0.9,表面距离误差<0.3mm15秒
(2)工作流管理
  • Nextflow核心特性
    • 动态并行:自动识别数据依赖,支持1000+样本批量处理
    • 资源调度:根据节点负载动态分配CPU/GPU(需配置configs/cluster.config
    • 容错机制:失败任务自动重试(默认3次),断点续传

三、安装与配置全流程(含避坑指南)

1. 环境准备

(1)硬件要求
场景CPUGPURAM存储
单机(科研)8核+RTX 3060+32GB+500GB SSD
HPC(批量)任意A100×4256GB+NVMe集群
临床(离线)4核+可选16GB+2TB HDD
(2)软件依赖
  • 必备工具
    # Linux(Ubuntu 20.04+)
    sudo apt-get install -y \docker.io \nextflow \bids-validator \freesurfer  # 仅需license,无需完整安装
    
  • Windows/Mac
    • 通过WSL2运行Docker
    • GUI版直接下载.exe/.dmg(官网提供)

2. Docker安装(99%用户首选)

(1)在线安装(5分钟搞定)
# 拉取最新稳定版
docker pull pbfslab/deepprep:25.1.0# 验证安装(显示版本号即成功)
docker run --rm pbfslab/deepprep --version
(2)离线环境部署(临床必备)
  1. 联网导出镜像
    docker save -o deepprep_25.1.0.tar pbfslab/deepprep:25.1.0
    
  2. 离线导入
    docker load -i deepprep_25.1.0.tar
    
  3. 许可证挂载
    docker run -v /host/license.txt:/opt/freesurfer/license.txt \pbfslab/deepprep --help
    

3. Singularity安装(HPC首选)

(1)构建镜像(管理员权限)
# 单命令构建
singularity build deepprep.sif docker://pbfslab/deepprep:25.1.0# 自定义缓存路径(加速下次构建)
singularity build --cache /hpc/singularity_cache deepprep.sif docker://pbfslab/deepprep:25.1.0
(2)集群配置文件(SLURM示例)
// configs/slurm.config
process {executor = 'slurm'clusterOptions = ['--gres=gpu:1',          // 每任务分配1张GPU'--mem=32G',            // 内存限制'--time=01:30:00',      // 任务超时时间'--output=logs/%j.out'  // 日志输出路径]cpus = 8  // 分配8个CPU核心
}singularity {enabled = trueimage = '/hpc/singularity/deepprep.sif'
}

4. 环境变量配置(必做!)

# 全局配置(写入~/.bashrc)
export DEEPPREP_HOME=/path/to/output  # 输出目录
export FREESURFER_HOME=/opt/freesurfer  # FreeSurfer根目录(仅需许可证)
export FS_LICENSE=$FREESURFER_HOME/license.txt
export PATH=$PATH:/usr/local/nvidia/bin  # GPU驱动路径

四、预处理功能深度拆解(附参数调优)

1. 结构MRI(sMRI)预处理

(1)标准流程(T1w处理)
graph TD
A[T1w图像] --> B[运动校正]
B --> C[偏置校正(N4ITK)]
C --> D[FastSurferCNN脑分割]
D --> E[FastCSR皮层重建]
E --> F[SynthMorph空间标准化(MNI)]
F --> G[输出脑掩码/分割/皮层表面]
(2)核心参数详解
参数作用推荐值(临床)科研默认值
--surf-recon启用皮层重建必选
--mni-template选择MNI模板MNI152NLin2009cAsym同上
--seg-threshold分割概率阈值(0-1)0.3(损伤病例)0.5
--skip-skullstrip跳过颅骨剥离(若已有脑掩码)仅特殊情况
(3)高级技巧:损伤区域处理
# 关键参数组合
--clinical-mode \          # 激活临床鲁棒模型
--lesion-mask lesion.nii.gz \  # 手动标注的损伤掩码
--surf-recon-fallback volume  # 损伤严重时降级为体积分析

2. 功能MRI(fMRI)预处理

(1)流水线架构
graph TD
A[原始BOLD] --> B[切片时间校正]
B --> C[运动校正(3D-3D配准)]
C --> D[畸变校正(TOPUP/PEPOLAR)]
D --> E[空间配准(T1w→MNI)]
E --> F[皮层投影(SUGAR)]
F --> G[混杂因子提取(CompCor+白质信号)]
(2)参数调优指南
  • 运动校正
    --fd-threshold 0.3 \  # 严格阈值(临床研究)
    --framewise-displacement \  # 输出FD文件用于后续筛选
    
  • 场图校正
    --pe-direction y- \  # 相位编码方向(根据序列设置)
    --topup-config topup.cfg \  # 自定义TOPUP配置文件
    
  • 输出优化
    --cifti-output \  # 生成CIFTI-2格式(支持皮层分析)
    --surface-parcellation aparc \  # 选择AAL/Desikan-Killiany脑区划分
    

3. 批量处理(1000+样本实战)

(1)HPC提交命令
nextflow run main.nf -profile slurm \--bids /hpc/bids \--output /hpc/results \--participant-label all \  # 处理所有被试--max-concurrent 200 \  # 最大并行任务数--resume  # 断点续传(失败任务自动恢复)
(2)资源监控
  • 实时查看GPU状态
    watch -n 5 nvidia-smi -i 0  # 监控0号GPU
    
  • 任务状态查询
    nextflow status deepprep_run  # 查看当前流程状态
    

五、质量控制(QC)体系详解

1. 自动化报告

(1)结构像核心指标
  • 分割质量
    • Dice系数:灰质(>0.85)、白质(>0.90)、脑脊液(>0.75)
    • 体积统计:与HCP数据库对比的Z-score(±2SD内正常)
  • 皮层重建
    • 表面连续性:孔洞数<5个(自动检测)
    • 厚度分布:左右半球对称性指数>0.95
(2)功能像关键参数
  • 运动指标
    • FD均值<0.2mm,异常帧比例<5%
    • Framewise Acceleration (FA) < 10mm/s²
  • 信号质量
    • SNR地图:纹状体区域>30(推荐值)
    • 时间序列稳定性:ACF衰减常数>0.8

2. 手动验证工具

(1)Freeview可视化
# 三维视图(T1w+分割+皮层表面)
freeview -v sub-01_T1w.nii.gz \-m sub-01_desc-fastsurfer_dseg.nii.gz:colormap=jet \-f sub-01/surf/lh.pial:color=red \-f sub-01/surf/rh.pial:color=blue
(2)Matplotlib绘制运动曲线
import pandas as pd
import matplotlib.pyplot as pltconfounds = pd.read_csv('sub-01_task-rest_desc-confounds_regressors.tsv', sep='\t')
plt.plot(confounds['framewise_displacement'], label='FD (mm)')
plt.axhline(0.5, color='red', linestyle='--', label='Threshold')
plt.legend()
plt.savefig('FD_plot.png')

六、常见问题与解决方案(99%问题在此解决)

1. 安装类问题

问题现象可能原因解决方案
Docker拉取失败网络限制使用代理,或切换至DockerHub中国镜像站
Singularity构建失败权限不足添加--fakeroot参数,或联系管理员
FreeSurfer许可证无效路径错误/过期确认FS_LICENSE路径,重新申请许可证

2. 预处理失败

错误类型排查步骤解决命令
脑分割失败数据非标准/病变严重--clinical-mode --seg-threshold 0.2
皮层重建超时GPU显存不足拆分任务为sMRIfMRI分步处理
空间配准误差大模板不匹配/病变影响尝试--mni-template NKI2009或手动调整参数

3. 性能优化

场景瓶颈分析优化方案
单机CPU处理慢核心未充分利用增加--omp-cores 16(不超过物理核心数)
集群任务排队资源竞争激烈configs/slurm.config中添加--qos high
GPU利用率低数据IO瓶颈使用NVMe存储,优化Docker挂载路径

七、最佳实践:从入门到精通

1. 新手快速上手

  1. 数据准备:用Heudiconv转换DICOM至BIDS,运行bids-validator检查
  2. 单机试运行
    docker run -v /host/data:/data \pbfslab/deepprep \--bids /data/BIDS \--output /data/output \--participant-label sub-01 \--workflow smri  # 先做结构像,熟悉流程
    
  3. 查看报告:打开output/reports/sub-01_T1w_QC.html,重点看分割重叠度

2. 科研级批量处理

  • 流程设计
    1. 先运行sMRI预处理所有样本(生成皮层表面)
    2. 再运行fMRI(复用已生成的T1w配准结果)
  • 资源分配
    // 给sMRI更多GPU资源
    process smri_recon {clusterOptions = '--gres=gpu:2'
    }
    

3. 临床应用要点

  • 术前规划
    • 启用--lesion-mask标注肿瘤区域
    • 输出surf文件夹用于手术导航(STL格式导出)
  • 术后评估
    --skip-surf-recon \  # 术后颅骨缺损时跳过皮层重建
    --output-space native \  # 保留原生空间结果
    

八、未来功能前瞻(2025Q2路线图)

  1. DeepQC 2.0:基于Vision Transformer的自动化质检,5秒内生成质量评分
  2. MP2RAGE支持:兼容多回波反转恢复序列,提升灰白质对比度
  3. 云原生优化:AWS Batch/Google Vertex AI深度集成,支持Serverless模式
  4. 教育模块:内置Jupyter Notebook教程,含数据加载、预处理、可视化全流程

九、结语:开启高效预处理之旅

DeepPrep不仅是一个工具,更是神经影像预处理的完整解决方案。通过深度学习突破传统瓶颈,借助Nextflow实现跨平台部署,无论是科研大数据分析还是临床精准诊断,都能游刃有余。建议从官方文档(https://deepprep.readthedocs.io)下载最新用户手册,加入开发者社区(GitHub/Python论坛)获取实时支持。

立即行动

  1. 下载Docker镜像:docker pull pbfslab/deepprep:25.1.0
  2. 提交首个任务:处理你的第一份BIDS数据
  3. 分享经验:在社交媒体带上#DeepPrep标签,加入全球用户群

神经影像预处理的效率革命,从点击运行按钮的那一刻开始!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/79824.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pytorch 数据预处理和常用工具

文章目录 NumPyNumpy数据结构安装和使用NumPy Matplotlib的安装和导入安装和导入Matplotlib绘制基础图画折线图散点图柱状图图例 数据清洗据清洗的作用Pandas进行数据清洗Pandas数据结构Series 数据结构DataFrame数据结构 Pandas数据清洗常用代码 特征工程主成分分析线性判别分…

MATLAB 中常用的微分函数介绍

MATLAB 中常用的微分函数介绍 在 MATLAB 中&#xff0c;微分运算是数值计算和符号计算中常用的功能。无论是在进行数据分析、优化算法&#xff0c;还是数学建模时&#xff0c;微分都扮演着重要的角色。本文将介绍 MATLAB 中常用的微分函数&#xff0c;并通过简单的示例帮助大家…

按指定位置或关键字批量删除工作表-Excel易用宝

在一个工作簿中有多个工作表&#xff0c;有些工作表不需要了&#xff0c;如果一个一个手动删除&#xff0c;那实在是太慢了&#xff0c;有没有什么好的方法可以批量删除工作表。 批量删除工作表很简单&#xff0c;单击【易用宝】→【工作表】→【批量删除工作表】。 在打开的批…

TypeScript装饰器:从入门到精通

TypeScript装饰器&#xff1a;从入门到精通 什么是装饰器&#xff1f; 装饰器&#xff08;Decorator&#xff09;是TypeScript中一个非常酷的特性&#xff0c;它允许我们在不修改原有代码的情况下&#xff0c;给类、方法、属性等添加额外的功能。想象一下装饰器就像给你的代码…

【SSL证书系列】客户端如何检查中间CA签名是否由根CA签发

客户端通过以下步骤检查中间CA的签名是否由受信任的根CA签发&#xff1a; 1. 证书链的构建 服务器发送的证书链通常包含&#xff1a; • 服务器证书&#xff08;由中间CA签发&#xff09; • 中间CA证书&#xff08;由根CA签发&#xff09; • 根CA证书&#xff08;通常不发送…

【android bluetooth 协议分析 12】【A2DP详解 1】【车机侧蓝牙音乐免切源介绍】

“车机蓝牙音乐免切源” 是近年来车载系统&#xff08;IVI&#xff0c;In-Vehicle Infotainment&#xff09;中常见的一个用户体验优化功能。它主要是为了简化蓝牙音乐播放流程、减少用户操作&#xff0c;提升使用便捷性。 一、什么是“切源”&#xff1f; 在车机系统中&#…

Android usb网络共享详解

Android usb网络共享详解 文章目录 Android usb网络共享详解一、前言二、USB网络共享使用的前提1、Android设备支持adb 并且打开usb开关2、原生Settings能看到USB网络共享开关3、代码中检测USB网络共享是否支持 三、Settings 中USB网络共享代码的部分代码1、Settings\res\xml\t…

Step1

项目 SchedulerSim 已搭建完成 ✅ ⸻ ✅ 你现在拥有的&#xff1a; • &#x1f527; 两种调度器&#xff08;Round Robin SJF&#xff09; • &#x1f4e6; 模拟进程类 Process • &#x1f9f1; 清晰结构&#xff1a;OOP 风格 便于扩展 • ✍️ 主函数已演示调度器运行效…

初探 Skynet:轻量级分布式游戏服务器框架实战

在游戏服务器开发领域&#xff0c;高效、稳定且易于扩展的框架一直是开发者追求的目标。Skynet 作为一款轻量级、高性能的分布式游戏服务器框架&#xff0c;凭借其独特的设计理念和强大的功能&#xff0c;赢得了众多开发者的青睐 一.Skynet底层架构支持 1.Actor erlang 从语言…

Oracle数据库中,WITH..AS 子句用法解析

前言 在Oracle数据库中&#xff0c;WITH子句&#xff08;也成为“子查询因子化” 或“公共表表达式”&#xff0c;Common Table Expression, CTE)用于定义一个临时命名的结果集&#xff0c;这个结果集可以在后续的查询中引用。 一、基本语法 WITH sjtab AS &#xff08;SELE…

什么是卫星电话?卫星电话与普通电话有什么区别?

在信息时代&#xff0c;通信技术已渗透到人类生活的方方面面&#xff0c;但传统地面通信网络仍存在盲区&#xff0c;无论是海洋、沙漠、高山&#xff0c;还是灾害现场&#xff0c;普通手机往往因基站信号无法覆盖而失效。此时&#xff0c;卫星电话便成为连接世界的“生命线”。…

【C/C++】高阶用法_笔记

1. 模板元编程&#xff08;TMP&#xff09;与编译时计算 (1) 类型萃取与 SFINAE 类型萃取&#xff08;Type Traits&#xff09;&#xff1a;利用模板特化在编译时推断类型属性。 template<typename T> struct is_pointer { static constexpr bool value false; };templ…

鸿蒙OSUniApp 实现一个精致的日历组件#三方框架 #Uniapp

使用 UniApp 实现一个精致的日历组件 前言 最近在开发一个约会小程序时&#xff0c;需要实现一个既美观又实用的日历组件。市面上虽然有不少现成的组件库&#xff0c;但都不太符合我们的设计需求。于是&#xff0c;我决定从零开始&#xff0c;基于 UniApp 自己实现一个功能完…

PyQt5完整指南:从入门到实践

引言 PyQt5是Python编程语言的一个GUI&#xff08;图形用户界面&#xff09;工具包&#xff0c;它是Qt5应用程序框架的Python绑定。Qt是一个跨平台的C应用程序开发框架&#xff0c;被广泛用于开发GUI程序和非GUI程序。PyQt5让Python开发者能够使用Python语言享受到Qt框架的强大…

Excel的详细使用指南

### **一、Excel基础操作** #### **1. 界面与基本概念** - **工作簿&#xff08;Workbook&#xff09;**&#xff1a;一个Excel文件&#xff08;扩展名.xlsx&#xff09;。 - **工作表&#xff08;Worksheet&#xff09;**&#xff1a;工作簿中的单个表格&#xff08;默认名…

Linux grep -r 查找依赖包是否存在依赖类 Class

方法一&#xff1a;通过 Linux &#xff0c;grep -r ClassPath 命令 grep -f org.apache.kafka.connect.source.SourceRecord在 jar 包所在 lib 或者 lib/plugins 目录下执行&#xff0c;grep -r&#xff0c; flink-sql-connector-sqlserver-cdc-3.3.0.jar 中此 kafka Source…

碎片笔记|AI生成图像溯源方法源码复现经验(持续更新中……)

前言&#xff1a;本篇博客分享一些溯源方法的复现经验&#xff0c;希望能帮助到大家&#x1f389;。 目录 1. Close-set AttributionRepmixDe-FakeDNA-Net 2. Open-set AttributionPOSE 3. Single-Model AttributionOCC-CLIPLatentTracer 1. Close-set Attribution Repmix 论…

SAP Fiori Elements Object Page

🏰 SAP Fiori Elements Object Page:魔法积木城堡的建造秘密 想象一下,你曾经去过一个神奇的乐高主题公园,在那里,城堡会根据你的设计图纸自动搭建,而你只需要提供一张设计说明书,不必亲自摆放每一块积木!这就是SAP Fiori Elements Object Page的渲染魔法! 🧙‍♂…

Git 用户名与邮箱配置全解析:精准配置——基于场景的参数选择

目录 一、配置查看&#xff1a;理解多层级配置体系二、精准配置&#xff1a;基于场景的参数选择1. 仓库级配置&#xff08;推荐&#xff09;2. 用户级配置3. 系统级配置 三、历史提交信息修改1. 修改最近一次提交2. 修改多个历史提交&#xff08;危险操作&#xff09; 五、配置…

Fabric系列 - SoftHSM 软件模拟HSM

在 fabric-ca-server 上使用软件模拟的 HSM(密码卡) 功能 安装 SoftHSMv2 教程 SoftHSMv2 默认的配置文件 /etc/softhsm2.conf默认的token目录 /var/lib/softhsm/tokens/ 初始化和启动fabric-ca-server&#xff0c;需要设置一个管理员用户的名称和密码 初始化令牌 # 初始…