当前位置: 首页 > java >正文

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

前言:本篇博客分享一些溯源方法的复现经验,希望能帮助到大家🎉。


目录

  • 1. Close-set Attribution
    • Repmix
    • De-Fake
    • DNA-Net
  • 2. Open-set Attribution
    • POSE
  • 3. Single-Model Attribution
    • OCC-CLIP
    • LatentTracer

1. Close-set Attribution

Repmix

论文信息:RepMix: Representation Mixing for Robust Attribution of Synthesized Images. ECCV, 2022.
开源代码:https://github.com/TuBui/image_attribution

环境配置

配置环境时,imagenet-c库不能使用pip install imagenet-c安装(会报错如下:

    x_start, y_start = np.random.randint(0, frost.shape[0] - 224), np.random.randint(0, frost.shape[1] - 224)
AttributeError: 'NoneType' object has no attribute 'shape'

根据相关经验,正确的安装方式为:打开链接

https://github.com/hendrycks/robustness/tree/master/ImageNet-C

将下述文件全部下载

在这里插入图片描述

然后在上述文件对应的目录下,运行pip install -e .命令进行安装。

代码适配

  • 如果要在其他数据集上运行该代码,只需要按给定格式生成相应的train/val/test.csv文件,再修改csv文件路径即可。

  • 原始的csv文件有三列,分别表示图像路径 / 图像模型类别 / 图像语义类别。如果不需要图像的语义类别,可以将对应值全部设置为0(而非直接删除该列),确保文件的正确读取。

  • 在运行test.py文件时,代码 utils/augment_imagenetc.py'clean': transforms.Compose([transforms.Resize(csize)] + norm) 一行要改为: 'clean': transforms.Compose([transforms.Resize([csize, csize])] + norm),不然会报错如下:

    RuntimeError: stack expects each tensor to be equal size, but got [3, 224, 298] at entry 0 and [3, 254, 224] at entry 1
    

    根据此篇博客,这是因为原始代码只会将图像较短边调整为 224,保持长宽比不变。而我们需要的是将图像尺寸变为224*224,故需对代码进行相应修改。

De-Fake

论文信息:DE-FAKE: Detection and Attribution of Fake Images Generated by Text-to-Image Generation Models. CCS, 2023.
开源代码: https://github.com/zeyangsha/De-Fake

环境配置

无过多要求

代码适配

  • 因为De-Fake用到了多模态特征,所以在适配其他数据集时,要事先使用blip模型生成每张图像对应的caption作为其prompt。然后,对数据加载方式进行修改,确保正确读取图像和相应文本。

  • De-Fake需要用到clip和blip预训练模型,可以预先下载下来,并更新以下路径:
    train.py中的model, preprocess = clip.load("ViT-B/32", device=device)
    test.py中的blip = blip_decoder(pretrained=blip_url, image_size=image_size, vit='base')
    第一个参数分别替换为相应文件的所在路径

    否则,可能会因为网络问题报错:

    Model has been downloaded but the SHA256 checksum does not not match. Please retry loading the model.
    

    “ViT-B/32” 对应预训练模型: https://openaipublic.azureedge.net/clip/models/40d365715913c9da98579312b702a82c18be219cc2a73407c4526f58eba950af/ViT-B-32.pt
    “blip” 对应预训练模型:
    https://storage.googleapis.com/sfr-vision-language-research/BLIP/models/model_base_capfilt_large.pth

DNA-Net

论文信息:Deepfake Network Architecture Attribution. AAAI 2022.
开源代码:https://github.com/ICTMCG/DNA-Det

环境配置

无过多要求

代码适配

如果要在其他数据集上运行该代码,只需要更新位于data/dataset.py下的ImageMultiCropDataset()类即可,确保数据能够正确读取。


2. Open-set Attribution

POSE

论文信息:Progressive Open Space Expansion for Open-Set Model Attribution. CVPR, 2023.
开源代码:https://github.com/ICTMCG/POSE

环境配置

代码适配

数据集

OSMA 数据集解压Tip:由于文件较大,推荐使用7z解压,Ubuntu首先使用apt-get install p7zip-full命令安装7z,然后cd切换到zip文件所在目录下,使用7z x name.zip完成解压(7z会自动解压分卷,无需事先手动合并)
尝试过unzip和7z解压方式,均以失败告终,最后选择在本地解压后再上传到服务器。


3. Single-Model Attribution

OCC-CLIP

论文信息:Which Model Generated This Image? A Model-Agnostic Approach for Origin Attribution. ECCV 2024.
开源代码:https://github.com/uwFengyuan/OCC-CLIP

环境配置

  • 代码实际运行时其实不需要environment.yaml中给出的数百个库,所以可以在执行conda create -n name python=3.11新建环境之后按需安装相应的库,节省安装时间和存储成本。

代码适配

⚠️注意:原代码并未使用全部数据进行训练、验证和测试,所以需修改dataloader.py中的data_label()函数,并更新dataset目录下用到的json文件。

数据集

这个工作还提出了一个新数据集,由4个真实图像集和9个生成模型图像集构成,共301688张图像,各类别图像数量如下表。
在这里插入图片描述
附:递归统计当前目录下全部文件数量命令:find ./ -type f | wc -l


LatentTracer

论文信息:How to Trace Latent Generative Model Generated Images without Artificial Watermark? ICML, 2024.
开源代码:https://github.com/ZhentingWang/LatentTracer

环境配置

代码适配


后记:后续将与大家分享关于如何设计实验,以实现在同一个数据集上横向比较上述三种不同类型溯源方法的一些个人见解。


参考链接

  • CLIP加载模型时因网络问题报错的一个解决方案 - 知乎
http://www.xdnf.cn/news/6192.html

相关文章:

  • 解放双手的鼠标自动点击软件
  • R语言学习--Day02--实战经验反馈
  • 基于EFISH-SCB-RK3576/SAIL-RK3576的智慧路灯控制器技术方案
  • 高压开关/断路器机械特性试验的目的及设备
  • [python] python静态方法,类方法,实例方法实现及其区别
  • 【沉浸式求职学习day39】【双指针算法题】
  • 公链开发及其配套设施:钱包与区块链浏览器
  • 【Python】杂乱-[代码]Python 输出/打印列表(list)的方法
  • 三子棋设计
  • C#上位机RS485通信控制变频器
  • 3、ubantu系统docker常用命令
  • Centos 上安装Klish(clish)的编译和测试总结
  • NixOS 系统深度解析
  • Profibus DP主站转Modbus RTU/TCP网关接艾默生流量计与上位机通讯
  • Apache Pulsar 消息、流、存储的融合
  • 【Bootstrap V4系列】学习入门教程之 组件-导航条(Navbar)
  • MQTT详细介绍
  • 【PostgreSQL数据分析实战:从数据清洗到可视化全流程】附录-A. PostgreSQL常用函数速查表
  • 基于EFISH-SCB-RK3576/SAIL-RK3576的智能快递分拣机技术方案‌
  • 时序数据库IoTDB分布式系统监控基础概述
  • 小白成长之路-文件和目录内容检索处理(二)
  • 【C++重载操作符与转换】纯虚函数
  • 尚硅谷阳哥JVM
  • 智能工具协同赋能STEM教育科研|探索LLM大语言模型和数学软件Maple的创新实践
  • 2025年城市建设与交通运输国际会议(ICUCT 2025)
  • Baklib全场景知识中台驱动效能跃升
  • less中使用 @supports
  • 在C++中进行套接字编程时,主要使用以下头文件
  • CSS:选择器的优先级
  • 深入剖析某App视频详情逆向:聚焦sig3参数攻克