Cosmos-AnomalyGen-Glass-2B完全指南:从安装到生成高质量手机屏幕异常图像
Cosmos-AnomalyGen-Glass-2B完全指南:从安装到生成高质量手机屏幕异常图像
【免费下载链接】Cosmos-AnomalyGen-Glass-2B项目地址: https://ai.gitcode.com/hf_mirrors/nvidia/Cosmos-AnomalyGen-Glass-2B
Cosmos-AnomalyGen-Glass-2B是一款强大的AI工具,专为手机屏幕异常图像生成而设计。它能够通过用户提供的二进制掩码在干净的参考屏幕图像上进行修复,生成三种训练过的缺陷类型(油、划痕、污渍)的合成手机屏幕异常图像。这款工具特别适合工业视觉检测团队,尤其是那些负责手机屏幕质量检测且真实异常示例非常少(每种缺陷类型≤5个)的团队。
🚀 快速了解Cosmos-AnomalyGen-Glass-2B
核心功能与优势
Cosmos-AnomalyGen-Glass-2B的核心优势在于其能够生成大规模的合成异常数据集,帮助训练下游缺陷检测或分割模型。它通过以下关键组件实现这一功能:
- anomaly_embedding:可训练的令牌嵌入(每个
<texture>+<anomaly_type>对256个令牌),为UC3训练了三对:Phone+oil、Phone+scratch、Phone+stain。 - adapter:具有GELU激活的2层MLP(输入/输出隐藏大小=1024),将掩码编码器输出投影到扩散DiT条件空间。
- mask_encoder:NV-DINOv2(ViT-L)骨干网络,带自适应池化(内核=7),推理时从单独下载的NV-DINOv2分类检查点加载权重。
- text_encoder:google-t5/t5-large。
这些模块在推理时对冻结的Cosmos-Predict2 2B T2I DiT去噪器进行条件控制,生成高质量的异常图像。
适用场景
该模型主要用于工业视觉检测领域,特别是移动电话屏幕的质量检测。它可以帮助:
- 解决真实异常样本不足的问题
- 生成多样化的训练数据,提高下游检测模型的性能
- 降低数据采集和标注的成本
📋 环境准备与安装步骤
系统要求
在开始安装之前,请确保您的系统满足以下要求:
- 操作系统:Linux
- 硬件兼容性:
- NVIDIA Ampere(A100)
- NVIDIA Hopper(H100)
- NVIDIA RTX 6000
- 软件依赖:
- PyTorch(通过Cosmos-Predict2 2B T2I管道)
- Cosmos AnomalyGen脚本
- NVIDIA TAO Toolkit(通过DAFT v3.0导出)
安装步骤
克隆仓库
首先,克隆项目仓库到本地:
git clone https://gitcode.com/hf_mirrors/nvidia/Cosmos-AnomalyGen-Glass-2B cd Cosmos-AnomalyGen-Glass-2B安装依赖
项目依赖于PyTorch和其他相关库,建议使用conda创建虚拟环境并安装所需依赖:
conda create -n cosmos-ag python=3.8 conda activate cosmos-ag pip install -r requirements.txt注意:具体的依赖列表可能需要参考项目的官方文档或requirements.txt文件。
下载预训练模型
该模型发布时仅包含few-shot-finetuned模块(异常令牌嵌入和2层MLP适配器),需要在推理时插入到冻结的Cosmos-Predict2 2B Text-to-Image扩散骨干网络中。因此,您需要单独下载Cosmos-Predict2 2B基础模型和NV-DINOv2掩码编码器的权重。
⚙️ 配置文件详解
项目中的配置文件ag_config.yaml包含了模型训练和推理的关键参数。以下是一些重要参数的说明:
训练相关配置
trainer: max_iter: 75000 # 最大训练迭代次数 logging_iter: 10 # 日志记录间隔 validation_iter: 1500 # 验证间隔 run_validation: True # 是否运行验证数据集配置
dataloader_train: batch_size: 2 # 训练批次大小 dataset: dataset_dir: /workspace/cosmos-anomalygen-predict2/datasets/UC3_data # 数据集目录 image_size: [512, 512] # 图像尺寸 anomaly_types: [[Phone, oil], [Phone, scratch], [Phone, stain]] # 异常类型 seed: 1 # 随机种子 data_augprob: 0.5 # 数据增强概率 aug_type: random_ratio_crop # 增强类型 ratio_range: [1.5, 8.0] # 裁剪比例范围模型配置
model: config: ag_config: ad_precision: float32 # 精度 t5_model_name: checkpoints/google-t5/t5-large # T5模型名称 anomaly_embedding: anomaly_types: [[Phone, oil], [Phone, scratch], [Phone, stain]] # 异常类型 freeze: False # 是否冻结 mask_encoder: encoder_config: init_cfg: checkpoint: checkpoints/NVDINOV2/nv_dinov2_classification_model.ckpt # 掩码编码器检查点您可以根据自己的需求修改这些配置参数,但建议在初次使用时保持默认设置,以确保模型的稳定性和正确性。
🖥️ 使用指南:生成手机屏幕异常图像
输入要求
使用Cosmos-AnomalyGen-Glass-2B生成异常图像需要以下输入:
- 图像:PNG/JPG格式,RGB颜色空间
- 二进制掩码:PNG/JPG格式,单通道二进制(0=背景,255=异常区域;在阈值127处二值化)
- 文本:异常类型字符串,格式为
<texture>+<anomaly_type>,必须是以下之一:Phone+oilPhone+scratchPhone+stain
注意:输入的干净图像和配对掩码必须具有相同的尺寸,模型在512×512分辨率下训练,推理也在相同分辨率下运行。
基本使用步骤
准备输入文件
准备好干净的手机屏幕图像和对应的二进制掩码图像,并确保它们的尺寸相同(建议512×512)。
运行推理命令
使用以下命令运行推理,生成异常图像:
torchrun --nproc_per_node=<N> scripts/anomaly_gen/synthetic_dataset_generation.py \ --config ag_config.yaml \ --input_data_path <path_to_testcase.jsonl> \ --output_dir <output_directory> \ --checkpoint iter_000009000.pt其中:
<N>是您要使用的GPU数量<path_to_testcase.jsonl>是包含输入信息的JSONL文件路径<output_directory>是输出图像的保存目录
查看输出结果
生成的异常图像将保存在指定的输出目录中,格式为PNG。同时,生成元数据(每个样本的指导、裁剪比例、种子等)将写入
SDG_result.csv文件,与图像一起保存。
高级选项
Cosmos-AnomalyGen-Glass-2B提供了一些高级选项,可以进一步优化生成结果:
- Poisson blending:可以启用泊松融合,使生成的异常区域与原始图像更自然地融合。
- Automatic Mask Placement (AMP):自动掩码放置工具,可以将用户提供的掩码限制在合理的感兴趣区域(ROI)。
- 质量过滤:运行
scripts/anomaly_gen/filter.py对生成的数据集进行过滤,使用生成图像质量评估(G-IQA)模型对每个输出进行评分,并丢弃质量/真实感分数低于可配置阈值的样本。
📊 模型评估与性能指标
虽然Cosmos-AnomalyGen-Glass-2B没有使用独立的测试集进行定量评估,但在训练过程中通过以下方式进行了定性和定量评估:
性能指标
- FID(Fréchet Inception Distance):在训练验证期间记录,用于衡量生成图像与真实图像之间的相似度。
- 最近邻指标:包括
nn_score和mnn_score,用于评估生成图像的多样性和质量。
评估方法
- 视觉检查:通过
log_image验证回调,在训练过程中定期记录修复样本,进行视觉检查。 - 质量过滤:使用G-IQA模型对生成图像进行评分,确保只有高质量的合成图像用于下游训练。
🚨 注意事项与最佳实践
技术限制与缓解措施
Cosmos-AnomalyGen-Glass-2B在使用过程中可能会遇到一些技术限制,以下是相应的缓解措施:
训练样本有限:模型仅在每种缺陷类型5个异常示例上进行训练。对于分布外的屏幕背景、与训练分布偏差较大的掩码放置,或任何不属于
{oil, scratch, stain}的缺陷类型,可能会产生低保真度的输出。缓解措施:
- 使用自动掩码放置(AMP)工具,将用户提供的掩码自动限制在手机屏幕上合理的缺陷区域。
- 运行
scripts/anomaly_gen/filter.py对生成的数据集进行过滤,确保不会有不真实的合成图像污染下游训练集。 - 在部署到生产QA线之前,使用真实缺陷图像验证任何在合成样本上训练的下游检测器。
硬件要求高:模型需要NVIDIA GPU支持,推荐使用A100、H100或RTX 6000等高端GPU。
缓解措施:
- 使用多GPU推理,通过
torchrun --nproc_per_node=<N>实现。 - 考虑使用云服务提供商的GPU实例,以降低本地硬件成本。
- 使用多GPU推理,通过
伦理考虑
使用Cosmos-AnomalyGen-Glass-2B时,还需要考虑以下伦理因素:
- 数据来源:确保您对所有输入图像和视频内容拥有适当的权利和权限。
- 安全部署:用户负责模型的输入和输出,在部署前应确保模型的安全集成,包括实施防护措施和其他安全机制。
- 内容生成风险:该模型可以生成合成图像,可能会产生冒犯性、不安全、误导性、不雅或不适合目标部署的内容。用户应实施强大的安全防护措施,包括内容过滤、滥用监控和访问控制,以降低有害输出的风险。
📚 参考资料
- Anomaly Diffusion (AAAI 2024):论文:https://arxiv.org/abs/2312.05767,代码:https://github.com/sjtuplayer/anomalydiffusion
- Cosmos-Predict2:https://github.com/nvidia-cosmos/cosmos-predict2
- NV-DINOv2 classification model:https://catalog.ngc.nvidia.com/orgs/nvidia/teams/tao/models/nv_dinov2_classification_model
通过本指南,您应该能够顺利安装、配置和使用Cosmos-AnomalyGen-Glass-2B来生成高质量的手机屏幕异常图像。如果您在使用过程中遇到任何问题,建议参考项目的官方文档或提交issue寻求帮助。
【免费下载链接】Cosmos-AnomalyGen-Glass-2B项目地址: https://ai.gitcode.com/hf_mirrors/nvidia/Cosmos-AnomalyGen-Glass-2B
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
