惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Jina AI
Jina AI
V
Vulnerabilities – Threatpost
Security Latest
Security Latest
AI
AI
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
量子位
H
Help Net Security
Attack and Defense Labs
Attack and Defense Labs
The GitHub Blog
The GitHub Blog
L
LINUX DO - 最新话题
A
Arctic Wolf
博客园_首页
S
Securelist
S
Secure Thoughts
Google DeepMind News
Google DeepMind News
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
T
Tailwind CSS Blog
Apple Machine Learning Research
Apple Machine Learning Research
酷 壳 – CoolShell
酷 壳 – CoolShell
Stack Overflow Blog
Stack Overflow Blog
N
Netflix TechBlog - Medium
Cyberwarzone
Cyberwarzone
小众软件
小众软件
T
Threatpost
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Blog — PlanetScale
Blog — PlanetScale
N
News and Events Feed by Topic
NISL@THU
NISL@THU
Forbes - Security
Forbes - Security
博客园 - 聂微东
F
Fortinet All Blogs
Simon Willison's Weblog
Simon Willison's Weblog
H
Heimdal Security Blog
罗磊的独立博客
S
Security @ Cisco Blogs
B
Blog
T
Troy Hunt's Blog
Engineering at Meta
Engineering at Meta
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
The Hacker News
The Hacker News
The Last Watchdog
The Last Watchdog
Hacker News - Newest:
Hacker News - Newest: "LLM"
I
Intezer
T
Threat Research - Cisco Blogs
C
Cybersecurity and Infrastructure Security Agency CISA
The Cloudflare Blog
S
Schneier on Security
月光博客
月光博客
L
LINUX DO - 热门话题
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org

StudyingLover's Blog

Diffusion Policy笔记 rwkv笔记 act笔记 nanovllm-block_manager opencode多智能体 nanobot-pre-train nanobot-rl nanobot-sft nanobot-checkpoint_manager nanobot-gpt nanobot-mid-train Vision Mamba (Vim)笔记 BPE演示 最后一遍学习Transformer YOLOv5 目标检测笔记 下载根服务器解析记录 Dynaseal A Backend-Controlled LLM API Key Distribution Scheme with Constrained Invocation Parameters 判断链表有环 王道25数据结构勘误 关于perplexity的open-sourcing-r1-1776 AI为什么不像人类一样进行多轮对话 新博客改造日记和功能测试 linuxqq只显示登陆背景图 数字设计和计算机体系结构(机械工业出版社)勘误(自制) Dynaseal:面向未来端侧llm agent的llm api key分发机制 A Definitive Guide to Markdown Style This post is using MDX, Where you can embed JSX and Astro components RT-Patch学习 pydantic实现的LLM ReAct fastapi 和 uvicorn 设置监听 ipv6 pydantic+openai+json 控制大模型输出的最佳范式 解决 Matplotlib Scatter 不支持 Marker 列表的问题:mscatter 实现 roofline model zhipuAI接口兼容openai 在docker部署fastapi宝塔里使用nginx反代套上cloudflare获取请求的真实ip clion搭建libbpf-bootstrap开发环境 coze+coze-discord-proxy+ChatNextWebUI实现AI自由 安卓内核时间使用的是UTC时间 colab运行google最新开源模型Gemma Sora技术报告 视频生成模型作为世界模拟器 笔记 archlinux flutter开发踩坑 fastapi集成google auth登录 linux下NTFS磁盘报错输入输出错误 Venn-Abers 预测器 基于Venn-Abers预测器的系统日志异常检测方法_顾兆军 手机平板远程访问kvm虚拟机的windows phi-2弱智吧测评 poe的gemini pro或是百度开发 google gemini api使用 google gemini api申请 构建用于复杂数据处理的高效UDP服务器和客户端 matplotlib中文字体渲染 深入分析:GitHub Trending 项目 "multipleWindow3dScene" pua大模型 ggml教程|mnist手写体识别量化推理 xgboost2.0最佳实践 xgboost使用GPU最佳实践 马踏棋盘 cloudlflare推理llama2 docker搭建elasticsearch并使用python连接 FreeU-文字生成图片的免费午餐笔记 使用xgboost的c接口推理模型 Archlinux使用CMake调用xgboost的c接口 m2cgen生成机器学习c语言推理代码 xgboost模型序列化存储并推理 speculative-sampling笔记 prompt2model笔记 RoboTAP笔记 自建obsidian同步服务 MediaPipe即将推出图像生成服务 Dual-Stream Diffusion Net for Text-to-Video Generation笔记 ViT在DDPM取代UNet(DiT) arch4edu搞崩了我的flutter LISA(推理分割)笔记 在终端绘制GPU显存使用曲线 GPTBot介绍 arch蓝牙无法连接 GPU部署llama-cpp-python(llama.cpp通用) 花式求GCD 使用llama构建一个蜜罐(前端) 使用llama构建一个蜜罐(后端) llama-cpp-python快速上手 快速上手llama2.c(更新版) Paper Gestalt笔记 DINO-v2笔记 快速上手llama2.c AnyDoor笔记 Archlinux安装scrcpy加载共享库出错 error while loading shared libraries:libusb-1.0.so.0:wrong ELF class:ELFCLASS32 npc_gzip笔记 python调用c++函数 Filesystem type ntfs3,ntfs not configured in kernel open_clip编码图像和文本 PicGo配置CloudflareR2图片储存 ArchlinuxGnome快捷键打开终端 clip-interrogator代码解析 GroundingDINO安装报错解决 2023华为鲲鹏畅想日暨西安高新国际会议中心零食午饭测评 RoboMaster开源仓库汇总(长期更新) 没有手都可以在腾讯云创建镜像 I3D笔记
TruFor笔记和代码复现
About the Author StudyingLover · 2023-11-29 · via StudyingLover's Blog

图像伪造检测和定位

发布于

TruFor 笔记和代码复现

最近有个新闻很火,说谷歌 AI 技术曾判定美国登月任务的照片存在虚假内容大佬找到了出处,使用的是 google 的论文arxiv,代码开源在GitHub

笔记

这篇论文介绍了一个名为 TruFor 的图像伪造检测和定位框架。该框架可以应用于各种图像处理方法,包括基于深度学习的伪造方法。TruFor 利用了 RGB 图像和一个学习的噪音敏感指纹来提取高级和低级痕迹,最终输出像素级别的定位图和整个图像的完整性分数,以及一个可靠性映射,用于减少误报。

image.png

它包括以下几个关键组件:

  1. Noiseprint++ 提取器:该提取器从 RGB 图像中获取一个学习的噪声敏感指纹。
  2. 编码器:编码器使用 RGB 输入和 Noiseprint++共同计算将被异常解码器和置信度解码器使用的特征。
  3. 异常解码器和置信度解码器:这两个解码器分别用于像素级别的伪造定位和置信度估计。
  4. 伪造检测器:该检测器利用定位图和置信度图进行图像级别的决策。

这些组件通过三个训练阶段进行学习:

  1. 首先,使用大量原始图像数据集训练 Noiseprint++提取器。
  2. 然后,使用相同的数据集训练异常定位网络的编码器和解码器。
  3. 最后,使用相同的数据集训练置信度图解码器和伪造检测器。

通过这些组件和训练阶段,TruFor 框架能够在各种图像伪造方法中实现可靠的检测和定位。

模型输出包括以下三个部分:

  1. 全局完整性得分(Global Integrity Score):该得分表示图像的整体真实性,用于自动图像伪造检测。
  2. 异常定位图(Anomaly Localization Map):该图表示图像中可能存在伪造的区域。通过分析异常定位图,用户可以识别被篡改的区域。
  3. 置信度图(Confidence Map):该图突出显示了异常定位图中可能存在误报的区域。通过分析置信度图,用户可以区分异常定位图中的真实伪造区域预测和随机异常。 这三个输出为用户提供了有关图像真实性和可能篡改区域的全面信息,有助于进行进一步的分析

代码复现

作者在 github 上给出了一个复现方法,git clone 之后bash docker_build.shbash docker_run.sh。使用 docker 固然容易复现,但是这个项目并没有什么奇怪的依赖,所以我们可以大胆直接跑。(如果你想用 docker 跑我劝你不要,因为代码有 bug 需要修)

首先 clone 项目

git clone https://github.com/grip-unina/TruFor

然后下载依赖,作者没有给 requirements.txt,我从 Dockerfile 找到了下载依赖的部分

pip install tqdm yacs>=0.1.8 timm>=0.5.4 numpy==1.21.5

接下来 cd 到test_docker文件夹,下载模型

cd test_docker
wget -q -c https://www.grip.unina.it/download/prog/TruFor/TruFor_weights.zip
unzip -q -n TruFor_weights.zip && rm TruFor_weights.zip

有同学反馈说下载不了,我把文件放到了这里

你的test_docker 文件夹下应该有一个weights文件下,下面有一个文件trufor.pth.tar

接下来,运行下面的命令复现测试

cd src
python trufor_test.py

你注意一下,如果爆显存了就运行,这样会使用 cpu 推理

python trufor_test.py --gpu -1

运行结束后你在test_docker/output 目录下应该能看到这样的四个文件image.png

你也可以指定推理的图片和保存位置,参考python trufor_test.py -h,可以传一个文件或者文件夹

usage: trufor_test.py [-h] [-gpu GPU] [-in INPUT] [-out OUTPUT] [-save_np] ...

Test TruFor

positional arguments:
  opts                  other options

options:
  -h, --help            show this help message and exit
  -gpu GPU, --gpu GPU   device, use -1 for cpu
  -in INPUT, --input INPUT
                        can be a single file, a directory or a glob statement
  -out OUTPUT, --output OUTPUT
                        output folder
  -save_np, --save_np   whether to save the Noiseprint++ or not

接下来让我们可视化异常检测图,回到test_docker文件夹,

很重要!! 请看visualize.py 他的第 32 行是不是

fig.suptitle('score: %.3f' % result['score_sigmoid'])

这是个错误!请将他改成下面的代码

fig.suptitle('score: %.3f' % result['score'])

运行下面的命令,记得把/path/to改成你的真实路径

cd ..
python visualize.py --image /path/to/TruFor/test_docker/images/pristine1.jpg --output /path/to/TruFor/test_docker/output/pristine1.jpg.npz

我们可以得到推理结果 image.png

ok,让我们来看看宇航员的图片吧,先下载两张图

wget https://history.nasa.gov/alsj/a15/AS15-92-12407HR.jpg
wget https://history.nasa.gov/alsj/a15/AS15-92-12424HR.jpg

我直接给出运行结果 image.png image.png