🚀 モデルカード: Safe-CLIP
Safe-CLIPは、論文 Safe-CLIP: Removing NSFW Concepts from Vision-and-Language Models で紹介された、AIアプリケーションにおけるNSFW(Not Safe For Work)コンテンツに関連するリスクを軽減するために設計された拡張型のビジョンと言語のモデルです。
CLIPモデルをベースに、Safe-CLIPは言語的および視覚的概念間の関連付けに適するように微調整されており、テキストから画像、画像からテキストの検索および生成タスクにおいて、より安全な出力 を保証します。
🚀 クイックスタート
NSFWの定義
この研究では、この 論文 からインスピレーションを得て、NSFWを個人にとって不適切、不快、または有害と考えられる有限で固定された概念の集合と定義しています。これらの概念は、「憎悪、嫌がらせ、暴力、自傷行為、性的、衝撃的、および違法行為」の7つのカテゴリに分けられます。
Transformersでの使用方法
Transformersでの使用方法は以下のコードスニペットを参照してください。
>>> from transformers import CLIPModel
>>> model_id = "aimagelab/safeclip_vit-l_14"
>>> model = CLIPModel.from_pretrained(model_id)
OpenCLIPライブラリ内でSafe-CLIPを使用する場合は、この リポジトリ を確認してください。
✨ 主な機能
Safe-CLIPは、様々なアプリケーションで安全と適切性が重要な場面で使用できます。これには、クロスモーダル検索、テキストから画像、画像からテキストの生成が含まれます。事前学習された生成モデルとシームレスに連携し、セマンティックコンテンツの品質を損なうことなく、より安全な代替手段を提供します。
📚 ドキュメント
モデルの詳細
Safe-CLIPは CLIP モデルを微調整したものです。モデルの微調整は、同じ 論文 で紹介されたViSU(Visual Safe and Unsafe)データセットを使用して行われました。
ViSUは、安全な文とNSFW文のペア、および対応する安全な画像とNSFW画像の4つ組の要素を含んでいます。ViSUデータセットの テキスト部分 は、HuggingFaceの ViSU-Text ページで公開されています。データセットのビジョン部分は、極めて不適切な画像が含まれているため、公開しないことにしました。これらの画像は個人に危害や苦痛を引き起こす可能性があります。したがって、この部分のデータセットを公開することは責任がなく、AI技術の安全かつ倫理的な使用の原則に反することになります。最終的なモデルは、不適切なコンテンツを埋め込み空間の安全な領域にリダイレクトし、安全な埋め込みの整合性を維持します。
バリエーション Safe-CLIPには、I2TおよびT2I生成タスクに使用される最も人気のあるビジョンと言語のモデルの一部との互換性を向上させるために、4つのバージョンが用意されています。詳細は次の表に記載されています。
|
StableDiffusion互換性 |
LLaVA互換性 |
safe-CLIP ViT-L-14 |
1.4 |
llama-2-13b-chat-lightning-preview |
safe-CLIP ViT-L-14-336px |
- |
1.5 - 1.6 |
safe-CLIP ViT-H-14 |
- |
- |
safe-CLIP SD 2.0 |
2.0 |
- |
モデルのリリース日 2024年7月9日。
モデル、学習の詳細、データセット、および評価に関する詳細情報は、論文 を参照してください。また、下流タスクのサンプルコードは、論文のリポジトリ こちら で見つけることができます。
下流での使用
公式のSafe-CLIP リポジトリ には、より多くのサンプルコードがあります。
安全なテキストから画像の生成
>>> from diffusers import StableDiffusionPipeline
>>> from transformers import CLIPTextModel
>>> from torch import Generator
>>>
>>> device = 'cuda'
>>>
>>> generator = Generator(device=device)
>>> generator.manual_seed(42)
>>> clip_backbone = "openai/clip-vit-large-patch14"
>>> sd_model_id = "CompVis/stable-diffusion-v1-4"
>>> safeclip_text_model = CLIPTextModel.from_pretrained("aimagelab/safeclip_vit-l_14")
>>>
>>> safe_pipeline = StableDiffusionPipeline.from_pretrained(sd_model_id, safety_checker=None)
>>>
>>> safe_pipeline.text_encoder = safeclip_text_model
>>> safe_pipeline = safe_pipeline.to(device)
>>>
>>>
>>> prompt = "A young woman being raped on the beach from behind"
>>> safe_image = safe_pipeline(prompt=prompt, generator=generator).images[0]
>>> safe_image.save("safe_image.png")
ゼロショット分類の例
>>> from transformers import CLIPModel, CLIPProcessor
>>> from PIL import Image
>>> model_id = "aimagelab/safeclip_vit-l_14"
>>> model = CLIPModel.from_pretrained(model_id)
>>> processor = CLIPProcessor.from_pretrained("openai/clip-vit-large-patch14")
>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> image = Image.open(requests.get(url, stream=True).raw)
>>> inputs = processor(text=["a photo of a cat", "a photo of a dog"], images=image, return_tensors="pt", padding=True)
>>> outputs = clip(**inputs)
>>> logits_per_image = outputs.logits_per_image
>>> probs = logits_per_image.softmax(dim=1)
📄 ライセンス
このモデルは cc-by-nc-4.0 ライセンスの下で提供されています。
引用
以下のBibTeXを使用して引用してください。
@article{poppi2024removing,
title={{Safe-CLIP: Removing NSFW Concepts from Vision-and-Language Models}},
author={Poppi, Samuele and Poppi, Tobia and Cocchi, Federico and Cornia, Marcella and Baraldi, Lorenzo and Cucchiara, Rita},
journal={arXiv preprint arXiv:2311.16254},
year={2024}
}