碎片笔记|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.mzph.cn/web/79806.shtml

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

相关文章

SAP Fiori Elements Object Page

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

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

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

Fabric系列 - SoftHSM 软件模拟HSM

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

医学影像系统的集成与工作流优化

🧑 博主简介:CSDN博客专家、CSDN平台优质创作者,高级开发工程师,数学专业,10年以上C/C++, C#, Java等多种编程语言开发经验,拥有高级工程师证书;擅长C/C++、C#等开发语言,熟悉Java常用开发技术,能熟练应用常用数据库SQL server,Oracle,mysql,postgresql等进行开发应用…

转发多台px4仿真UDP数据到地面站

转发脚本的任务需求 仿真采用UDP通信方式,在 wsl 中仿真三台飞机,项目需要将一台电脑中的三台飞机的数据打包发送到另一台飞机的地面站,但地面站是无法直接访问另一台主机的 wsl 中的端口的,wsl 中的端口需要本机才能访问&#x…

FPGA图像处理(五)------ 图片水平镜像

利用bram形成双缓冲,如下图配置所示: wr_flag 表明 buffer0写 还是 buffer1写 rd_flag 表明 buffer0读 还是 buffer1读 通过写入逻辑控制(结合wr_finish) 写哪个buffer ;写地址 进而控制ip的写使能 通过状态缓存来跳转buffer的…

微服务八股(自用)

微服务 SpringCloud 注册中心:Eureka 负载均衡:Ribbon 远程调用:Feign 服务熔断:Hystrix 网关:Gateway/Zuul Alibaba 配置中心:Nacos 负载均衡:Ribbon 服务调用:Feign 服务…

ESP32_IDF_OTA_HTTP升级固件

ESP32_IDF_OTA_HTTP升级固件 前言:一个项目的主控使用的是ESP32,因为封装外壳的原因,所以需要采用OTA的方式进行升级,因为之前有对WIFI的OTA有所了解,所以在此基础上,使用官方提供的native_ota_example例程…

MySQL表结构化:数据类型与表生命周期详解

引言 各位数据库学习者大家好!今天我们将深入探讨MySQL中最核心的对象——表(Table)的各类操作 🎯。表是存储数据的基石,就像Excel中的工作表一样,但功能要强大得多!无论是电商网站的用户信息&…

React中的状态管理Dva总结

在 React 开发中,随着应用的复杂度增加,如何高效地管理应用状态成为了一个非常重要的问题。为了解决这一问题,很多开发者选择了 Redux,然而 Redux 的学习曲线较陡,且需要配置较多的样板代码。为此,Ant Desi…

数据结构中的高级排序算法

希尔排序 你可以将希尔排序理解成——先通过几次分组的、较小的组间插入排序将原数组变得有序&#xff0c;最后再进行一次序列基本有序的完整插入排序。 #include <stdio.h>#define ARR_LEN(arr) (sizeof(arr) / sizeof(arr[0]))void print_arr(int arr[], int len) {for…

计算机视觉最不卷的方向:三维重建学习路线梳理

提到计算机视觉&#xff08;CV&#xff09;&#xff0c;大多数人脑海中会立马浮现出一个字&#xff1a;“卷”。卷到什么程度呢&#xff1f;2022年秋招CV工程师岗位数下降了16%&#xff0c;但求职人数增加了23%&#xff0c;求职人数与招聘岗位的比例达到了恐怖的15:1&#xff0…

【Docker】Docker环境下快速部署Ollama与Open-WebUI:详细指南

Docker环境下快速部署Ollama与Open-WebUI&#xff1a;详细指南 在本篇文章中&#xff0c;我们将深入探讨如何在Docker中高效部署 Ollama 和 Open-WebUI&#xff0c;并解决在实际使用中常见的问题&#xff0c;确保你的模型服务稳定高效地运行。 一、Ollama 和 Open-WebUI 快速部…

Vue3学习(组合式API——Watch侦听器详解)

目录 一、Watch侦听器。 &#xff08;1&#xff09;侦听单个数据。 &#xff08;2&#xff09;侦听多个数据。&#xff08;数组写法&#xff1f;&#xff01;&#xff09; &#xff08;3&#xff09;immediate参数。(立即执行回调) &#xff08;3&#xff09;deep参数。(深层监…

SARIMA-LSTM融合模型对太阳黑子数量预测分析|附智能体数据代码

全文智能体链接&#xff1a;https://tecdat.cn/?p41969 分析师&#xff1a;Peng Fan 本研究以太阳黑子活动数据为研究对象&#xff0c;旨在帮助客户探索其未来走势并提供预测分析。首先&#xff0c;通过对数据的清洗和处理&#xff0c;包括离群值的识别与处理以及时间序列的建…

简单易懂的JavaScript中的this指针

文章目录 默认绑定 / 隐式绑定如何调整this1.用变量固定this2.箭头函数2.bind3.call/apply&#xff08;一次性&#xff09; 默认绑定 / 隐式绑定 要找this指针指向谁&#xff0c;我们首先要做的是&#xff1a;找到一个明确的对象&#xff0c;这个对象调用了含有this指针的函数…

Spring MVC数据绑定和响应 你了解多少?

数据绑定的概念 在程序运行时&#xff0c;Spring MVC接收到客户端的请求后&#xff0c;会根据客户端请求的参数和请求头等数据信息&#xff0c;将参数以特定的方式转换并绑定到处理器的形参中。Spring MVC中将请求消息数据与处理器的形参建立连接的过程就是Spring MVC的数据绑…

BMS工具箱用来执行贝叶斯模型平均(BMA)计算模块

贝叶斯模型平均&#xff08;Bayesian Model Averaging&#xff0c;BMA&#xff09;是一种用于处理模型不确定性的统计方法&#xff0c;通过结合多个模型的预测结果来提高预测的准确性和鲁棒性。在 MATLAB 中&#xff0c;可以使用专门的工具箱&#xff08;如 BMS 工具箱&#xf…

Java内存马的检测与发现

【网络安全】Java内存马的检测与发现 一、Java内存马的现象二、检测思路三、重点关注类四、检测方法1. 检查方法&#xff08;FindShell&#xff09;2. 检查方法&#xff08;sa-jdi&#xff09;3. 检查方法&#xff08;arthas-boot&#xff09;4. 检查方法&#xff08;cop.jar&a…

ISP有感自发

一、黑电平 由于传感器&#xff0c;即便在无光的情况下&#xff0c;依然会产生微小的暗电流&#xff0c;这些暗电流可能是噪点会影响后期的调试。因此&#xff0c;我们便将这些电流处理为0&#xff0c;成为纯黑的颜色。可以在源头消除这些误差。 如何矫正黑电平&#xff1a; …