🚀 FLODA: FLorence-2 Optimized for Deepfake Assessment
FLODAは、Vision-Language Models (VLMs) の力を活用した高度なディープフェイク検出モデルです。画像キャプショニングと信憑性評価を単一のエンドツーエンドアーキテクチャに統合することで、既存のディープフェイク検出モデルを上回る性能を目指しています。
✨ 主な機能
- キャプション生成とディープフェイク検出の両方に、ベースのVLMとしてFlorence-2を利用
- ディープフェイク検出をVisual Question Answering (VQA) タスクとして再構築
- 画像キャプション情報を組み込み、文脈理解を強化
- 効率的な微調整のためにrsLoRA (rank-stabilized Low-Rank Adaptation) を採用
- 多様なシナリオで強力な汎化性能を示す
- 敵対的攻撃に対する堅牢性を備える
📦 インストール
from transformers import AutoProcessor, AutoModelForCausalLM
from PIL import Image
import torch
model_path = "path/to/floda/model"
model = AutoModelForCausalLM.from_pretrained(model_path, trust_remote_code=True).to("cuda").eval()
processor = AutoProcessor.from_pretrained(model_path, trust_remote_code=True)
def detect_deepfake(image_path):
image = Image.open(image_path).convert("RGB")
task_prompt = "<DEEPFAKE_DETECTION>"
text_input = "Is this photo real?"
inputs = processor(text=task_prompt + text_input, images=image, return_tensors="pt").to("cuda")
with torch.no_grad():
generated_ids = model.generate(
input_ids=inputs["input_ids"],
pixel_values=inputs["pixel_values"],
max_new_tokens=1024,
num_beams=3
)
generated_text = processor.batch_decode(generated_ids, skip_special_tokens=False)[0]
result = processor.post_process_generation(generated_text, task=task_prompt, image_size=(image.width, image.height))[task_prompt]
return "Real" if result.lower() == "yes" else "Fake"
result = detect_deepfake("path/to/image.jpg")
print(f"The image is: {result}")
💻 使用例
基本的な使用法
from transformers import AutoProcessor, AutoModelForCausalLM
from PIL import Image
import torch
model_path = "path/to/floda/model"
model = AutoModelForCausalLM.from_pretrained(model_path, trust_remote_code=True).to("cuda").eval()
processor = AutoProcessor.from_pretrained(model_path, trust_remote_code=True)
def detect_deepfake(image_path):
image = Image.open(image_path).convert("RGB")
task_prompt = "<DEEPFAKE_DETECTION>"
text_input = "Is this photo real?"
inputs = processor(text=task_prompt + text_input, images=image, return_tensors="pt").to("cuda")
with torch.no_grad():
generated_ids = model.generate(
input_ids=inputs["input_ids"],
pixel_values=inputs["pixel_values"],
max_new_tokens=1024,
num_beams=3
)
generated_text = processor.batch_decode(generated_ids, skip_special_tokens=False)[0]
result = processor.post_process_generation(generated_text, task=task_prompt, image_size=(image.width, image.height))[task_prompt]
return "Real" if result.lower() == "yes" else "Fake"
result = detect_deepfake("path/to/image.jpg")
print(f"The image is: {result}")
📚 ドキュメント
モデルアーキテクチャ
FLODAはFlorence-2モデルをベースに構築されており、2つの主要なコンポーネントで構成されています。
- ビジョンエンコーダ:DaViT (Dual Attention Vision Transformer) を使用
- マルチモーダリティエンコーダ - デコーダ:標準的なトランスフォーマーアーキテクチャに基づく
このモデルはrsLoRAを使用して微調整されており、以下の設定が適用されています。
- ランク (r): 8
- アルファ (α): 8
- ドロップアウト: 0.05
- ターゲットモジュール: q_proj, k_proj, v_proj, out_proj, lm_head
性能
FLODAはディープフェイク検出において最先端の性能を達成しています。
- すべてのデータセットにおける平均精度: 97.14%
- 実画像と偽画像の両方のデータセットで強力な性能を発揮
- いくつかの偽データセットとすべての攻撃されたデータセットで100%の精度を達成
制限事項
- ControlNetデータセットでの性能 (精度77.07%) は、一部の競合モデルと比較して低い。
- トレーニングまたは評価データセットに含まれていない非常に新しいまたは将来のAI生成画像技術に対するモデルの有効性は不確定である。
倫理的な考慮事項
FLODAはディープフェイク検出において有望な結果を示していますが、以下の点を考慮することが重要です。
- 誤検知の可能性があり、それが使用ケースによっては重大な影響を及ぼす可能性がある。
- 新しい画像生成技術が登場するにつれて、継続的な更新が必要である。
- ユーザーが送信した画像を処理する際のプライバシー上の考慮事項。
🔧 技術詳細
トレーニングデータ
FLODAは以下のデータセットを使用してトレーニングされました。
- 実画像: MS COCO
- 偽画像: SD2とLaMaによって生成されたもの
評価データ
このモデルは16のデータセットで評価されました。
- 2つの実画像データセット: MS COCO, Flickr30k
- 様々なモデル (例: SD2, SDXL, DeepFloyd IF, DALLE - 2, SGXL) によって生成された14の偽画像データセット
- スタイル化された画像、インペインティング、解像度変更、顔交換を含むデータセット
- 敵対的攻撃、バックドア攻撃、データ汚染攻撃のデータセット
📄 ライセンス
apache - 2.0
モデルカードの作成者
- Youngho Bae (Hanyang University)
- Gunhui Han (Yonsei University)
- Seunghyeon Park (Yonsei University)
モデルカードの問い合わせ
このモデルカードまたはFLODAモデルに関する問い合わせは、以下の連絡先にお寄せください。
Youngho Bae
Email: byh711@gmail.com
フレームワークのバージョン
情報テーブル
| 属性 | 详情 |
|------|------|
| ベースモデル | microsoft/Florence-2-base-ft |
| ライブラリ名 | peft |
| ライセンス | apache-2.0 |
| 言語 | en |
| パイプラインタグ | visual-question-answering |
| 評価指標 | accuracy |
| タグ | deepfake detection |